@walkeros/explorer 1.0.2 → 2.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 (172) hide show
  1. package/LICENSE +2 -2
  2. package/STYLE.md +240 -136
  3. package/dist/{chunk-VWWAIDNX.mjs → chunk-YKT4D7MG.mjs} +201 -53
  4. package/dist/chunk-YKT4D7MG.mjs.map +1 -0
  5. package/dist/components/atoms/alert.d.ts +29 -0
  6. package/dist/components/atoms/alert.d.ts.map +1 -0
  7. package/dist/components/atoms/alert.js +19 -0
  8. package/dist/components/atoms/alert.js.map +1 -0
  9. package/dist/components/atoms/alert.stories.d.ts +7 -0
  10. package/dist/components/atoms/alert.stories.d.ts.map +1 -0
  11. package/dist/components/atoms/alert.stories.js +14 -0
  12. package/dist/components/atoms/alert.stories.js.map +1 -0
  13. package/dist/components/atoms/button.stories.d.ts +14 -0
  14. package/dist/components/atoms/button.stories.d.ts.map +1 -0
  15. package/dist/components/atoms/button.stories.js +25 -0
  16. package/dist/components/atoms/button.stories.js.map +1 -0
  17. package/dist/components/atoms/code.d.ts +4 -1
  18. package/dist/components/atoms/code.d.ts.map +1 -1
  19. package/dist/components/atoms/code.js +45 -12
  20. package/dist/components/atoms/code.js.map +1 -1
  21. package/dist/components/atoms/footer.stories.d.ts +14 -0
  22. package/dist/components/atoms/footer.stories.d.ts.map +1 -0
  23. package/dist/components/atoms/footer.stories.js +29 -0
  24. package/dist/components/atoms/footer.stories.js.map +1 -0
  25. package/dist/components/atoms/form-field.d.ts +28 -0
  26. package/dist/components/atoms/form-field.d.ts.map +1 -0
  27. package/dist/components/atoms/form-field.js +16 -0
  28. package/dist/components/atoms/form-field.js.map +1 -0
  29. package/dist/components/atoms/form-field.stories.d.ts +7 -0
  30. package/dist/components/atoms/form-field.stories.d.ts.map +1 -0
  31. package/dist/components/atoms/form-field.stories.js +16 -0
  32. package/dist/components/atoms/form-field.stories.js.map +1 -0
  33. package/dist/components/atoms/form-input.d.ts +43 -0
  34. package/dist/components/atoms/form-input.d.ts.map +1 -0
  35. package/dist/components/atoms/form-input.js +26 -0
  36. package/dist/components/atoms/form-input.js.map +1 -0
  37. package/dist/components/atoms/form-input.stories.d.ts +7 -0
  38. package/dist/components/atoms/form-input.stories.d.ts.map +1 -0
  39. package/dist/components/atoms/form-input.stories.js +17 -0
  40. package/dist/components/atoms/form-input.stories.js.map +1 -0
  41. package/dist/components/atoms/form-textarea.d.ts +41 -0
  42. package/dist/components/atoms/form-textarea.d.ts.map +1 -0
  43. package/dist/components/atoms/form-textarea.js +26 -0
  44. package/dist/components/atoms/form-textarea.js.map +1 -0
  45. package/dist/components/atoms/form-textarea.stories.d.ts +7 -0
  46. package/dist/components/atoms/form-textarea.stories.d.ts.map +1 -0
  47. package/dist/components/atoms/form-textarea.stories.js +17 -0
  48. package/dist/components/atoms/form-textarea.stories.js.map +1 -0
  49. package/dist/components/atoms/grid.stories.d.ts +18 -0
  50. package/dist/components/atoms/grid.stories.d.ts.map +1 -0
  51. package/dist/components/atoms/grid.stories.js +60 -0
  52. package/dist/components/atoms/grid.stories.js.map +1 -0
  53. package/dist/components/atoms/header.stories.d.ts +15 -0
  54. package/dist/components/atoms/header.stories.d.ts.map +1 -0
  55. package/dist/components/atoms/header.stories.js +37 -0
  56. package/dist/components/atoms/header.stories.js.map +1 -0
  57. package/dist/components/atoms/icons/icon.stories.d.ts +18 -0
  58. package/dist/components/atoms/icons/icon.stories.d.ts.map +1 -0
  59. package/dist/components/atoms/icons/icon.stories.js +37 -0
  60. package/dist/components/atoms/icons/icon.stories.js.map +1 -0
  61. package/dist/components/atoms/panel-hints.stories.d.ts +14 -0
  62. package/dist/components/atoms/panel-hints.stories.d.ts.map +1 -0
  63. package/dist/components/atoms/panel-hints.stories.js +35 -0
  64. package/dist/components/atoms/panel-hints.stories.js.map +1 -0
  65. package/dist/components/atoms/spinner.d.ts +17 -0
  66. package/dist/components/atoms/spinner.d.ts.map +1 -0
  67. package/dist/components/atoms/spinner.js +14 -0
  68. package/dist/components/atoms/spinner.js.map +1 -0
  69. package/dist/components/atoms/spinner.stories.d.ts +7 -0
  70. package/dist/components/atoms/spinner.stories.d.ts.map +1 -0
  71. package/dist/components/atoms/spinner.stories.js +9 -0
  72. package/dist/components/atoms/spinner.stories.js.map +1 -0
  73. package/dist/components/atoms/submit-button.d.ts +34 -0
  74. package/dist/components/atoms/submit-button.d.ts.map +1 -0
  75. package/dist/components/atoms/submit-button.js +18 -0
  76. package/dist/components/atoms/submit-button.js.map +1 -0
  77. package/dist/components/atoms/submit-button.stories.d.ts +7 -0
  78. package/dist/components/atoms/submit-button.stories.d.ts.map +1 -0
  79. package/dist/components/atoms/submit-button.stories.js +13 -0
  80. package/dist/components/atoms/submit-button.stories.js.map +1 -0
  81. package/dist/components/molecules/architecture-flow/ArchitectureFlow.stories.js +1 -1
  82. package/dist/components/molecules/architecture-flow/ArchitectureFlow.stories.js.map +1 -1
  83. package/dist/components/molecules/code-box.d.ts +2 -1
  84. package/dist/components/molecules/code-box.d.ts.map +1 -1
  85. package/dist/components/molecules/code-box.js +32 -6
  86. package/dist/components/molecules/code-box.js.map +1 -1
  87. package/dist/components/molecules/code-box.stories.d.ts +21 -0
  88. package/dist/components/molecules/code-box.stories.d.ts.map +1 -1
  89. package/dist/components/molecules/code-box.stories.js +112 -0
  90. package/dist/components/molecules/code-box.stories.js.map +1 -1
  91. package/dist/components/molecules/code-snippet.stories.d.ts +11 -0
  92. package/dist/components/molecules/code-snippet.stories.d.ts.map +1 -1
  93. package/dist/components/molecules/code-snippet.stories.js +38 -0
  94. package/dist/components/molecules/code-snippet.stories.js.map +1 -1
  95. package/dist/components/molecules/config-form-card.d.ts +50 -0
  96. package/dist/components/molecules/config-form-card.d.ts.map +1 -0
  97. package/dist/components/molecules/config-form-card.js +30 -0
  98. package/dist/components/molecules/config-form-card.js.map +1 -0
  99. package/dist/components/molecules/config-form-card.stories.d.ts +7 -0
  100. package/dist/components/molecules/config-form-card.stories.d.ts.map +1 -0
  101. package/dist/components/molecules/config-form-card.stories.js +21 -0
  102. package/dist/components/molecules/config-form-card.stories.js.map +1 -0
  103. package/dist/components/molecules/dropdown.d.ts +68 -0
  104. package/dist/components/molecules/dropdown.d.ts.map +1 -0
  105. package/dist/components/molecules/dropdown.js +47 -0
  106. package/dist/components/molecules/dropdown.js.map +1 -0
  107. package/dist/components/molecules/dropdown.stories.d.ts +7 -0
  108. package/dist/components/molecules/dropdown.stories.d.ts.map +1 -0
  109. package/dist/components/molecules/dropdown.stories.js +18 -0
  110. package/dist/components/molecules/dropdown.stories.js.map +1 -0
  111. package/dist/components/molecules/flow-map/FlowMap.stories.d.ts.map +1 -1
  112. package/dist/components/molecules/flow-map/FlowMap.stories.js +7 -1
  113. package/dist/components/molecules/flow-map/FlowMap.stories.js.map +1 -1
  114. package/dist/components/molecules/flow-selector.d.ts +19 -0
  115. package/dist/components/molecules/flow-selector.d.ts.map +1 -0
  116. package/dist/components/molecules/flow-selector.js +26 -0
  117. package/dist/components/molecules/flow-selector.js.map +1 -0
  118. package/dist/components/molecules/flow-selector.stories.d.ts +28 -0
  119. package/dist/components/molecules/flow-selector.stories.d.ts.map +1 -0
  120. package/dist/components/molecules/flow-selector.stories.js +66 -0
  121. package/dist/components/molecules/flow-selector.stories.js.map +1 -0
  122. package/dist/components/molecules/form-card.d.ts +28 -0
  123. package/dist/components/molecules/form-card.d.ts.map +1 -0
  124. package/dist/components/molecules/form-card.js +16 -0
  125. package/dist/components/molecules/form-card.js.map +1 -0
  126. package/dist/components/molecules/form-card.stories.d.ts +7 -0
  127. package/dist/components/molecules/form-card.stories.d.ts.map +1 -0
  128. package/dist/components/molecules/form-card.stories.js +16 -0
  129. package/dist/components/molecules/form-card.stories.js.map +1 -0
  130. package/dist/components/molecules/preview.d.ts.map +1 -1
  131. package/dist/components/molecules/preview.js +0 -1
  132. package/dist/components/molecules/preview.js.map +1 -1
  133. package/dist/components/molecules/split-button.d.ts +25 -0
  134. package/dist/components/molecules/split-button.d.ts.map +1 -0
  135. package/dist/components/molecules/split-button.js +37 -0
  136. package/dist/components/molecules/split-button.js.map +1 -0
  137. package/dist/components/molecules/split-button.stories.d.ts +32 -0
  138. package/dist/components/molecules/split-button.stories.d.ts.map +1 -0
  139. package/dist/components/molecules/split-button.stories.js +88 -0
  140. package/dist/components/molecules/split-button.stories.js.map +1 -0
  141. package/dist/hooks/useDropdown.d.ts +34 -0
  142. package/dist/hooks/useDropdown.d.ts.map +1 -0
  143. package/dist/hooks/useDropdown.js +66 -0
  144. package/dist/hooks/useDropdown.js.map +1 -0
  145. package/dist/index.d.cts +432 -4
  146. package/dist/index.d.ts +25 -0
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +15 -0
  149. package/dist/index.js.map +1 -1
  150. package/dist/index.mjs +861 -178
  151. package/dist/index.mjs.map +1 -1
  152. package/dist/{monaco-types-4FIH5OVX.mjs → monaco-types-OLSF6MIE.mjs} +2 -2
  153. package/dist/styles.css +534 -0
  154. package/dist/themes/lighthouse.d.ts.map +1 -1
  155. package/dist/themes/lighthouse.js +1 -0
  156. package/dist/themes/lighthouse.js.map +1 -1
  157. package/dist/themes/palenight.d.ts.map +1 -1
  158. package/dist/themes/palenight.js +1 -0
  159. package/dist/themes/palenight.js.map +1 -1
  160. package/dist/utils/format-code.d.ts.map +1 -1
  161. package/dist/utils/format-code.js +11 -2
  162. package/dist/utils/format-code.js.map +1 -1
  163. package/dist/utils/monaco-decorators.d.ts.map +1 -1
  164. package/dist/utils/monaco-decorators.js +2 -0
  165. package/dist/utils/monaco-decorators.js.map +1 -1
  166. package/dist/utils/monaco-json-schema.d.ts +24 -0
  167. package/dist/utils/monaco-json-schema.d.ts.map +1 -0
  168. package/dist/utils/monaco-json-schema.js +65 -0
  169. package/dist/utils/monaco-json-schema.js.map +1 -0
  170. package/package.json +5 -14
  171. package/dist/chunk-VWWAIDNX.mjs.map +0 -1
  172. /package/dist/{monaco-types-4FIH5OVX.mjs.map → monaco-types-OLSF6MIE.mjs.map} +0 -0
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
2
3
  import { CodeBox } from './code-box';
