@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.10 → 0.2.16
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.
- package/CHANGELOG.md +1 -1
- package/dist/components/ui/accessibility-demo.esm.js +80 -258
- package/dist/components/ui/accessibility-demo.js +80 -258
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +256 -916
- package/dist/components/ui/advanced-component-architecture-demo.js +256 -916
- package/dist/components/ui/advanced-transition-system-demo.esm.js +59 -670
- package/dist/components/ui/advanced-transition-system-demo.js +59 -670
- package/dist/components/ui/advanced-transition-system.esm.js +194 -378
- package/dist/components/ui/advanced-transition-system.js +194 -378
- package/dist/components/ui/animation/animated-container.esm.js +98 -159
- package/dist/components/ui/animation/animated-container.js +98 -159
- package/dist/components/ui/animation/index.esm.js +3 -18
- package/dist/components/ui/animation/index.js +3 -18
- package/dist/components/ui/animation/staggered-container.esm.js +37 -68
- package/dist/components/ui/animation/staggered-container.js +37 -68
- package/dist/components/ui/animation-demo.esm.js +30 -250
- package/dist/components/ui/animation-demo.js +30 -250
- package/dist/components/ui/badge.esm.js +15 -28
- package/dist/components/ui/badge.js +15 -28
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +136 -565
- package/dist/components/ui/battery-conscious-animation-demo.js +136 -565
- package/dist/components/ui/border-radius-shadow-demo.esm.js +3 -184
- package/dist/components/ui/border-radius-shadow-demo.js +3 -184
- package/dist/components/ui/button.esm.js +14 -33
- package/dist/components/ui/button.js +14 -33
- package/dist/components/ui/card.esm.js +74 -188
- package/dist/components/ui/card.js +74 -188
- package/dist/components/ui/checkbox.esm.js +11 -30
- package/dist/components/ui/checkbox.js +11 -30
- package/dist/components/ui/color-preview.esm.js +50 -405
- package/dist/components/ui/color-preview.js +50 -405
- package/dist/components/ui/data-display/chart.esm.js +210 -632
- package/dist/components/ui/data-display/chart.js +210 -632
- package/dist/components/ui/data-display/data-grid-simple.esm.js +16 -74
- package/dist/components/ui/data-display/data-grid-simple.js +16 -74
- package/dist/components/ui/data-display/data-grid.esm.js +173 -661
- package/dist/components/ui/data-display/data-grid.js +173 -661
- package/dist/components/ui/data-display/list.esm.js +88 -446
- package/dist/components/ui/data-display/list.js +88 -446
- package/dist/components/ui/data-display/table.esm.js +109 -468
- package/dist/components/ui/data-display/table.js +109 -468
- package/dist/components/ui/data-display/timeline.esm.js +92 -431
- package/dist/components/ui/data-display/timeline.js +92 -431
- package/dist/components/ui/data-display/tree.esm.js +211 -585
- package/dist/components/ui/data-display/tree.js +211 -585
- package/dist/components/ui/data-display/types.esm.js +1 -530
- package/dist/components/ui/data-display/types.js +1 -530
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +76 -749
- package/dist/components/ui/enterprise-mobile-experience-demo.js +76 -749
- package/dist/components/ui/enterprise-mobile-experience.esm.js +152 -460
- package/dist/components/ui/enterprise-mobile-experience.js +152 -460
- package/dist/components/ui/feedback/alert.esm.js +40 -148
- package/dist/components/ui/feedback/alert.js +40 -148
- package/dist/components/ui/feedback/progress.esm.js +74 -278
- package/dist/components/ui/feedback/progress.js +74 -278
- package/dist/components/ui/feedback/skeleton.esm.js +64 -173
- package/dist/components/ui/feedback/skeleton.js +64 -173
- package/dist/components/ui/feedback/toast.esm.js +86 -225
- package/dist/components/ui/feedback/toast.js +86 -225
- package/dist/components/ui/feedback/types.esm.js +1 -125
- package/dist/components/ui/feedback/types.js +1 -125
- package/dist/components/ui/font-preview.esm.js +56 -283
- package/dist/components/ui/font-preview.js +56 -283
- package/dist/components/ui/form-demo.esm.js +191 -553
- package/dist/components/ui/form-demo.js +191 -553
- package/dist/components/ui/hardware-acceleration-demo.esm.js +103 -544
- package/dist/components/ui/hardware-acceleration-demo.js +103 -544
- package/dist/components/ui/input.esm.js +13 -32
- package/dist/components/ui/input.js +13 -32
- package/dist/components/ui/label.esm.js +6 -16
- package/dist/components/ui/label.js +6 -16
- package/dist/components/ui/layout-demo.esm.js +76 -367
- package/dist/components/ui/layout-demo.js +76 -367
- package/dist/components/ui/layouts/adaptive-layout.esm.js +60 -139
- package/dist/components/ui/layouts/adaptive-layout.js +60 -139
- package/dist/components/ui/layouts/desktop-layout.esm.js +39 -224
- package/dist/components/ui/layouts/desktop-layout.js +39 -224
- package/dist/components/ui/layouts/index.esm.js +4 -10
- package/dist/components/ui/layouts/index.js +4 -10
- package/dist/components/ui/layouts/mobile-layout.esm.js +49 -162
- package/dist/components/ui/layouts/mobile-layout.js +49 -162
- package/dist/components/ui/layouts/tablet-layout.esm.js +53 -197
- package/dist/components/ui/layouts/tablet-layout.js +53 -197
- package/dist/components/ui/mobile-form-validation.esm.js +185 -420
- package/dist/components/ui/mobile-form-validation.js +185 -420
- package/dist/components/ui/mobile-input-demo.esm.js +11 -198
- package/dist/components/ui/mobile-input-demo.js +11 -198
- package/dist/components/ui/mobile-input.esm.js +187 -270
- package/dist/components/ui/mobile-input.js +187 -270
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +144 -638
- package/dist/components/ui/mobile-skeleton-loading-demo.js +144 -638
- package/dist/components/ui/navigation/breadcrumb.esm.js +51 -154
- package/dist/components/ui/navigation/breadcrumb.js +51 -154
- package/dist/components/ui/navigation/index.esm.js +0 -26
- package/dist/components/ui/navigation/index.js +0 -26
- package/dist/components/ui/navigation/menu.esm.js +178 -365
- package/dist/components/ui/navigation/menu.js +178 -365
- package/dist/components/ui/navigation/navigation-demo.esm.js +130 -315
- package/dist/components/ui/navigation/navigation-demo.js +130 -315
- package/dist/components/ui/navigation/pagination.esm.js +142 -264
- package/dist/components/ui/navigation/pagination.js +142 -264
- package/dist/components/ui/navigation/sidebar.esm.js +156 -368
- package/dist/components/ui/navigation/sidebar.js +156 -368
- package/dist/components/ui/navigation/stepper.esm.js +131 -295
- package/dist/components/ui/navigation/stepper.js +131 -295
- package/dist/components/ui/navigation/tabs.esm.js +89 -198
- package/dist/components/ui/navigation/tabs.js +89 -198
- package/dist/components/ui/navigation/types.esm.js +1 -295
- package/dist/components/ui/navigation/types.js +1 -295
- package/dist/components/ui/overlay/backdrop.esm.js +39 -78
- package/dist/components/ui/overlay/backdrop.js +39 -78
- package/dist/components/ui/overlay/focus-manager.esm.js +96 -140
- package/dist/components/ui/overlay/focus-manager.js +96 -140
- package/dist/components/ui/overlay/index.esm.js +0 -27
- package/dist/components/ui/overlay/index.js +0 -27
- package/dist/components/ui/overlay/modal.esm.js +94 -249
- package/dist/components/ui/overlay/modal.js +94 -249
- package/dist/components/ui/overlay/overlay-manager.esm.js +60 -100
- package/dist/components/ui/overlay/overlay-manager.js +60 -100
- package/dist/components/ui/overlay/popover.esm.js +258 -438
- package/dist/components/ui/overlay/popover.js +258 -438
- package/dist/components/ui/overlay/portal.esm.js +45 -74
- package/dist/components/ui/overlay/portal.js +45 -74
- package/dist/components/ui/overlay/tooltip.esm.js +202 -288
- package/dist/components/ui/overlay/tooltip.js +202 -288
- package/dist/components/ui/overlay/types.esm.js +1 -196
- package/dist/components/ui/overlay/types.js +1 -196
- package/dist/components/ui/performance-demo.esm.js +110 -596
- package/dist/components/ui/performance-demo.js +110 -596
- package/dist/components/ui/semantic-input-system-demo.esm.js +87 -501
- package/dist/components/ui/semantic-input-system-demo.js +87 -501
- package/dist/components/ui/theme-customizer.esm.js +123 -371
- package/dist/components/ui/theme-customizer.js +123 -371
- package/dist/components/ui/theme-preview.esm.js +44 -306
- package/dist/components/ui/theme-preview.js +44 -306
- package/dist/components/ui/theme-switcher.esm.js +79 -258
- package/dist/components/ui/theme-switcher.js +79 -258
- package/dist/components/ui/theme-toggle.esm.js +22 -35
- package/dist/components/ui/theme-toggle.js +22 -35
- package/dist/components/ui/token-demo.esm.js +42 -189
- package/dist/components/ui/token-demo.js +42 -189
- package/dist/components/ui/touch-demo.esm.js +96 -462
- package/dist/components/ui/touch-demo.js +96 -462
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +63 -519
- package/dist/components/ui/touch-friendly-interface-demo.js +63 -519
- package/dist/components/ui/touch-friendly-interface.esm.js +103 -281
- package/dist/components/ui/touch-friendly-interface.js +103 -281
- package/dist/hooks/index.esm.js +23 -181
- package/dist/hooks/index.js +23 -181
- package/dist/hooks/use-accessibility-support.esm.js +377 -518
- package/dist/hooks/use-accessibility-support.js +377 -518
- package/dist/hooks/use-adaptive-layout.esm.js +212 -287
- package/dist/hooks/use-adaptive-layout.js +212 -287
- package/dist/hooks/use-advanced-patterns.esm.js +185 -293
- package/dist/hooks/use-advanced-patterns.js +185 -293
- package/dist/hooks/use-advanced-transition-system.esm.js +286 -392
- package/dist/hooks/use-advanced-transition-system.js +286 -392
- package/dist/hooks/use-animation-profile.esm.js +221 -283
- package/dist/hooks/use-animation-profile.js +221 -283
- package/dist/hooks/use-battery-animations.esm.js +310 -384
- package/dist/hooks/use-battery-animations.js +310 -384
- package/dist/hooks/use-battery-conscious-loading.esm.js +374 -468
- package/dist/hooks/use-battery-conscious-loading.js +374 -468
- package/dist/hooks/use-battery-optimization.esm.js +267 -329
- package/dist/hooks/use-battery-optimization.js +267 -329
- package/dist/hooks/use-battery-status.esm.js +213 -293
- package/dist/hooks/use-battery-status.js +213 -293
- package/dist/hooks/use-component-performance.esm.js +235 -341
- package/dist/hooks/use-component-performance.js +235 -341
- package/dist/hooks/use-device-loading-states.esm.js +356 -457
- package/dist/hooks/use-device-loading-states.js +356 -457
- package/dist/hooks/use-device.esm.js +77 -102
- package/dist/hooks/use-device.js +77 -102
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +349 -487
- package/dist/hooks/use-enterprise-mobile-experience.js +349 -487
- package/dist/hooks/use-form-feedback.esm.js +313 -398
- package/dist/hooks/use-form-feedback.js +313 -398
- package/dist/hooks/use-form-performance.esm.js +407 -500
- package/dist/hooks/use-form-performance.js +407 -500
- package/dist/hooks/use-frame-rate.esm.js +178 -251
- package/dist/hooks/use-frame-rate.js +178 -251
- package/dist/hooks/use-gestures.esm.js +230 -332
- package/dist/hooks/use-gestures.js +230 -332
- package/dist/hooks/use-hardware-acceleration.esm.js +246 -339
- package/dist/hooks/use-hardware-acceleration.js +246 -339
- package/dist/hooks/use-input-accessibility.esm.js +350 -454
- package/dist/hooks/use-input-accessibility.js +350 -454
- package/dist/hooks/use-input-performance.esm.js +419 -502
- package/dist/hooks/use-input-performance.js +419 -502
- package/dist/hooks/use-layout-performance.esm.js +233 -319
- package/dist/hooks/use-layout-performance.js +233 -319
- package/dist/hooks/use-loading-accessibility.esm.js +421 -531
- package/dist/hooks/use-loading-accessibility.js +421 -531
- package/dist/hooks/use-loading-performance.esm.js +398 -469
- package/dist/hooks/use-loading-performance.js +398 -469
- package/dist/hooks/use-memory-usage.esm.js +211 -287
- package/dist/hooks/use-memory-usage.js +211 -287
- package/dist/hooks/use-mobile-form-layout.esm.js +365 -458
- package/dist/hooks/use-mobile-form-layout.js +365 -458
- package/dist/hooks/use-mobile-form-validation.esm.js +384 -497
- package/dist/hooks/use-mobile-form-validation.js +384 -497
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +354 -468
- package/dist/hooks/use-mobile-keyboard-optimization.js +354 -468
- package/dist/hooks/use-mobile-layout.esm.js +207 -294
- package/dist/hooks/use-mobile-layout.js +207 -294
- package/dist/hooks/use-mobile-optimization.esm.js +308 -404
- package/dist/hooks/use-mobile-optimization.js +308 -404
- package/dist/hooks/use-mobile-skeleton.esm.js +300 -402
- package/dist/hooks/use-mobile-skeleton.js +300 -402
- package/dist/hooks/use-mobile-touch.esm.js +314 -412
- package/dist/hooks/use-mobile-touch.js +314 -412
- package/dist/hooks/use-performance-throttling.esm.js +276 -344
- package/dist/hooks/use-performance-throttling.js +276 -344
- package/dist/hooks/use-performance.esm.js +216 -313
- package/dist/hooks/use-performance.js +216 -313
- package/dist/hooks/use-reusable-architecture.esm.js +255 -408
- package/dist/hooks/use-reusable-architecture.js +255 -408
- package/dist/hooks/use-semantic-input-types.esm.js +290 -356
- package/dist/hooks/use-semantic-input-types.js +290 -356
- package/dist/hooks/use-semantic-input.esm.js +446 -549
- package/dist/hooks/use-semantic-input.js +446 -549
- package/dist/hooks/use-tablet-layout.esm.js +279 -384
- package/dist/hooks/use-tablet-layout.js +279 -384
- package/dist/hooks/use-touch-friendly-input.esm.js +401 -519
- package/dist/hooks/use-touch-friendly-input.js +401 -519
- package/dist/hooks/use-touch-friendly-interface.esm.js +242 -331
- package/dist/hooks/use-touch-friendly-interface.js +242 -331
- package/dist/hooks/use-touch-optimization.esm.js +288 -370
- package/dist/hooks/use-touch-optimization.js +288 -370
- package/dist/index.esm.js +150 -294
- package/dist/index.js +150 -294
- package/dist/lib/utils.esm.js +4 -5
- package/dist/lib/utils.js +4 -5
- package/dist/plugins/theme-css-generator.esm.js +292 -346
- package/dist/plugins/theme-css-generator.js +292 -346
- package/dist/provider.esm.js +3 -19
- package/dist/provider.js +3 -19
- package/dist/styles/layers/validation.esm.js +275 -0
- package/dist/styles/layers/validation.js +275 -0
- package/dist/styles.css +1 -1
- package/dist/theme.esm.js +654 -658
- package/dist/theme.js +654 -658
- package/dist/themes/ThemeContext.esm.js +1 -27
- package/dist/themes/ThemeContext.js +1 -27
- package/dist/themes/ThemeProvider.esm.js +191 -223
- package/dist/themes/ThemeProvider.js +191 -223
- package/dist/themes/accessibility/index.esm.js +0 -4
- package/dist/themes/accessibility/index.js +0 -4
- package/dist/themes/accessibility.esm.js +175 -240
- package/dist/themes/accessibility.js +175 -240
- package/dist/themes/aria-patterns.esm.js +345 -401
- package/dist/themes/aria-patterns.js +345 -401
- package/dist/themes/base-themes.esm.js +15 -24
- package/dist/themes/base-themes.js +15 -24
- package/dist/themes/colorManager.esm.js +293 -357
- package/dist/themes/colorManager.js +293 -357
- package/dist/themes/examples/dark-theme.esm.js +129 -133
- package/dist/themes/examples/dark-theme.js +129 -133
- package/dist/themes/examples/minimal-theme.esm.js +80 -85
- package/dist/themes/examples/minimal-theme.js +80 -85
- package/dist/themes/focus-management.esm.js +541 -677
- package/dist/themes/focus-management.js +541 -677
- package/dist/themes/fontLoader.esm.js +151 -180
- package/dist/themes/fontLoader.js +151 -180
- package/dist/themes/high-contrast.esm.js +394 -558
- package/dist/themes/high-contrast.js +394 -558
- package/dist/themes/index.esm.js +1 -9
- package/dist/themes/index.js +1 -9
- package/dist/themes/inheritance.esm.js +145 -180
- package/dist/themes/inheritance.js +145 -180
- package/dist/themes/keyboard-navigation.esm.js +418 -510
- package/dist/themes/keyboard-navigation.js +418 -510
- package/dist/themes/motion-reduction.esm.js +434 -591
- package/dist/themes/motion-reduction.js +434 -591
- package/dist/themes/navigation.esm.js +1 -234
- package/dist/themes/navigation.js +1 -234
- package/dist/themes/screen-reader.esm.js +515 -616
- package/dist/themes/screen-reader.js +515 -616
- package/dist/themes/systemThemeDetector.esm.js +135 -164
- package/dist/themes/systemThemeDetector.js +135 -164
- package/dist/themes/themeCSSUpdater.esm.js +217 -252
- package/dist/themes/themeCSSUpdater.js +217 -252
- package/dist/themes/themePersistence.esm.js +181 -212
- package/dist/themes/themePersistence.js +181 -212
- package/dist/themes/themes/default.esm.js +584 -0
- package/dist/themes/themes/default.js +584 -0
- package/dist/themes/themes/harvey.esm.js +551 -0
- package/dist/themes/themes/harvey.js +551 -0
- package/dist/themes/themes/stan-design.esm.js +654 -658
- package/dist/themes/themes/stan-design.js +654 -658
- package/dist/themes/types.esm.js +1 -458
- package/dist/themes/types.js +1 -458
- package/dist/themes/useSystemTheme.esm.js +34 -42
- package/dist/themes/useSystemTheme.js +34 -42
- package/dist/themes/useTheme.esm.js +23 -28
- package/dist/themes/useTheme.js +23 -28
- package/dist/themes/validation.esm.js +380 -433
- package/dist/themes/validation.js +380 -433
- package/dist/tokens/index.esm.js +2 -25
- package/dist/tokens/index.js +2 -25
- package/dist/tokens/tokenExporter.esm.js +309 -373
- package/dist/tokens/tokenExporter.js +309 -373
- package/dist/tokens/tokenGenerator.esm.js +241 -273
- package/dist/tokens/tokenGenerator.js +241 -273
- package/dist/tokens/tokenManager.esm.js +187 -241
- package/dist/tokens/tokenManager.js +187 -241
- package/dist/tokens/tokenValidator.esm.js +402 -522
- package/dist/tokens/tokenValidator.js +402 -522
- package/dist/tokens/types.esm.js +1 -78
- package/dist/tokens/types.js +1 -78
- package/dist/types.esm.js +3 -0
- package/dist/types.js +3 -0
- package/dist/utils/bundle-analyzer.esm.js +188 -246
- package/dist/utils/bundle-analyzer.js +188 -246
- package/dist/utils/bundle-splitting.esm.js +330 -458
- package/dist/utils/bundle-splitting.js +330 -458
- package/dist/utils/lazy-loading.esm.js +311 -417
- package/dist/utils/lazy-loading.js +311 -417
- package/dist/utils/performance-monitor.esm.js +369 -490
- package/dist/utils/performance-monitor.js +369 -490
- package/dist/utils/tree-shaking.esm.js +194 -264
- package/dist/utils/tree-shaking.js +194 -264
- package/package.json +18 -2
- package/src/index.ts +150 -149
- package/src/provider.tsx +3 -3
- package/src/theme.ts +1 -1
- package/{dist/theme.d.ts → src/themes/themes/default.ts} +77 -169
- package/src/themes/themes/harvey.ts +554 -0
- package/{dist/themes/types.d.ts → src/types.ts} +7 -1
- package/dist/components/ui/accessibility-demo.d.ts +0 -259
- package/dist/components/ui/advanced-component-architecture-demo.d.ts +0 -718
- package/dist/components/ui/advanced-transition-system-demo.d.ts +0 -660
- package/dist/components/ui/advanced-transition-system.d.ts +0 -391
- package/dist/components/ui/animation/animated-container.d.ts +0 -162
- package/dist/components/ui/animation/index.d.ts +0 -9
- package/dist/components/ui/animation/staggered-container.d.ts +0 -64
- package/dist/components/ui/animation-demo.d.ts +0 -238
- package/dist/components/ui/badge.d.ts +0 -28
- package/dist/components/ui/battery-conscious-animation-demo.d.ts +0 -561
- package/dist/components/ui/border-radius-shadow-demo.d.ts +0 -183
- package/dist/components/ui/button.d.ts +0 -33
- package/dist/components/ui/card.d.ts +0 -205
- package/dist/components/ui/checkbox.d.ts +0 -26
- package/dist/components/ui/color-preview.d.ts +0 -402
- package/dist/components/ui/data-display/chart.d.ts +0 -646
- package/dist/components/ui/data-display/data-grid-simple.d.ts +0 -73
- package/dist/components/ui/data-display/data-grid.d.ts +0 -670
- package/dist/components/ui/data-display/list.d.ts +0 -448
- package/dist/components/ui/data-display/table.d.ts +0 -472
- package/dist/components/ui/data-display/timeline.d.ts +0 -433
- package/dist/components/ui/data-display/tree.d.ts +0 -594
- package/dist/components/ui/data-display/types.d.ts +0 -534
- package/dist/components/ui/enterprise-mobile-experience-demo.d.ts +0 -735
- package/dist/components/ui/enterprise-mobile-experience.d.ts +0 -461
- package/dist/components/ui/feedback/alert.d.ts +0 -154
- package/dist/components/ui/feedback/progress.d.ts +0 -288
- package/dist/components/ui/feedback/skeleton.d.ts +0 -182
- package/dist/components/ui/feedback/toast.d.ts +0 -277
- package/dist/components/ui/feedback/types.d.ts +0 -123
- package/dist/components/ui/font-preview.d.ts +0 -282
- package/dist/components/ui/form-demo.d.ts +0 -544
- package/dist/components/ui/hardware-acceleration-demo.d.ts +0 -540
- package/dist/components/ui/input.d.ts +0 -33
- package/dist/components/ui/label.d.ts +0 -13
- package/dist/components/ui/layout-demo.d.ts +0 -352
- package/dist/components/ui/layouts/adaptive-layout.d.ts +0 -132
- package/dist/components/ui/layouts/desktop-layout.d.ts +0 -219
- package/dist/components/ui/layouts/index.d.ts +0 -5
- package/dist/components/ui/layouts/mobile-layout.d.ts +0 -158
- package/dist/components/ui/layouts/tablet-layout.d.ts +0 -192
- package/dist/components/ui/mobile-form-validation.d.ts +0 -439
- package/dist/components/ui/mobile-input-demo.d.ts +0 -197
- package/dist/components/ui/mobile-input.d.ts +0 -273
- package/dist/components/ui/mobile-skeleton-loading-demo.d.ts +0 -628
- package/dist/components/ui/navigation/breadcrumb.d.ts +0 -149
- package/dist/components/ui/navigation/index.d.ts +0 -25
- package/dist/components/ui/navigation/menu.d.ts +0 -366
- package/dist/components/ui/navigation/navigation-demo.d.ts +0 -169
- package/dist/components/ui/navigation/pagination.d.ts +0 -261
- package/dist/components/ui/navigation/sidebar.d.ts +0 -375
- package/dist/components/ui/navigation/stepper.d.ts +0 -294
- package/dist/components/ui/navigation/tabs.d.ts +0 -196
- package/dist/components/ui/navigation/types.d.ts +0 -293
- package/dist/components/ui/overlay/backdrop.d.ts +0 -79
- package/dist/components/ui/overlay/focus-manager.d.ts +0 -141
- package/dist/components/ui/overlay/index.d.ts +0 -27
- package/dist/components/ui/overlay/modal.d.ts +0 -262
- package/dist/components/ui/overlay/overlay-manager.d.ts +0 -107
- package/dist/components/ui/overlay/popover.d.ts +0 -450
- package/dist/components/ui/overlay/portal.d.ts +0 -75
- package/dist/components/ui/overlay/tooltip.d.ts +0 -298
- package/dist/components/ui/overlay/types.d.ts +0 -194
- package/dist/components/ui/performance-demo.d.ts +0 -583
- package/dist/components/ui/semantic-input-system-demo.d.ts +0 -490
- package/dist/components/ui/theme-customizer.d.ts +0 -378
- package/dist/components/ui/theme-preview.d.ts +0 -305
- package/dist/components/ui/theme-switcher.d.ts +0 -259
- package/dist/components/ui/theme-toggle.d.ts +0 -34
- package/dist/components/ui/token-demo.d.ts +0 -188
- package/dist/components/ui/touch-demo.d.ts +0 -455
- package/dist/components/ui/touch-friendly-interface-demo.d.ts +0 -512
- package/dist/components/ui/touch-friendly-interface.d.ts +0 -292
- package/dist/hooks/index.d.ts +0 -161
- package/dist/hooks/use-accessibility-support.d.ts +0 -516
- package/dist/hooks/use-adaptive-layout.d.ts +0 -287
- package/dist/hooks/use-advanced-patterns.d.ts +0 -292
- package/dist/hooks/use-advanced-transition-system.d.ts +0 -390
- package/dist/hooks/use-animation-profile.d.ts +0 -285
- package/dist/hooks/use-battery-animations.d.ts +0 -382
- package/dist/hooks/use-battery-conscious-loading.d.ts +0 -473
- package/dist/hooks/use-battery-optimization.d.ts +0 -328
- package/dist/hooks/use-battery-status.d.ts +0 -297
- package/dist/hooks/use-component-performance.d.ts +0 -342
- package/dist/hooks/use-device-loading-states.d.ts +0 -456
- package/dist/hooks/use-device.d.ts +0 -104
- package/dist/hooks/use-enterprise-mobile-experience.d.ts +0 -486
- package/dist/hooks/use-form-feedback.d.ts +0 -401
- package/dist/hooks/use-form-performance.d.ts +0 -511
- package/dist/hooks/use-frame-rate.d.ts +0 -249
- package/dist/hooks/use-gestures.d.ts +0 -336
- package/dist/hooks/use-hardware-acceleration.d.ts +0 -339
- package/dist/hooks/use-input-accessibility.d.ts +0 -451
- package/dist/hooks/use-input-performance.d.ts +0 -503
- package/dist/hooks/use-layout-performance.d.ts +0 -317
- package/dist/hooks/use-loading-accessibility.d.ts +0 -532
- package/dist/hooks/use-loading-performance.d.ts +0 -471
- package/dist/hooks/use-memory-usage.d.ts +0 -285
- package/dist/hooks/use-mobile-form-layout.d.ts +0 -462
- package/dist/hooks/use-mobile-form-validation.d.ts +0 -516
- package/dist/hooks/use-mobile-keyboard-optimization.d.ts +0 -469
- package/dist/hooks/use-mobile-layout.d.ts +0 -300
- package/dist/hooks/use-mobile-optimization.d.ts +0 -404
- package/dist/hooks/use-mobile-skeleton.d.ts +0 -399
- package/dist/hooks/use-mobile-touch.d.ts +0 -412
- package/dist/hooks/use-performance-throttling.d.ts +0 -346
- package/dist/hooks/use-performance.d.ts +0 -314
- package/dist/hooks/use-reusable-architecture.d.ts +0 -412
- package/dist/hooks/use-semantic-input-types.d.ts +0 -354
- package/dist/hooks/use-semantic-input.d.ts +0 -563
- package/dist/hooks/use-tablet-layout.d.ts +0 -382
- package/dist/hooks/use-touch-friendly-input.d.ts +0 -520
- package/dist/hooks/use-touch-friendly-interface.d.ts +0 -329
- package/dist/hooks/use-touch-optimization.d.ts +0 -373
- package/dist/index.d.ts +0 -149
- package/dist/lib/utils.d.ts +0 -3
- package/dist/plugins/theme-css-generator.d.ts +0 -345
- package/dist/provider.d.ts +0 -17
- package/dist/themes/ThemeContext.d.ts +0 -27
- package/dist/themes/ThemeProvider.d.ts +0 -222
- package/dist/themes/accessibility/index.d.ts +0 -7
- package/dist/themes/accessibility.d.ts +0 -259
- package/dist/themes/aria-patterns.d.ts +0 -418
- package/dist/themes/base-themes.d.ts +0 -34
- package/dist/themes/colorManager.d.ts +0 -327
- package/dist/themes/examples/dark-theme.d.ts +0 -139
- package/dist/themes/examples/minimal-theme.d.ts +0 -93
- package/dist/themes/focus-management.d.ts +0 -699
- package/dist/themes/fontLoader.d.ts +0 -163
- package/dist/themes/high-contrast.d.ts +0 -619
- package/dist/themes/index.d.ts +0 -11
- package/dist/themes/inheritance.d.ts +0 -160
- package/dist/themes/keyboard-navigation.d.ts +0 -550
- package/dist/themes/motion-reduction.d.ts +0 -660
- package/dist/themes/navigation.d.ts +0 -232
- package/dist/themes/screen-reader.d.ts +0 -645
- package/dist/themes/systemThemeDetector.d.ts +0 -148
- package/dist/themes/themeCSSUpdater.d.ts +0 -229
- package/dist/themes/themePersistence.d.ts +0 -192
- package/dist/themes/themes/stan-design.d.ts +0 -678
- package/dist/themes/useSystemTheme.d.ts +0 -43
- package/dist/themes/useTheme.d.ts +0 -20
- package/dist/themes/validation.d.ts +0 -406
- package/dist/tokens/index.d.ts +0 -25
- package/dist/tokens/tokenExporter.d.ts +0 -336
- package/dist/tokens/tokenGenerator.d.ts +0 -250
- package/dist/tokens/tokenManager.d.ts +0 -194
- package/dist/tokens/tokenValidator.d.ts +0 -488
- package/dist/tokens/types.d.ts +0 -78
- package/dist/utils/bundle-analyzer.d.ts +0 -260
- package/dist/utils/bundle-splitting.d.ts +0 -483
- package/dist/utils/lazy-loading.d.ts +0 -437
- package/dist/utils/performance-monitor.d.ts +0 -513
- package/dist/utils/tree-shaking.d.ts +0 -274
|
@@ -1,543 +1,423 @@
|
|
|
1
|
-
import type { ThemeTokens, DesignToken, TokenType } from './types';
|
|
2
|
-
|
|
3
|
-
export interface ValidationResult {
|
|
4
|
-
isValid: boolean;
|
|
5
|
-
errors: ValidationError[];
|
|
6
|
-
warnings: ValidationWarning[];
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface ValidationError {
|
|
10
|
-
path: string;
|
|
11
|
-
message: string;
|
|
12
|
-
severity: 'error' | 'critical';
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface ValidationWarning {
|
|
16
|
-
path: string;
|
|
17
|
-
message: string;
|
|
18
|
-
suggestion?: string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
1
|
export class TokenValidator {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Validates a complete theme tokens object
|
|
4
|
+
*/
|
|
5
|
+
static validateTokens(tokens) {
|
|
6
|
+
const errors = [];
|
|
7
|
+
const warnings = [];
|
|
8
|
+
// Validate basic structure
|
|
9
|
+
if (!tokens.theme) {
|
|
10
|
+
errors.push({
|
|
11
|
+
path: 'theme',
|
|
12
|
+
message: 'Theme name is required',
|
|
13
|
+
severity: 'critical'
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
if (!tokens.version) {
|
|
17
|
+
errors.push({
|
|
18
|
+
path: 'version',
|
|
19
|
+
message: 'Theme version is required',
|
|
20
|
+
severity: 'critical'
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
if (!tokens.tokens) {
|
|
24
|
+
errors.push({
|
|
25
|
+
path: 'tokens',
|
|
26
|
+
message: 'Tokens object is required',
|
|
27
|
+
severity: 'critical'
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
// Validate token categories
|
|
31
|
+
if (tokens.tokens) {
|
|
32
|
+
this.validateTokenCategory(tokens.tokens.color, 'color', errors, warnings);
|
|
33
|
+
this.validateTokenCategory(tokens.tokens.font, 'font', errors, warnings);
|
|
34
|
+
this.validateTokenCategory(tokens.tokens.spacing, 'spacing', errors, warnings);
|
|
35
|
+
this.validateTokenCategory(tokens.tokens.shadow, 'shadow', errors, warnings);
|
|
36
|
+
this.validateTokenCategory(tokens.tokens.transition, 'transition', errors, warnings);
|
|
37
|
+
this.validateTokenCategory(tokens.tokens.breakpoint, 'breakpoint', errors, warnings);
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
isValid: errors.length === 0,
|
|
41
|
+
errors,
|
|
42
|
+
warnings
|
|
43
|
+
};
|
|
52
44
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Validates a specific token category
|
|
47
|
+
*/
|
|
48
|
+
static validateTokenCategory(category, categoryName, errors, warnings) {
|
|
49
|
+
if (!category)
|
|
50
|
+
return;
|
|
51
|
+
if (typeof category !== 'object') {
|
|
52
|
+
errors.push({
|
|
53
|
+
path: `tokens.${categoryName}`,
|
|
54
|
+
message: `${categoryName} category must be an object`,
|
|
55
|
+
severity: 'error'
|
|
56
|
+
});
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this.validateTokenGroup(category, `tokens.${categoryName}`, errors, warnings);
|
|
62
60
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
errors.push({
|
|
84
|
-
path: `tokens.${categoryName}`,
|
|
85
|
-
message: `${categoryName} category must be an object`,
|
|
86
|
-
severity: 'error'
|
|
87
|
-
});
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
this.validateTokenGroup(category, `tokens.${categoryName}`, errors, warnings);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Validates a token group recursively
|
|
96
|
-
*/
|
|
97
|
-
private static validateTokenGroup(
|
|
98
|
-
group: any,
|
|
99
|
-
path: string,
|
|
100
|
-
errors: ValidationError[],
|
|
101
|
-
warnings: ValidationWarning[]
|
|
102
|
-
) {
|
|
103
|
-
Object.entries(group).forEach(([key, value]) => {
|
|
104
|
-
const currentPath = `${path}.${key}`;
|
|
105
|
-
|
|
106
|
-
if (this.isToken(value)) {
|
|
107
|
-
this.validateToken(value as DesignToken, currentPath, errors, warnings);
|
|
108
|
-
} else if (typeof value === 'object' && value !== null) {
|
|
109
|
-
// Recursively validate nested groups
|
|
110
|
-
this.validateTokenGroup(value, currentPath, errors, warnings);
|
|
111
|
-
} else {
|
|
112
|
-
errors.push({
|
|
113
|
-
path: currentPath,
|
|
114
|
-
message: `Invalid token structure at ${currentPath}`,
|
|
115
|
-
severity: 'error'
|
|
61
|
+
/**
|
|
62
|
+
* Validates a token group recursively
|
|
63
|
+
*/
|
|
64
|
+
static validateTokenGroup(group, path, errors, warnings) {
|
|
65
|
+
Object.entries(group).forEach(([key, value]) => {
|
|
66
|
+
const currentPath = `${path}.${key}`;
|
|
67
|
+
if (this.isToken(value)) {
|
|
68
|
+
this.validateToken(value, currentPath, errors, warnings);
|
|
69
|
+
}
|
|
70
|
+
else if (typeof value === 'object' && value !== null) {
|
|
71
|
+
// Recursively validate nested groups
|
|
72
|
+
this.validateTokenGroup(value, currentPath, errors, warnings);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
errors.push({
|
|
76
|
+
path: currentPath,
|
|
77
|
+
message: `Invalid token structure at ${currentPath}`,
|
|
78
|
+
severity: 'error'
|
|
79
|
+
});
|
|
80
|
+
}
|
|
116
81
|
});
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Validates an individual token
|
|
123
|
-
*/
|
|
124
|
-
private static validateToken(
|
|
125
|
-
token: DesignToken,
|
|
126
|
-
path: string,
|
|
127
|
-
errors: ValidationError[],
|
|
128
|
-
warnings: ValidationWarning[]
|
|
129
|
-
) {
|
|
130
|
-
// Check required properties
|
|
131
|
-
if (token.value === undefined || token.value === null) {
|
|
132
|
-
errors.push({
|
|
133
|
-
path,
|
|
134
|
-
message: 'Token value is required',
|
|
135
|
-
severity: 'error'
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (!token.type) {
|
|
140
|
-
errors.push({
|
|
141
|
-
path,
|
|
142
|
-
message: 'Token type is required',
|
|
143
|
-
severity: 'error'
|
|
144
|
-
});
|
|
145
|
-
} else if (!this.isValidTokenType(token.type)) {
|
|
146
|
-
errors.push({
|
|
147
|
-
path,
|
|
148
|
-
message: `Invalid token type: ${token.type}`,
|
|
149
|
-
severity: 'error'
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Validate token type-specific values
|
|
154
|
-
this.validateTokenValue(token, path, errors, warnings);
|
|
155
|
-
|
|
156
|
-
// Check for missing descriptions (warning)
|
|
157
|
-
if (!token.description) {
|
|
158
|
-
warnings.push({
|
|
159
|
-
path,
|
|
160
|
-
message: 'Token description is missing',
|
|
161
|
-
suggestion: 'Add a description to improve token documentation'
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Check for missing tags (warning)
|
|
166
|
-
if (!token.tags || token.tags.length === 0) {
|
|
167
|
-
warnings.push({
|
|
168
|
-
path,
|
|
169
|
-
message: 'Token tags are missing',
|
|
170
|
-
suggestion: 'Add tags to improve token categorization and searchability'
|
|
171
|
-
});
|
|
172
82
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
this.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Validates an individual token
|
|
85
|
+
*/
|
|
86
|
+
static validateToken(token, path, errors, warnings) {
|
|
87
|
+
// Check required properties
|
|
88
|
+
if (token.value === undefined || token.value === null) {
|
|
89
|
+
errors.push({
|
|
90
|
+
path,
|
|
91
|
+
message: 'Token value is required',
|
|
92
|
+
severity: 'error'
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
if (!token.type) {
|
|
96
|
+
errors.push({
|
|
97
|
+
path,
|
|
98
|
+
message: 'Token type is required',
|
|
99
|
+
severity: 'error'
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else if (!this.isValidTokenType(token.type)) {
|
|
103
|
+
errors.push({
|
|
104
|
+
path,
|
|
105
|
+
message: `Invalid token type: ${token.type}`,
|
|
106
|
+
severity: 'error'
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// Validate token type-specific values
|
|
110
|
+
this.validateTokenValue(token, path, errors, warnings);
|
|
111
|
+
// Check for missing descriptions (warning)
|
|
112
|
+
if (!token.description) {
|
|
113
|
+
warnings.push({
|
|
114
|
+
path,
|
|
115
|
+
message: 'Token description is missing',
|
|
116
|
+
suggestion: 'Add a description to improve token documentation'
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
// Check for missing tags (warning)
|
|
120
|
+
if (!token.tags || token.tags.length === 0) {
|
|
121
|
+
warnings.push({
|
|
122
|
+
path,
|
|
123
|
+
message: 'Token tags are missing',
|
|
124
|
+
suggestion: 'Add tags to improve token categorization and searchability'
|
|
125
|
+
});
|
|
126
|
+
}
|
|
212
127
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Validates token value based on type
|
|
130
|
+
*/
|
|
131
|
+
static validateTokenValue(token, path, errors, warnings) {
|
|
132
|
+
switch (token.type) {
|
|
133
|
+
case 'color':
|
|
134
|
+
this.validateColorToken(token, path, errors, warnings);
|
|
135
|
+
break;
|
|
136
|
+
case 'fontFamily':
|
|
137
|
+
this.validateFontFamilyToken(token, path, errors, warnings);
|
|
138
|
+
break;
|
|
139
|
+
case 'fontSize':
|
|
140
|
+
this.validateFontSizeToken(token, path, errors, warnings);
|
|
141
|
+
break;
|
|
142
|
+
case 'fontWeight':
|
|
143
|
+
this.validateFontWeightToken(token, path, errors, warnings);
|
|
144
|
+
break;
|
|
145
|
+
case 'lineHeight':
|
|
146
|
+
this.validateLineHeightToken(token, path, errors, warnings);
|
|
147
|
+
break;
|
|
148
|
+
case 'spacing':
|
|
149
|
+
this.validateSpacingToken(token, path, errors, warnings);
|
|
150
|
+
break;
|
|
151
|
+
case 'shadow':
|
|
152
|
+
this.validateShadowToken(token, path, errors, warnings);
|
|
153
|
+
break;
|
|
154
|
+
case 'transition':
|
|
155
|
+
this.validateTransitionToken(token, path, errors, warnings);
|
|
156
|
+
break;
|
|
157
|
+
case 'breakpoint':
|
|
158
|
+
this.validateBreakpointToken(token, path, errors, warnings);
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
233
161
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Validates color tokens
|
|
164
|
+
*/
|
|
165
|
+
static validateColorToken(token, path, errors, warnings) {
|
|
166
|
+
const value = token.value;
|
|
167
|
+
if (typeof value !== 'string') {
|
|
168
|
+
errors.push({
|
|
169
|
+
path,
|
|
170
|
+
message: 'Color token value must be a string',
|
|
171
|
+
severity: 'error'
|
|
172
|
+
});
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
// Check if it's a valid color format
|
|
176
|
+
if (!this.isValidColor(value)) {
|
|
177
|
+
errors.push({
|
|
178
|
+
path,
|
|
179
|
+
message: `Invalid color format: ${value}`,
|
|
180
|
+
severity: 'error'
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
// Check for semantic color consistency
|
|
184
|
+
if (token.category === 'color' && !token.semantic) {
|
|
185
|
+
warnings.push({
|
|
186
|
+
path,
|
|
187
|
+
message: 'Semantic color missing semantic property',
|
|
188
|
+
suggestion: 'Add semantic property (primary, secondary, accent, success, warning, error, neutral)'
|
|
189
|
+
});
|
|
190
|
+
}
|
|
242
191
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
192
|
+
/**
|
|
193
|
+
* Validates font family tokens
|
|
194
|
+
*/
|
|
195
|
+
static validateFontFamilyToken(token, path, errors, _warnings) {
|
|
196
|
+
const value = token.value;
|
|
197
|
+
if (typeof value !== 'string') {
|
|
198
|
+
errors.push({
|
|
199
|
+
path,
|
|
200
|
+
message: 'Font family token value must be a string',
|
|
201
|
+
severity: 'error'
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (value.trim().length === 0) {
|
|
205
|
+
errors.push({
|
|
206
|
+
path,
|
|
207
|
+
message: 'Font family token value cannot be empty',
|
|
208
|
+
severity: 'error'
|
|
209
|
+
});
|
|
210
|
+
}
|
|
251
211
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
212
|
+
/**
|
|
213
|
+
* Validates font size tokens
|
|
214
|
+
*/
|
|
215
|
+
static validateFontSizeToken(token, path, errors, _warnings) {
|
|
216
|
+
const value = token.value;
|
|
217
|
+
if (typeof value === 'number') {
|
|
218
|
+
if (value <= 0) {
|
|
219
|
+
errors.push({
|
|
220
|
+
path,
|
|
221
|
+
message: 'Font size token value must be positive',
|
|
222
|
+
severity: 'error'
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else if (typeof value === 'string') {
|
|
227
|
+
if (!this.isValidCSSUnit(value)) {
|
|
228
|
+
errors.push({
|
|
229
|
+
path,
|
|
230
|
+
message: `Invalid font size unit: ${value}`,
|
|
231
|
+
severity: 'error'
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
errors.push({
|
|
237
|
+
path,
|
|
238
|
+
message: 'Font size token value must be a number or valid CSS unit string',
|
|
239
|
+
severity: 'error'
|
|
240
|
+
});
|
|
241
|
+
}
|
|
271
242
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
243
|
+
/**
|
|
244
|
+
* Validates font weight tokens
|
|
245
|
+
*/
|
|
246
|
+
static validateFontWeightToken(token, path, errors, _warnings) {
|
|
247
|
+
const value = token.value;
|
|
248
|
+
if (typeof value === 'number') {
|
|
249
|
+
if (value < 100 || value > 900 || value % 100 !== 0) {
|
|
250
|
+
errors.push({
|
|
251
|
+
path,
|
|
252
|
+
message: 'Font weight token value must be a multiple of 100 between 100 and 900',
|
|
253
|
+
severity: 'error'
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else if (typeof value === 'string') {
|
|
258
|
+
const validWeights = ['normal', 'bold', 'lighter', 'bolder'];
|
|
259
|
+
if (!validWeights.includes(value)) {
|
|
260
|
+
errors.push({
|
|
261
|
+
path,
|
|
262
|
+
message: `Invalid font weight value: ${value}`,
|
|
263
|
+
severity: 'error'
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
errors.push({
|
|
269
|
+
path,
|
|
270
|
+
message: 'Font weight token value must be a number or valid string',
|
|
271
|
+
severity: 'error'
|
|
272
|
+
});
|
|
273
|
+
}
|
|
279
274
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
errors.push({
|
|
311
|
-
path,
|
|
312
|
-
message: 'Font size token value must be a number or valid CSS unit string',
|
|
313
|
-
severity: 'error'
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
/**
|
|
319
|
-
* Validates font weight tokens
|
|
320
|
-
*/
|
|
321
|
-
private static validateFontWeightToken(
|
|
322
|
-
token: DesignToken,
|
|
323
|
-
path: string,
|
|
324
|
-
errors: ValidationError[],
|
|
325
|
-
_warnings: ValidationWarning[]
|
|
326
|
-
) {
|
|
327
|
-
const value = token.value as string | number;
|
|
328
|
-
|
|
329
|
-
if (typeof value === 'number') {
|
|
330
|
-
if (value < 100 || value > 900 || value % 100 !== 0) {
|
|
331
|
-
errors.push({
|
|
332
|
-
path,
|
|
333
|
-
message: 'Font weight token value must be a multiple of 100 between 100 and 900',
|
|
334
|
-
severity: 'error'
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
} else if (typeof value === 'string') {
|
|
338
|
-
const validWeights = ['normal', 'bold', 'lighter', 'bolder'];
|
|
339
|
-
if (!validWeights.includes(value)) {
|
|
340
|
-
errors.push({
|
|
341
|
-
path,
|
|
342
|
-
message: `Invalid font weight value: ${value}`,
|
|
343
|
-
severity: 'error'
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
} else {
|
|
347
|
-
errors.push({
|
|
348
|
-
path,
|
|
349
|
-
message: 'Font weight token value must be a number or valid string',
|
|
350
|
-
severity: 'error'
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
/**
|
|
356
|
-
* Validates line height tokens
|
|
357
|
-
*/
|
|
358
|
-
private static validateLineHeightToken(
|
|
359
|
-
token: DesignToken,
|
|
360
|
-
path: string,
|
|
361
|
-
errors: ValidationError[],
|
|
362
|
-
_warnings: ValidationWarning[]
|
|
363
|
-
) {
|
|
364
|
-
const value = token.value as string | number;
|
|
365
|
-
|
|
366
|
-
if (typeof value === 'number') {
|
|
367
|
-
if (value <= 0) {
|
|
368
|
-
errors.push({
|
|
369
|
-
path,
|
|
370
|
-
message: 'Line height token value must be positive',
|
|
371
|
-
severity: 'error'
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
} else if (typeof value === 'string') {
|
|
375
|
-
if (!this.isValidCSSUnit(value) && value !== 'normal') {
|
|
376
|
-
errors.push({
|
|
377
|
-
path,
|
|
378
|
-
message: `Invalid line height value: ${value}`,
|
|
379
|
-
severity: 'error'
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
} else {
|
|
383
|
-
errors.push({
|
|
384
|
-
path,
|
|
385
|
-
message: 'Line height token value must be a number or valid CSS unit string',
|
|
386
|
-
severity: 'error'
|
|
387
|
-
});
|
|
275
|
+
/**
|
|
276
|
+
* Validates line height tokens
|
|
277
|
+
*/
|
|
278
|
+
static validateLineHeightToken(token, path, errors, _warnings) {
|
|
279
|
+
const value = token.value;
|
|
280
|
+
if (typeof value === 'number') {
|
|
281
|
+
if (value <= 0) {
|
|
282
|
+
errors.push({
|
|
283
|
+
path,
|
|
284
|
+
message: 'Line height token value must be positive',
|
|
285
|
+
severity: 'error'
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else if (typeof value === 'string') {
|
|
290
|
+
if (!this.isValidCSSUnit(value) && value !== 'normal') {
|
|
291
|
+
errors.push({
|
|
292
|
+
path,
|
|
293
|
+
message: `Invalid line height value: ${value}`,
|
|
294
|
+
severity: 'error'
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
errors.push({
|
|
300
|
+
path,
|
|
301
|
+
message: 'Line height token value must be a number or valid CSS unit string',
|
|
302
|
+
severity: 'error'
|
|
303
|
+
});
|
|
304
|
+
}
|
|
388
305
|
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
306
|
+
/**
|
|
307
|
+
* Validates spacing tokens
|
|
308
|
+
*/
|
|
309
|
+
static validateSpacingToken(token, path, errors, _warnings) {
|
|
310
|
+
const value = token.value;
|
|
311
|
+
if (typeof value !== 'number') {
|
|
312
|
+
errors.push({
|
|
313
|
+
path,
|
|
314
|
+
message: 'Spacing token value must be a number',
|
|
315
|
+
severity: 'error'
|
|
316
|
+
});
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
if (value < 0) {
|
|
320
|
+
errors.push({
|
|
321
|
+
path,
|
|
322
|
+
message: 'Spacing token value cannot be negative',
|
|
323
|
+
severity: 'error'
|
|
324
|
+
});
|
|
325
|
+
}
|
|
409
326
|
}
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
327
|
+
/**
|
|
328
|
+
* Validates shadow tokens
|
|
329
|
+
*/
|
|
330
|
+
static validateShadowToken(token, path, errors, _warnings) {
|
|
331
|
+
const value = token.value;
|
|
332
|
+
if (typeof value !== 'string') {
|
|
333
|
+
errors.push({
|
|
334
|
+
path,
|
|
335
|
+
message: 'Shadow token value must be a string',
|
|
336
|
+
severity: 'error'
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
if (value.trim().length === 0) {
|
|
340
|
+
errors.push({
|
|
341
|
+
path,
|
|
342
|
+
message: 'Shadow token value cannot be empty',
|
|
343
|
+
severity: 'error'
|
|
344
|
+
});
|
|
345
|
+
}
|
|
417
346
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
347
|
+
/**
|
|
348
|
+
* Validates transition tokens
|
|
349
|
+
*/
|
|
350
|
+
static validateTransitionToken(token, path, errors, _warnings) {
|
|
351
|
+
const value = token.value;
|
|
352
|
+
if (typeof value !== 'string') {
|
|
353
|
+
errors.push({
|
|
354
|
+
path,
|
|
355
|
+
message: 'Transition token value must be a string',
|
|
356
|
+
severity: 'error'
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
if (value.trim().length === 0) {
|
|
360
|
+
errors.push({
|
|
361
|
+
path,
|
|
362
|
+
message: 'Transition token value cannot be empty',
|
|
363
|
+
severity: 'error'
|
|
364
|
+
});
|
|
365
|
+
}
|
|
437
366
|
}
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
367
|
+
/**
|
|
368
|
+
* Validates breakpoint tokens
|
|
369
|
+
*/
|
|
370
|
+
static validateBreakpointToken(token, path, errors, _warnings) {
|
|
371
|
+
const value = token.value;
|
|
372
|
+
if (typeof value !== 'number') {
|
|
373
|
+
errors.push({
|
|
374
|
+
path,
|
|
375
|
+
message: 'Breakpoint token value must be a number',
|
|
376
|
+
severity: 'error'
|
|
377
|
+
});
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
if (value < 0) {
|
|
381
|
+
errors.push({
|
|
382
|
+
path,
|
|
383
|
+
message: 'Breakpoint token value cannot be negative',
|
|
384
|
+
severity: 'error'
|
|
385
|
+
});
|
|
386
|
+
}
|
|
445
387
|
}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
errors: ValidationError[],
|
|
455
|
-
_warnings: ValidationWarning[]
|
|
456
|
-
) {
|
|
457
|
-
const value = token.value as string;
|
|
458
|
-
|
|
459
|
-
if (typeof value !== 'string') {
|
|
460
|
-
errors.push({
|
|
461
|
-
path,
|
|
462
|
-
message: 'Transition token value must be a string',
|
|
463
|
-
severity: 'error'
|
|
464
|
-
});
|
|
388
|
+
/**
|
|
389
|
+
* Checks if a value is a valid token
|
|
390
|
+
*/
|
|
391
|
+
static isToken(value) {
|
|
392
|
+
return value &&
|
|
393
|
+
typeof value === 'object' &&
|
|
394
|
+
'value' in value &&
|
|
395
|
+
'type' in value;
|
|
465
396
|
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
397
|
+
/**
|
|
398
|
+
* Checks if a token type is valid
|
|
399
|
+
*/
|
|
400
|
+
static isValidTokenType(type) {
|
|
401
|
+
const validTypes = [
|
|
402
|
+
'color', 'fontFamily', 'fontSize', 'fontWeight', 'lineHeight',
|
|
403
|
+
'letterSpacing', 'spacing', 'borderRadius', 'shadow', 'transition',
|
|
404
|
+
'zIndex', 'breakpoint'
|
|
405
|
+
];
|
|
406
|
+
return validTypes.includes(type);
|
|
473
407
|
}
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
path: string,
|
|
482
|
-
errors: ValidationError[],
|
|
483
|
-
_warnings: ValidationWarning[]
|
|
484
|
-
) {
|
|
485
|
-
const value = token.value as number;
|
|
486
|
-
|
|
487
|
-
if (typeof value !== 'number') {
|
|
488
|
-
errors.push({
|
|
489
|
-
path,
|
|
490
|
-
message: 'Breakpoint token value must be a number',
|
|
491
|
-
severity: 'error'
|
|
492
|
-
});
|
|
493
|
-
return;
|
|
408
|
+
/**
|
|
409
|
+
* Checks if a color value is valid
|
|
410
|
+
*/
|
|
411
|
+
static isValidColor(color) {
|
|
412
|
+
// Basic color validation - hex, rgb, rgba, named colors
|
|
413
|
+
const colorRegex = /^(#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})|rgb\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)|rgba\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*,\s*[\d.]+\s*\)|transparent|currentColor)$/;
|
|
414
|
+
return colorRegex.test(color);
|
|
494
415
|
}
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
});
|
|
416
|
+
/**
|
|
417
|
+
* Checks if a CSS unit is valid
|
|
418
|
+
*/
|
|
419
|
+
static isValidCSSUnit(value) {
|
|
420
|
+
const unitRegex = /^[\d.]+(px|em|rem|vh|vw|%|ch|ex|in|cm|mm|pt|pc)$/;
|
|
421
|
+
return unitRegex.test(value);
|
|
502
422
|
}
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
/**
|
|
506
|
-
* Checks if a value is a valid token
|
|
507
|
-
*/
|
|
508
|
-
private static isToken(value: any): value is DesignToken {
|
|
509
|
-
return value &&
|
|
510
|
-
typeof value === 'object' &&
|
|
511
|
-
'value' in value &&
|
|
512
|
-
'type' in value;
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
/**
|
|
516
|
-
* Checks if a token type is valid
|
|
517
|
-
*/
|
|
518
|
-
private static isValidTokenType(type: any): type is TokenType {
|
|
519
|
-
const validTypes: TokenType[] = [
|
|
520
|
-
'color', 'fontFamily', 'fontSize', 'fontWeight', 'lineHeight',
|
|
521
|
-
'letterSpacing', 'spacing', 'borderRadius', 'shadow', 'transition',
|
|
522
|
-
'zIndex', 'breakpoint'
|
|
523
|
-
];
|
|
524
|
-
return validTypes.includes(type);
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
/**
|
|
528
|
-
* Checks if a color value is valid
|
|
529
|
-
*/
|
|
530
|
-
private static isValidColor(color: string): boolean {
|
|
531
|
-
// Basic color validation - hex, rgb, rgba, named colors
|
|
532
|
-
const colorRegex = /^(#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})|rgb\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)|rgba\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*,\s*[\d.]+\s*\)|transparent|currentColor)$/;
|
|
533
|
-
return colorRegex.test(color);
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
/**
|
|
537
|
-
* Checks if a CSS unit is valid
|
|
538
|
-
*/
|
|
539
|
-
private static isValidCSSUnit(value: string): boolean {
|
|
540
|
-
const unitRegex = /^[\d.]+(px|em|rem|vh|vw|%|ch|ex|in|cm|mm|pt|pc)$/;
|
|
541
|
-
return unitRegex.test(value);
|
|
542
|
-
}
|
|
543
423
|
}
|