From 0f31fa84f808a88bf9817329da93cc27b77a366b Mon Sep 17 00:00:00 2001 From: Fred Visser <1458528+fredvisser@users.noreply.github.com> Date: Tue, 25 Aug 2026 14:35:46 -0500 Subject: [PATCH 1/6] Modernize Storybook component docs --- package-lock.json | 259 +------ packages/storybook/.storybook/preview.js | 6 +- packages/storybook/.storybook/theme.js | 4 + packages/storybook/package.json | 1 - .../src/nimble/button/button-anatomy.tsx | 31 + .../src/nimble/button/button-sections.ts | 18 + .../storybook/src/nimble/button/button.mdx | 210 +++++- .../nimble/button/images/button-anatomy.svg | 64 ++ .../storybook/src/nimble/dialog/dialog.mdx | 2 +- .../patterns/button/button-styling-docs.mdx | 276 +++---- .../storybook/src/nimble/select/select.mdx | 65 +- packages/storybook/src/nimble/table/table.mdx | 2 +- .../ok/ts/icon-dynamic/ts-icon-dynamic.mdx | 2 +- .../storybook/src/utilities/story-layout.tsx | 707 ++++++++++++++++-- packages/storybook/src/vite-env.d.ts | 4 + 15 files changed, 1157 insertions(+), 494 deletions(-) create mode 100644 packages/storybook/src/nimble/button/button-anatomy.tsx create mode 100644 packages/storybook/src/nimble/button/button-sections.ts create mode 100644 packages/storybook/src/nimble/button/images/button-anatomy.svg create mode 100644 packages/storybook/src/vite-env.d.ts diff --git a/package-lock.json b/package-lock.json index 119f0d0b8c..42ab5cd183 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9934,6 +9934,7 @@ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", "license": "MIT", + "peer": true, "dependencies": { "@types/unist": "*" } @@ -10060,13 +10061,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/prismjs": { - "version": "1.26.6", - "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz", - "integrity": "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/react": { "version": "19.2.17", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", @@ -12275,28 +12269,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chardet": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.2.0.tgz", @@ -12666,17 +12638,6 @@ "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", "license": "Apache-2.0" }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/command-line-args": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.2.tgz", @@ -16637,6 +16598,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "peer": true, "engines": { "node": ">=0.4.x" } @@ -17189,38 +17151,6 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", - "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hermes-estree": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", @@ -17238,23 +17168,6 @@ "hermes-estree": "0.25.1" } }, - "node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/highlightjs-vue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", - "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", - "dev": true, - "license": "CC0-1.0" - }, "node_modules/hono": { "version": "4.12.32", "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.32.tgz", @@ -17893,32 +17806,6 @@ "node": ">= 0.10" } }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-arguments": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", @@ -18130,17 +18017,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -18240,17 +18116,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -20511,35 +20376,6 @@ "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "license": "MIT" }, - "node_modules/lowlight": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", - "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fault": "^1.0.0", - "highlight.js": "~10.7.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/lowlight/node_modules/fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "dev": true, - "license": "MIT", - "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -26347,26 +26183,6 @@ "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", "dev": true }, - "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/parse-imports-exports": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", @@ -26947,16 +26763,6 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "license": "MIT" }, - "node_modules/prismjs": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/probe-image-size": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.3.0.tgz", @@ -27080,17 +26886,6 @@ "react-is": "^16.13.1" } }, - "node_modules/property-information": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", - "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/prosemirror-changeset": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.4.1.tgz", @@ -27500,27 +27295,6 @@ "dev": true, "license": "MIT" }, - "node_modules/react-syntax-highlighter": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-16.1.1.tgz", - "integrity": "sha512-PjVawBGy80C6YbC5DDZJeUjBmC7skaoEUdvfFQediQHgCL7aKyVHe57SaJGfQsloGDac+gCpTfRdtxzWWKmCXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.28.4", - "highlight.js": "^10.4.1", - "highlightjs-vue": "^1.0.0", - "lowlight": "^1.17.0", - "prismjs": "^1.30.0", - "refractor": "^5.0.0" - }, - "engines": { - "node": ">= 16.20.2" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -27627,23 +27401,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/refractor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/refractor/-/refractor-5.0.0.tgz", - "integrity": "sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/prismjs": "^1.0.0", - "hastscript": "^9.0.0", - "parse-entities": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -30181,17 +29938,6 @@ "node": ">=0.10.0" } }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -33752,7 +33498,6 @@ "@storybook/html-vite": "^10.3.6", "@types/js-beautify": "^1.14.3", "js-beautify": "^2.0.3", - "react-syntax-highlighter": "^16.1.0", "remark-gfm": "^4.0.0", "storybook": "^10.3.6", "storybook-addon-pseudo-states": "^10.3.6", diff --git a/packages/storybook/.storybook/preview.js b/packages/storybook/.storybook/preview.js index c111457bc1..72b76015a6 100644 --- a/packages/storybook/.storybook/preview.js +++ b/packages/storybook/.storybook/preview.js @@ -1,6 +1,4 @@ import { configureActions } from 'storybook/actions'; -import { SyntaxHighlighter } from 'storybook/internal/components'; -import csharp from 'react-syntax-highlighter/dist/esm/languages/prism/csharp'; import '@ni/nimble-tokens/dist/fonts/css/fonts.css'; import './preview.css'; import { @@ -9,8 +7,6 @@ import { } from '../src/utilities/states'; import { theme } from './theme'; -SyntaxHighlighter.registerLanguage('cs', csharp); - const parameters = { backgrounds: { options: backgroundStates.reduce((obj, curr) => { @@ -57,7 +53,7 @@ const parameters = { }, docs: { controls: { sort: 'alpha' }, - toc: { headingSelector: 'h1, h2, h3' }, + toc: { disable: true }, theme } }; diff --git a/packages/storybook/.storybook/theme.js b/packages/storybook/.storybook/theme.js index 448ba91ff2..20a88fbb96 100644 --- a/packages/storybook/.storybook/theme.js +++ b/packages/storybook/.storybook/theme.js @@ -3,6 +3,8 @@ import { tokenValues } from '@ni/nimble-components/dist/esm/theme-provider/desig import logoLight from './nimble-light.svg'; import logoDark from './nimble-dark.svg'; +const fontFamily = family => `"${family}", sans-serif`; + const light = create({ base: 'light', @@ -23,6 +25,7 @@ const light = create({ appPreviewBg: tokenValues.applicationBackgroundColor.light, appBorderColor: tokenValues.tableRowBorderColor.light, appBorderRadius: 1, + fontBase: fontFamily(tokenValues.bodyFontFamily), // Text colors textColor: tokenValues.bodyFontColor.light, @@ -66,6 +69,7 @@ const dark = create({ appPreviewBg: tokenValues.applicationBackgroundColor.dark, appBorderColor: tokenValues.tableRowBorderColor.dark, appBorderRadius: 1, + fontBase: fontFamily(tokenValues.bodyFontFamily), // Text colors textColor: tokenValues.bodyFontColor.dark, diff --git a/packages/storybook/package.json b/packages/storybook/package.json index d3f79e255a..42cf0acc36 100644 --- a/packages/storybook/package.json +++ b/packages/storybook/package.json @@ -42,7 +42,6 @@ "@storybook/html-vite": "^10.3.6", "@types/js-beautify": "^1.14.3", "js-beautify": "^2.0.3", - "react-syntax-highlighter": "^16.1.0", "remark-gfm": "^4.0.0", "storybook": "^10.3.6", "storybook-addon-pseudo-states": "^10.3.6", diff --git a/packages/storybook/src/nimble/button/button-anatomy.tsx b/packages/storybook/src/nimble/button/button-anatomy.tsx new file mode 100644 index 0000000000..0147dc1cc1 --- /dev/null +++ b/packages/storybook/src/nimble/button/button-anatomy.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { + applicationBackgroundColor, + bodyFontColor, + buttonAccentBlockFontColor, + tagFillColor +} from '@ni/nimble-components/dist/esm/theme-provider/design-tokens'; +import anatomySvg from './images/button-anatomy.svg?raw'; + +const anatomySvgStyle = { + display: 'block', + maxWidth: '100%', + paddingBottom: '16px', + '--button-anatomy-background-color': `var(${applicationBackgroundColor.cssCustomProperty})`, + '--button-anatomy-body-color': `var(${bodyFontColor.cssCustomProperty})`, + '--button-anatomy-tag-color': `var(${tagFillColor.cssCustomProperty})`, + '--button-anatomy-accent-color': `var(${buttonAccentBlockFontColor.cssCustomProperty})` +} as React.CSSProperties; + +interface ButtonAnatomyProps { + alt: string; +} + +export const ButtonAnatomy = ({ alt }: ButtonAnatomyProps): React.JSX.Element => { + return
; +}; diff --git a/packages/storybook/src/nimble/button/button-sections.ts b/packages/storybook/src/nimble/button/button-sections.ts new file mode 100644 index 0000000000..7bc9075bfd --- /dev/null +++ b/packages/storybook/src/nimble/button/button-sections.ts @@ -0,0 +1,18 @@ +export const buttonSections = { + overview: { id: 'overview', title: 'Overview', level: 2 }, + buttonAnatomy: { id: 'button-anatomy', title: 'Button Anatomy', level: 2 }, + implementationApi: { id: 'implementation-api', title: 'Implementation & API', level: 2 }, + usage: { id: 'usage', title: 'Usage', level: 2 }, + whenToUse: { id: 'when-to-use', title: 'When to Use', level: 3 }, + appearanceStyling: { id: 'appearance-styling', title: 'Appearance & Styling', level: 2 }, + appearances: { id: 'appearances', title: 'Appearances', level: 3 }, + appearanceVariants: { id: 'appearance-variants', title: 'Appearance Variants', level: 3 }, + sizing: { id: 'sizing', title: 'Sizing', level: 3 }, + spacingWithOtherComponents: { id: 'spacing-with-other-components', title: 'Spacing with Other Components', level: 3 }, + buttonGuidelines: { id: 'button-guidelines', title: 'Button Guidelines', level: 2 }, + accessibility: { id: 'accessibility', title: 'Accessibility', level: 2 }, + accessibleIconButtons: { id: 'accessible-icon-buttons', title: 'Accessible Icon Buttons', level: 3 }, + keyboardUsage: { id: 'keyboard-usage', title: 'Keyboard Usage', level: 3 }, + alternativesRelated: { id: 'alternatives-related', title: 'Alternatives & Related', level: 2 }, + alternativesToConsider: { id: 'alternatives-to-consider', title: 'Alternatives to Consider', level: 3 } +} as const; diff --git a/packages/storybook/src/nimble/button/button.mdx b/packages/storybook/src/nimble/button/button.mdx index c4f83de384..54bbe9ae66 100644 --- a/packages/storybook/src/nimble/button/button.mdx +++ b/packages/storybook/src/nimble/button/button.mdx @@ -1,46 +1,182 @@ import { Canvas, Meta, Controls, Title } from '@storybook/addon-docs/blocks'; import ContentHiddenDocs from '../patterns/button/content-hidden-docs.mdx'; import ButtonStylingDocs from '../patterns/button/button-styling-docs.mdx'; +import { buttonSections as sections } from './button-sections'; import ComponentApisLink from '../../docs/component-apis-link.mdx'; import { buttonTag } from '@ni/nimble-components/dist/esm/button'; import { anchorButtonTag } from '@ni/nimble-components/dist/esm/anchor-button'; +import { NimbleButton } from '@ni/nimble-react/button'; import * as buttonStories from './button.stories'; -import { Tag } from '../../utilities/story-layout'; +import { ButtonAnatomy } from './button-anatomy'; +import { + Do, + Dont, + StoryAnatomy, + StoryApi, + StoryGuidance, + StoryGuidanceGrid, + StoryPage, + StoryPreview, + StorySection, + Tag +} from '../../utilities/story-layout'; -