@shohojdhara/atomix 0.3.1 → 0.3.3
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 +0 -1
- package/README.md +41 -24
- package/dist/atomix.css +540 -666
- package/dist/atomix.min.css +3 -3
- package/dist/index.d.ts +7559 -5717
- package/dist/index.esm.js +5013 -2301
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +5084 -2356
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/themes/applemix.css +1683 -722
- package/dist/themes/applemix.css.map +1 -0
- package/dist/themes/applemix.min.css +13 -10
- package/dist/themes/boomdevs.css +1358 -544
- package/dist/themes/boomdevs.css.map +1 -0
- package/dist/themes/boomdevs.min.css +13 -10
- package/dist/themes/esrar.css +1743 -718
- package/dist/themes/esrar.css.map +1 -0
- package/dist/themes/esrar.min.css +41 -7
- package/dist/themes/flashtrade.css +1735 -752
- package/dist/themes/flashtrade.css.map +1 -0
- package/dist/themes/flashtrade.min.css +19 -13
- package/dist/themes/mashroom.css +1765 -787
- package/dist/themes/mashroom.css.map +1 -0
- package/dist/themes/mashroom.min.css +87 -38
- package/dist/themes/shaj-default.css +1685 -713
- package/dist/themes/shaj-default.css.map +1 -0
- package/dist/themes/shaj-default.min.css +11 -7
- package/package.json +95 -26
- package/scripts/atomix-cli.js +1428 -0
- package/scripts/build-themes.js +208 -0
- package/scripts/cli/interactive-init.js +528 -0
- package/scripts/cli/migration-tools.js +603 -0
- package/scripts/cli/token-manager.js +519 -0
- package/scripts/sync-theme-config.js +309 -0
- package/src/components/List/ListGroup.tsx +1 -2
- package/src/components/Popover/Popover.tsx +2 -2
- package/src/components/Tooltip/Tooltip.stories.tsx +49 -12
- package/src/components/Tooltip/Tooltip.tsx +32 -58
- package/src/lib/composables/useAtomixGlass.ts +46 -46
- package/src/lib/composables/useTooltip.ts +285 -0
- package/src/lib/constants/cssVariables.ts +390 -0
- package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +151 -0
- package/src/lib/hooks/index.ts +19 -0
- package/src/lib/hooks/useComponentCustomization.ts +175 -0
- package/src/lib/index.ts +10 -1
- package/src/lib/patterns/__tests__/slots.test.ts +108 -0
- package/src/lib/patterns/index.ts +35 -0
- package/src/lib/patterns/slots.tsx +421 -0
- package/src/lib/theme/__tests__/ThemeBuilder.test.ts +223 -0
- package/src/lib/theme/builders/ThemeBuilder.ts +372 -0
- package/src/lib/theme/config/index.ts +21 -0
- package/src/lib/theme/config/loader.ts +276 -0
- package/src/lib/theme/config/types.ts +98 -0
- package/src/lib/theme/config/validator.ts +326 -0
- package/src/lib/theme/constants.ts +183 -0
- package/src/lib/theme/core/ThemeCache.ts +283 -0
- package/src/lib/theme/core/ThemeEngine.test.ts +146 -0
- package/src/lib/theme/core/ThemeEngine.ts +657 -0
- package/src/lib/theme/core/ThemeRegistry.ts +284 -0
- package/src/lib/theme/core/ThemeValidator.ts +530 -0
- package/src/lib/theme/core/index.ts +24 -0
- package/src/lib/theme/createTheme.ts +83 -204
- package/src/lib/theme/cssVariableMapper.ts +261 -0
- package/src/lib/theme/devtools/CLI.ts +279 -0
- package/src/lib/theme/devtools/Inspector.tsx +594 -0
- package/src/lib/theme/devtools/Preview.tsx +392 -0
- package/src/lib/theme/devtools/index.ts +21 -0
- package/src/lib/theme/errors.test.ts +207 -0
- package/src/lib/theme/errors.ts +233 -0
- package/src/lib/theme/generateCSSVariables.ts +93 -9
- package/src/lib/theme/generators/CSSGenerator.ts +311 -0
- package/src/lib/theme/generators/ConfigGenerator.ts +287 -0
- package/src/lib/theme/generators/TypeGenerator.ts +228 -0
- package/src/lib/theme/generators/index.ts +21 -0
- package/src/lib/theme/i18n/index.ts +9 -0
- package/src/lib/theme/i18n/rtl.ts +325 -0
- package/src/lib/theme/index.ts +36 -109
- package/src/lib/theme/monitoring/ThemeAnalytics.ts +409 -0
- package/src/lib/theme/monitoring/index.ts +17 -0
- package/src/lib/theme/overrides/ComponentOverrides.ts +243 -0
- package/src/lib/theme/overrides/index.ts +15 -0
- package/src/lib/theme/runtime/ThemeApplicator.ts +252 -0
- package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +233 -0
- package/src/lib/theme/runtime/ThemeManager.test.ts +176 -0
- package/src/lib/theme/runtime/ThemeManager.ts +442 -0
- package/src/lib/theme/runtime/ThemeProvider.tsx +318 -0
- package/src/lib/theme/runtime/index.ts +17 -0
- package/src/lib/theme/runtime/useTheme.ts +52 -0
- package/src/lib/theme/themeUtils.ts +27 -5
- package/src/lib/theme/types.ts +62 -1
- package/src/lib/theme/utils.ts +23 -22
- package/src/lib/theme/whitelabel/WhiteLabelManager.ts +364 -0
- package/src/lib/theme/whitelabel/index.ts +13 -0
- package/src/lib/theme-tools.ts +185 -0
- package/src/lib/types/components.ts +194 -0
- package/src/lib/types/partProps.ts +426 -0
- package/src/lib/utils/__tests__/componentUtils.test.ts +144 -0
- package/src/lib/utils/componentUtils.ts +163 -0
- package/src/lib/utils/index.ts +17 -57
- package/src/styles/01-settings/_settings.badge.scss +1 -1
- package/src/styles/01-settings/_settings.callout.scss +1 -1
- package/src/styles/01-settings/_settings.card.scss +1 -1
- package/src/styles/01-settings/_settings.colors.scss +10 -10
- package/src/styles/01-settings/_settings.input.scss +1 -1
- package/src/styles/01-settings/_settings.navbar.scss +1 -1
- package/src/styles/01-settings/_settings.tooltip.scss +1 -1
- package/src/styles/01-settings/_settings.upload.scss +1 -1
- package/src/styles/06-components/_components.chart.scss +2 -2
- package/src/styles/06-components/_components.tooltip.scss +31 -81
- package/src/styles/99-utilities/_utilities.border.scss +27 -58
- package/src/styles/99-utilities/_utilities.gradient.scss +12 -0
- package/src/styles/99-utilities/_utilities.position.scss +8 -15
- package/src/styles/99-utilities/_utilities.scss +2 -0
- package/src/styles/99-utilities/_utilities.spacing.scss +76 -121
- package/src/styles/99-utilities/_utilities.text.scss +30 -49
- package/src/themes/README.md +443 -0
- package/src/themes/THEME_CHECKLIST.md +74 -0
- package/src/themes/applemix/01-settings/_index.scss +24 -0
- package/src/themes/applemix/01-settings/_settings.animations.scss +0 -0
- package/src/themes/applemix/01-settings/_settings.background.scss +6 -0
- package/src/themes/applemix/01-settings/_settings.colors.scss +75 -0
- package/src/themes/applemix/01-settings/_settings.config.scss +15 -0
- package/src/themes/applemix/01-settings/_settings.typography.scss +30 -0
- package/src/themes/applemix/02-tools/_index.scss +4 -0
- package/src/themes/applemix/03-generic/_index.scss +7 -0
- package/src/themes/applemix/04-elements/_index.scss +7 -0
- package/src/themes/applemix/05-objects/_index.scss +7 -0
- package/src/themes/applemix/06-components/_index.scss +15 -0
- package/src/themes/applemix/99-utilities/_index.scss +7 -0
- package/src/themes/applemix/README.md +378 -0
- package/src/themes/applemix/index.scss +33 -0
- package/src/themes/boomdevs/01-settings/_index.scss +38 -0
- package/src/themes/boomdevs/01-settings/_settings.accordion.scss +12 -0
- package/src/themes/boomdevs/01-settings/_settings.animations.scss +11 -0
- package/src/themes/boomdevs/01-settings/_settings.avatar.scss +9 -0
- package/src/themes/boomdevs/01-settings/_settings.badge.scss +11 -0
- package/src/themes/boomdevs/01-settings/_settings.border-radius.scss +16 -0
- package/src/themes/boomdevs/01-settings/_settings.border.scss +10 -0
- package/src/themes/boomdevs/01-settings/_settings.box-shadow.scss +14 -0
- package/src/themes/boomdevs/01-settings/_settings.breadcrumb.scss +13 -0
- package/src/themes/boomdevs/01-settings/_settings.breakpoints.scss +15 -0
- package/src/themes/boomdevs/01-settings/_settings.button.scss +9 -0
- package/src/themes/boomdevs/01-settings/_settings.callout.scss +9 -0
- package/src/themes/boomdevs/01-settings/_settings.card.scss +11 -0
- package/src/themes/boomdevs/01-settings/_settings.checkbox.scss +9 -0
- package/src/themes/boomdevs/01-settings/_settings.colors.scss +145 -0
- package/src/themes/boomdevs/01-settings/_settings.dropdown.scss +11 -0
- package/src/themes/boomdevs/01-settings/_settings.grid.scss +16 -0
- package/src/themes/boomdevs/01-settings/_settings.input.scss +14 -0
- package/src/themes/boomdevs/01-settings/_settings.link.scss +11 -0
- package/src/themes/boomdevs/01-settings/_settings.list.scss +10 -0
- package/src/themes/boomdevs/01-settings/_settings.modal.scss +16 -0
- package/src/themes/boomdevs/01-settings/_settings.navbar.scss +16 -0
- package/src/themes/boomdevs/01-settings/_settings.pagination.scss +13 -0
- package/src/themes/boomdevs/01-settings/_settings.progress.scss +11 -0
- package/src/themes/boomdevs/01-settings/_settings.rating.scss +10 -0
- package/src/themes/boomdevs/01-settings/_settings.spacing.scss +33 -0
- package/src/themes/boomdevs/01-settings/_settings.spinner.scss +11 -0
- package/src/themes/boomdevs/01-settings/_settings.steps.scss +12 -0
- package/src/themes/boomdevs/01-settings/_settings.tabs.scss +12 -0
- package/src/themes/boomdevs/01-settings/_settings.todo.scss +15 -0
- package/src/themes/boomdevs/01-settings/_settings.toggle.scss +14 -0
- package/src/themes/boomdevs/01-settings/_settings.tooltip.scss +13 -0
- package/src/themes/boomdevs/01-settings/_settings.typography.scss +58 -0
- package/src/themes/boomdevs/01-settings/_settings.video-player.scss +12 -0
- package/src/themes/boomdevs/02-tools/_index.scss +7 -0
- package/src/themes/boomdevs/03-generic/_index.scss +7 -0
- package/src/themes/boomdevs/04-elements/_index.scss +7 -0
- package/src/themes/boomdevs/05-objects/_index.scss +7 -0
- package/src/themes/boomdevs/06-components/_components.button.scss +11 -0
- package/src/themes/boomdevs/06-components/_index.scss +11 -0
- package/src/themes/boomdevs/99-utilities/_index.scss +7 -0
- package/src/themes/boomdevs/index.scss +26 -0
- package/src/themes/esrar/01-settings/_index.scss +15 -0
- package/src/themes/esrar/01-settings/_settings.colors.scss +91 -0
- package/src/themes/esrar/02-tools/_index.scss +8 -0
- package/src/themes/esrar/02-tools/_tools.animations.scss +342 -0
- package/src/themes/esrar/06-components/_components.accordion.scss +49 -0
- package/src/themes/esrar/06-components/_components.avatar-group.scss +14 -0
- package/src/themes/esrar/06-components/_components.avatar.scss +61 -0
- package/src/themes/esrar/06-components/_components.badge.scss +117 -0
- package/src/themes/esrar/06-components/_components.breadcrumb.scss +65 -0
- package/src/themes/esrar/06-components/_components.btn-group.scss +19 -0
- package/src/themes/esrar/06-components/_components.button.scss +224 -0
- package/src/themes/esrar/06-components/_components.callout.scss +51 -0
- package/src/themes/esrar/06-components/_components.card.scss +134 -0
- package/src/themes/esrar/06-components/_components.chart.scss +24 -0
- package/src/themes/esrar/06-components/_components.checkbox-group.scss +26 -0
- package/src/themes/esrar/06-components/_components.checkbox.scss +71 -0
- package/src/themes/esrar/06-components/_components.color-mode-toggle.scss +29 -0
- package/src/themes/esrar/06-components/_components.countdown.scss +67 -0
- package/src/themes/esrar/06-components/_components.data-table.scss +22 -0
- package/src/themes/esrar/06-components/_components.datepicker.scss +20 -0
- package/src/themes/esrar/06-components/_components.dropdown.scss +272 -0
- package/src/themes/esrar/06-components/_components.edge-panel.scss +10 -0
- package/src/themes/esrar/06-components/_components.form-group.scss +15 -0
- package/src/themes/esrar/06-components/_components.form.scss +66 -0
- package/src/themes/esrar/06-components/_components.hero.scss +251 -0
- package/src/themes/esrar/06-components/_components.icon.scss +33 -0
- package/src/themes/esrar/06-components/_components.image-gallery.scss +29 -0
- package/src/themes/esrar/06-components/_components.input.scss +91 -0
- package/src/themes/esrar/06-components/_components.list-group.scss +26 -0
- package/src/themes/esrar/06-components/_components.modal.scss +148 -0
- package/src/themes/esrar/06-components/_components.notification.scss +80 -0
- package/src/themes/esrar/06-components/_components.pagination.scss +84 -0
- package/src/themes/esrar/06-components/_components.popover.scss +10 -0
- package/src/themes/esrar/06-components/_components.progress.scss +64 -0
- package/src/themes/esrar/06-components/_components.rating.scss +26 -0
- package/src/themes/esrar/06-components/_components.skeleton.scss +15 -0
- package/src/themes/esrar/06-components/_components.slider.scss +90 -0
- package/src/themes/esrar/06-components/_components.spinner.scss +71 -0
- package/src/themes/esrar/06-components/_components.steps.scss +76 -0
- package/src/themes/esrar/06-components/_components.tab.scss +58 -0
- package/src/themes/esrar/06-components/_components.tag.scss +21 -0
- package/src/themes/esrar/06-components/_components.timeline.scss +19 -0
- package/src/themes/esrar/06-components/_components.toast.scss +91 -0
- package/src/themes/esrar/06-components/_components.toggle.scss +74 -0
- package/src/themes/esrar/06-components/_components.tooltip.scss +45 -0
- package/src/themes/esrar/06-components/_components.upload.scss +102 -0
- package/src/themes/esrar/06-components/_index.scss +42 -0
- package/src/themes/esrar/index.scss +30 -0
- package/src/themes/flashtrade/01-settings/_index.scss +19 -0
- package/src/themes/flashtrade/01-settings/_settings.animations.scss +11 -0
- package/src/themes/flashtrade/01-settings/_settings.background.scss +9 -0
- package/src/themes/flashtrade/01-settings/_settings.colors.scss +79 -0
- package/src/themes/flashtrade/01-settings/_settings.config.scss +16 -0
- package/src/themes/flashtrade/01-settings/_settings.typography.scss +35 -0
- package/src/themes/flashtrade/02-tools/_index.scss +8 -0
- package/src/themes/flashtrade/03-generic/_index.scss +8 -0
- package/src/themes/flashtrade/04-elements/_index.scss +12 -0
- package/src/themes/flashtrade/05-objects/_index.scss +8 -0
- package/src/themes/flashtrade/06-components/_components.badge.scss +156 -0
- package/src/themes/flashtrade/06-components/_components.button.scss +135 -0
- package/src/themes/flashtrade/06-components/_components.card.scss +214 -0
- package/src/themes/flashtrade/06-components/_components.navbar.scss +227 -0
- package/src/themes/flashtrade/06-components/_index.scss +13 -0
- package/src/themes/flashtrade/99-utilities/_index.scss +9 -0
- package/src/themes/flashtrade/99-utilities/_utilities.trading.scss +187 -0
- package/src/themes/flashtrade/README.md +386 -0
- package/src/themes/flashtrade/demo.html +272 -0
- package/src/themes/flashtrade/index.scss +36 -0
- package/src/themes/mashroom/01-settings/_index.scss +69 -0
- package/src/themes/mashroom/01-settings/_settings.accordion.scss +32 -0
- package/src/themes/mashroom/01-settings/_settings.animations.scss +26 -0
- package/src/themes/mashroom/01-settings/_settings.avatar-group.scss +22 -0
- package/src/themes/mashroom/01-settings/_settings.avatar.scss +57 -0
- package/src/themes/mashroom/01-settings/_settings.badge.scss +19 -0
- package/src/themes/mashroom/01-settings/_settings.border-radius.scss +24 -0
- package/src/themes/mashroom/01-settings/_settings.border.scss +14 -0
- package/src/themes/mashroom/01-settings/_settings.box-shadow.scss +40 -0
- package/src/themes/mashroom/01-settings/_settings.breadcrumb.scss +0 -0
- package/src/themes/mashroom/01-settings/_settings.breakpoints.scss +17 -0
- package/src/themes/mashroom/01-settings/_settings.btn-group.scss +5 -0
- package/src/themes/mashroom/01-settings/_settings.button.scss +50 -0
- package/src/themes/mashroom/01-settings/_settings.callout.scss +81 -0
- package/src/themes/mashroom/01-settings/_settings.card.scss +52 -0
- package/src/themes/mashroom/01-settings/_settings.checkbox-group.scss +5 -0
- package/src/themes/mashroom/01-settings/_settings.checkbox.scss +23 -0
- package/src/themes/mashroom/01-settings/_settings.color-mode.scss +7 -0
- package/src/themes/mashroom/01-settings/_settings.colors.scss +180 -0
- package/src/themes/mashroom/01-settings/_settings.config.scss +4 -0
- package/src/themes/mashroom/01-settings/_settings.countdown.scss +20 -0
- package/src/themes/mashroom/01-settings/_settings.data-table.scss +56 -0
- package/src/themes/mashroom/01-settings/_settings.datepicker.scss +45 -0
- package/src/themes/mashroom/01-settings/_settings.design-tokens.scss +3 -0
- package/src/themes/mashroom/01-settings/_settings.dropdown.scss +45 -0
- package/src/themes/mashroom/01-settings/_settings.edge-panel.scss +24 -0
- package/src/themes/mashroom/01-settings/_settings.fonts.scss +8 -0
- package/src/themes/mashroom/01-settings/_settings.form-group.scss +14 -0
- package/src/themes/mashroom/01-settings/_settings.form.scss +6 -0
- package/src/themes/mashroom/01-settings/_settings.grid.scss +23 -0
- package/src/themes/mashroom/01-settings/_settings.hero.scss +41 -0
- package/src/themes/mashroom/01-settings/_settings.input.scss +51 -0
- package/src/themes/mashroom/01-settings/_settings.link.scss +13 -0
- package/src/themes/mashroom/01-settings/_settings.list-group.scss +16 -0
- package/src/themes/mashroom/01-settings/_settings.list.scss +13 -0
- package/src/themes/mashroom/01-settings/_settings.masonry-grid.scss +23 -0
- package/src/themes/mashroom/01-settings/_settings.menu.scss +50 -0
- package/src/themes/mashroom/01-settings/_settings.messages.scss +98 -0
- package/src/themes/mashroom/01-settings/_settings.modal.scss +41 -0
- package/src/themes/mashroom/01-settings/_settings.nav.scss +20 -0
- package/src/themes/mashroom/01-settings/_settings.navbar.scss +54 -0
- package/src/themes/mashroom/01-settings/_settings.pagination.scss +30 -0
- package/src/themes/mashroom/01-settings/_settings.photoviewer.scss +45 -0
- package/src/themes/mashroom/01-settings/_settings.popover.scss +20 -0
- package/src/themes/mashroom/01-settings/_settings.position.scss +9 -0
- package/src/themes/mashroom/01-settings/_settings.progress.scss +17 -0
- package/src/themes/mashroom/01-settings/_settings.rating.scss +11 -0
- package/src/themes/mashroom/01-settings/_settings.river.scss +50 -0
- package/src/themes/mashroom/01-settings/_settings.sectionintro.scss +31 -0
- package/src/themes/mashroom/01-settings/_settings.select.scss +47 -0
- package/src/themes/mashroom/01-settings/_settings.side-menu.scss +79 -0
- package/src/themes/mashroom/01-settings/_settings.skeleton.scss +24 -0
- package/src/themes/mashroom/01-settings/_settings.spacing.scss +66 -0
- package/src/themes/mashroom/01-settings/_settings.spinner.scss +34 -0
- package/src/themes/mashroom/01-settings/_settings.steps.scss +33 -0
- package/src/themes/mashroom/01-settings/_settings.tabs.scss +33 -0
- package/src/themes/mashroom/01-settings/_settings.testimonials.scss +24 -0
- package/src/themes/mashroom/01-settings/_settings.todo.scss +52 -0
- package/src/themes/mashroom/01-settings/_settings.toggle.scss +49 -0
- package/src/themes/mashroom/01-settings/_settings.tooltip.scss +20 -0
- package/src/themes/mashroom/01-settings/_settings.typography.scss +95 -0
- package/src/themes/mashroom/01-settings/_settings.upload.scss +96 -0
- package/src/themes/mashroom/01-settings/_settings.z-layers.scss +19 -0
- package/src/themes/mashroom/02-tools/_index.scss +8 -0
- package/src/themes/mashroom/02-tools/_tools.psychedelic-gradients.scss +78 -0
- package/src/themes/mashroom/02-tools/_tools.trippy-effects.scss +114 -0
- package/src/themes/mashroom/03-generic/_index.scss +6 -0
- package/src/themes/mashroom/04-elements/_index.scss +6 -0
- package/src/themes/mashroom/05-objects/_index.scss +6 -0
- package/src/themes/mashroom/06-components/_components.accordion.scss +187 -0
- package/src/themes/mashroom/06-components/_components.avatar-group.scss +276 -0
- package/src/themes/mashroom/06-components/_components.avatar.scss +114 -0
- package/src/themes/mashroom/06-components/_components.badge.scss +152 -0
- package/src/themes/mashroom/06-components/_components.breadcrumb.scss +162 -0
- package/src/themes/mashroom/06-components/_components.btn-group.scss +404 -0
- package/src/themes/mashroom/06-components/_components.button.scss +160 -0
- package/src/themes/mashroom/06-components/_components.callout.scss +140 -0
- package/src/themes/mashroom/06-components/_components.card.scss +225 -0
- package/src/themes/mashroom/06-components/_components.checkbox.scss +186 -0
- package/src/themes/mashroom/06-components/_components.color-mode-toggle.scss +308 -0
- package/src/themes/mashroom/06-components/_components.countdown.scss +402 -0
- package/src/themes/mashroom/06-components/_components.data-table.scss +354 -0
- package/src/themes/mashroom/06-components/_components.datepicker.scss +349 -0
- package/src/themes/mashroom/06-components/_components.dropdown.scss +334 -0
- package/src/themes/mashroom/06-components/_components.edge-panel.scss +413 -0
- package/src/themes/mashroom/06-components/_components.form-group.scss +433 -0
- package/src/themes/mashroom/06-components/_components.form.scss +358 -0
- package/src/themes/mashroom/06-components/_components.hero.scss +151 -0
- package/src/themes/mashroom/06-components/_components.input.scss +147 -0
- package/src/themes/mashroom/06-components/_components.list-group.scss +456 -0
- package/src/themes/mashroom/06-components/_components.list.scss +145 -0
- package/src/themes/mashroom/06-components/_components.menu.scss +497 -0
- package/src/themes/mashroom/06-components/_components.messages.scss +277 -0
- package/src/themes/mashroom/06-components/_components.modal.scss +264 -0
- package/src/themes/mashroom/06-components/_components.nav.scss +181 -0
- package/src/themes/mashroom/06-components/_components.navbar.scss +538 -0
- package/src/themes/mashroom/06-components/_components.pagination.scss +400 -0
- package/src/themes/mashroom/06-components/_components.photoviewer.scss +498 -0
- package/src/themes/mashroom/06-components/_components.popover.scss +383 -0
- package/src/themes/mashroom/06-components/_components.product-review.scss +408 -0
- package/src/themes/mashroom/06-components/_components.progress.scss +249 -0
- package/src/themes/mashroom/06-components/_components.rating.scss +300 -0
- package/src/themes/mashroom/06-components/_components.river.scss +570 -0
- package/src/themes/mashroom/06-components/_components.sectionintro.scss +546 -0
- package/src/themes/mashroom/06-components/_components.select.scss +455 -0
- package/src/themes/mashroom/06-components/_components.side-menu.scss +635 -0
- package/src/themes/mashroom/06-components/_components.skeleton.scss +447 -0
- package/src/themes/mashroom/06-components/_components.slider.scss +414 -0
- package/src/themes/mashroom/06-components/_components.spinner.scss +198 -0
- package/src/themes/mashroom/06-components/_components.steps.scss +350 -0
- package/src/themes/mashroom/06-components/_components.tabs.scss +269 -0
- package/src/themes/mashroom/06-components/_components.testimonials.scss +561 -0
- package/src/themes/mashroom/06-components/_components.toggle.scss +231 -0
- package/src/themes/mashroom/06-components/_components.tooltip.scss +167 -0
- package/src/themes/mashroom/06-components/_components.upload.scss +537 -0
- package/src/themes/mashroom/06-components/_components.video-player.scss +560 -0
- package/src/themes/mashroom/06-components/_index.scss +55 -0
- package/src/themes/mashroom/99-utilities/_index.scss +6 -0
- package/src/themes/mashroom/index.scss +26 -0
- package/src/themes/shaj-default/01-settings/_index.scss +69 -0
- package/src/themes/shaj-default/01-settings/_settings.accordion.scss +38 -0
- package/src/themes/shaj-default/01-settings/_settings.animations.scss +32 -0
- package/src/themes/shaj-default/01-settings/_settings.avatar-group.scss +28 -0
- package/src/themes/shaj-default/01-settings/_settings.avatar.scss +63 -0
- package/src/themes/shaj-default/01-settings/_settings.badge.scss +25 -0
- package/src/themes/shaj-default/01-settings/_settings.border-radius.scss +24 -0
- package/src/themes/shaj-default/01-settings/_settings.border.scss +20 -0
- package/src/themes/shaj-default/01-settings/_settings.box-shadow.scss +46 -0
- package/src/themes/shaj-default/01-settings/_settings.breadcrumb.scss +0 -0
- package/src/themes/shaj-default/01-settings/_settings.breakpoints.scss +23 -0
- package/src/themes/shaj-default/01-settings/_settings.btn-group.scss +11 -0
- package/src/themes/shaj-default/01-settings/_settings.button.scss +56 -0
- package/src/themes/shaj-default/01-settings/_settings.callout.scss +87 -0
- package/src/themes/shaj-default/01-settings/_settings.card.scss +52 -0
- package/src/themes/shaj-default/01-settings/_settings.checkbox-group.scss +11 -0
- package/src/themes/shaj-default/01-settings/_settings.checkbox.scss +29 -0
- package/src/themes/shaj-default/01-settings/_settings.color-mode.scss +13 -0
- package/src/themes/shaj-default/01-settings/_settings.colors.scss +91 -0
- package/src/themes/shaj-default/01-settings/_settings.config.scss +4 -0
- package/src/themes/shaj-default/01-settings/_settings.countdown.scss +26 -0
- package/src/themes/shaj-default/01-settings/_settings.data-table.scss +62 -0
- package/src/themes/shaj-default/01-settings/_settings.datepicker.scss +51 -0
- package/src/themes/shaj-default/01-settings/_settings.design-tokens.scss +9 -0
- package/src/themes/shaj-default/01-settings/_settings.dropdown.scss +51 -0
- package/src/themes/shaj-default/01-settings/_settings.edge-panel.scss +30 -0
- package/src/themes/shaj-default/01-settings/_settings.fonts.scss +13 -0
- package/src/themes/shaj-default/01-settings/_settings.form-group.scss +20 -0
- package/src/themes/shaj-default/01-settings/_settings.form.scss +12 -0
- package/src/themes/shaj-default/01-settings/_settings.grid.scss +29 -0
- package/src/themes/shaj-default/01-settings/_settings.hero.scss +47 -0
- package/src/themes/shaj-default/01-settings/_settings.input.scss +57 -0
- package/src/themes/shaj-default/01-settings/_settings.link.scss +19 -0
- package/src/themes/shaj-default/01-settings/_settings.list-group.scss +22 -0
- package/src/themes/shaj-default/01-settings/_settings.list.scss +19 -0
- package/src/themes/shaj-default/01-settings/_settings.masonry-grid.scss +29 -0
- package/src/themes/shaj-default/01-settings/_settings.menu.scss +56 -0
- package/src/themes/shaj-default/01-settings/_settings.messages.scss +104 -0
- package/src/themes/shaj-default/01-settings/_settings.modal.scss +47 -0
- package/src/themes/shaj-default/01-settings/_settings.nav.scss +26 -0
- package/src/themes/shaj-default/01-settings/_settings.navbar.scss +60 -0
- package/src/themes/shaj-default/01-settings/_settings.pagination.scss +36 -0
- package/src/themes/shaj-default/01-settings/_settings.photoviewer.scss +51 -0
- package/src/themes/shaj-default/01-settings/_settings.popover.scss +26 -0
- package/src/themes/shaj-default/01-settings/_settings.position.scss +15 -0
- package/src/themes/shaj-default/01-settings/_settings.progress.scss +23 -0
- package/src/themes/shaj-default/01-settings/_settings.rating.scss +17 -0
- package/src/themes/shaj-default/01-settings/_settings.river.scss +56 -0
- package/src/themes/shaj-default/01-settings/_settings.sectionintro.scss +37 -0
- package/src/themes/shaj-default/01-settings/_settings.select.scss +53 -0
- package/src/themes/shaj-default/01-settings/_settings.side-menu.scss +85 -0
- package/src/themes/shaj-default/01-settings/_settings.skeleton.scss +30 -0
- package/src/themes/shaj-default/01-settings/_settings.spacing.scss +72 -0
- package/src/themes/shaj-default/01-settings/_settings.spinner.scss +24 -0
- package/src/themes/shaj-default/01-settings/_settings.steps.scss +39 -0
- package/src/themes/shaj-default/01-settings/_settings.tabs.scss +39 -0
- package/src/themes/shaj-default/01-settings/_settings.testimonials.scss +30 -0
- package/src/themes/shaj-default/01-settings/_settings.todo.scss +58 -0
- package/src/themes/shaj-default/01-settings/_settings.toggle.scss +55 -0
- package/src/themes/shaj-default/01-settings/_settings.tooltip.scss +26 -0
- package/src/themes/shaj-default/01-settings/_settings.typography.scss +101 -0
- package/src/themes/shaj-default/01-settings/_settings.upload.scss +102 -0
- package/src/themes/shaj-default/01-settings/_settings.z-layers.scss +25 -0
- package/src/themes/shaj-default/02-tools/_index.scss +0 -0
- package/src/themes/shaj-default/03-generic/_generic.root.scss +0 -0
- package/src/themes/shaj-default/03-generic/_index.scss +2 -0
- package/src/themes/shaj-default/04-elements/_index.scss +0 -0
- package/src/themes/shaj-default/05-objects/_index.scss +0 -0
- package/src/themes/shaj-default/06-components/_components.button.scss +55 -0
- package/src/themes/shaj-default/06-components/_components.card.scss +57 -0
- package/src/themes/shaj-default/06-components/_components.input.scss +58 -0
- package/src/themes/shaj-default/06-components/_components.navbar.scss +99 -0
- package/src/themes/shaj-default/06-components/_components.tooltip.scss +0 -0
- package/src/themes/shaj-default/06-components/_index.scss +13 -0
- package/src/themes/shaj-default/99-utilities/_index.scss +0 -0
- package/src/themes/shaj-default/index.scss +25 -0
- package/src/themes/themes.config.js +219 -0
- package/theme.config.ts +360 -0
- package/src/lib/theme/ThemeManager.integration.test.ts +0 -124
- package/src/lib/theme/ThemeManager.stories.tsx +0 -472
- package/src/lib/theme/ThemeManager.test.ts +0 -190
- package/src/lib/theme/ThemeManager.ts +0 -645
- package/src/lib/theme/ThemeProvider.tsx +0 -377
- package/src/lib/theme/createTheme.test.ts +0 -475
- package/src/lib/theme/useTheme.test.tsx +0 -67
- package/src/lib/theme/useTheme.ts +0 -64
- package/src/lib/theme/utils.test.ts +0 -140
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
import type { ButtonParts, CardParts, InputParts, ModalParts, DropdownParts, BadgeParts, ProgressParts, CheckboxParts, RadioParts } from './partProps';
|
|
3
|
+
import type { SlotProps, ButtonRootSlotProps, ButtonIconSlotProps, ButtonLabelSlotProps, ButtonSpinnerSlotProps, BadgeRootSlotProps, BadgeIconSlotProps, BadgeLabelSlotProps, ProgressRootSlotProps, ProgressBarSlotProps, CheckboxRootSlotProps, CheckboxInputSlotProps, CheckboxLabelSlotProps, RadioRootSlotProps, RadioInputSlotProps, RadioLabelSlotProps } from '../patterns/slots';
|
|
4
|
+
import type { ButtonCSSVariable, CardCSSVariable, InputCSSVariable, ModalCSSVariable, DropdownCSSVariable, BadgeCSSVariable, ProgressCSSVariable, CheckboxCSSVariable, RadioCSSVariable } from '../constants/cssVariables';
|
|
2
5
|
|
|
3
6
|
// ============================================================================
|
|
4
7
|
// AtomixGlass Types
|
|
@@ -409,6 +412,29 @@ export interface ButtonProps extends BaseComponentProps {
|
|
|
409
412
|
* Button size
|
|
410
413
|
*/
|
|
411
414
|
size?: Size;
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Part-based styling (NEW)
|
|
418
|
+
* Allows styling individual button parts
|
|
419
|
+
*/
|
|
420
|
+
parts?: ButtonParts;
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* CSS variable overrides (NEW)
|
|
424
|
+
* Runtime CSS custom property overrides
|
|
425
|
+
*/
|
|
426
|
+
cssVars?: Partial<Record<ButtonCSSVariable, string | number>>;
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* Slot-based customization (NEW)
|
|
430
|
+
* Complete control over rendering
|
|
431
|
+
*/
|
|
432
|
+
slots?: {
|
|
433
|
+
root?: SlotProps<ButtonRootSlotProps>;
|
|
434
|
+
icon?: SlotProps<ButtonIconSlotProps>;
|
|
435
|
+
label?: SlotProps<ButtonLabelSlotProps>;
|
|
436
|
+
spinner?: SlotProps<ButtonSpinnerSlotProps>;
|
|
437
|
+
};
|
|
412
438
|
|
|
413
439
|
/**
|
|
414
440
|
* Optional icon (ReactNode)
|
|
@@ -574,6 +600,41 @@ export interface BadgeProps extends BaseComponentProps {
|
|
|
574
600
|
* Custom style for the badge
|
|
575
601
|
*/
|
|
576
602
|
style?: React.CSSProperties;
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* Part-based styling for granular customization
|
|
606
|
+
* @example
|
|
607
|
+
* parts={{
|
|
608
|
+
* root: { className: 'custom-badge', style: { boxShadow: '0 2px 8px rgba(0,0,0,0.1)' } },
|
|
609
|
+
* icon: { style: { fontSize: '18px' } },
|
|
610
|
+
* label: { className: 'badge-label' }
|
|
611
|
+
* }}
|
|
612
|
+
*/
|
|
613
|
+
parts?: BadgeParts;
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* CSS variable overrides for runtime customization
|
|
617
|
+
* @example
|
|
618
|
+
* cssVars={{
|
|
619
|
+
* '--atomix-badge-bg': '#FF0000',
|
|
620
|
+
* '--atomix-badge-border-radius': '20px'
|
|
621
|
+
* }}
|
|
622
|
+
*/
|
|
623
|
+
cssVars?: Partial<Record<BadgeCSSVariable, string | number>>;
|
|
624
|
+
|
|
625
|
+
/**
|
|
626
|
+
* Slot-based customization for complete control
|
|
627
|
+
* @example
|
|
628
|
+
* slots={{
|
|
629
|
+
* root: { render: (props) => <motion.span {...props} /> },
|
|
630
|
+
* icon: { component: CustomIcon }
|
|
631
|
+
* }}
|
|
632
|
+
*/
|
|
633
|
+
slots?: {
|
|
634
|
+
root?: SlotProps<BadgeRootSlotProps>;
|
|
635
|
+
icon?: SlotProps<BadgeIconSlotProps>;
|
|
636
|
+
label?: SlotProps<BadgeLabelSlotProps>;
|
|
637
|
+
};
|
|
577
638
|
}
|
|
578
639
|
|
|
579
640
|
/**
|
|
@@ -2215,6 +2276,42 @@ export interface CheckboxProps extends BaseComponentProps {
|
|
|
2215
2276
|
* Helper text to display
|
|
2216
2277
|
*/
|
|
2217
2278
|
helperText?: string;
|
|
2279
|
+
|
|
2280
|
+
/**
|
|
2281
|
+
* Part-based styling for granular customization
|
|
2282
|
+
* @example
|
|
2283
|
+
* parts={{
|
|
2284
|
+
* root: { className: 'custom-checkbox', style: { margin: '8px' } },
|
|
2285
|
+
* input: { style: { accentColor: '#7AFFD7' } },
|
|
2286
|
+
* label: { className: 'checkbox-label' }
|
|
2287
|
+
* }}
|
|
2288
|
+
*/
|
|
2289
|
+
parts?: CheckboxParts;
|
|
2290
|
+
|
|
2291
|
+
/**
|
|
2292
|
+
* CSS variable overrides for runtime customization
|
|
2293
|
+
* @example
|
|
2294
|
+
* cssVars={{
|
|
2295
|
+
* '--atomix-checkbox-size': '20px',
|
|
2296
|
+
* '--atomix-checkbox-checked-bg': '#7AFFD7'
|
|
2297
|
+
* }}
|
|
2298
|
+
*/
|
|
2299
|
+
cssVars?: Partial<Record<CheckboxCSSVariable, string | number>>;
|
|
2300
|
+
|
|
2301
|
+
/**
|
|
2302
|
+
* Slot-based customization for complete control
|
|
2303
|
+
* @example
|
|
2304
|
+
* slots={{
|
|
2305
|
+
* root: { render: (props) => <motion.div {...props} /> },
|
|
2306
|
+
* input: { component: CustomInput },
|
|
2307
|
+
* label: { component: CustomLabel }
|
|
2308
|
+
* }}
|
|
2309
|
+
*/
|
|
2310
|
+
slots?: {
|
|
2311
|
+
root?: SlotProps<CheckboxRootSlotProps>;
|
|
2312
|
+
input?: SlotProps<CheckboxInputSlotProps>;
|
|
2313
|
+
label?: SlotProps<CheckboxLabelSlotProps>;
|
|
2314
|
+
};
|
|
2218
2315
|
}
|
|
2219
2316
|
|
|
2220
2317
|
/**
|
|
@@ -2291,6 +2388,42 @@ export interface RadioProps extends BaseComponentProps {
|
|
|
2291
2388
|
* Helper text to display
|
|
2292
2389
|
*/
|
|
2293
2390
|
helperText?: string;
|
|
2391
|
+
|
|
2392
|
+
/**
|
|
2393
|
+
* Part-based styling for granular customization
|
|
2394
|
+
* @example
|
|
2395
|
+
* parts={{
|
|
2396
|
+
* root: { className: 'custom-radio', style: { margin: '8px' } },
|
|
2397
|
+
* input: { style: { accentColor: '#7AFFD7' } },
|
|
2398
|
+
* label: { className: 'radio-label' }
|
|
2399
|
+
* }}
|
|
2400
|
+
*/
|
|
2401
|
+
parts?: RadioParts;
|
|
2402
|
+
|
|
2403
|
+
/**
|
|
2404
|
+
* CSS variable overrides for runtime customization
|
|
2405
|
+
* @example
|
|
2406
|
+
* cssVars={{
|
|
2407
|
+
* '--atomix-radio-size': '20px',
|
|
2408
|
+
* '--atomix-radio-checked-bg': '#7AFFD7'
|
|
2409
|
+
* }}
|
|
2410
|
+
*/
|
|
2411
|
+
cssVars?: Partial<Record<RadioCSSVariable, string | number>>;
|
|
2412
|
+
|
|
2413
|
+
/**
|
|
2414
|
+
* Slot-based customization for complete control
|
|
2415
|
+
* @example
|
|
2416
|
+
* slots={{
|
|
2417
|
+
* root: { render: (props) => <motion.div {...props} /> },
|
|
2418
|
+
* input: { component: CustomInput },
|
|
2419
|
+
* label: { component: CustomLabel }
|
|
2420
|
+
* }}
|
|
2421
|
+
*/
|
|
2422
|
+
slots?: {
|
|
2423
|
+
root?: SlotProps<RadioRootSlotProps>;
|
|
2424
|
+
input?: SlotProps<RadioInputSlotProps>;
|
|
2425
|
+
label?: SlotProps<RadioLabelSlotProps>;
|
|
2426
|
+
};
|
|
2294
2427
|
}
|
|
2295
2428
|
|
|
2296
2429
|
/**
|
|
@@ -3049,6 +3182,39 @@ export interface ProgressProps extends BaseComponentProps {
|
|
|
3049
3182
|
* Can be a boolean to enable with default settings, or an object with AtomixGlassProps to customize the effect
|
|
3050
3183
|
*/
|
|
3051
3184
|
glass?: AtomixGlassProps | boolean;
|
|
3185
|
+
|
|
3186
|
+
/**
|
|
3187
|
+
* Part-based styling for granular customization
|
|
3188
|
+
* @example
|
|
3189
|
+
* parts={{
|
|
3190
|
+
* root: { className: 'custom-progress', style: { height: '12px' } },
|
|
3191
|
+
* bar: { style: { background: 'linear-gradient(...)' } }
|
|
3192
|
+
* }}
|
|
3193
|
+
*/
|
|
3194
|
+
parts?: ProgressParts;
|
|
3195
|
+
|
|
3196
|
+
/**
|
|
3197
|
+
* CSS variable overrides for runtime customization
|
|
3198
|
+
* @example
|
|
3199
|
+
* cssVars={{
|
|
3200
|
+
* '--atomix-progress-bg': '#E0E0E0',
|
|
3201
|
+
* '--atomix-progress-bar-bg': '#7AFFD7'
|
|
3202
|
+
* }}
|
|
3203
|
+
*/
|
|
3204
|
+
cssVars?: Partial<Record<ProgressCSSVariable, string | number>>;
|
|
3205
|
+
|
|
3206
|
+
/**
|
|
3207
|
+
* Slot-based customization for complete control
|
|
3208
|
+
* @example
|
|
3209
|
+
* slots={{
|
|
3210
|
+
* root: { render: (props) => <motion.div {...props} /> },
|
|
3211
|
+
* bar: { component: CustomBar }
|
|
3212
|
+
* }}
|
|
3213
|
+
*/
|
|
3214
|
+
slots?: {
|
|
3215
|
+
root?: SlotProps<ProgressRootSlotProps>;
|
|
3216
|
+
bar?: SlotProps<ProgressBarSlotProps>;
|
|
3217
|
+
};
|
|
3052
3218
|
}
|
|
3053
3219
|
|
|
3054
3220
|
/**
|
|
@@ -3551,6 +3717,34 @@ export interface CardProps extends BaseComponentProps {
|
|
|
3551
3717
|
* Tab index for keyboard navigation
|
|
3552
3718
|
*/
|
|
3553
3719
|
tabIndex?: number;
|
|
3720
|
+
|
|
3721
|
+
/**
|
|
3722
|
+
* CSS variable overrides
|
|
3723
|
+
* Runtime CSS custom property overrides
|
|
3724
|
+
* @example
|
|
3725
|
+
* cssVars={{
|
|
3726
|
+
* '--atomix-card-bg': 'rgba(255, 255, 255, 0.1)',
|
|
3727
|
+
* '--atomix-card-border-radius': '24px'
|
|
3728
|
+
* }}
|
|
3729
|
+
*/
|
|
3730
|
+
cssVars?: Partial<Record<CardCSSVariable, string | number>>;
|
|
3731
|
+
|
|
3732
|
+
/**
|
|
3733
|
+
* Part-based styling
|
|
3734
|
+
* Allows styling individual card parts
|
|
3735
|
+
*/
|
|
3736
|
+
parts?: CardParts;
|
|
3737
|
+
|
|
3738
|
+
/**
|
|
3739
|
+
* Slot-based customization
|
|
3740
|
+
* Complete control over rendering
|
|
3741
|
+
*/
|
|
3742
|
+
slots?: {
|
|
3743
|
+
root?: (props: SlotProps) => ReactNode;
|
|
3744
|
+
header?: (props: SlotProps) => ReactNode;
|
|
3745
|
+
body?: (props: SlotProps) => ReactNode;
|
|
3746
|
+
footer?: (props: SlotProps) => ReactNode;
|
|
3747
|
+
};
|
|
3554
3748
|
}
|
|
3555
3749
|
|
|
3556
3750
|
/**
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Part-Based Styling Props
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for styling individual component parts with className and style props.
|
|
5
|
+
* This enables granular customization of component internals.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from 'react';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Style properties for a component part
|
|
12
|
+
*/
|
|
13
|
+
export interface PartStyleProps {
|
|
14
|
+
/** Additional CSS class name for the part */
|
|
15
|
+
className?: string;
|
|
16
|
+
/** Inline styles for the part */
|
|
17
|
+
style?: React.CSSProperties;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Generic component parts type
|
|
22
|
+
* T is a union of part names as strings
|
|
23
|
+
*/
|
|
24
|
+
export type ComponentParts<T extends string> = {
|
|
25
|
+
[K in T]?: PartStyleProps;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Button component parts
|
|
30
|
+
*/
|
|
31
|
+
export type ButtonParts = ComponentParts<'root' | 'icon' | 'label' | 'spinner'> & {
|
|
32
|
+
/** Root button element */
|
|
33
|
+
root?: PartStyleProps;
|
|
34
|
+
/** Icon wrapper element */
|
|
35
|
+
icon?: PartStyleProps;
|
|
36
|
+
/** Label/text wrapper element */
|
|
37
|
+
label?: PartStyleProps;
|
|
38
|
+
/** Loading spinner element */
|
|
39
|
+
spinner?: PartStyleProps;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Card component parts
|
|
44
|
+
*/
|
|
45
|
+
export type CardParts = ComponentParts<
|
|
46
|
+
'root' | 'header' | 'body' | 'footer' | 'title' | 'text' | 'image' | 'actions' | 'icon'
|
|
47
|
+
> & {
|
|
48
|
+
/** Root card element */
|
|
49
|
+
root?: PartStyleProps;
|
|
50
|
+
/** Header section */
|
|
51
|
+
header?: PartStyleProps;
|
|
52
|
+
/** Body/content section */
|
|
53
|
+
body?: PartStyleProps;
|
|
54
|
+
/** Footer section */
|
|
55
|
+
footer?: PartStyleProps;
|
|
56
|
+
/** Title element */
|
|
57
|
+
title?: PartStyleProps;
|
|
58
|
+
/** Text/description element */
|
|
59
|
+
text?: PartStyleProps;
|
|
60
|
+
/** Image element */
|
|
61
|
+
image?: PartStyleProps;
|
|
62
|
+
/** Actions container */
|
|
63
|
+
actions?: PartStyleProps;
|
|
64
|
+
/** Icon element */
|
|
65
|
+
icon?: PartStyleProps;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Input component parts
|
|
70
|
+
*/
|
|
71
|
+
export type InputParts = ComponentParts<'root' | 'input' | 'wrapper' | 'prefix' | 'suffix'> & {
|
|
72
|
+
/** Root container element */
|
|
73
|
+
root?: PartStyleProps;
|
|
74
|
+
/** Input element itself */
|
|
75
|
+
input?: PartStyleProps;
|
|
76
|
+
/** Input wrapper element */
|
|
77
|
+
wrapper?: PartStyleProps;
|
|
78
|
+
/** Prefix element (icon/text before input) */
|
|
79
|
+
prefix?: PartStyleProps;
|
|
80
|
+
/** Suffix element (icon/text after input) */
|
|
81
|
+
suffix?: PartStyleProps;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Modal component parts
|
|
86
|
+
*/
|
|
87
|
+
export type ModalParts = ComponentParts<
|
|
88
|
+
'root' | 'backdrop' | 'dialog' | 'content' | 'header' | 'body' | 'footer' | 'close'
|
|
89
|
+
> & {
|
|
90
|
+
/** Root modal container */
|
|
91
|
+
root?: PartStyleProps;
|
|
92
|
+
/** Backdrop overlay */
|
|
93
|
+
backdrop?: PartStyleProps;
|
|
94
|
+
/** Dialog container */
|
|
95
|
+
dialog?: PartStyleProps;
|
|
96
|
+
/** Content wrapper */
|
|
97
|
+
content?: PartStyleProps;
|
|
98
|
+
/** Header section */
|
|
99
|
+
header?: PartStyleProps;
|
|
100
|
+
/** Body section */
|
|
101
|
+
body?: PartStyleProps;
|
|
102
|
+
/** Footer section */
|
|
103
|
+
footer?: PartStyleProps;
|
|
104
|
+
/** Close button */
|
|
105
|
+
close?: PartStyleProps;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Dropdown component parts
|
|
110
|
+
*/
|
|
111
|
+
export type DropdownParts = ComponentParts<
|
|
112
|
+
'root' | 'toggle' | 'menu' | 'menuWrapper' | 'item' | 'divider' | 'header'
|
|
113
|
+
> & {
|
|
114
|
+
/** Root dropdown container */
|
|
115
|
+
root?: PartStyleProps;
|
|
116
|
+
/** Toggle/trigger element */
|
|
117
|
+
toggle?: PartStyleProps;
|
|
118
|
+
/** Menu container */
|
|
119
|
+
menu?: PartStyleProps;
|
|
120
|
+
/** Menu wrapper (positioning) */
|
|
121
|
+
menuWrapper?: PartStyleProps;
|
|
122
|
+
/** Menu item */
|
|
123
|
+
item?: PartStyleProps;
|
|
124
|
+
/** Divider element */
|
|
125
|
+
divider?: PartStyleProps;
|
|
126
|
+
/** Header element */
|
|
127
|
+
header?: PartStyleProps;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Badge component parts
|
|
132
|
+
*/
|
|
133
|
+
export type BadgeParts = ComponentParts<'root' | 'icon' | 'label'> & {
|
|
134
|
+
/** Root badge element */
|
|
135
|
+
root?: PartStyleProps;
|
|
136
|
+
/** Icon element */
|
|
137
|
+
icon?: PartStyleProps;
|
|
138
|
+
/** Label/text element */
|
|
139
|
+
label?: PartStyleProps;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Tabs component parts
|
|
144
|
+
*/
|
|
145
|
+
export type TabsParts = ComponentParts<
|
|
146
|
+
'root' | 'nav' | 'navItem' | 'navBtn' | 'panels' | 'panel' | 'panelBody'
|
|
147
|
+
> & {
|
|
148
|
+
/** Root tabs container */
|
|
149
|
+
root?: PartStyleProps;
|
|
150
|
+
/** Navigation container */
|
|
151
|
+
nav?: PartStyleProps;
|
|
152
|
+
/** Navigation item wrapper */
|
|
153
|
+
navItem?: PartStyleProps;
|
|
154
|
+
/** Navigation button */
|
|
155
|
+
navBtn?: PartStyleProps;
|
|
156
|
+
/** Panels container */
|
|
157
|
+
panels?: PartStyleProps;
|
|
158
|
+
/** Individual panel */
|
|
159
|
+
panel?: PartStyleProps;
|
|
160
|
+
/** Panel body/content */
|
|
161
|
+
panelBody?: PartStyleProps;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Progress component parts
|
|
166
|
+
*/
|
|
167
|
+
export type ProgressParts = ComponentParts<'root' | 'bar' | 'label'> & {
|
|
168
|
+
/** Root progress container */
|
|
169
|
+
root?: PartStyleProps;
|
|
170
|
+
/** Progress bar element */
|
|
171
|
+
bar?: PartStyleProps;
|
|
172
|
+
/** Label/text element */
|
|
173
|
+
label?: PartStyleProps;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Tooltip component parts
|
|
178
|
+
*/
|
|
179
|
+
export type TooltipParts = ComponentParts<'root' | 'trigger' | 'content' | 'arrow'> & {
|
|
180
|
+
/** Root tooltip container */
|
|
181
|
+
root?: PartStyleProps;
|
|
182
|
+
/** Trigger element */
|
|
183
|
+
trigger?: PartStyleProps;
|
|
184
|
+
/** Tooltip content */
|
|
185
|
+
content?: PartStyleProps;
|
|
186
|
+
/** Arrow element */
|
|
187
|
+
arrow?: PartStyleProps;
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Select component parts
|
|
192
|
+
*/
|
|
193
|
+
export type SelectParts = ComponentParts<'root' | 'select' | 'wrapper' | 'icon' | 'option'> & {
|
|
194
|
+
/** Root container */
|
|
195
|
+
root?: PartStyleProps;
|
|
196
|
+
/** Select element */
|
|
197
|
+
select?: PartStyleProps;
|
|
198
|
+
/** Select wrapper */
|
|
199
|
+
wrapper?: PartStyleProps;
|
|
200
|
+
/** Dropdown icon */
|
|
201
|
+
icon?: PartStyleProps;
|
|
202
|
+
/** Option element */
|
|
203
|
+
option?: PartStyleProps;
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Checkbox component parts
|
|
208
|
+
*/
|
|
209
|
+
export type CheckboxParts = ComponentParts<'root' | 'input' | 'box' | 'icon' | 'label'> & {
|
|
210
|
+
/** Root container */
|
|
211
|
+
root?: PartStyleProps;
|
|
212
|
+
/** Input element */
|
|
213
|
+
input?: PartStyleProps;
|
|
214
|
+
/** Checkbox box */
|
|
215
|
+
box?: PartStyleProps;
|
|
216
|
+
/** Check icon */
|
|
217
|
+
icon?: PartStyleProps;
|
|
218
|
+
/** Label text */
|
|
219
|
+
label?: PartStyleProps;
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Radio component parts
|
|
224
|
+
*/
|
|
225
|
+
export type RadioParts = ComponentParts<'root' | 'input' | 'circle' | 'dot' | 'label'> & {
|
|
226
|
+
/** Root container */
|
|
227
|
+
root?: PartStyleProps;
|
|
228
|
+
/** Input element */
|
|
229
|
+
input?: PartStyleProps;
|
|
230
|
+
/** Radio circle */
|
|
231
|
+
circle?: PartStyleProps;
|
|
232
|
+
/** Inner dot */
|
|
233
|
+
dot?: PartStyleProps;
|
|
234
|
+
/** Label text */
|
|
235
|
+
label?: PartStyleProps;
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Textarea component parts
|
|
240
|
+
*/
|
|
241
|
+
export type TextareaParts = ComponentParts<'root' | 'textarea' | 'wrapper'> & {
|
|
242
|
+
/** Root container */
|
|
243
|
+
root?: PartStyleProps;
|
|
244
|
+
/** Textarea element */
|
|
245
|
+
textarea?: PartStyleProps;
|
|
246
|
+
/** Textarea wrapper */
|
|
247
|
+
wrapper?: PartStyleProps;
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* FormGroup component parts
|
|
252
|
+
*/
|
|
253
|
+
export type FormGroupParts = ComponentParts<'root' | 'label' | 'input' | 'helper' | 'error'> & {
|
|
254
|
+
/** Root container */
|
|
255
|
+
root?: PartStyleProps;
|
|
256
|
+
/** Label element */
|
|
257
|
+
label?: PartStyleProps;
|
|
258
|
+
/** Input wrapper */
|
|
259
|
+
input?: PartStyleProps;
|
|
260
|
+
/** Helper text */
|
|
261
|
+
helper?: PartStyleProps;
|
|
262
|
+
/** Error message */
|
|
263
|
+
error?: PartStyleProps;
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Navbar component parts
|
|
268
|
+
*/
|
|
269
|
+
export type NavbarParts = ComponentParts<
|
|
270
|
+
'root' | 'container' | 'brand' | 'nav' | 'item' | 'link' | 'toggle'
|
|
271
|
+
> & {
|
|
272
|
+
/** Root navbar */
|
|
273
|
+
root?: PartStyleProps;
|
|
274
|
+
/** Container */
|
|
275
|
+
container?: PartStyleProps;
|
|
276
|
+
/** Brand element */
|
|
277
|
+
brand?: PartStyleProps;
|
|
278
|
+
/** Navigation */
|
|
279
|
+
nav?: PartStyleProps;
|
|
280
|
+
/** Nav item */
|
|
281
|
+
item?: PartStyleProps;
|
|
282
|
+
/** Nav link */
|
|
283
|
+
link?: PartStyleProps;
|
|
284
|
+
/** Mobile toggle */
|
|
285
|
+
toggle?: PartStyleProps;
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Accordion component parts
|
|
290
|
+
*/
|
|
291
|
+
export type AccordionParts = ComponentParts<
|
|
292
|
+
'root' | 'item' | 'header' | 'trigger' | 'icon' | 'panel' | 'content'
|
|
293
|
+
> & {
|
|
294
|
+
/** Root accordion */
|
|
295
|
+
root?: PartStyleProps;
|
|
296
|
+
/** Accordion item */
|
|
297
|
+
item?: PartStyleProps;
|
|
298
|
+
/** Item header */
|
|
299
|
+
header?: PartStyleProps;
|
|
300
|
+
/** Trigger button */
|
|
301
|
+
trigger?: PartStyleProps;
|
|
302
|
+
/** Expand icon */
|
|
303
|
+
icon?: PartStyleProps;
|
|
304
|
+
/** Content panel */
|
|
305
|
+
panel?: PartStyleProps;
|
|
306
|
+
/** Panel content */
|
|
307
|
+
content?: PartStyleProps;
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* DataTable component parts
|
|
312
|
+
*/
|
|
313
|
+
export type DataTableParts = ComponentParts<
|
|
314
|
+
'root' | 'wrapper' | 'table' | 'thead' | 'tbody' | 'tfoot' | 'tr' | 'th' | 'td'
|
|
315
|
+
> & {
|
|
316
|
+
/** Root container */
|
|
317
|
+
root?: PartStyleProps;
|
|
318
|
+
/** Table wrapper */
|
|
319
|
+
wrapper?: PartStyleProps;
|
|
320
|
+
/** Table element */
|
|
321
|
+
table?: PartStyleProps;
|
|
322
|
+
/** Table head */
|
|
323
|
+
thead?: PartStyleProps;
|
|
324
|
+
/** Table body */
|
|
325
|
+
tbody?: PartStyleProps;
|
|
326
|
+
/** Table foot */
|
|
327
|
+
tfoot?: PartStyleProps;
|
|
328
|
+
/** Table row */
|
|
329
|
+
tr?: PartStyleProps;
|
|
330
|
+
/** Table header cell */
|
|
331
|
+
th?: PartStyleProps;
|
|
332
|
+
/** Table data cell */
|
|
333
|
+
td?: PartStyleProps;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Avatar component parts
|
|
338
|
+
*/
|
|
339
|
+
export type AvatarParts = ComponentParts<'root' | 'image' | 'fallback' | 'badge'> & {
|
|
340
|
+
/** Root avatar */
|
|
341
|
+
root?: PartStyleProps;
|
|
342
|
+
/** Image element */
|
|
343
|
+
image?: PartStyleProps;
|
|
344
|
+
/** Fallback element */
|
|
345
|
+
fallback?: PartStyleProps;
|
|
346
|
+
/** Status badge */
|
|
347
|
+
badge?: PartStyleProps;
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* List component parts
|
|
352
|
+
*/
|
|
353
|
+
export type ListParts = ComponentParts<
|
|
354
|
+
'root' | 'item' | 'icon' | 'content' | 'title' | 'description'
|
|
355
|
+
> & {
|
|
356
|
+
/** Root list */
|
|
357
|
+
root?: PartStyleProps;
|
|
358
|
+
/** List item */
|
|
359
|
+
item?: PartStyleProps;
|
|
360
|
+
/** Item icon */
|
|
361
|
+
icon?: PartStyleProps;
|
|
362
|
+
/** Item content */
|
|
363
|
+
content?: PartStyleProps;
|
|
364
|
+
/** Item title */
|
|
365
|
+
title?: PartStyleProps;
|
|
366
|
+
/** Item description */
|
|
367
|
+
description?: PartStyleProps;
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Utility function to merge part styles
|
|
372
|
+
*/
|
|
373
|
+
export function mergePartStyles(
|
|
374
|
+
base?: PartStyleProps,
|
|
375
|
+
override?: PartStyleProps
|
|
376
|
+
): PartStyleProps | undefined {
|
|
377
|
+
if (!base && !override) return undefined;
|
|
378
|
+
if (!base) return override;
|
|
379
|
+
if (!override) return base;
|
|
380
|
+
|
|
381
|
+
return {
|
|
382
|
+
className: [base.className, override.className].filter(Boolean).join(' '),
|
|
383
|
+
style: { ...base.style, ...override.style },
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Utility function to apply part styles to props
|
|
389
|
+
*/
|
|
390
|
+
export function applyPartStyles<T extends Record<string, any>>(
|
|
391
|
+
props: T,
|
|
392
|
+
part?: PartStyleProps
|
|
393
|
+
): T {
|
|
394
|
+
if (!part) return props;
|
|
395
|
+
|
|
396
|
+
return {
|
|
397
|
+
...props,
|
|
398
|
+
className: [props.className, part.className].filter(Boolean).join(' '),
|
|
399
|
+
style: { ...props.style, ...part.style },
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* Map of component names to their part types
|
|
405
|
+
*/
|
|
406
|
+
export type ComponentPartsMap = {
|
|
407
|
+
Button: ButtonParts;
|
|
408
|
+
Card: CardParts;
|
|
409
|
+
Input: InputParts;
|
|
410
|
+
Modal: ModalParts;
|
|
411
|
+
Dropdown: DropdownParts;
|
|
412
|
+
Badge: BadgeParts;
|
|
413
|
+
Tabs: TabsParts;
|
|
414
|
+
Progress: ProgressParts;
|
|
415
|
+
Tooltip: TooltipParts;
|
|
416
|
+
Select: SelectParts;
|
|
417
|
+
Checkbox: CheckboxParts;
|
|
418
|
+
Radio: RadioParts;
|
|
419
|
+
Textarea: TextareaParts;
|
|
420
|
+
FormGroup: FormGroupParts;
|
|
421
|
+
Navbar: NavbarParts;
|
|
422
|
+
Accordion: AccordionParts;
|
|
423
|
+
DataTable: DataTableParts;
|
|
424
|
+
Avatar: AvatarParts;
|
|
425
|
+
List: ListParts;
|
|
426
|
+
};
|