3
4
  /**
4
5
  * CodeBox - Monaco Editor wrapped in a Box component
@@ -124,4 +125,115 @@ export const FullFeatured = {
124
125
  height: 450,
125
126
  },
126
127
  };
128
+ /**
129
+ * CodeBox with JSON Schema IntelliSense
130
+ *
131
+ * Demonstrates JSON validation, autocomplete, and hover docs
132
+ * powered by a JSON Schema passed via the `jsonSchema` prop.
133
+ */
134
+ export const WithJsonSchema = {
135
+ render: () => {
136
+ const [code, setCode] = useState(JSON.stringify({ version: 1, flows: {} }, null, 2));
137
+ return (_jsx(CodeBox, { code: code, onChange: setCode, language: "json", label: "Flow Config (with IntelliSense)", showFormat: true, jsonSchema: {
138
+ $schema: 'http://json-schema.org/draft-07/schema#',
139
+ type: 'object',
140
+ properties: {
141
+ version: {
142
+ type: 'number',
143
+ description: 'Flow configuration version',
144
+ enum: [1, 2],
145
+ },
146
+ flows: {
147
+ type: 'object',
148
+ description: 'Named flow configurations',
149
+ additionalProperties: {
150
+ type: 'object',
151
+ properties: {
152
+ web: { type: 'object', description: 'Web platform config' },
153
+ server: {
154
+ type: 'object',
155
+ description: 'Server platform config',
156
+ },
157
+ },
158
+ },
159
+ },
160
+ },
161
+ required: ['version', 'flows'],
162
+ } }));
163
+ },
164
+ };
165
+ /**
166
+ * CodeBox with settings toggle
167
+ *
168
+ * Click the gear icon to toggle line numbers, minimap, and word wrap.
169
+ */
170
+ export const WithSettings = {
171
+ render: () => {
172
+ const [code, setCode] = useState(JSON.stringify({
173
+ version: 1,
174
+ flows: {
175
+ default: {
176
+ sources: {
177
+ browser: {
178
+ package: '@walkeros/web-source-browser',
179
+ config: { settings: { pageview: true } },
180
+ },
181
+ },
182
+ destinations: {
183
+ ga4: {
184
+ package: '@walkeros/web-destination-gtag',
185
+ config: {
186
+ settings: { ga4: { measurementId: 'G-XXX' } },
187
+ mapping: {
188
+ 'page view': { name: 'page_view' },
189
+ 'product view': {
190
+ name: 'view_item',
191
+ data: { map: { id: 'items.0.item_id' } },
192
+ },
193
+ },
194
+ },
195
+ },
196
+ },
197
+ },
198
+ },
199
+ }, null, 2));
200
+ return (_jsx(CodeBox, { code: code, onChange: setCode, language: "json", label: "Flow Config", showFormat: true, showSettings: true, height: 500 }));
201
+ },
202
+ };
203
+ const imagePreviewCode = `interface User {
204
+ id: string;
205
+ name: string;
206
+ email: string;
207
+ }
208
+
209
+ const getUser = async (id: string): Promise<User> => {
210
+ const response = await fetch(\`/api/users/\${id}\`);
211
+ return response.json();
212
+ };`;
213
+ /**
214
+ * Image Preview - Mac-style code window with gradient background
215
+ *
216
+ * This story shows what a code image will look like when exported.
217
+ * The gradient uses elbwalker brand colors for consistent CI.
218
+ * Use for creating shareable code images (like ray.so) for LinkedIn, etc.
219
+ */
220
+ export const ImagePreview = {
221
+ decorators: [
222
+ (Story) => (_jsx("div", { className: "elb-explorer", "data-theme": "dark", style: {
223
+ background: '#1F2937',
224
+ padding: 32,
225
+ width: 'fit-content',
226
+ }, children: _jsx("div", { style: { width: 500 }, children: _jsx(Story, {}) }) })),
227
+ ],
228
+ args: {
229
+ code: imagePreviewCode,
230
+ language: 'typescript',
231
+ showTrafficLights: true,
232
+ showHeader: true,
233
+ label: 'user.ts',
234
+ showCopy: false,
235
+ autoHeight: true,
236
+ fontSize: 15,
237
+ },
238
+ };
127
239
  //# sourceMappingURL=code-box.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-box.stories.js","sourceRoot":"","sources":["../../../src/components/molecules/code-box.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;GAKG;AACH,MAAM,IAAI,GAAyB;IACjC,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AAEF,eAAe,IAAI,CAAC;AAGpB;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE;;;;;;;;;;8BAUoB;QAC1B,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;EAmBnB,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAU;IACtC,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,MAAM;QAChB,iBAAiB,EAAE,IAAI;QACvB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAC9D,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,GAAG;KACZ;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ;gBACE,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE;;;;GAIX;gBACK,QAAQ,EAAE,YAAY;aACvB;YACD;gBACE,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE;;;2BAGa;gBACnB,QAAQ,EAAE,YAAY;aACvB;YACD;gBACE,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE;;;;EAIZ;gBACM,QAAQ,EAAE,YAAY;aACvB;SACF;QACD,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,GAAG;KACZ;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE;SACzE;QACD,iBAAiB,EAAE,IAAI;QACvB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,CACN,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,qCAEzD,CACP;QACD,MAAM,EAAE,GAAG;KACZ;CACF,CAAC"}
