@pure-ds/storybook 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.storybook/addons/description/preview.js +15 -0
  2. package/.storybook/addons/description/register.js +60 -0
  3. package/.storybook/addons/html-preview/Panel.jsx +327 -0
  4. package/.storybook/addons/html-preview/constants.js +6 -0
  5. package/.storybook/addons/html-preview/preview.js +178 -0
  6. package/.storybook/addons/html-preview/register.js +16 -0
  7. package/.storybook/addons/pds-configurator/SearchTool.js +44 -0
  8. package/.storybook/addons/pds-configurator/Tool.js +30 -0
  9. package/.storybook/addons/pds-configurator/constants.js +9 -0
  10. package/.storybook/addons/pds-configurator/preview.js +159 -0
  11. package/.storybook/addons/pds-configurator/register.js +24 -0
  12. package/.storybook/docs.css +35 -0
  13. package/.storybook/htmlPreview.css +103 -0
  14. package/.storybook/htmlPreview.js +271 -0
  15. package/.storybook/main.js +160 -0
  16. package/.storybook/preview-body.html +48 -0
  17. package/.storybook/preview-head.html +11 -0
  18. package/.storybook/preview.js +1563 -0
  19. package/README.md +266 -0
  20. package/bin/index.js +40 -0
  21. package/dist/pds-reference.json +2101 -0
  22. package/package.json +45 -0
  23. package/pds.config.js +6 -0
  24. package/public/assets/css/app.css +1216 -0
  25. package/public/assets/data/auto-design-advanced.json +704 -0
  26. package/public/assets/data/auto-design-simple.json +123 -0
  27. package/public/assets/img/icon-512x512.png +0 -0
  28. package/public/assets/img/logo-trans.png +0 -0
  29. package/public/assets/img/logo.png +0 -0
  30. package/public/assets/js/app.js +15088 -0
  31. package/public/assets/js/app.js.map +7 -0
  32. package/public/assets/js/lit.js +1176 -0
  33. package/public/assets/js/lit.js.map +7 -0
  34. package/public/assets/js/pds.js +9801 -0
  35. package/public/assets/js/pds.js.map +7 -0
  36. package/public/assets/pds/components/pds-calendar.js +837 -0
  37. package/public/assets/pds/components/pds-drawer.js +857 -0
  38. package/public/assets/pds/components/pds-icon.js +338 -0
  39. package/public/assets/pds/components/pds-jsonform.js +1775 -0
  40. package/public/assets/pds/components/pds-richtext.js +1035 -0
  41. package/public/assets/pds/components/pds-scrollrow.js +331 -0
  42. package/public/assets/pds/components/pds-splitpanel.js +401 -0
  43. package/public/assets/pds/components/pds-tabstrip.js +251 -0
  44. package/public/assets/pds/components/pds-toaster.js +446 -0
  45. package/public/assets/pds/components/pds-upload.js +657 -0
  46. package/public/assets/pds/custom-elements.json +2003 -0
  47. package/public/assets/pds/icons/pds-icons.svg +498 -0
  48. package/public/assets/pds/pds-css-complete.json +1861 -0
  49. package/public/assets/pds/pds-runtime-config.json +11 -0
  50. package/public/assets/pds/pds.css-data.json +2152 -0
  51. package/public/assets/pds/styles/pds-components.css +1944 -0
  52. package/public/assets/pds/styles/pds-components.css.js +3895 -0
  53. package/public/assets/pds/styles/pds-primitives.css +352 -0
  54. package/public/assets/pds/styles/pds-primitives.css.js +711 -0
  55. package/public/assets/pds/styles/pds-styles.css +3761 -0
  56. package/public/assets/pds/styles/pds-styles.css.js +7529 -0
  57. package/public/assets/pds/styles/pds-tokens.css +699 -0
  58. package/public/assets/pds/styles/pds-tokens.css.js +1405 -0
  59. package/public/assets/pds/styles/pds-utilities.css +763 -0
  60. package/public/assets/pds/styles/pds-utilities.css.js +1533 -0
  61. package/public/assets/pds/vscode-custom-data.json +824 -0
  62. package/scripts/build-pds-reference.mjs +807 -0
  63. package/scripts/generate-stories.js +542 -0
  64. package/scripts/package-build.js +86 -0
  65. package/src/js/app.js +17 -0
  66. package/src/js/common/ask.js +208 -0
  67. package/src/js/common/common.js +20 -0
  68. package/src/js/common/font-loader.js +200 -0
  69. package/src/js/common/msg.js +90 -0
  70. package/src/js/lit.js +40 -0
  71. package/src/js/pds-core/pds-config.js +1162 -0
  72. package/src/js/pds-core/pds-enhancer-metadata.js +75 -0
  73. package/src/js/pds-core/pds-enhancers.js +357 -0
  74. package/src/js/pds-core/pds-enums.js +86 -0
  75. package/src/js/pds-core/pds-generator.js +5317 -0
  76. package/src/js/pds-core/pds-ontology.js +256 -0
  77. package/src/js/pds-core/pds-paths.js +109 -0
  78. package/src/js/pds-core/pds-query.js +571 -0
  79. package/src/js/pds-core/pds-registry.js +129 -0
  80. package/src/js/pds-core/pds.d.ts +129 -0
  81. package/src/js/pds.d.ts +408 -0
  82. package/src/js/pds.js +1579 -0
  83. package/src/pds-core/pds-api.js +105 -0
  84. package/stories/GettingStarted.md +96 -0
  85. package/stories/GettingStarted.stories.js +144 -0
  86. package/stories/WhatIsPDS.md +194 -0
  87. package/stories/WhatIsPDS.stories.js +144 -0
  88. package/stories/components/PdsCalendar.stories.js +263 -0
  89. package/stories/components/PdsDrawer.stories.js +623 -0
  90. package/stories/components/PdsIcon.stories.js +78 -0
  91. package/stories/components/PdsJsonform.stories.js +1444 -0
  92. package/stories/components/PdsRichtext.stories.js +367 -0
  93. package/stories/components/PdsScrollrow.stories.js +140 -0
  94. package/stories/components/PdsSplitpanel.stories.js +502 -0
  95. package/stories/components/PdsTabstrip.stories.js +442 -0
  96. package/stories/components/PdsToaster.stories.js +186 -0
  97. package/stories/components/PdsUpload.stories.js +66 -0
  98. package/stories/enhancements/Dropdowns.stories.js +185 -0
  99. package/stories/enhancements/InteractiveStates.stories.js +625 -0
  100. package/stories/enhancements/MeshGradients.stories.js +320 -0
  101. package/stories/enhancements/OpenGroups.stories.js +227 -0
  102. package/stories/enhancements/RangeSliders.stories.js +232 -0
  103. package/stories/enhancements/RequiredFields.stories.js +189 -0
  104. package/stories/enhancements/Toggles.stories.js +167 -0
  105. package/stories/foundations/Colors.stories.js +283 -0
  106. package/stories/foundations/Icons.stories.js +305 -0
  107. package/stories/foundations/SmartSurfaces.stories.js +367 -0
  108. package/stories/foundations/Spacing.stories.js +175 -0
  109. package/stories/foundations/Typography.stories.js +960 -0
  110. package/stories/foundations/ZIndex.stories.js +325 -0
  111. package/stories/patterns/BorderEffects.stories.js +72 -0
  112. package/stories/patterns/Layout.stories.js +99 -0
  113. package/stories/patterns/Utilities.stories.js +107 -0
  114. package/stories/primitives/Accordion.stories.js +359 -0
  115. package/stories/primitives/Alerts.stories.js +64 -0
  116. package/stories/primitives/Badges.stories.js +183 -0
  117. package/stories/primitives/Buttons.stories.js +229 -0
  118. package/stories/primitives/Cards.stories.js +353 -0
  119. package/stories/primitives/FormGroups.stories.js +569 -0
  120. package/stories/primitives/Forms.stories.js +131 -0
  121. package/stories/primitives/Media.stories.js +203 -0
  122. package/stories/primitives/Tables.stories.js +232 -0
  123. package/stories/reference/ReferenceCatalog.stories.js +28 -0
  124. package/stories/reference/reference-catalog.js +413 -0
  125. package/stories/reference/reference-docs.js +302 -0
  126. package/stories/reference/reference-helpers.js +310 -0
  127. package/stories/utilities/GridSystem.stories.js +208 -0
  128. package/stories/utils/PdsAsk.stories.js +420 -0
  129. package/stories/utils/toast-utils.js +148 -0
