@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
@@ -0,0 +1,263 @@
1
+ import { html } from 'lit';
2
+
3
+ const docsParameters = {
4
+ description: {
5
+ component: 'A fully featured calendar component with month navigation, event display, and expandable day views'
6
+ }
7
+ };
8
+
9
+ if (typeof window !== 'undefined') {
10
+ import('../reference/reference-docs.js')
11
+ .then(({ createComponentDocsPage }) => {
12
+ docsParameters.page = createComponentDocsPage('pds-calendar');
13
+ })
14
+ .catch((error) => {
15
+ console.warn('storybook: docs page failed to load for pds-calendar', error);
16
+ });
17
+ }
18
+
19
+ export default {
20
+ title: 'Components/Pds Calendar',
21
+ tags: ['autodocs'],
22
+ parameters: {
23
+ docs: docsParameters
24
+ },
25
+ argTypes: {
26
+ date: {
27
+ control: 'text',
28
+ description: 'The date to display (defaults to current date). Accepts any valid date string'
29
+ }
30
+ }
31
+ };
32
+
33
+ // Sample event data generator
34
+ const getEventData = () => ({
35
+ 5: [
36
+ { title: 'Team Standup', type: 'primary' },
37
+ { title: 'Code Review Session', type: 'info' }
38
+ ],
39
+ 12: [
40
+ { title: 'Sprint Planning', type: 'primary' }
41
+ ],
42
+ 15: [
43
+ { title: 'Client Meeting', type: 'warning' },
44
+ { title: 'Design Review', type: 'info' }
45
+ ],
46
+ 18: [
47
+ { title: 'Deployment Window', type: 'danger' }
48
+ ],
49
+ 20: [
50
+ { title: 'Team Retrospective', type: 'primary' },
51
+ { title: 'Documentation Review', type: 'info' }
52
+ ],
53
+ 25: [
54
+ { title: 'Holiday Event', type: 'warning' }
55
+ ],
56
+ 28: [
57
+ { title: 'Release Candidate Review', type: 'danger' },
58
+ { title: 'Performance Testing', type: 'info' }
59
+ ]
60
+ });
61
+
62
+ export const Default = {
63
+ render: (args) => {
64
+ setTimeout(() => {
65
+ const calendar = document.querySelector('#default-calendar');
66
+ if (calendar) {
67
+ calendar.addEventListener('month-rendered', (e) => {
68
+ e.detail.fill(getEventData());
69
+ });
70
+ }
71
+ }, 0);
72
+
73
+ return html`
74
+ <pds-calendar id="default-calendar"></pds-calendar>
75
+ `;
76
+ },
77
+ args: {
78
+ date: ''
79
+ }
80
+ };
81
+
82
+ export const WithSpecificDate = {
83
+ render: () => {
84
+ setTimeout(() => {
85
+ const calendar = document.querySelector('#specific-date-calendar');
86
+ if (calendar) {
87
+ calendar.addEventListener('month-rendered', (e) => {
88
+ e.detail.fill({
89
+ 10: [
90
+ { title: 'Important Meeting', type: 'danger' }
91
+ ],
92
+ 15: [
93
+ { title: 'Project Kickoff', type: 'primary' }
94
+ ],
95
+ 25: [
96
+ { title: 'Holiday', type: 'warning' }
97
+ ]
98
+ });
99
+ });
100
+ }
101
+ }, 0);
102
+
103
+ return html`
104
+ <pds-calendar id="specific-date-calendar" date="2024-12-01"></pds-calendar>
105
+ `;
106
+ }
107
+ };
108
+
109
+ export const WithManyEvents = {
110
+ render: () => {
111
+ setTimeout(() => {
112
+ const calendar = document.querySelector('#many-events-calendar');
113
+ if (calendar) {
114
+ calendar.addEventListener('month-rendered', (e) => {
115
+ const events = {};
116
+
117
+ // Generate events for every other day
118
+ for (let i = 1; i <= 30; i += 2) {
119
+ const types = ['primary', 'info', 'warning', 'danger'];
120
+ const eventCount = Math.floor(Math.random() * 3) + 1;
121
+ events[i] = [];
122
+
123
+ for (let j = 0; j < eventCount; j++) {
124
+ events[i].push({
125
+ title: `Event ${j + 1} on Day ${i}`,
126
+ type: types[Math.floor(Math.random() * types.length)]
127
+ });
128
+ }
129
+ }
130
+
131
+ e.detail.fill(events);
132
+ });
133
+ }
134
+ }, 0);
135
+
136
+ return html`
137
+ <pds-calendar id="many-events-calendar"></pds-calendar>
138
+ `;
139
+ }
140
+ };
141
+
142
+ export const EventTypes = {
143
+ render: () => {
144
+ setTimeout(() => {
145
+ const calendar = document.querySelector('#event-types-calendar');
146
+ if (calendar) {
147
+ calendar.addEventListener('month-rendered', (e) => {
148
+ e.detail.fill({
149
+ 5: [
150
+ { title: 'Primary Event', type: 'primary' }
151
+ ],
152
+ 10: [
153
+ { title: 'Info Event', type: 'info' }
154
+ ],
155
+ 15: [
156
+ { title: 'Warning Event', type: 'warning' }
157
+ ],
158
+ 20: [
159
+ { title: 'Danger Event', type: 'danger' }
160
+ ],
161
+ 25: [
162
+ { title: 'Primary Event', type: 'primary' },
163
+ { title: 'Info Event', type: 'info' },
164
+ { title: 'Warning Event', type: 'warning' },
165
+ { title: 'Danger Event', type: 'danger' }
166
+ ]
167
+ });
168
+ });
169
+ }
170
+ }, 0);
171
+
172
+ return html`
173
+ <div class="flex flex-col gap-lg">
174
+ <pds-calendar id="event-types-calendar"></pds-calendar>
175
+
176
+ <div class="card">
177
+ <h3>Event Types</h3>
178
+ <ul>
179
+ <li><strong>Primary:</strong> Blue - Main events and important tasks</li>
180
+ <li><strong>Info:</strong> Light blue - Informational items and notes</li>
181
+ <li><strong>Warning:</strong> Yellow - Attention required items</li>
182
+ <li><strong>Danger:</strong> Red - Critical deadlines and alerts</li>
183
+ </ul>
184
+ </div>
185
+ </div>
186
+ `;
187
+ }
188
+ };
189
+
190
+ export const DynamicEvents = {
191
+ render: () => {
192
+ setTimeout(() => {
193
+ const calendar = document.querySelector('#dynamic-calendar');
194
+ const addButton = document.querySelector('#add-event-btn');
195
+ const dayInput = document.querySelector('#event-day-input');
196
+ const titleInput = document.querySelector('#event-title-input');
197
+ const typeSelect = document.querySelector('#event-type-select');
198
+
199
+ let currentEvents = {
200
+ 10: [{ title: 'Existing Event', type: 'primary' }]
201
+ };
202
+
203
+ // Setup persistent event listener
204
+ if (calendar) {
205
+ calendar.addEventListener('month-rendered', (e) => {
206
+ e.detail.fill(currentEvents);
207
+ });
208
+ }
209
+
210
+ if (addButton && calendar) {
211
+ addButton.onclick = () => {
212
+ const day = parseInt(dayInput.value);
213
+ const title = titleInput.value;
214
+ const type = typeSelect.value;
215
+
216
+ if (day && title) {
217
+ if (!currentEvents[day]) {
218
+ currentEvents[day] = [];
219
+ }
220
+ currentEvents[day].push({ title, type });
221
+
222
+ // Trigger re-render
223
+ calendar.refresh();
224
+
225
+ // Clear inputs
226
+ titleInput.value = '';
227
+ dayInput.value = '';
228
+ }
229
+ };
230
+ }
231
+ }, 0);
232
+
233
+ return html`
234
+ <div class="flex flex-col gap-lg">
235
+ <div class="card">
236
+ <h3>Add Events Dynamically</h3>
237
+ <div class="flex gap-md items-end">
238
+ <div class="form-group">
239
+ <label for="event-day-input">Day</label>
240
+ <input id="event-day-input" type="number" min="1" max="31" placeholder="Day" class="input" />
241
+ </div>
242
+ <div class="form-group flex-1">
243
+ <label for="event-title-input">Title</label>
244
+ <input id="event-title-input" type="text" placeholder="Event title" class="input" />
245
+ </div>
246
+ <div class="form-group">
247
+ <label for="event-type-select">Type</label>
248
+ <select id="event-type-select" class="input">
249
+ <option value="primary">Primary</option>
250
+ <option value="info">Info</option>
251
+ <option value="warning">Warning</option>
252
+ <option value="danger">Danger</option>
253
+ </select>
254
+ </div>
255
+ <button id="add-event-btn" class="btn-primary">Add Event</button>
256
+ </div>
257
+ </div>
258
+
259
+ <pds-calendar id="dynamic-calendar"></pds-calendar>
260
+ </div>
261
+ `;
262
+ }
263
+ };