1
+ {"version":3,"file":"code-box.stories.js","sourceRoot":"","sources":["../../../src/components/molecules/code-box.stories.tsx"],"names":[],"mappings":"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"}
@@ -17,4 +17,15 @@ export declare const AutoFormatDisabled: Story;
17
17
  * JSON Auto-Formatting - Badly formatted JSON gets auto-formatted
18
18
  */
19
19
  export declare const JSONFormatting: Story;
20
+ /**
21
+ * Bare Object Formatting - JS object literals without assignment
22
+ *
23
+ * This is common in docs where event results are shown as plain objects.
24
+ * Previously these were not indented because Prettier couldn't parse them.
25
+ */
26
+ /**
27
+ * One-liner objects stay compact — no auto-formatting
28
+ */
29
+ export declare const BareObjectOneLiner: Story;
30
+ export declare const BareObjectFormatting: Story;
20
31
  //# sourceMappingURL=code-snippet.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-snippet.stories.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/code-snippet.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAUlC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1C,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAmBvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAMhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAK5B,CAAC"}
1
+ {"version":3,"file":"code-snippet.stories.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/code-snippet.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAUlC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1C,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAmBvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAMhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAK5B,CAAC;AAEF;;;;;GAKG;AACH;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAKhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAsBlC,CAAC"}
@@ -65,4 +65,42 @@ export const JSONFormatting = {
65
65
  language: 'json',
66
66
  },