package/README.md ADDED
@@ -0,0 +1,266 @@
1
+ # PDS Storybook
2
+
3
+ **Pure Design System** Storybook showcase with live configuration capabilities.
4
+
5
+ This is the reference Storybook implementation demonstrating all features of the Pure Design System, including:
6
+
7
+ - 🎨 **Live Configuration** - Real-time design system updates via embedded configurator
8
+ - 🔍 **Smart Search** - Natural language queries for tokens and components
9
+ - 📚 **Comprehensive Stories** - All tokens, primitives, components, patterns, and enhancements
10
+ - 🎯 **Best Practices** - Organized by design system standards
11
+
12
+ ## Features
13
+
14
+ ### Live Configurator
15
+
16
+ Click the **PDS Configurator** button in the Storybook toolbar to open a configuration panel (via `pds-drawer[position=bottom]`) that includes:
17
+
18
+ - Full `pds-config-form` with simple/advanced modes
19
+ - Real-time preset switching
20
+ - Color, typography, spacing customization
21
+ - Export configuration as JSON
22
+ - Instant application to all visible stories
23
+
24
+ ### Quick Search / Omnibox
25
+
26
+ Click the search icon in the toolbar to query the design system using natural language:
27
+
28
+ - "what is the focus border color on inputs?"
29
+ - "button hover states"
30
+ - "how to create a card layout?"
31
+
32
+ Powered by the PDS query system from `pds-query.js`.
33
+
34
+ ### Story Organization
35
+
36
+ Stories are organized following design system best practices:
37
+
38
+ #### Foundations
39
+ Design tokens and core elements:
40
+ - **Colors** - Scales (50-900), semantics, themes
41
+ - **Typography** - Font families, sizes, weights, modular scale
42
+ - **Spacing** - Spatial rhythm, progression
43
+ - **Icons** - Icon system with sprite
44
+
45
+ #### Primitives
46
+ Basic UI building blocks:
47
+ - **Buttons** - Variants, sizes, states, icon buttons
48
+ - **Forms** - Inputs, selects, textareas, validation
49
+ - **Cards** - Surface containers
50
+ - **Badges** - Pills and badges
51
+ - **Alerts** - Notification styles
52
+
53
+ #### Components
54
+ Web Components (`<pds-*>`):
55
+ - `pds-icon` - SVG sprite icons
56
+ - `pds-drawer` - Slide-out panels
57
+ - `pds-tabstrip` - Accessible tabs
58
+ - `pds-upload` - File upload with preview
59
+ - `pds-toaster` - Toast notifications
60
+ - `pds-richtext` - Rich text editor (prefers `#showdown` import map; set `format="markdown"` to submit Markdown)
61
+ - `pds-jsonform` - JSON Schema forms
62
+ - `pds-splitpanel` - Resizable panes
63
+ - `pds-scrollrow` - Horizontal scroll
64
+
65
+ #### Patterns
66
+ Layout patterns and utilities:
67
+ - **Layout** - Grid, flex, containers
68
+ - **Utilities** - Spacing, borders, effects
69
+ - **Border Effects** - Gradients, glows
70
+
71
+ #### Enhancements
72
+ Progressive enhancements for semantic HTML:
73
+ - **Dropdowns** - `<nav data-dropdown>`
74
+ - **Toggles** - `<label data-toggle>`
75
+ - **Range Sliders** - Enhanced `<input type="range">`
76
+ - **Required Fields** - Auto-asterisks
77
+
78
+ ## Development
79
+
80
+ ### Install Dependencies
81
+
82
+ ```bash
83
+ npm install
84
+ ```
85
+
86
+ ### Generate Stories
87
+
88
+ Auto-generate stories from PDS ontology and demo component:
89
+
90
+ ```bash
91
+ npm run generate-stories
92
+ ```
93
+
94
+ This reads:
95
+ - `src/js/pds-core/pds-ontology.js` - Component metadata
96
+ - `src/js/pds-configurator/pds-demo.js` - Demo HTML sections
97
+
98
+ And outputs to `stories/` organized by groups.
99
+
100
+ ### Run Storybook
101
+
102
+ ```bash
103
+ npm run storybook
104
+ ```
105
+
106
+ Opens at http://localhost:6006
107
+
108
+ ### Build Storybook
109
+
110
+ ```bash
111
+ npm run build-storybook
112
+ ```
113
+
114
+ Outputs to `storybook-static/`
115
+
116
+ ### Development Mode (Generate + Run)
117
+
118
+ ```bash
119
+ npm run storybook:dev
120
+ ```
121
+
122
+ Generates stories then starts Storybook.
123
+
124
+ ## Architecture
125
+
126
+ ### Live Mode
127
+
128
+ This Storybook runs PDS in **live mode**:
129
+
130
+ ```javascript
131
+ // .storybook/preview.js
132
+ await PDS.start({
133
+ mode: 'live',
134
+ preset: 'default',
135
+ autoDefine: {
136
+ baseURL: '/assets/pds/components/',
137
+ predefine: ['pds-icon', 'pds-drawer']
138
+ }
139
+ });
140
+ ```
141
+
142
+ **Benefits:**
143
+ - Styles generated at runtime
144
+ - Instant design updates
145
+ - Full access to `PDS.compiled` object model
146
+ - Automatic font loading
147
+
148
+ > ⚠️ **Important: Programmatic Component Access**
149
+ >
150
+ > Components loaded via `autoDefine` (except those in `predefine`) are registered asynchronously. When accessing component methods programmatically in stories or utilities:
151
+ >
152
+ > ```javascript
153
+ > // Always wait for the component to be defined
154
+ > await customElements.whenDefined('pds-toaster');
155
+ > const toaster = document.querySelector('pds-toaster');
156
+ > toaster.toast('Message');
157
+ > ```
158
+ >
159
+ > Components in the `predefine` array (`pds-icon`, `pds-drawer`) are available immediately after `PDS.start()` completes.
160
+
161
+ ### Configurator Addon
162
+
163
+ Custom Storybook addon at `.storybook/addons/pds-configurator/`:
164
+
165
+ **Manager Side** (`Tool.js`):
166
+ - Toolbar button to open configurator
167
+ - Search/omnibox for queries
168
+ - Event bus communication
169
+
170
+ **Preview Side** (`preview.js`):
171
+ - Creates `<pds-drawer>` with `<pds-config-form>`
172
+ - Listens to `pds:design:updated` events
173
+ - Calls `PDS.applyDesign()` and forces remount
174
+
175
+ ### Story Generator
176
+
177
+ `scripts/generate-stories.js` automatically creates stories by:
178
+
179
+ 1. Parsing `pds-ontology.js` for component metadata
180
+ 2. Extracting HTML from `pds-demo.js` sections
181
+ 3. Generating CSF3 stories with controls
182
+ 4. Organizing by groups (foundations/primitives/components/patterns/enhancements)
183
+
184
+ **Customization:**
185
+ Edit the generator to add new story groups or customize templates.
186
+
187
+ ## Story Controls
188
+
189
+ Each story includes argTypes for interactive customization:
190
+
191
+ ```javascript
192
+ argTypes: {
193
+ preset: {
194
+ control: 'select',
195
+ options: ['default', 'ocean-breeze', 'midnight-steel', ...]
196
+ },
197
+ primaryColor: {
198
+ control: 'color'
199
+ },
200
+ secondaryColor: {
201
+ control: 'color'
202
+ }
203
+ }
204
+ ```
205
+
206
+ Controls trigger `PDS.applyDesign()` to update the live configuration.
207
+
208
+ ## Integration with Consumer Projects
209
+
210
+ See `packages/pds-storybook-cli` for CLI tool to integrate PDS into existing Storybook instances.
211
+
212
+ ## Configuration
213
+
214
+ Modify `.storybook/preview.js` to change:
215
+
216
+ - Initial preset
217
+ - Auto-loaded components
218
+ - Theme management
219
+ - Global styles application
220
+
221
+ ## Files
222
+
223
+ ```
224
+ packages/pds-storybook/
225
+ ├── .storybook/
226
+ │ ├── main.js # Storybook configuration
227
+ │ ├── preview.js # PDS initialization
228
+ │ └── addons/
229
+ │ └── pds-configurator/ # Custom addon
230
+ │ ├── register.js # Manager registration
231
+ │ ├── Tool.js # Toolbar UI
232
+ │ ├── preview.js # Preview logic
233
+ │ └── constants.js # Event constants
234
+ ├── scripts/
235
+ │ └── generate-stories.js # Story generator
236
+ ├── stories/
237
+ │ ├── GettingStarted.mdx # Welcome page
238
+ │ ├── foundations/ # Token stories
239
+ │ ├── primitives/ # Primitive stories
240
+ │ ├── components/ # Component stories
241
+ │ ├── patterns/ # Pattern stories
242
+ │ └── enhancements/ # Enhancement stories
243
+ └── package.json
244
+ ```
245
+
246
+ ## Contributing
247
+
248
+ Stories are auto-generated but can be manually edited. After editing:
249
+
250
+ 1. Test changes: `npm run storybook`
251
+ 2. Regenerate if needed: `npm run generate-stories`
252
+ 3. Commit both generator and generated files
253
+
254
+ ## Publishing
255
+
256
+ This package is private and not published to npm. It serves as:
257
+
258
+ 1. Reference implementation
259
+ 2. Development environment
260
+ 3. Story template source for CLI
261
+
262
+ The CLI (`@pure-ds/storybook`) copies stories from here to consumer projects.
263
+
264
+ ## License
265
+
266
+ ISC
package/bin/index.js ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawn } from 'child_process';
4
+ import { fileURLToPath } from 'url';
5
+ import { dirname, join } from 'path';
6
+
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+ const packageRoot = join(__dirname, '..');
10
+ const configDir = join(packageRoot, '.storybook');
11
+
12
+ const args = process.argv.slice(2);
13
+ const command = args[0] || 'dev';
14
+
15
+ const storybookArgs = [
16
+ command === 'build' ? 'build' : 'dev',
17
+ '-c', configDir,
18
+ ...args.slice(1)
19
+ ];
20
+
21
+ // If dev, add port if not specified
22
+ if (command !== 'build' && !args.includes('-p') && !args.includes('--port')) {
23
+ storybookArgs.push('-p', '6006');
24
+ }
25
+
26
+ console.log(`Running Storybook with config: ${configDir}`);
27
+
28
+ const child = spawn('npx', ['storybook', ...storybookArgs], {
29
+ stdio: 'inherit',
30
+ shell: true,
31
+ cwd: process.cwd(), // Run in user's project root so it finds their stories
32
+ env: {
33
+ ...process.env,
34
+ PDS_STORYBOOK_ROOT: packageRoot
35
+ }
36
+ });
37
+
38
+ child.on('exit', (code) => {
39
+ process.exit(code);
40
+ });