@fragments-sdk/cli 0.10.1 → 0.12.1

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 (223) hide show
  1. package/dist/ai-client-I6MDWNYA.js +21 -0
  2. package/dist/bin.js +292 -367
  3. package/dist/bin.js.map +1 -1
  4. package/dist/{chunk-PW7QTQA6.js → chunk-4OC7FTJB.js} +2 -2
  5. package/dist/{chunk-HRFUSSZI.js → chunk-AM4MRTMN.js} +2 -2
  6. package/dist/{chunk-5G3VZH43.js → chunk-GVDSFQ4E.js} +281 -351
  7. package/dist/chunk-GVDSFQ4E.js.map +1 -0
  8. package/dist/chunk-JJ2VRTBU.js +626 -0
  9. package/dist/chunk-JJ2VRTBU.js.map +1 -0
  10. package/dist/{chunk-D5PYOXEI.js → chunk-LVWFOLUZ.js} +148 -13
  11. package/dist/{chunk-D5PYOXEI.js.map → chunk-LVWFOLUZ.js.map} +1 -1
  12. package/dist/{chunk-WXSR2II7.js → chunk-OQKMEFOS.js} +58 -6
  13. package/dist/chunk-OQKMEFOS.js.map +1 -0
  14. package/dist/chunk-SXTKFDCR.js +104 -0
  15. package/dist/chunk-SXTKFDCR.js.map +1 -0
  16. package/dist/chunk-T5OMVL7E.js +443 -0
  17. package/dist/chunk-T5OMVL7E.js.map +1 -0
  18. package/dist/{chunk-ZM4ZQZWZ.js → chunk-TPWGL2XS.js} +39 -37
  19. package/dist/chunk-TPWGL2XS.js.map +1 -0
  20. package/dist/{chunk-OQO55NKV.js → chunk-WFS63PCW.js} +85 -11
  21. package/dist/chunk-WFS63PCW.js.map +1 -0
  22. package/dist/core/index.js +9 -1
  23. package/dist/{discovery-NEOY4MPN.js → discovery-ZJQSXF56.js} +3 -3
  24. package/dist/{generate-FBHSXR3D.js → generate-RJFS2JWA.js} +4 -4
  25. package/dist/index.js +7 -6
  26. package/dist/index.js.map +1 -1
  27. package/dist/init-ZSX3NRCZ.js +636 -0
  28. package/dist/init-ZSX3NRCZ.js.map +1 -0
  29. package/dist/mcp-bin.js +2 -2
  30. package/dist/{scan-CJF2DOQW.js → scan-3PMCJ4RB.js} +6 -6
  31. package/dist/scan-generate-SYU4PYZD.js +1115 -0
  32. package/dist/scan-generate-SYU4PYZD.js.map +1 -0
  33. package/dist/{service-TQYWY65E.js → service-VMGNJZ42.js} +3 -3
  34. package/dist/snapshot-XOISO2IS.js +139 -0
  35. package/dist/snapshot-XOISO2IS.js.map +1 -0
  36. package/dist/{static-viewer-NUBFPKWH.js → static-viewer-5GXH2MGE.js} +3 -3
  37. package/dist/static-viewer-5GXH2MGE.js.map +1 -0
  38. package/dist/{test-Z5LVO724.js → test-SI4NSHQX.js} +4 -4
  39. package/dist/{tokens-CE46OTMD.js → tokens-T6SIVUT5.js} +5 -5
  40. package/dist/{viewer-DNMNC5VS.js → viewer-7ZEAFBVN.js} +80 -58
  41. package/dist/viewer-7ZEAFBVN.js.map +1 -0
  42. package/package.json +6 -14
  43. package/src/ai-client.ts +156 -0
  44. package/src/bin.ts +74 -2
  45. package/src/build.ts +95 -33
  46. package/src/commands/__tests__/drift-sync.test.ts +252 -0
  47. package/src/commands/__tests__/scan-generate.test.ts +497 -45
  48. package/src/commands/enhance.ts +11 -35
  49. package/src/commands/init.ts +296 -193
  50. package/src/commands/scan-generate.ts +740 -139
  51. package/src/commands/scan.ts +37 -32
  52. package/src/commands/setup.ts +143 -52
  53. package/src/commands/snapshot.ts +197 -0
  54. package/src/commands/sync.ts +357 -0
  55. package/src/commands/validate.ts +43 -1
  56. package/src/core/component-extractor.test.ts +282 -0
  57. package/src/core/component-extractor.ts +1030 -0
  58. package/src/core/discovery.ts +93 -7
  59. package/src/service/enhance/props-extractor.ts +235 -13
  60. package/src/validators.ts +236 -0
  61. package/src/viewer/__tests__/viewer-integration.test.ts +85 -74
  62. package/src/viewer/server.ts +37 -22
  63. package/src/viewer/vite-plugin.ts +25 -9
  64. package/dist/chunk-5G3VZH43.js.map +0 -1
  65. package/dist/chunk-OQO55NKV.js.map +0 -1
  66. package/dist/chunk-WXSR2II7.js.map +0 -1
  67. package/dist/chunk-ZM4ZQZWZ.js.map +0 -1
  68. package/dist/init-NDQXUWDU.js +0 -796
  69. package/dist/init-NDQXUWDU.js.map +0 -1
  70. package/dist/scan-generate-SJAN5MVI.js +0 -691
  71. package/dist/scan-generate-SJAN5MVI.js.map +0 -1
  72. package/dist/viewer-DNMNC5VS.js.map +0 -1
  73. package/src/ai.ts +0 -266
  74. package/src/commands/init-framework.ts +0 -414
  75. package/src/mcp/bin.ts +0 -36
  76. package/src/migrate/bin.ts +0 -114
  77. package/src/theme/index.ts +0 -77
  78. package/src/viewer/__tests__/a11y-fixes.test.ts +0 -358
  79. package/src/viewer/__tests__/jsx-parser.test.ts +0 -502
  80. package/src/viewer/__tests__/render-utils.test.ts +0 -232
  81. package/src/viewer/__tests__/style-utils.test.ts +0 -404
  82. package/src/viewer/assets/fragments-logo.ts +0 -4
  83. package/src/viewer/assets/fragments_logo.png +0 -0
  84. package/src/viewer/bin.ts +0 -86
  85. package/src/viewer/cli/health.ts +0 -256
  86. package/src/viewer/cli/index.ts +0 -33
  87. package/src/viewer/cli/scan.ts +0 -124
  88. package/src/viewer/cli/utils.ts +0 -174
  89. package/src/viewer/components/AccessibilityPanel.tsx +0 -1457
  90. package/src/viewer/components/ActionCapture.tsx +0 -172
  91. package/src/viewer/components/ActionsPanel.tsx +0 -332
  92. package/src/viewer/components/AllVariantsPreview.tsx +0 -78
  93. package/src/viewer/components/App.tsx +0 -582
  94. package/src/viewer/components/BottomPanel.tsx +0 -288
  95. package/src/viewer/components/CodePanel.naming.test.tsx +0 -59
  96. package/src/viewer/components/CodePanel.tsx +0 -118
  97. package/src/viewer/components/CommandPalette.tsx +0 -392
  98. package/src/viewer/components/ComponentDocView.tsx +0 -164
  99. package/src/viewer/components/ComponentGraph.tsx +0 -380
  100. package/src/viewer/components/ComponentHeader.tsx +0 -88
  101. package/src/viewer/components/ContractPanel.tsx +0 -241
  102. package/src/viewer/components/EmptyVariantMessage.tsx +0 -54
  103. package/src/viewer/components/ErrorBoundary.tsx +0 -97
  104. package/src/viewer/components/FigmaEmbed.tsx +0 -238
  105. package/src/viewer/components/FragmentEditor.tsx +0 -525
  106. package/src/viewer/components/FragmentRenderer.tsx +0 -61
  107. package/src/viewer/components/HeaderSearch.tsx +0 -24
  108. package/src/viewer/components/HealthDashboard.tsx +0 -441
  109. package/src/viewer/components/HmrStatusIndicator.tsx +0 -61
  110. package/src/viewer/components/Icons.tsx +0 -479
  111. package/src/viewer/components/InteractionsPanel.tsx +0 -757
  112. package/src/viewer/components/IsolatedPreviewFrame.tsx +0 -346
  113. package/src/viewer/components/IsolatedRender.tsx +0 -113
  114. package/src/viewer/components/KeyboardShortcutsHelp.tsx +0 -53
  115. package/src/viewer/components/LandingPage.tsx +0 -421
  116. package/src/viewer/components/Layout.tsx +0 -27
  117. package/src/viewer/components/LeftSidebar.tsx +0 -472
  118. package/src/viewer/components/LoadErrorMessage.tsx +0 -102
  119. package/src/viewer/components/MultiViewportPreview.tsx +0 -522
  120. package/src/viewer/components/NoVariantsMessage.tsx +0 -59
  121. package/src/viewer/components/PanelShell.tsx +0 -161
  122. package/src/viewer/components/PerformancePanel.tsx +0 -304
  123. package/src/viewer/components/PreviewArea.tsx +0 -472
  124. package/src/viewer/components/PreviewAside.tsx +0 -168
  125. package/src/viewer/components/PreviewFrameHost.tsx +0 -303
  126. package/src/viewer/components/PreviewPane.tsx +0 -149
  127. package/src/viewer/components/PreviewToolbar.tsx +0 -80
  128. package/src/viewer/components/PropsEditor.tsx +0 -506
  129. package/src/viewer/components/PropsTable.tsx +0 -111
  130. package/src/viewer/components/RelationsSection.tsx +0 -88
  131. package/src/viewer/components/ResizablePanel.tsx +0 -271
  132. package/src/viewer/components/RightSidebar.tsx +0 -102
  133. package/src/viewer/components/RuntimeToolsRegistrar.tsx +0 -17
  134. package/src/viewer/components/ScreenshotButton.tsx +0 -90
  135. package/src/viewer/components/Sidebar.tsx +0 -169
  136. package/src/viewer/components/SkeletonLoader.tsx +0 -161
  137. package/src/viewer/components/ThemeProvider.tsx +0 -42
  138. package/src/viewer/components/Toast.tsx +0 -3
  139. package/src/viewer/components/TokenStylePanel.tsx +0 -699
  140. package/src/viewer/components/TopToolbar.tsx +0 -159
  141. package/src/viewer/components/UsageSection.tsx +0 -95
  142. package/src/viewer/components/VariantMatrix.tsx +0 -388
  143. package/src/viewer/components/VariantRenderer.tsx +0 -131
  144. package/src/viewer/components/VariantTabs.tsx +0 -40
  145. package/src/viewer/components/ViewerHeader.tsx +0 -69
  146. package/src/viewer/components/ViewerStateSync.tsx +0 -52
  147. package/src/viewer/components/ViewportSelector.tsx +0 -172
  148. package/src/viewer/components/WebMCPDevTools.tsx +0 -503
  149. package/src/viewer/components/WebMCPIntegration.tsx +0 -47
  150. package/src/viewer/components/WebMCPStatusIndicator.tsx +0 -60
  151. package/src/viewer/components/_future/CreatePage.tsx +0 -836
  152. package/src/viewer/components/viewer-utils.ts +0 -16
  153. package/src/viewer/composition-renderer.ts +0 -381
  154. package/src/viewer/constants/index.ts +0 -1
  155. package/src/viewer/constants/ui.ts +0 -166
  156. package/src/viewer/entry.tsx +0 -335
  157. package/src/viewer/hooks/index.ts +0 -2
  158. package/src/viewer/hooks/useA11yCache.ts +0 -383
  159. package/src/viewer/hooks/useA11yService.ts +0 -364
  160. package/src/viewer/hooks/useActions.ts +0 -138
  161. package/src/viewer/hooks/useAppState.ts +0 -147
  162. package/src/viewer/hooks/useCompiledFragments.ts +0 -42
  163. package/src/viewer/hooks/useFigmaIntegration.ts +0 -132
  164. package/src/viewer/hooks/useHmrStatus.ts +0 -109
  165. package/src/viewer/hooks/useKeyboardShortcuts.ts +0 -270
  166. package/src/viewer/hooks/usePreviewBridge.ts +0 -347
  167. package/src/viewer/hooks/useScrollSpy.ts +0 -78
  168. package/src/viewer/hooks/useUrlState.ts +0 -318
  169. package/src/viewer/hooks/useViewSettings.ts +0 -111
  170. package/src/viewer/index.html +0 -28
  171. package/src/viewer/intelligence/healthReport.ts +0 -505
  172. package/src/viewer/intelligence/styleDrift.ts +0 -340
  173. package/src/viewer/intelligence/usageScanner.ts +0 -309
  174. package/src/viewer/jsx-parser.ts +0 -486
  175. package/src/viewer/preview-frame-entry.tsx +0 -25
  176. package/src/viewer/preview-frame.html +0 -125
  177. package/src/viewer/public/favicon.ico +0 -0
  178. package/src/viewer/render-template.html +0 -68
  179. package/src/viewer/styles/globals.css +0 -278
  180. package/src/viewer/types/a11y.ts +0 -197
  181. package/src/viewer/utils/a11y-fixes.ts +0 -509
  182. package/src/viewer/utils/actionExport.ts +0 -372
  183. package/src/viewer/utils/colorSchemes.ts +0 -201
  184. package/src/viewer/utils/detectRelationships.ts +0 -256
  185. package/src/viewer/vendor/shared/src/ComponentDocContent.module.scss +0 -10
  186. package/src/viewer/vendor/shared/src/ComponentDocContent.module.scss.d.ts +0 -2
  187. package/src/viewer/vendor/shared/src/ComponentDocContent.tsx +0 -274
  188. package/src/viewer/vendor/shared/src/DocsHeaderBar.tsx +0 -129
  189. package/src/viewer/vendor/shared/src/DocsPageAsideHost.tsx +0 -89
  190. package/src/viewer/vendor/shared/src/DocsPageShell.tsx +0 -124
  191. package/src/viewer/vendor/shared/src/DocsSearchCommand.tsx +0 -99
  192. package/src/viewer/vendor/shared/src/DocsSidebarNav.tsx +0 -66
  193. package/src/viewer/vendor/shared/src/PropsTable.module.scss +0 -68
  194. package/src/viewer/vendor/shared/src/PropsTable.module.scss.d.ts +0 -2
  195. package/src/viewer/vendor/shared/src/PropsTable.tsx +0 -76
  196. package/src/viewer/vendor/shared/src/VariantPreviewCard.module.scss +0 -114
  197. package/src/viewer/vendor/shared/src/VariantPreviewCard.module.scss.d.ts +0 -2
  198. package/src/viewer/vendor/shared/src/VariantPreviewCard.tsx +0 -137
  199. package/src/viewer/vendor/shared/src/docs-data/index.ts +0 -32
  200. package/src/viewer/vendor/shared/src/docs-data/mcp-configs.ts +0 -72
  201. package/src/viewer/vendor/shared/src/docs-data/palettes.ts +0 -75
  202. package/src/viewer/vendor/shared/src/docs-data/setup-examples.ts +0 -55
  203. package/src/viewer/vendor/shared/src/docs-layout.scss +0 -28
  204. package/src/viewer/vendor/shared/src/docs-layout.scss.d.ts +0 -2
  205. package/src/viewer/vendor/shared/src/index.ts +0 -34
  206. package/src/viewer/vendor/shared/src/types.ts +0 -53
  207. package/src/viewer/webmcp/__tests__/analytics.test.ts +0 -108
  208. package/src/viewer/webmcp/analytics.ts +0 -165
  209. package/src/viewer/webmcp/index.ts +0 -3
  210. package/src/viewer/webmcp/posthog-bridge.ts +0 -39
  211. package/src/viewer/webmcp/runtime-tools.ts +0 -152
  212. package/src/viewer/webmcp/scan-utils.ts +0 -135
  213. package/src/viewer/webmcp/use-tool-analytics.ts +0 -69
  214. package/src/viewer/webmcp/viewer-state.ts +0 -45
  215. /package/dist/{discovery-NEOY4MPN.js.map → ai-client-I6MDWNYA.js.map} +0 -0
  216. /package/dist/{chunk-PW7QTQA6.js.map → chunk-4OC7FTJB.js.map} +0 -0
  217. /package/dist/{chunk-HRFUSSZI.js.map → chunk-AM4MRTMN.js.map} +0 -0
  218. /package/dist/{scan-CJF2DOQW.js.map → discovery-ZJQSXF56.js.map} +0 -0
  219. /package/dist/{generate-FBHSXR3D.js.map → generate-RJFS2JWA.js.map} +0 -0
  220. /package/dist/{service-TQYWY65E.js.map → scan-3PMCJ4RB.js.map} +0 -0
  221. /package/dist/{static-viewer-NUBFPKWH.js.map → service-VMGNJZ42.js.map} +0 -0
  222. /package/dist/{test-Z5LVO724.js.map → test-SI4NSHQX.js.map} +0 -0
  223. /package/dist/{tokens-CE46OTMD.js.map → tokens-T6SIVUT5.js.map} +0 -0