67
67
  };
68
+ /**
69
+ * Bare Object Formatting - JS object literals without assignment
70
+ *
71
+ * This is common in docs where event results are shown as plain objects.
72
+ * Previously these were not indented because Prettier couldn't parse them.
73
+ */
74
+ /**
75
+ * One-liner objects stay compact — no auto-formatting
76
+ */
77
+ export const BareObjectOneLiner = {
78
+ args: {
79
+ code: `{ data: { source: "parent", key: "value", foo: "bar", } }`,
80
+ language: 'javascript',
81
+ },
82
+ };
83
+ export const BareObjectFormatting = {
84
+ args: {
85
+ code: `{
86
+ name: 'promotion view',
87
+ data: {
88
+ name: 'Setting up tracking easily',
89
+ category: 'analytics',
90
+ },
91
+ context: {
92
+ test: ['engagement', 0]
93
+ },
94
+ globals: {
95
+ language: 'en'
96
+ },
97
+ nested: [],
98
+ consent: { functional: true },
99
+ trigger: 'visible',
100
+ entity: 'promotion',
101
+ action: 'view',
102
+ }`,
103
+ language: 'javascript',
104
+ },
105
+ };
68
106
  //# sourceMappingURL=code-snippet.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-snippet.stories.js","sourceRoot":"","sources":["../../../src/components/molecules/code-snippet.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,IAAI,GAA6B;IACrC,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;SAC7D;KACF;CACF,CAAC;AAEF,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,2EAA2E;QACjF,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE;;;;;;;;;;;;;;EAcR;QACE,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAU;IACtC,IAAI,EAAE;QACJ,IAAI,EAAE,iFAAiF;QACvF,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAU;IACvC,IAAI,EAAE;QACJ,IAAI,EAAE,iFAAiF;QACvF,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,KAAK;KACd;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAU;IACnC,IAAI,EAAE;QACJ,IAAI,EAAE,0HAA0H;QAChI,QAAQ,EAAE,MAAM;KACjB;CACF,CAAC"}
1
+ {"version":3,"file":"code-snippet.stories.js","sourceRoot":"","sources":["../../../src/components/molecules/code-snippet.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,IAAI,GAA6B;IACrC,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;SAC7D;KACF;CACF,CAAC;AAEF,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,2EAA2E;QACjF,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE;;;;;;;;;;;;;;EAcR;QACE,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAU;IACtC,IAAI,EAAE;QACJ,IAAI,EAAE,iFAAiF;QACvF,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAU;IACvC,IAAI,EAAE;QACJ,IAAI,EAAE,iFAAiF;QACvF,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,KAAK;KACd;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAU;IACnC,IAAI,EAAE;QACJ,IAAI,EAAE,0HAA0H;QAChI,QAAQ,EAAE,MAAM;KACjB;CACF,CAAC;AAEF;;;;;GAKG;AACH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAU;IACvC,IAAI,EAAE;QACJ,IAAI,EAAE,2DAA2D;QACjE,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAU;IACzC,IAAI,EAAE;QACJ,IAAI,EAAE;;;;;;;;;;;;;;;;;EAiBR;QACE,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { FormEvent } from 'react';
2
+ export interface ConfigFormCardProps {
3
+ /** Current config value (JSON/code string) */
4
+ config: string;
5
+ /** Config change handler */
6
+ onConfigChange: (value: string) => void;
7
+ /** Form submit handler */
8
+ onSubmit: (e: FormEvent) => void;
9
+ /** Loading state */
10
+ loading?: boolean;
11
+ /** Error message (null if no error) */
12
+ error?: string | null;
13
+ /** Card title (default: "Configuration") */
14
+ title?: string;
15
+ /** Textarea label (default: "Configuration (JSON)") */
16
+ label?: string;
17
+ /** Submit button text (default: "Submit") */
18
+ submitText?: string;
19
+ /** Loading button text (default: "Processing...") */
20
+ loadingText?: string;
21
+ /** Number of textarea rows (default: 20) */
22
+ rows?: number;
23
+ /** Card max width */
24
+ maxWidth?: 'sm' | 'md' | 'lg' | 'full';
25
+ /** Additional CSS class */
26
+ className?: string;
27
+ }
28
+ /**
29
+ * ConfigFormCard - Form for JSON/code configuration input (pure UI)
30
+ *
31
+ * Displays a textarea for entering configuration with submit button.
32
+ * Business logic (validation, API calls) is handled via callbacks.
33
+ *
34
+ * @example
35
+ * const { config, setConfig, loading, error, handleSubmit } = useBundleForm(); // App hook
36
+ *
37
+ * <ConfigFormCard
38
+ * config={config}
39
+ * onConfigChange={setConfig}
40
+ * onSubmit={handleSubmit}
41
+ * loading={loading}
42
+ * error={error}
43
+ * title="Bundle Configuration"
44
+ * label="Flow Configuration (JSON)"
45
+ * submitText="Bundle"
46
+ * loadingText="Bundling..."
47
+ * />
48
+ */
49
+ export declare function ConfigFormCard({ config, onConfigChange, onSubmit, loading, error, title, label, submitText, loadingText, rows, maxWidth, className, }: ConfigFormCardProps): import("react/jsx-runtime").JSX.Element;
50
+ //# sourceMappingURL=config-form-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-form-card.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/config-form-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,0BAA0B;IAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACjC,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACvC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,cAAc,EACd,QAAQ,EACR,OAAe,EACf,KAAY,EACZ,KAAuB,EACvB,KAA8B,EAC9B,UAAqB,EACrB,WAA6B,EAC7B,IAAS,EACT,QAAe,EACf,SAAc,GACf,EAAE,mBAAmB,2CAsBrB"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FormCard } from './form-card';
3
+ import { FormTextarea } from '../atoms/form-textarea';
4
+ import { SubmitButton } from '../atoms/submit-button';
5
+ import { Alert } from '../atoms/alert';
6
+ /**
7
+ * ConfigFormCard - Form for JSON/code configuration input (pure UI)
8
+ *
9
+ * Displays a textarea for entering configuration with submit button.
10
+ * Business logic (validation, API calls) is handled via callbacks.
11
+ *
12
+ * @example
13
+ * const { config, setConfig, loading, error, handleSubmit } = useBundleForm(); // App hook
14
+ *
15
+ * <ConfigFormCard
16
+ * config={config}
17
+ * onConfigChange={setConfig}
18
+ * onSubmit={handleSubmit}
19
+ * loading={loading}
20
+ * error={error}
21
+ * title="Bundle Configuration"
22
+ * label="Flow Configuration (JSON)"
23
+ * submitText="Bundle"
24
+ * loadingText="Bundling..."
25
+ * />
26
+ */
27
+ export function ConfigFormCard({ config, onConfigChange, onSubmit, loading = false, error = null, title = 'Configuration', label = 'Configuration (JSON)', submitText = 'Submit', loadingText = 'Processing...', rows = 20, maxWidth = 'lg', className = '', }) {
28
+ return (_jsx(FormCard, { title: title, maxWidth: maxWidth, className: className, children: _jsxs("form", { onSubmit: onSubmit, children: [_jsx(FormTextarea, { label: label, value: config, onChange: onConfigChange, rows: rows, disabled: loading, spellCheck: false, error: !!error }), error && _jsx(Alert, { variant: "error", children: error }), _jsx(SubmitButton, { loading: loading, loadingText: loadingText, fullWidth: true, children: submitText })] }) }));
29
+ }
30
+ //# sourceMappingURL=config-form-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-form-card.js","sourceRoot":"","sources":["../../../src/components/molecules/config-form-card.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AA6BvC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,EACN,cAAc,EACd,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,IAAI,EACZ,KAAK,GAAG,eAAe,EACvB,KAAK,GAAG,sBAAsB,EAC9B,UAAU,GAAG,QAAQ,EACrB,WAAW,GAAG,eAAe,EAC7B,IAAI,GAAG,EAAE,EACT,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,EAAE,GACM;IACpB,OAAO,CACL,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,YAC9D,gBAAM,QAAQ,EAAE,QAAQ,aACtB,KAAC,YAAY,IACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,KAAK,EACjB,KAAK,EAAE,CAAC,CAAC,KAAK,GACd,EAED,KAAK,IAAI,KAAC,KAAK,IAAC,OAAO,EAAC,OAAO,YAAE,KAAK,GAAS,EAEhD,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,kBAChE,UAAU,GACE,IACV,GACE,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { ConfigFormCard } from './config-form-card';
3
+ declare const meta: Meta<typeof ConfigFormCard>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof ConfigFormCard>;
6
+ export declare const Default: Story;
7
+ //# sourceMappingURL=config-form-card.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-form-card.stories.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/config-form-card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAIrC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,KAYrB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { ConfigFormCard } from './config-form-card';
2
+ const meta = {
3
+ title: 'Molecules/ConfigFormCard',
4
+ component: ConfigFormCard,
5
+ tags: ['autodocs'],
6
+ };
7
+ export default meta;
8
+ export const Default = {
9
+ args: {
10
+ config: '{\n "key": "value"\n}',
11
+ onConfigChange: () => { },
12
+ onSubmit: (e) => e.preventDefault(),
13
+ loading: false,
14
+ error: null,
15
+ title: 'Bundle Configuration',
16
+ label: 'Flow Configuration (JSON)',
17
+ submitText: 'Bundle',
18
+ loadingText: 'Bundling...',
19
+ },
20
+ };
21
+ //# sourceMappingURL=config-form-card.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-form-card.stories.js","sourceRoot":"","sources":["../../../src/components/molecules/config-form-card.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,IAAI,GAAgC;IACxC,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,cAAc;IACzB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE,wBAAwB;QAChC,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC;QACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;QACnC,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,2BAA2B;QAClC,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,aAAa;KAC3B;CACF,CAAC"}
@@ -0,0 +1,68 @@
1
+ import React from 'react';
2
+ export interface DropdownProps {
3
+ /** Trigger element (button, link, etc.) */
4
+ trigger: React.ReactNode;
5
+ /** Whether dropdown is open (controlled) */
6
+ isOpen: boolean;
7
+ /** Toggle handler */
8
+ onToggle: () => void;
9
+ /** Dropdown content */
10
+ children: React.ReactNode;
11
+ /** Alignment of dropdown panel */
12
+ align?: 'left' | 'right';
13
+ /** ARIA label for accessibility */
14
+ ariaLabel?: string;
15
+ /** Additional CSS class */
16
+ className?: string;
17
+ }
18
+ export interface DropdownItemProps {
19
+ /** Item content */
20
+ children: React.ReactNode;
21
+ /** Click handler */
22
+ onClick?: () => void;
23
+ /** Disabled state */
24
+ disabled?: boolean;
25
+ /** Visual variant */
26
+ variant?: 'default' | 'danger';
27
+ /** Additional CSS class */
28
+ className?: string;
29
+ }
30
+ export interface DropdownDividerProps {
31
+ /** Additional CSS class */
32
+ className?: string;
33
+ }
34
+ /**
35
+ * Dropdown - Generic dropdown container (UI only)
36
+ *
37
+ * Pure UI component for dropdown menus.
38
+ * Click-outside and keyboard handling should be implemented in the parent
39
+ * via hooks like useDropdown.
40
+ *
41
+ * @example
42
+ * <Dropdown
43
+ * trigger={<button>Menu</button>}
44
+ * isOpen={isOpen}
45
+ * onToggle={toggle}
46
+ * align="right"
47
+ * >
48
+ * <DropdownItem onClick={handleAction}>Action</DropdownItem>
49
+ * <DropdownDivider />
50
+ * <DropdownItem onClick={handleLogout} variant="danger">Logout</DropdownItem>
51
+ * </Dropdown>
52
+ */
53
+ export declare function Dropdown({ trigger, isOpen, onToggle, children, align, ariaLabel, className, }: DropdownProps): import("react/jsx-runtime").JSX.Element;
54
+ /**
55
+ * DropdownItem - Menu item within a dropdown
56
+ *
57
+ * @example
58
+ * <DropdownItem onClick={handleClick}>Action</DropdownItem>
59
+ */
60
+ export declare function DropdownItem({ children, onClick, disabled, variant, className, }: DropdownItemProps): import("react/jsx-runtime").JSX.Element;
61
+ /**
62
+ * DropdownDivider - Visual separator between menu items
63
+ *
64
+ * @example
65
+ * <DropdownDivider />
66
+ */
67
+ export declare function DropdownDivider({ className }: DropdownDividerProps): import("react/jsx-runtime").JSX.Element;
68
+ //# sourceMappingURL=dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,qBAAqB;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,uBAAuB;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,KAAc,EACd,SAAS,EACT,SAAc,GACf,EAAE,aAAa,2CA8Bf;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,OAAmB,EACnB,SAAc,GACf,EAAE,iBAAiB,2CAYnB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,SAAc,EAAE,EAAE,oBAAoB,2CAOvE"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Dropdown - Generic dropdown container (UI only)
4
+ *
5
+ * Pure UI component for dropdown menus.
6
+ * Click-outside and keyboard handling should be implemented in the parent
7
+ * via hooks like useDropdown.
8
+ *
9
+ * @example
10
+ * <Dropdown
11
+ * trigger={<button>Menu</button>}
12
+ * isOpen={isOpen}
13
+ * onToggle={toggle}
14
+ * align="right"
15
+ * >
16
+ * <DropdownItem onClick={handleAction}>Action</DropdownItem>
17
+ * <DropdownDivider />
18
+ * <DropdownItem onClick={handleLogout} variant="danger">Logout</DropdownItem>
19
+ * </Dropdown>
20
+ */
21
+ export function Dropdown({ trigger, isOpen, onToggle, children, align = 'left', ariaLabel, className = '', }) {
22
+ return (_jsxs("div", { className: `elb-dropdown ${className}`.trim(), children: [_jsx("div", { className: "elb-dropdown__trigger", onClick: onToggle, role: "button", tabIndex: 0, "aria-haspopup": "menu", "aria-expanded": isOpen, "aria-label": ariaLabel, onKeyDown: (e) => {
23
+ if (e.key === 'Enter' || e.key === ' ') {
24
+ e.preventDefault();
25
+ onToggle();
26
+ }
27
+ }, children: trigger }), isOpen && (_jsx("div", { className: `elb-dropdown__panel elb-dropdown__panel--${align}`, role: "menu", children: children }))] }));
28
+ }
29
+ /**
30
+ * DropdownItem - Menu item within a dropdown
31
+ *
32
+ * @example
33
+ * <DropdownItem onClick={handleClick}>Action</DropdownItem>
34
+ */
35
+ export function DropdownItem({ children, onClick, disabled = false, variant = 'default', className = '', }) {
36
+ return (_jsx("button", { type: "button", role: "menuitem", className: `elb-dropdown__item elb-dropdown__item--${variant} ${disabled ? 'elb-dropdown__item--disabled' : ''} ${className}`.trim(), onClick: onClick, disabled: disabled, children: children }));
37
+ }
38
+ /**
39
+ * DropdownDivider - Visual separator between menu items
40
+ *
41
+ * @example
42
+ * <DropdownDivider />
43
+ */
44
+ export function DropdownDivider({ className = '' }) {
45
+ return (_jsx("div", { className: `elb-dropdown__divider ${className}`.trim(), role: "separator" }));
46
+ }
47
+ //# sourceMappingURL=dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/components/molecules/dropdown.tsx"],"names":[],"mappings":";AAqCA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,KAAK,GAAG,MAAM,EACd,SAAS,EACT,SAAS,GAAG,EAAE,GACA;IACd,OAAO,CACL,eAAK,SAAS,EAAE,gBAAgB,SAAS,EAAE,CAAC,IAAI,EAAE,aAChD,cACE,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,mBACG,MAAM,mBACL,MAAM,gBACT,SAAS,EACrB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;wBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,QAAQ,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC,YAEA,OAAO,GACJ,EACL,MAAM,IAAI,CACT,cACE,SAAS,EAAE,4CAA4C,KAAK,EAAE,EAC9D,IAAI,EAAC,MAAM,YAEV,QAAQ,GACL,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,SAAS,EACnB,SAAS,GAAG,EAAE,GACI;IAClB,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,0CAA0C,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,EACpI,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,YAEjB,QAAQ,GACF,CACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,SAAS,GAAG,EAAE,EAAwB;IACtE,OAAO,CACL,cACE,SAAS,EAAE,yBAAyB,SAAS,EAAE,CAAC,IAAI,EAAE,EACtD,IAAI,EAAC,WAAW,GAChB,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Dropdown } from './dropdown';
3
+ declare const meta: Meta<typeof Dropdown>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Dropdown>;
6
+ export declare const Default: Story;
7
+ //# sourceMappingURL=dropdown.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.stories.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/dropdown.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAiC,MAAM,YAAY,CAAC;AAErE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,QAAQ,CAI/B,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEvC,eAAO,MAAM,OAAO,EAAE,KAiBrB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Dropdown, DropdownItem, DropdownDivider } from './dropdown';
3
+ const meta = {
4
+ title: 'Molecules/Dropdown',
5
+ component: Dropdown,
6
+ tags: ['autodocs'],
7
+ };
8
+ export default meta;
9
+ export const Default = {
10
+ args: {
11
+ trigger: _jsx("button", { children: "Open Menu" }),
12
+ isOpen: true,
13
+ onToggle: () => { },
14
+ align: 'left',
15
+ children: (_jsxs(_Fragment, { children: [_jsx(DropdownItem, { onClick: () => { }, children: "Action 1" }), _jsx(DropdownItem, { onClick: () => { }, children: "Action 2" }), _jsx(DropdownDivider, {}), _jsx(DropdownItem, { onClick: () => { }, variant: "danger", children: "Delete" })] })),
16
+ },
17
+ };
18
+ //# sourceMappingURL=dropdown.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.stories.js","sourceRoot":"","sources":["../../../src/components/molecules/dropdown.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,IAAI,GAA0B;IAClC,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AACF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,OAAO,EAAE,yCAA0B;QACnC,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,CACR,8BACE,KAAC,YAAY,IAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,yBAAyB,EACxD,KAAC,YAAY,IAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,yBAAyB,EACxD,KAAC,eAAe,KAAG,EACnB,KAAC,YAAY,IAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,OAAO,EAAC,QAAQ,uBAElC,IACd,CACJ;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FlowMap.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/flow-map/FlowMap.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAC;AAEtD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAe9B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AA8CtC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAsK9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAqB5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAwHjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAsFjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAwH5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAqF/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAgG7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAwC3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,KASnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAgBxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KA4D5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAgIvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAgE/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAyGvC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KA2G1B,CAAC"}
1
+ {"version":3,"file":"FlowMap.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/flow-map/FlowMap.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAC;AAEtD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAe9B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AA8CtC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAsK9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAqB5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAwHjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAsFjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAwH5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAqF/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAgG7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAwC3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,KASnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAgBxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KA4D5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAgIvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAgE/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAyGvC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAiH1B,CAAC"}
@@ -597,6 +597,12 @@ export const Architecture = {
597
597
  text: 'walker.js',
598
598
  next: 'validate',
599
599
  },
600
+ session: {
601
+ icon: 'mdi:identification-card',
602
+ label: 'Source',
603
+ text: 'Session detection',
604
+ next: 'validate',
605
+ },
600
606
  datalayer: {
601
607
  icon: 'simple-icons:googletagmanager',
602
608
  label: 'Source',
@@ -606,7 +612,7 @@ export const Architecture = {
606
612
  mediaplayer: {
607
613
  icon: 'mdi:play-circle',
608
614
  label: 'Source',
609
- text: 'Media Player',
615
+ text: 'CMP',
610
616
  next: 'validate',
611
617
  },
612
618
  }, preTransformers: {