@@ -1,278 +0,0 @@
1
- /* ============================================
2
- * Fragments Viewer Shell Styles
3
- * ============================================
4
- * Viewer-specific token aliases and utility classes.
5
- * Base resets (box-sizing, body, scrollbars) come from
6
- * @fragments/ui globals imported via entry.tsx.
7
- * ============================================ */
8
-
9
- /* ============================================
10
- * Token Aliases
11
- * ============================================
12
- * Shorthand aliases mapping to --fui-* tokens so the viewer
13
- * shell CSS can use shorter variable names.
14
- */
15
-
16
- :root {
17
- --bg-primary: var(--fui-bg-primary, #ffffff);
18
- --bg-secondary: var(--fui-bg-secondary, #f7f7f8);
19
- --bg-tertiary: var(--fui-bg-tertiary, #f2f2f2);
20
- --bg-elevated: var(--fui-bg-elevated, #ffffff);
21
- --bg-hover: var(--fui-bg-hover, rgba(0, 0, 0, 0.06));
22
- --bg-active: var(--fui-bg-active, rgba(0, 0, 0, 0.1));
23
-
24
- --text-primary: var(--fui-text-primary, #171717);
25
- --text-secondary: var(--fui-text-secondary, #525252);
26
- --text-tertiary: var(--fui-text-tertiary, #8a8a8a);
27
- --text-muted: var(--fui-text-tertiary, #8a8a8a);
28
-
29
- --border: var(--fui-border, rgba(0, 0, 0, 0.1));
30
- --border-subtle: var(--fui-border, rgba(0, 0, 0, 0.1));
31
- --border-strong: var(--fui-border-strong, rgba(0, 0, 0, 0.16));
32
-
33
- --color-accent: var(--fui-color-accent, #10a37f);
34
- --color-accent-hover: var(--fui-color-accent-hover, #0d8a6a);
35
- --color-accent-subtle: var(--fui-color-success-bg, rgba(16, 163, 127, 0.1));
36
-
37
- --color-success: var(--fui-color-success, #10a37f);
38
- --color-success-bg: var(--fui-color-success-bg, rgba(16, 163, 127, 0.1));
39
- --color-warning: var(--fui-color-warning, #f59e0b);
40
- --color-warning-bg: var(--fui-color-warning-bg, rgba(245, 158, 11, 0.1));
41
- --color-danger: var(--fui-color-danger, #ef4444);
42
- --color-danger-bg: var(--fui-color-danger-bg, rgba(239, 68, 68, 0.1));
43
- --color-info: var(--fui-color-info, #3b82f6);
44
- --color-info-bg: var(--fui-color-info-bg, rgba(59, 130, 246, 0.1));
45
-
46
- --shadow-sm: var(--fui-shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.05));
47
- --shadow-md: var(--fui-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.08));
48
- --shadow-lg: var(--fui-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.12));
49
-
50
- --radius-sm: var(--fui-radius-sm, 6px);
51
- --radius-md: var(--fui-radius-md, 8px);
52
- --radius-lg: var(--fui-radius-lg, 12px);
53
-
54
- --transition-fast: var(--fui-transition-fast, 150ms ease);
55
- --transition-normal: var(--fui-transition-normal, 200ms ease);
56
- }
57
-
58
- /* ============================================
59
- * Viewer-specific overrides
60
- * ============================================ */
61
-
62
- * {
63
- border-color: var(--border);
64
- }
65
-
66
- /* ============================================
67
- * Theme-aware Utility Classes
68
- * ============================================ */
69
-
70
- .bg-primary { background-color: var(--bg-primary); }
71
- .bg-secondary { background-color: var(--bg-secondary); }
72
- .bg-tertiary { background-color: var(--bg-tertiary); }
73
- .bg-elevated { background-color: var(--bg-elevated); }
74
-
75
- .text-primary { color: var(--text-primary); }
76
- .text-secondary { color: var(--text-secondary); }
77
- .text-tertiary { color: var(--text-tertiary); }
78
- .text-accent { color: var(--color-accent); }
79
-
80
- .border-subtle { border-color: var(--border-subtle); }
81
- .border-strong { border-color: var(--border-strong); }
82
-
83
- /* ============================================
84
- * Surface Styles
85
- * ============================================ */
86
-
87
- .surface {
88
- background-color: var(--bg-elevated);
89
- border: 1px solid var(--border);
90
- border-radius: var(--radius-lg);
91
- }
92
-
93
- .surface-interactive {
94
- background-color: var(--bg-elevated);
95
- border: 1px solid var(--border);
96
- border-radius: var(--radius-lg);
97
- transition: all var(--transition-fast);
98
- }
99
-
100
- .surface-interactive:hover {
101
- border-color: var(--border-strong);
102
- box-shadow: var(--shadow-sm);
103
- }
104
-
105
- /* ============================================
106
- * Badge Styles
107
- * ============================================ */
108
-
109
- .badge {
110
- display: inline-flex;
111
- align-items: center;
112
- padding: 3px 8px;
113
- border-radius: var(--radius-sm);
114
- font-size: 11px;
115
- font-weight: 500;
116
- letter-spacing: 0.01em;
117
- transition: all var(--transition-fast);
118
- }
119
-
120
- .badge-default {
121
- background-color: var(--bg-tertiary);
122
- color: var(--text-secondary);
123
- border: 1px solid var(--border-subtle);
124
- }
125
-
126
- .badge-success {
127
- background-color: var(--color-success-bg);
128
- color: var(--color-success);
129
- }
130
-
131
- .badge-warning {
132
- background-color: var(--color-warning-bg);
133
- color: var(--color-warning);
134
- }
135
-
136
- .badge-danger {
137
- background-color: var(--color-danger-bg);
138
- color: var(--color-danger);
139
- }
140
-
141
- /* ============================================
142
- * Focus Ring
143
- * ============================================ */
144
-
145
- .focus-ring:focus-visible {
146
- outline: none;
147
- box-shadow: 0 0 0 2px var(--bg-primary), 0 0 0 4px var(--color-accent);
148
- }
149
-
150
- /* ============================================
151
- * Transition Utilities
152
- * ============================================ */
153
-
154
- .transition-colors {
155
- transition: color var(--transition-fast), background-color var(--transition-fast), border-color var(--transition-fast);
156
- }
157
-
158
- .transition-all {
159
- transition: all var(--transition-fast);
160
- }
161
-
162
- /* ============================================
163
- * Code Styling
164
- * ============================================ */
165
-
166
- code {
167
- font-family: 'JetBrains Mono', 'Fira Code', monospace;
168
- font-size: 0.875em;
169
- background-color: var(--bg-tertiary);
170
- padding: 2px 6px;
171
- border-radius: var(--radius-sm);
172
- border: 1px solid var(--border-subtle);
173
- }
174
-
175
- pre code {
176
- background: none;
177
- padding: 0;
178
- border: none;
179
- }
180
-
181
- /* ============================================
182
- * Table Base Styles
183
- * ============================================ */
184
-
185
- table {
186
- width: 100%;
187
- border-collapse: separate;
188
- border-spacing: 0;
189
- }
190
-
191
- th {
192
- text-align: left;
193
- font-weight: 500;
194
- font-size: 12px;
195
- text-transform: uppercase;
196
- letter-spacing: 0.05em;
197
- color: var(--text-tertiary);
198
- }
199
-
200
- td {
201
- border-top: 1px solid var(--border-subtle);
202
- }
203
-
204
- /* ============================================
205
- * Utility Classes
206
- * ============================================ */
207
-
208
- .divider {
209
- height: 1px;
210
- background-color: var(--border);
211
- }
212
-
213
- .text-balance {
214
- text-wrap: balance;
215
- }
216
-
217
- /* Scroll utilities */
218
- .scroll-smooth {
219
- scroll-behavior: smooth;
220
- }
221
-
222
- .scrollbar-hide {
223
- -ms-overflow-style: none;
224
- scrollbar-width: none;
225
- }
226
-
227
- .scrollbar-hide::-webkit-scrollbar {
228
- display: none;
229
- }
230
-
231
- /* ============================================
232
- * Gradient Utilities
233
- * ============================================ */
234
-
235
- .gradient-fade-b {
236
- background: linear-gradient(to bottom, transparent, var(--bg-primary));
237
- }
238
-
239
- .gradient-fade-t {
240
- background: linear-gradient(to top, transparent, var(--bg-primary));
241
- }
242
-
243
- /* Subtle glow effect for interactive elements */
244
- .glow-accent:hover {
245
- box-shadow: 0 0 20px rgba(16, 163, 127, 0.15);
246
- }
247
-
248
- /* ============================================
249
- * Animations
250
- * ============================================ */
251
-
252
- @keyframes spin {
253
- to { transform: rotate(360deg); }
254
- }
255
-
256
- @keyframes fadeIn {
257
- from { opacity: 0; }
258
- to { opacity: 1; }
259
- }
260
-
261
- @keyframes slideIn {
262
- from {
263
- opacity: 0;
264
- transform: translateY(4px);
265
- }
266
- to {
267
- opacity: 1;
268
- transform: translateY(0);
269
- }
270
- }
271
-
272
- .animate-fadeIn {
273
- animation: fadeIn var(--transition-normal) ease-out;
274
- }
275
-
276
- .animate-slideIn {
277
- animation: slideIn var(--transition-normal) ease-out;
278
- }
@@ -1,197 +0,0 @@
1
- /**
2
- * Accessibility Types
3
- *
4
- * TypeScript interfaces for the accessibility checking system.
5
- */
6
-
7
- import type { ImpactValue } from 'axe-core';
8
-
9
- /**
10
- * Serialized violation node for storage
11
- */
12
- export interface SerializedNode {
13
- /** HTML snippet of the affected element */
14
- html: string;
15
- /** CSS selector path to the element */
16
- target: string[];
17
- /** Failure summary explaining the issue */
18
- failureSummary?: string;
19
- /** Any data collected during the check */
20
- any?: Array<{
21
- id: string;
22
- data?: unknown;
23
- relatedNodes?: Array<{ html: string; target: string[] }>;
24
- impact?: string;
25
- message: string;
26
- }>;
27
- /** All data required for the check to pass */
28
- all?: Array<{
29
- id: string;
30
- data?: unknown;
31
- relatedNodes?: Array<{ html: string; target: string[] }>;
32
- impact?: string;
33
- message: string;
34
- }>;
35
- /** None data that should not be present */
36
- none?: Array<{
37
- id: string;
38
- data?: unknown;
39
- relatedNodes?: Array<{ html: string; target: string[] }>;
40
- impact?: string;
41
- message: string;
42
- }>;
43
- }
44
-
45
- /**
46
- * Serialized violation for storage and display
47
- */
48
- export interface SerializedViolation {
49
- /** Unique rule identifier (e.g., 'color-contrast') */
50
- id: string;
51
- /** Impact level of the violation */
52
- impact: ImpactValue | null;
53
- /** Brief description of the rule */
54
- description: string;
55
- /** Longer help text explaining how to fix */
56
- help: string;
57
- /** URL to detailed documentation */
58
- helpUrl: string;
59
- /** WCAG tags (e.g., 'wcag2a', 'wcag143') */
60
- tags: string[];
61
- /** Affected elements */
62
- nodes: SerializedNode[];
63
- }
64
-
65
- /**
66
- * Cached accessibility result for a component
67
- */
68
- export interface CachedA11yResult {
69
- /** Component name */
70
- componentName: string;
71
- /** Variant that was scanned (optional) */
72
- variant?: string;
73
- /** Full violation details for display */
74
- violations: SerializedViolation[];
75
- /** Number of passing checks */
76
- passes: number;
77
- /** Number of incomplete checks */
78
- incomplete: number;
79
- /** When the scan was performed */
80
- scannedAt: number;
81
- /** Counts by severity */
82
- counts: {
83
- critical: number;
84
- serious: number;
85
- moderate: number;
86
- minor: number;
87
- };
88
- }
89
-
90
- /**
91
- * Summary data derived from cache
92
- */
93
- export interface A11ySummary {
94
- /** Components with no critical/serious violations */
95
- accessibleComponents: number;
96
- /** Total components scanned */
97
- totalComponents: number;
98
- /** Violations aggregated by impact */
99
- violationsByImpact: {
100
- critical: number;
101
- serious: number;
102
- moderate: number;
103
- minor: number;
104
- };
105
- /** Top violations across all components */
106
- topViolations: Array<{
107
- ruleId: string;
108
- description: string;
109
- affectedComponents: string[];
110
- impact: ImpactValue | null;
111
- }>;
112
- }
113
-
114
- /**
115
- * Event data for a11y cache invalidation
116
- */
117
- export interface A11yInvalidateEvent {
118
- /** Component names to invalidate */
119
- components: string[];
120
- /** File that changed */
121
- file: string;
122
- /** Timestamp of the change */
123
- timestamp: number;
124
- }
125
-
126
- /**
127
- * A11y service configuration
128
- */
129
- export interface A11yServiceConfig {
130
- /** Debounce delay after HMR file change (ms) */
131
- hmrDebounceMs: number;
132
- /** Debounce delay after navigation (ms) */
133
- navigationDebounceMs: number;
134
- /** Minimum time between same component scans (ms) */
135
- scanCooldownMs: number;
136
- /** Maximum concurrent scans */
137
- maxConcurrentScans: number;
138
- }
139
-
140
- /**
141
- * Default configuration values
142
- */
143
- export const DEFAULT_A11Y_CONFIG: A11yServiceConfig = {
144
- hmrDebounceMs: 500,
145
- navigationDebounceMs: 200,
146
- scanCooldownMs: 1000,
147
- maxConcurrentScans: 2,
148
- };
149
-
150
- /**
151
- * Static fix suggestion for a violation
152
- */
153
- export interface StaticFixSuggestion {
154
- /** Why this issue matters for users */
155
- whyItMatters: string;
156
- /** Generic fix description */
157
- howToFix: string;
158
- /** Example of bad code */
159
- badExample?: string;
160
- /** Example of good code */
161
- goodExample?: string;
162
- /** WCAG criterion reference */
163
- wcagCriterion?: {
164
- id: string;
165
- name: string;
166
- level: 'A' | 'AA' | 'AAA';
167
- url: string;
168
- };
169
- }
170
-
171
- /**
172
- * Specific fix for an element
173
- */
174
- export interface ElementFix {
175
- /** The original HTML */
176
- originalHtml: string;
177
- /** The suggested fix HTML */
178
- fixedHtml: string;
179
- /** Explanation of the change */
180
- explanation: string;
181
- /** Whether this is an auto-fixable change */
182
- autoFixable: boolean;
183
- }
184
-
185
- /**
186
- * Scan status for tracking progress
187
- */
188
- export type ScanStatus = 'idle' | 'pending' | 'scanning' | 'completed' | 'error';
189
-
190
- /**
191
- * Component scan state
192
- */
193
- export interface ComponentScanState {
194
- status: ScanStatus;
195
- lastScanAt?: number;
196
- error?: string;
197
- }