@shohojdhara/atomix 0.3.3 → 0.3.5
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/README.md +46 -28
- package/dist/atomix.css +15 -9
- package/dist/atomix.css.map +1 -0
- package/dist/atomix.min.css +15108 -11
- package/dist/atomix.min.css.map +1 -0
- package/dist/charts.d.ts +1929 -0
- package/dist/charts.js +6482 -0
- package/dist/charts.js.map +1 -0
- package/dist/core.d.ts +1289 -0
- package/dist/core.js +3357 -0
- package/dist/core.js.map +1 -0
- package/dist/forms.d.ts +1085 -0
- package/dist/forms.js +2450 -0
- package/dist/forms.js.map +1 -0
- package/dist/heavy.d.ts +636 -0
- package/dist/heavy.js +4550 -0
- package/dist/heavy.js.map +1 -0
- package/dist/index.d.ts +5196 -4618
- package/dist/index.esm.js +4240 -2776
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +4057 -2571
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/layout.d.ts +300 -0
- package/dist/layout.js +336 -0
- package/dist/layout.js.map +1 -0
- package/dist/theme.d.ts +1992 -0
- package/dist/theme.js +5348 -0
- package/dist/theme.js.map +1 -0
- package/package.json +63 -68
- package/scripts/atomix-cli.js +879 -15
- package/scripts/cli/__tests__/cli-commands.test.js +204 -0
- package/scripts/cli/__tests__/utils.test.js +201 -0
- package/scripts/cli/__tests__/vitest.config.js +26 -0
- package/scripts/cli/interactive-init.js +37 -45
- package/scripts/cli/theme-bridge.js +129 -0
- package/scripts/cli/token-manager.js +32 -7
- package/scripts/cli/utils.js +347 -0
- package/scripts/sync-theme-config.js +22 -22
- package/src/components/Accordion/Accordion.tsx +5 -54
- package/src/components/Accordion/index.ts +1 -1
- package/src/components/Avatar/Avatar.tsx +3 -3
- package/src/components/Badge/Badge.tsx +3 -3
- package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
- package/src/components/Button/Button.tsx +36 -1
- package/src/components/Card/ElevationCard.tsx +1 -1
- package/src/components/Chart/AnimatedChart.tsx +19 -17
- package/src/components/Chart/AreaChart.tsx +5 -1
- package/src/components/Chart/BarChart.tsx +1 -0
- package/src/components/Chart/BubbleChart.tsx +6 -5
- package/src/components/Chart/ChartToolbar.tsx +1 -0
- package/src/components/Chart/FunnelChart.tsx +1 -1
- package/src/components/Chart/RadarChart.tsx +19 -12
- package/src/components/Chart/ScatterChart.tsx +3 -3
- package/src/components/Chart/TreemapChart.tsx +2 -1
- package/src/components/Chart/WaterfallChart.tsx +0 -1
- package/src/components/Chart/types.ts +12 -2
- package/src/components/Chart/utils.ts +4 -3
- package/src/components/DataTable/DataTable.tsx +3 -3
- package/src/components/Dropdown/Dropdown.tsx +12 -9
- package/src/components/Footer/FooterSection.tsx +3 -3
- package/src/components/Form/Checkbox.tsx +3 -3
- package/src/components/Form/Input.tsx +4 -2
- package/src/components/Form/Radio.tsx +3 -3
- package/src/components/Form/Select.tsx +3 -3
- package/src/components/Form/Textarea.tsx +4 -2
- package/src/components/List/List.stories.tsx +3 -3
- package/src/components/List/List.tsx +3 -3
- package/src/components/List/ListGroup.tsx +3 -1
- package/src/components/Modal/Modal.tsx +3 -3
- package/src/components/Navigation/Menu/MegaMenu.tsx +9 -3
- package/src/components/Navigation/Menu/Menu.tsx +9 -3
- package/src/components/Pagination/Pagination.tsx +6 -5
- package/src/components/PhotoViewer/PhotoViewerImage.tsx +2 -2
- package/src/components/Popover/Popover.tsx +4 -4
- package/src/components/Progress/Progress.tsx +6 -2
- package/src/components/Rating/Rating.tsx +5 -2
- package/src/components/Slider/Slider.tsx +10 -9
- package/src/components/Spinner/Spinner.tsx +3 -3
- package/src/components/Tabs/Tabs.tsx +3 -3
- package/src/components/Tooltip/Tooltip.tsx +3 -3
- package/src/components/index.ts +5 -2
- package/src/layouts/MasonryGrid/MasonryGrid.tsx +2 -2
- package/src/lib/composables/useChartPerformance.ts +102 -78
- package/src/lib/composables/useChartScale.ts +10 -0
- package/src/lib/composables/useHero.ts +9 -2
- package/src/lib/composables/useHeroBackgroundSlider.ts +5 -3
- package/src/lib/composables/useSideMenu.ts +1 -0
- package/src/lib/composables/useVideoPlayer.ts +3 -2
- package/src/lib/config/index.ts +275 -0
- package/src/lib/config/loader.ts +147 -0
- package/src/lib/hooks/index.ts +0 -1
- package/src/lib/hooks/useComponentCustomization.ts +10 -14
- package/src/lib/hooks/usePerformanceMonitor.ts +149 -0
- package/src/lib/index.ts +1 -0
- package/src/lib/patterns/index.ts +2 -2
- package/src/lib/patterns/slots.tsx +2 -2
- package/src/lib/theme/composeTheme.ts +1 -6
- package/src/lib/theme/config/index.ts +1 -1
- package/src/lib/theme/config/loader.ts +75 -41
- package/src/lib/theme/config/types.ts +21 -7
- package/src/lib/theme/config/validator.ts +1 -1
- package/src/lib/theme/constants.ts +12 -2
- package/src/lib/theme/core/ThemeEngine.ts +8 -0
- package/src/lib/theme/core/ThemeValidator.ts +5 -2
- package/src/lib/theme/createTheme.ts +0 -1
- package/src/lib/theme/createThemeFromConfig.ts +132 -0
- package/src/lib/theme/devtools/CLI.ts +161 -76
- package/src/lib/theme/devtools/Comparator.tsx +343 -0
- package/src/lib/theme/devtools/IMPROVEMENTS.md +429 -0
- package/src/lib/theme/devtools/Inspector.tsx +22 -7
- package/src/lib/theme/devtools/LiveEditor.tsx +399 -0
- package/src/lib/theme/devtools/README.md +433 -0
- package/src/lib/theme/devtools/index.ts +12 -11
- package/src/lib/theme/generateCSSVariables.ts +80 -39
- package/src/lib/theme/i18n/rtl.ts +2 -1
- package/src/lib/theme/index.ts +18 -2
- package/src/lib/theme/runtime/ThemeApplicator.ts +28 -11
- package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +3 -3
- package/src/lib/theme/runtime/ThemeManager.test.ts +17 -1
- package/src/lib/theme/runtime/ThemeManager.ts +11 -7
- package/src/lib/theme/types.ts +42 -43
- package/src/lib/theme-tools.ts +8 -68
- package/src/lib/types/components.ts +252 -109
- package/src/lib/types/partProps.ts +0 -16
- package/src/lib/utils/fontPreloader.ts +148 -0
- package/src/lib/utils/index.ts +11 -0
- package/src/lib/utils/memoryMonitor.ts +189 -0
- package/src/styles/01-settings/_settings.fonts.scss +2 -5
- package/src/styles/01-settings/_settings.navbar.scss +1 -1
- package/src/styles/03-generic/_generated-root.css +26 -0
- package/src/styles/06-components/_components.navbar.scss +6 -5
- package/src/themes/README.md +1 -2
- package/src/themes/themes.config.js +30 -181
- package/dist/themes/applemix.css +0 -16576
- package/dist/themes/applemix.css.map +0 -1
- package/dist/themes/applemix.min.css +0 -73
- package/dist/themes/boomdevs.css +0 -16007
- package/dist/themes/boomdevs.css.map +0 -1
- package/dist/themes/boomdevs.min.css +0 -406
- package/dist/themes/esrar.css +0 -18424
- package/dist/themes/esrar.css.map +0 -1
- package/dist/themes/esrar.min.css +0 -221
- package/dist/themes/flashtrade.css +0 -17596
- package/dist/themes/flashtrade.css.map +0 -1
- package/dist/themes/flashtrade.min.css +0 -196
- package/dist/themes/mashroom.css +0 -31082
- package/dist/themes/mashroom.css.map +0 -1
- package/dist/themes/mashroom.min.css +0 -450
- package/dist/themes/shaj-default.css +0 -17200
- package/dist/themes/shaj-default.css.map +0 -1
- package/dist/themes/shaj-default.min.css +0 -502
- package/scripts/build-themes.js +0 -208
- package/src/components/AtomixGlass/atomixGLass.old.tsx +0 -1263
- package/src/lib/theme/__tests__/ThemeBuilder.test.ts +0 -223
- package/src/lib/theme/builders/ThemeBuilder.ts +0 -372
- package/src/lib/theme/errors.test.ts +0 -207
- package/src/lib/theme/generators/CSSGenerator.ts +0 -311
- package/src/lib/theme/generators/ConfigGenerator.ts +0 -287
- package/src/lib/theme/generators/TypeGenerator.ts +0 -228
- package/src/lib/theme/generators/index.ts +0 -21
- package/src/lib/theme/monitoring/ThemeAnalytics.ts +0 -409
- package/src/lib/theme/monitoring/index.ts +0 -17
- package/src/lib/theme/overrides/ComponentOverrides.ts +0 -243
- package/src/lib/theme/overrides/index.ts +0 -15
- package/src/lib/theme/whitelabel/WhiteLabelManager.ts +0 -364
- package/src/lib/theme/whitelabel/index.ts +0 -13
- package/src/themes/THEME_CHECKLIST.md +0 -74
- package/src/themes/applemix/01-settings/_index.scss +0 -24
- package/src/themes/applemix/01-settings/_settings.animations.scss +0 -0
- package/src/themes/applemix/01-settings/_settings.background.scss +0 -6
- package/src/themes/applemix/01-settings/_settings.colors.scss +0 -75
- package/src/themes/applemix/01-settings/_settings.config.scss +0 -15
- package/src/themes/applemix/01-settings/_settings.typography.scss +0 -30
- package/src/themes/applemix/02-tools/_index.scss +0 -4
- package/src/themes/applemix/03-generic/_index.scss +0 -7
- package/src/themes/applemix/04-elements/_index.scss +0 -7
- package/src/themes/applemix/05-objects/_index.scss +0 -7
- package/src/themes/applemix/06-components/_index.scss +0 -15
- package/src/themes/applemix/99-utilities/_index.scss +0 -7
- package/src/themes/applemix/README.md +0 -378
- package/src/themes/applemix/index.scss +0 -33
- package/src/themes/boomdevs/01-settings/_index.scss +0 -38
- package/src/themes/boomdevs/01-settings/_settings.accordion.scss +0 -12
- package/src/themes/boomdevs/01-settings/_settings.animations.scss +0 -11
- package/src/themes/boomdevs/01-settings/_settings.avatar.scss +0 -9
- package/src/themes/boomdevs/01-settings/_settings.badge.scss +0 -11
- package/src/themes/boomdevs/01-settings/_settings.border-radius.scss +0 -16
- package/src/themes/boomdevs/01-settings/_settings.border.scss +0 -10
- package/src/themes/boomdevs/01-settings/_settings.box-shadow.scss +0 -14
- package/src/themes/boomdevs/01-settings/_settings.breadcrumb.scss +0 -13
- package/src/themes/boomdevs/01-settings/_settings.breakpoints.scss +0 -15
- package/src/themes/boomdevs/01-settings/_settings.button.scss +0 -9
- package/src/themes/boomdevs/01-settings/_settings.callout.scss +0 -9
- package/src/themes/boomdevs/01-settings/_settings.card.scss +0 -11
- package/src/themes/boomdevs/01-settings/_settings.checkbox.scss +0 -9
- package/src/themes/boomdevs/01-settings/_settings.colors.scss +0 -145
- package/src/themes/boomdevs/01-settings/_settings.dropdown.scss +0 -11
- package/src/themes/boomdevs/01-settings/_settings.grid.scss +0 -16
- package/src/themes/boomdevs/01-settings/_settings.input.scss +0 -14
- package/src/themes/boomdevs/01-settings/_settings.link.scss +0 -11
- package/src/themes/boomdevs/01-settings/_settings.list.scss +0 -10
- package/src/themes/boomdevs/01-settings/_settings.modal.scss +0 -16
- package/src/themes/boomdevs/01-settings/_settings.navbar.scss +0 -16
- package/src/themes/boomdevs/01-settings/_settings.pagination.scss +0 -13
- package/src/themes/boomdevs/01-settings/_settings.progress.scss +0 -11
- package/src/themes/boomdevs/01-settings/_settings.rating.scss +0 -10
- package/src/themes/boomdevs/01-settings/_settings.spacing.scss +0 -33
- package/src/themes/boomdevs/01-settings/_settings.spinner.scss +0 -11
- package/src/themes/boomdevs/01-settings/_settings.steps.scss +0 -12
- package/src/themes/boomdevs/01-settings/_settings.tabs.scss +0 -12
- package/src/themes/boomdevs/01-settings/_settings.todo.scss +0 -15
- package/src/themes/boomdevs/01-settings/_settings.toggle.scss +0 -14
- package/src/themes/boomdevs/01-settings/_settings.tooltip.scss +0 -13
- package/src/themes/boomdevs/01-settings/_settings.typography.scss +0 -58
- package/src/themes/boomdevs/01-settings/_settings.video-player.scss +0 -12
- package/src/themes/boomdevs/02-tools/_index.scss +0 -7
- package/src/themes/boomdevs/03-generic/_index.scss +0 -7
- package/src/themes/boomdevs/04-elements/_index.scss +0 -7
- package/src/themes/boomdevs/05-objects/_index.scss +0 -7
- package/src/themes/boomdevs/06-components/_components.button.scss +0 -11
- package/src/themes/boomdevs/06-components/_index.scss +0 -11
- package/src/themes/boomdevs/99-utilities/_index.scss +0 -7
- package/src/themes/boomdevs/index.scss +0 -26
- package/src/themes/esrar/01-settings/_index.scss +0 -15
- package/src/themes/esrar/01-settings/_settings.colors.scss +0 -91
- package/src/themes/esrar/02-tools/_index.scss +0 -8
- package/src/themes/esrar/02-tools/_tools.animations.scss +0 -342
- package/src/themes/esrar/06-components/_components.accordion.scss +0 -49
- package/src/themes/esrar/06-components/_components.avatar-group.scss +0 -14
- package/src/themes/esrar/06-components/_components.avatar.scss +0 -61
- package/src/themes/esrar/06-components/_components.badge.scss +0 -117
- package/src/themes/esrar/06-components/_components.breadcrumb.scss +0 -65
- package/src/themes/esrar/06-components/_components.btn-group.scss +0 -19
- package/src/themes/esrar/06-components/_components.button.scss +0 -224
- package/src/themes/esrar/06-components/_components.callout.scss +0 -51
- package/src/themes/esrar/06-components/_components.card.scss +0 -134
- package/src/themes/esrar/06-components/_components.chart.scss +0 -24
- package/src/themes/esrar/06-components/_components.checkbox-group.scss +0 -26
- package/src/themes/esrar/06-components/_components.checkbox.scss +0 -71
- package/src/themes/esrar/06-components/_components.color-mode-toggle.scss +0 -29
- package/src/themes/esrar/06-components/_components.countdown.scss +0 -67
- package/src/themes/esrar/06-components/_components.data-table.scss +0 -22
- package/src/themes/esrar/06-components/_components.datepicker.scss +0 -20
- package/src/themes/esrar/06-components/_components.dropdown.scss +0 -272
- package/src/themes/esrar/06-components/_components.edge-panel.scss +0 -10
- package/src/themes/esrar/06-components/_components.form-group.scss +0 -15
- package/src/themes/esrar/06-components/_components.form.scss +0 -66
- package/src/themes/esrar/06-components/_components.hero.scss +0 -251
- package/src/themes/esrar/06-components/_components.icon.scss +0 -33
- package/src/themes/esrar/06-components/_components.image-gallery.scss +0 -29
- package/src/themes/esrar/06-components/_components.input.scss +0 -91
- package/src/themes/esrar/06-components/_components.list-group.scss +0 -26
- package/src/themes/esrar/06-components/_components.modal.scss +0 -148
- package/src/themes/esrar/06-components/_components.notification.scss +0 -80
- package/src/themes/esrar/06-components/_components.pagination.scss +0 -84
- package/src/themes/esrar/06-components/_components.popover.scss +0 -10
- package/src/themes/esrar/06-components/_components.progress.scss +0 -64
- package/src/themes/esrar/06-components/_components.rating.scss +0 -26
- package/src/themes/esrar/06-components/_components.skeleton.scss +0 -15
- package/src/themes/esrar/06-components/_components.slider.scss +0 -90
- package/src/themes/esrar/06-components/_components.spinner.scss +0 -71
- package/src/themes/esrar/06-components/_components.steps.scss +0 -76
- package/src/themes/esrar/06-components/_components.tab.scss +0 -58
- package/src/themes/esrar/06-components/_components.tag.scss +0 -21
- package/src/themes/esrar/06-components/_components.timeline.scss +0 -19
- package/src/themes/esrar/06-components/_components.toast.scss +0 -91
- package/src/themes/esrar/06-components/_components.toggle.scss +0 -74
- package/src/themes/esrar/06-components/_components.tooltip.scss +0 -45
- package/src/themes/esrar/06-components/_components.upload.scss +0 -102
- package/src/themes/esrar/06-components/_index.scss +0 -42
- package/src/themes/esrar/index.scss +0 -30
- package/src/themes/flashtrade/01-settings/_index.scss +0 -19
- package/src/themes/flashtrade/01-settings/_settings.animations.scss +0 -11
- package/src/themes/flashtrade/01-settings/_settings.background.scss +0 -9
- package/src/themes/flashtrade/01-settings/_settings.colors.scss +0 -79
- package/src/themes/flashtrade/01-settings/_settings.config.scss +0 -16
- package/src/themes/flashtrade/01-settings/_settings.typography.scss +0 -35
- package/src/themes/flashtrade/02-tools/_index.scss +0 -8
- package/src/themes/flashtrade/03-generic/_index.scss +0 -8
- package/src/themes/flashtrade/04-elements/_index.scss +0 -12
- package/src/themes/flashtrade/05-objects/_index.scss +0 -8
- package/src/themes/flashtrade/06-components/_components.badge.scss +0 -156
- package/src/themes/flashtrade/06-components/_components.button.scss +0 -135
- package/src/themes/flashtrade/06-components/_components.card.scss +0 -214
- package/src/themes/flashtrade/06-components/_components.navbar.scss +0 -227
- package/src/themes/flashtrade/06-components/_index.scss +0 -13
- package/src/themes/flashtrade/99-utilities/_index.scss +0 -9
- package/src/themes/flashtrade/99-utilities/_utilities.trading.scss +0 -187
- package/src/themes/flashtrade/README.md +0 -386
- package/src/themes/flashtrade/demo.html +0 -272
- package/src/themes/flashtrade/index.scss +0 -36
- package/src/themes/mashroom/01-settings/_index.scss +0 -69
- package/src/themes/mashroom/01-settings/_settings.accordion.scss +0 -32
- package/src/themes/mashroom/01-settings/_settings.animations.scss +0 -26
- package/src/themes/mashroom/01-settings/_settings.avatar-group.scss +0 -22
- package/src/themes/mashroom/01-settings/_settings.avatar.scss +0 -57
- package/src/themes/mashroom/01-settings/_settings.badge.scss +0 -19
- package/src/themes/mashroom/01-settings/_settings.border-radius.scss +0 -24
- package/src/themes/mashroom/01-settings/_settings.border.scss +0 -14
- package/src/themes/mashroom/01-settings/_settings.box-shadow.scss +0 -40
- package/src/themes/mashroom/01-settings/_settings.breadcrumb.scss +0 -0
- package/src/themes/mashroom/01-settings/_settings.breakpoints.scss +0 -17
- package/src/themes/mashroom/01-settings/_settings.btn-group.scss +0 -5
- package/src/themes/mashroom/01-settings/_settings.button.scss +0 -50
- package/src/themes/mashroom/01-settings/_settings.callout.scss +0 -81
- package/src/themes/mashroom/01-settings/_settings.card.scss +0 -52
- package/src/themes/mashroom/01-settings/_settings.checkbox-group.scss +0 -5
- package/src/themes/mashroom/01-settings/_settings.checkbox.scss +0 -23
- package/src/themes/mashroom/01-settings/_settings.color-mode.scss +0 -7
- package/src/themes/mashroom/01-settings/_settings.colors.scss +0 -180
- package/src/themes/mashroom/01-settings/_settings.config.scss +0 -4
- package/src/themes/mashroom/01-settings/_settings.countdown.scss +0 -20
- package/src/themes/mashroom/01-settings/_settings.data-table.scss +0 -56
- package/src/themes/mashroom/01-settings/_settings.datepicker.scss +0 -45
- package/src/themes/mashroom/01-settings/_settings.design-tokens.scss +0 -3
- package/src/themes/mashroom/01-settings/_settings.dropdown.scss +0 -45
- package/src/themes/mashroom/01-settings/_settings.edge-panel.scss +0 -24
- package/src/themes/mashroom/01-settings/_settings.fonts.scss +0 -8
- package/src/themes/mashroom/01-settings/_settings.form-group.scss +0 -14
- package/src/themes/mashroom/01-settings/_settings.form.scss +0 -6
- package/src/themes/mashroom/01-settings/_settings.grid.scss +0 -23
- package/src/themes/mashroom/01-settings/_settings.hero.scss +0 -41
- package/src/themes/mashroom/01-settings/_settings.input.scss +0 -51
- package/src/themes/mashroom/01-settings/_settings.link.scss +0 -13
- package/src/themes/mashroom/01-settings/_settings.list-group.scss +0 -16
- package/src/themes/mashroom/01-settings/_settings.list.scss +0 -13
- package/src/themes/mashroom/01-settings/_settings.masonry-grid.scss +0 -23
- package/src/themes/mashroom/01-settings/_settings.menu.scss +0 -50
- package/src/themes/mashroom/01-settings/_settings.messages.scss +0 -98
- package/src/themes/mashroom/01-settings/_settings.modal.scss +0 -41
- package/src/themes/mashroom/01-settings/_settings.nav.scss +0 -20
- package/src/themes/mashroom/01-settings/_settings.navbar.scss +0 -54
- package/src/themes/mashroom/01-settings/_settings.pagination.scss +0 -30
- package/src/themes/mashroom/01-settings/_settings.photoviewer.scss +0 -45
- package/src/themes/mashroom/01-settings/_settings.popover.scss +0 -20
- package/src/themes/mashroom/01-settings/_settings.position.scss +0 -9
- package/src/themes/mashroom/01-settings/_settings.progress.scss +0 -17
- package/src/themes/mashroom/01-settings/_settings.rating.scss +0 -11
- package/src/themes/mashroom/01-settings/_settings.river.scss +0 -50
- package/src/themes/mashroom/01-settings/_settings.sectionintro.scss +0 -31
- package/src/themes/mashroom/01-settings/_settings.select.scss +0 -47
- package/src/themes/mashroom/01-settings/_settings.side-menu.scss +0 -79
- package/src/themes/mashroom/01-settings/_settings.skeleton.scss +0 -24
- package/src/themes/mashroom/01-settings/_settings.spacing.scss +0 -66
- package/src/themes/mashroom/01-settings/_settings.spinner.scss +0 -34
- package/src/themes/mashroom/01-settings/_settings.steps.scss +0 -33
- package/src/themes/mashroom/01-settings/_settings.tabs.scss +0 -33
- package/src/themes/mashroom/01-settings/_settings.testimonials.scss +0 -24
- package/src/themes/mashroom/01-settings/_settings.todo.scss +0 -52
- package/src/themes/mashroom/01-settings/_settings.toggle.scss +0 -49
- package/src/themes/mashroom/01-settings/_settings.tooltip.scss +0 -20
- package/src/themes/mashroom/01-settings/_settings.typography.scss +0 -95
- package/src/themes/mashroom/01-settings/_settings.upload.scss +0 -96
- package/src/themes/mashroom/01-settings/_settings.z-layers.scss +0 -19
- package/src/themes/mashroom/02-tools/_index.scss +0 -8
- package/src/themes/mashroom/02-tools/_tools.psychedelic-gradients.scss +0 -78
- package/src/themes/mashroom/02-tools/_tools.trippy-effects.scss +0 -114
- package/src/themes/mashroom/03-generic/_index.scss +0 -6
- package/src/themes/mashroom/04-elements/_index.scss +0 -6
- package/src/themes/mashroom/05-objects/_index.scss +0 -6
- package/src/themes/mashroom/06-components/_components.accordion.scss +0 -187
- package/src/themes/mashroom/06-components/_components.avatar-group.scss +0 -276
- package/src/themes/mashroom/06-components/_components.avatar.scss +0 -114
- package/src/themes/mashroom/06-components/_components.badge.scss +0 -152
- package/src/themes/mashroom/06-components/_components.breadcrumb.scss +0 -162
- package/src/themes/mashroom/06-components/_components.btn-group.scss +0 -404
- package/src/themes/mashroom/06-components/_components.button.scss +0 -160
- package/src/themes/mashroom/06-components/_components.callout.scss +0 -140
- package/src/themes/mashroom/06-components/_components.card.scss +0 -225
- package/src/themes/mashroom/06-components/_components.checkbox.scss +0 -186
- package/src/themes/mashroom/06-components/_components.color-mode-toggle.scss +0 -308
- package/src/themes/mashroom/06-components/_components.countdown.scss +0 -402
- package/src/themes/mashroom/06-components/_components.data-table.scss +0 -354
- package/src/themes/mashroom/06-components/_components.datepicker.scss +0 -349
- package/src/themes/mashroom/06-components/_components.dropdown.scss +0 -334
- package/src/themes/mashroom/06-components/_components.edge-panel.scss +0 -413
- package/src/themes/mashroom/06-components/_components.form-group.scss +0 -433
- package/src/themes/mashroom/06-components/_components.form.scss +0 -358
- package/src/themes/mashroom/06-components/_components.hero.scss +0 -151
- package/src/themes/mashroom/06-components/_components.input.scss +0 -147
- package/src/themes/mashroom/06-components/_components.list-group.scss +0 -456
- package/src/themes/mashroom/06-components/_components.list.scss +0 -145
- package/src/themes/mashroom/06-components/_components.menu.scss +0 -497
- package/src/themes/mashroom/06-components/_components.messages.scss +0 -277
- package/src/themes/mashroom/06-components/_components.modal.scss +0 -264
- package/src/themes/mashroom/06-components/_components.nav.scss +0 -181
- package/src/themes/mashroom/06-components/_components.navbar.scss +0 -538
- package/src/themes/mashroom/06-components/_components.pagination.scss +0 -400
- package/src/themes/mashroom/06-components/_components.photoviewer.scss +0 -498
- package/src/themes/mashroom/06-components/_components.popover.scss +0 -383
- package/src/themes/mashroom/06-components/_components.product-review.scss +0 -408
- package/src/themes/mashroom/06-components/_components.progress.scss +0 -249
- package/src/themes/mashroom/06-components/_components.rating.scss +0 -300
- package/src/themes/mashroom/06-components/_components.river.scss +0 -570
- package/src/themes/mashroom/06-components/_components.sectionintro.scss +0 -546
- package/src/themes/mashroom/06-components/_components.select.scss +0 -455
- package/src/themes/mashroom/06-components/_components.side-menu.scss +0 -635
- package/src/themes/mashroom/06-components/_components.skeleton.scss +0 -447
- package/src/themes/mashroom/06-components/_components.slider.scss +0 -414
- package/src/themes/mashroom/06-components/_components.spinner.scss +0 -198
- package/src/themes/mashroom/06-components/_components.steps.scss +0 -350
- package/src/themes/mashroom/06-components/_components.tabs.scss +0 -269
- package/src/themes/mashroom/06-components/_components.testimonials.scss +0 -561
- package/src/themes/mashroom/06-components/_components.toggle.scss +0 -231
- package/src/themes/mashroom/06-components/_components.tooltip.scss +0 -167
- package/src/themes/mashroom/06-components/_components.upload.scss +0 -537
- package/src/themes/mashroom/06-components/_components.video-player.scss +0 -560
- package/src/themes/mashroom/06-components/_index.scss +0 -55
- package/src/themes/mashroom/99-utilities/_index.scss +0 -6
- package/src/themes/mashroom/index.scss +0 -26
- package/src/themes/shaj-default/01-settings/_index.scss +0 -69
- package/src/themes/shaj-default/01-settings/_settings.accordion.scss +0 -38
- package/src/themes/shaj-default/01-settings/_settings.animations.scss +0 -32
- package/src/themes/shaj-default/01-settings/_settings.avatar-group.scss +0 -28
- package/src/themes/shaj-default/01-settings/_settings.avatar.scss +0 -63
- package/src/themes/shaj-default/01-settings/_settings.badge.scss +0 -25
- package/src/themes/shaj-default/01-settings/_settings.border-radius.scss +0 -24
- package/src/themes/shaj-default/01-settings/_settings.border.scss +0 -20
- package/src/themes/shaj-default/01-settings/_settings.box-shadow.scss +0 -46
- package/src/themes/shaj-default/01-settings/_settings.breadcrumb.scss +0 -0
- package/src/themes/shaj-default/01-settings/_settings.breakpoints.scss +0 -23
- package/src/themes/shaj-default/01-settings/_settings.btn-group.scss +0 -11
- package/src/themes/shaj-default/01-settings/_settings.button.scss +0 -56
- package/src/themes/shaj-default/01-settings/_settings.callout.scss +0 -87
- package/src/themes/shaj-default/01-settings/_settings.card.scss +0 -52
- package/src/themes/shaj-default/01-settings/_settings.checkbox-group.scss +0 -11
- package/src/themes/shaj-default/01-settings/_settings.checkbox.scss +0 -29
- package/src/themes/shaj-default/01-settings/_settings.color-mode.scss +0 -13
- package/src/themes/shaj-default/01-settings/_settings.colors.scss +0 -91
- package/src/themes/shaj-default/01-settings/_settings.config.scss +0 -4
- package/src/themes/shaj-default/01-settings/_settings.countdown.scss +0 -26
- package/src/themes/shaj-default/01-settings/_settings.data-table.scss +0 -62
- package/src/themes/shaj-default/01-settings/_settings.datepicker.scss +0 -51
- package/src/themes/shaj-default/01-settings/_settings.design-tokens.scss +0 -9
- package/src/themes/shaj-default/01-settings/_settings.dropdown.scss +0 -51
- package/src/themes/shaj-default/01-settings/_settings.edge-panel.scss +0 -30
- package/src/themes/shaj-default/01-settings/_settings.fonts.scss +0 -13
- package/src/themes/shaj-default/01-settings/_settings.form-group.scss +0 -20
- package/src/themes/shaj-default/01-settings/_settings.form.scss +0 -12
- package/src/themes/shaj-default/01-settings/_settings.grid.scss +0 -29
- package/src/themes/shaj-default/01-settings/_settings.hero.scss +0 -47
- package/src/themes/shaj-default/01-settings/_settings.input.scss +0 -57
- package/src/themes/shaj-default/01-settings/_settings.link.scss +0 -19
- package/src/themes/shaj-default/01-settings/_settings.list-group.scss +0 -22
- package/src/themes/shaj-default/01-settings/_settings.list.scss +0 -19
- package/src/themes/shaj-default/01-settings/_settings.masonry-grid.scss +0 -29
- package/src/themes/shaj-default/01-settings/_settings.menu.scss +0 -56
- package/src/themes/shaj-default/01-settings/_settings.messages.scss +0 -104
- package/src/themes/shaj-default/01-settings/_settings.modal.scss +0 -47
- package/src/themes/shaj-default/01-settings/_settings.nav.scss +0 -26
- package/src/themes/shaj-default/01-settings/_settings.navbar.scss +0 -60
- package/src/themes/shaj-default/01-settings/_settings.pagination.scss +0 -36
- package/src/themes/shaj-default/01-settings/_settings.photoviewer.scss +0 -51
- package/src/themes/shaj-default/01-settings/_settings.popover.scss +0 -26
- package/src/themes/shaj-default/01-settings/_settings.position.scss +0 -15
- package/src/themes/shaj-default/01-settings/_settings.progress.scss +0 -23
- package/src/themes/shaj-default/01-settings/_settings.rating.scss +0 -17
- package/src/themes/shaj-default/01-settings/_settings.river.scss +0 -56
- package/src/themes/shaj-default/01-settings/_settings.sectionintro.scss +0 -37
- package/src/themes/shaj-default/01-settings/_settings.select.scss +0 -53
- package/src/themes/shaj-default/01-settings/_settings.side-menu.scss +0 -85
- package/src/themes/shaj-default/01-settings/_settings.skeleton.scss +0 -30
- package/src/themes/shaj-default/01-settings/_settings.spacing.scss +0 -72
- package/src/themes/shaj-default/01-settings/_settings.spinner.scss +0 -24
- package/src/themes/shaj-default/01-settings/_settings.steps.scss +0 -39
- package/src/themes/shaj-default/01-settings/_settings.tabs.scss +0 -39
- package/src/themes/shaj-default/01-settings/_settings.testimonials.scss +0 -30
- package/src/themes/shaj-default/01-settings/_settings.todo.scss +0 -58
- package/src/themes/shaj-default/01-settings/_settings.toggle.scss +0 -55
- package/src/themes/shaj-default/01-settings/_settings.tooltip.scss +0 -26
- package/src/themes/shaj-default/01-settings/_settings.typography.scss +0 -101
- package/src/themes/shaj-default/01-settings/_settings.upload.scss +0 -102
- package/src/themes/shaj-default/01-settings/_settings.z-layers.scss +0 -25
- 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 +0 -2
- 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 +0 -55
- package/src/themes/shaj-default/06-components/_components.card.scss +0 -57
- package/src/themes/shaj-default/06-components/_components.input.scss +0 -58
- package/src/themes/shaj-default/06-components/_components.navbar.scss +0 -99
- package/src/themes/shaj-default/06-components/_components.tooltip.scss +0 -0
- package/src/themes/shaj-default/06-components/_index.scss +0 -13
- package/src/themes/shaj-default/99-utilities/_index.scss +0 -0
- package/src/themes/shaj-default/index.scss +0 -25
- package/theme.config.ts +0 -360
|
@@ -1,61 +1,12 @@
|
|
|
1
|
-
import React, { ReactNode, useId } from 'react';
|
|
1
|
+
import React, { ReactNode, useId, memo } from 'react';
|
|
2
2
|
import { ACCORDION } from '../../lib/constants/components';
|
|
3
3
|
import { useAccordion } from '../../lib/composables/useAccordion';
|
|
4
|
-
import {
|
|
4
|
+
import type { AccordionProps as AccordionPropsType, AtomixGlassProps } from '../../lib/types/components';
|
|
5
5
|
import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
* Accordion component for showing/hiding content panels
|
|
9
|
-
*/
|
|
10
|
-
export interface AccordionProps extends BaseComponentProps {
|
|
11
|
-
/**
|
|
12
|
-
* Title of the accordion
|
|
13
|
-
*/
|
|
14
|
-
title: string;
|
|
7
|
+
export type AccordionProps = AccordionPropsType;
|
|
15
8
|
|
|
16
|
-
|
|
17
|
-
* Content to be shown when accordion is expanded
|
|
18
|
-
*/
|
|
19
|
-
children: ReactNode;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Whether the accordion is initially open
|
|
23
|
-
*/
|
|
24
|
-
defaultOpen?: boolean;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Position of the icon (right or left)
|
|
28
|
-
*/
|
|
29
|
-
iconPosition?: IconPosition;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Custom icon for the accordion
|
|
33
|
-
*/
|
|
34
|
-
icon?: ReactNode;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Controlled open state (overrides defaultOpen)
|
|
38
|
-
*/
|
|
39
|
-
isOpen?: boolean;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Callback when open state changes (for controlled mode)
|
|
43
|
-
*/
|
|
44
|
-
onOpenChange?: (open: boolean) => void;
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Glass morphism effect for the accordion
|
|
48
|
-
* Can be a boolean to enable with default settings, or an object with AtomixGlassProps to customize the effect
|
|
49
|
-
*/
|
|
50
|
-
glass?: AtomixGlassProps | boolean;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Custom style for the accordion
|
|
54
|
-
*/
|
|
55
|
-
style?: React.CSSProperties;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export const Accordion: React.FC<AccordionProps> = ({
|
|
9
|
+
export const Accordion: React.FC<AccordionProps> = memo(({
|
|
59
10
|
title,
|
|
60
11
|
children,
|
|
61
12
|
defaultOpen = false,
|
|
@@ -159,7 +110,7 @@ export const Accordion: React.FC<AccordionProps> = ({
|
|
|
159
110
|
}
|
|
160
111
|
|
|
161
112
|
return accordionContent;
|
|
162
|
-
};
|
|
113
|
+
});
|
|
163
114
|
|
|
164
115
|
// Set display name for debugging
|
|
165
116
|
Accordion.displayName = 'Accordion';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, memo } from 'react';
|
|
2
2
|
import { AvatarProps } from '../../lib/types/components';
|
|
3
3
|
import { AVATAR } from '../../lib/constants/components';
|
|
4
4
|
import { Icon } from '../Icon/Icon';
|
|
5
5
|
|
|
6
|
-
export const Avatar: React.FC<AvatarProps> = ({
|
|
6
|
+
export const Avatar: React.FC<AvatarProps> = memo(({
|
|
7
7
|
src,
|
|
8
8
|
alt = 'Avatar',
|
|
9
9
|
initials,
|
|
@@ -62,7 +62,7 @@ export const Avatar: React.FC<AvatarProps> = ({
|
|
|
62
62
|
)}
|
|
63
63
|
</div>
|
|
64
64
|
);
|
|
65
|
-
};
|
|
65
|
+
});
|
|
66
66
|
|
|
67
67
|
Avatar.displayName = 'Avatar';
|
|
68
68
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React, { useRef } from 'react';
|
|
1
|
+
import React, { useRef, memo } from 'react';
|
|
2
2
|
import { useBadge } from '../../lib/composables/useBadge';
|
|
3
3
|
import { BADGE } from '../../lib/constants/components';
|
|
4
4
|
import { BadgeProps } from '../../lib/types/components';
|
|
5
5
|
import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
|
|
6
6
|
|
|
7
|
-
export const Badge: React.FC<BadgeProps> = ({
|
|
7
|
+
export const Badge: React.FC<BadgeProps> = memo(({
|
|
8
8
|
label,
|
|
9
9
|
variant = 'primary',
|
|
10
10
|
size = 'md',
|
|
@@ -53,7 +53,7 @@ export const Badge: React.FC<BadgeProps> = ({
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
return badgeElement;
|
|
56
|
-
};
|
|
56
|
+
});
|
|
57
57
|
|
|
58
58
|
Badge.displayName = 'Badge';
|
|
59
59
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { ReactNode } from 'react';
|
|
1
|
+
import React, { ReactNode, memo } from 'react';
|
|
2
2
|
import { BREADCRUMB } from '../../lib/constants/components';
|
|
3
3
|
|
|
4
4
|
export interface BreadcrumbItem {
|
|
@@ -69,7 +69,7 @@ export interface BreadcrumbProps {
|
|
|
69
69
|
*/
|
|
70
70
|
style?: React.CSSProperties;
|
|
71
71
|
}
|
|
72
|
-
export const Breadcrumb: React.FC<BreadcrumbProps> = ({
|
|
72
|
+
export const Breadcrumb: React.FC<BreadcrumbProps> = memo(({
|
|
73
73
|
items,
|
|
74
74
|
divider,
|
|
75
75
|
className = '',
|
|
@@ -129,7 +129,7 @@ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
|
|
|
129
129
|
</ol>
|
|
130
130
|
</nav>
|
|
131
131
|
);
|
|
132
|
-
};
|
|
132
|
+
});
|
|
133
133
|
|
|
134
134
|
Breadcrumb.displayName = 'Breadcrumb';
|
|
135
135
|
|
|
@@ -10,6 +10,7 @@ export type ButtonAsProp = {
|
|
|
10
10
|
as?: ElementType;
|
|
11
11
|
to?: string;
|
|
12
12
|
href?: string;
|
|
13
|
+
LinkComponent?: React.ComponentType<any>;
|
|
13
14
|
[key: string]: any;
|
|
14
15
|
};
|
|
15
16
|
|
|
@@ -50,6 +51,7 @@ export const Button = React.memo(
|
|
|
50
51
|
ariaControls,
|
|
51
52
|
tabIndex,
|
|
52
53
|
style,
|
|
54
|
+
LinkComponent,
|
|
53
55
|
...props
|
|
54
56
|
},
|
|
55
57
|
ref
|
|
@@ -253,6 +255,39 @@ export const Button = React.memo(
|
|
|
253
255
|
type: undefined,
|
|
254
256
|
disabled: undefined,
|
|
255
257
|
};
|
|
258
|
+
|
|
259
|
+
// Use custom LinkComponent if provided (e.g., Next.js Link)
|
|
260
|
+
if (LinkComponent) {
|
|
261
|
+
const LinkComp = LinkComponent as React.ComponentType<any>;
|
|
262
|
+
const linkProps = {
|
|
263
|
+
...anchorButtonProps,
|
|
264
|
+
ref: ref as React.Ref<HTMLAnchorElement>,
|
|
265
|
+
href,
|
|
266
|
+
target,
|
|
267
|
+
rel: target === '_blank' ? 'noopener noreferrer' : undefined,
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
const linkElement = (
|
|
271
|
+
<LinkComp {...linkProps}>
|
|
272
|
+
{buttonContent}
|
|
273
|
+
</LinkComp>
|
|
274
|
+
);
|
|
275
|
+
|
|
276
|
+
if (glass) {
|
|
277
|
+
const defaultGlassProps = {
|
|
278
|
+
displacementScale: 20,
|
|
279
|
+
blurAmount: 0,
|
|
280
|
+
saturation: 200,
|
|
281
|
+
elasticity: 0,
|
|
282
|
+
};
|
|
283
|
+
const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
|
|
284
|
+
return <AtomixGlass {...glassProps}>{linkElement}</AtomixGlass>;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return linkElement;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// Fallback to regular anchor tag
|
|
256
291
|
const anchorElement = (
|
|
257
292
|
<a {...anchorButtonProps} ref={ref as React.Ref<HTMLAnchorElement>} href={href} target={target} rel={target === '_blank' ? 'noopener noreferrer' : undefined}>
|
|
258
293
|
{buttonContent}
|
|
@@ -300,4 +335,4 @@ Button.displayName = 'Button';
|
|
|
300
335
|
|
|
301
336
|
export type { ButtonProps };
|
|
302
337
|
|
|
303
|
-
export default Button;
|
|
338
|
+
export default Button;
|
|
@@ -24,7 +24,7 @@ export const ElevationCard: React.FC<ElevationCardProps> = ({
|
|
|
24
24
|
return (
|
|
25
25
|
<div
|
|
26
26
|
className={`${className} ${cardProps.className}`}
|
|
27
|
-
ref={cardProps.ref}
|
|
27
|
+
ref={cardProps.ref as React.LegacyRef<HTMLDivElement>}
|
|
28
28
|
style={style}
|
|
29
29
|
tabIndex={cardProps.tabIndex}
|
|
30
30
|
role={cardProps.role}
|
|
@@ -45,6 +45,22 @@ const AnimatedChart = memo(
|
|
|
45
45
|
}>
|
|
46
46
|
>([]);
|
|
47
47
|
|
|
48
|
+
// Animation time tracking - moved outside callback
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
const animateFrame = (timestamp: number) => {
|
|
51
|
+
timeRef.current = timestamp;
|
|
52
|
+
animationRef.current = requestAnimationFrame(animateFrame);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
animationRef.current = requestAnimationFrame(animateFrame);
|
|
56
|
+
|
|
57
|
+
return () => {
|
|
58
|
+
if (animationRef.current) {
|
|
59
|
+
cancelAnimationFrame(animationRef.current);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}, []);
|
|
63
|
+
|
|
48
64
|
const renderContent = useCallback(
|
|
49
65
|
({
|
|
50
66
|
scales,
|
|
@@ -57,21 +73,6 @@ const AnimatedChart = memo(
|
|
|
57
73
|
}: ChartRenderContentParams) => {
|
|
58
74
|
// Use toolbar state if available, fallback to config for backward compatibility
|
|
59
75
|
const shouldAnimate = toolbarState?.animationsEnabled ?? renderConfig?.animate ?? true;
|
|
60
|
-
// Animation time tracking
|
|
61
|
-
useEffect(() => {
|
|
62
|
-
const animateFrame = (timestamp: number) => {
|
|
63
|
-
timeRef.current = timestamp;
|
|
64
|
-
animationRef.current = requestAnimationFrame(animateFrame);
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
animationRef.current = requestAnimationFrame(animateFrame);
|
|
68
|
-
|
|
69
|
-
return () => {
|
|
70
|
-
if (animationRef.current) {
|
|
71
|
-
cancelAnimationFrame(animationRef.current);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
}, []);
|
|
75
76
|
|
|
76
77
|
if (!chartDatasets.length) return null;
|
|
77
78
|
|
|
@@ -117,7 +118,7 @@ const AnimatedChart = memo(
|
|
|
117
118
|
|
|
118
119
|
case 'area':
|
|
119
120
|
case 'line':
|
|
120
|
-
default:
|
|
121
|
+
default: {
|
|
121
122
|
// Create animated line/area
|
|
122
123
|
const points = dataset.data.map((point: any, pointIndex: number) => ({
|
|
123
124
|
x: padding + (pointIndex / (dataset.data.length - 1)) * chartWidth,
|
|
@@ -181,6 +182,7 @@ const AnimatedChart = memo(
|
|
|
181
182
|
});
|
|
182
183
|
}
|
|
183
184
|
break;
|
|
185
|
+
}
|
|
184
186
|
}
|
|
185
187
|
});
|
|
186
188
|
|
|
@@ -213,7 +215,7 @@ const AnimatedChart = memo(
|
|
|
213
215
|
return (
|
|
214
216
|
<BaseChart
|
|
215
217
|
ref={ref}
|
|
216
|
-
type="
|
|
218
|
+
type="line"
|
|
217
219
|
datasets={datasets}
|
|
218
220
|
config={config}
|
|
219
221
|
renderContent={renderContent}
|
|
@@ -100,7 +100,11 @@ const AreaChart = memo(
|
|
|
100
100
|
{showTooltips && hoveredPoint && (
|
|
101
101
|
<ChartTooltip
|
|
102
102
|
dataPoint={
|
|
103
|
-
renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex]
|
|
103
|
+
renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] ?? {
|
|
104
|
+
label: '',
|
|
105
|
+
value: 0,
|
|
106
|
+
color: '',
|
|
107
|
+
}
|
|
104
108
|
}
|
|
105
109
|
datasetLabel={renderedDatasets[hoveredPoint.datasetIndex]?.label}
|
|
106
110
|
datasetColor={
|
|
@@ -58,6 +58,7 @@ const BarChart = memo(
|
|
|
58
58
|
<>
|
|
59
59
|
{barDimensions.map((bar, index) => {
|
|
60
60
|
const dataset = renderedDatasets[bar.datasetIndex];
|
|
61
|
+
if (!dataset) return null;
|
|
61
62
|
const point = dataset.data?.[bar.pointIndex];
|
|
62
63
|
const color = dataset.color || colors[bar.datasetIndex];
|
|
63
64
|
const isHovered =
|
|
@@ -8,7 +8,7 @@ export interface BubbleDataPoint {
|
|
|
8
8
|
x: number;
|
|
9
9
|
y: number;
|
|
10
10
|
size: number;
|
|
11
|
-
value
|
|
11
|
+
value: number;
|
|
12
12
|
color?: string;
|
|
13
13
|
metadata?: Record<string, any>;
|
|
14
14
|
}
|
|
@@ -109,7 +109,7 @@ const BubbleChart = memo(
|
|
|
109
109
|
hoveredPoint,
|
|
110
110
|
toolbarState,
|
|
111
111
|
config: renderConfig,
|
|
112
|
-
}:
|
|
112
|
+
}: any) => {
|
|
113
113
|
if (!bubbleData.length) return null;
|
|
114
114
|
|
|
115
115
|
// Use toolbar state if available, fallback to config for backward compatibility
|
|
@@ -197,9 +197,10 @@ const BubbleChart = memo(
|
|
|
197
197
|
{bubbles}
|
|
198
198
|
{showTooltips &&
|
|
199
199
|
hoveredPoint &&
|
|
200
|
-
hoveredPoint.pointIndex < bubbleData.length &&
|
|
200
|
+
hoveredPoint.pointIndex < bubbleData.length &&
|
|
201
|
+
bubbleData[hoveredPoint.pointIndex] && (
|
|
201
202
|
<ChartTooltip
|
|
202
|
-
dataPoint={bubbleData[hoveredPoint.pointIndex]}
|
|
203
|
+
dataPoint={bubbleData[hoveredPoint.pointIndex]!}
|
|
203
204
|
datasetLabel="Bubbles"
|
|
204
205
|
datasetColor={
|
|
205
206
|
bubbleData[hoveredPoint.pointIndex]?.color ||
|
|
@@ -220,7 +221,7 @@ const BubbleChart = memo(
|
|
|
220
221
|
<BaseChart
|
|
221
222
|
ref={ref}
|
|
222
223
|
type="bubble"
|
|
223
|
-
datasets={datasets}
|
|
224
|
+
datasets={datasets as any}
|
|
224
225
|
config={config}
|
|
225
226
|
renderContent={renderContent}
|
|
226
227
|
onDataPointClick={onDataPointClick}
|
|
@@ -281,7 +281,7 @@ const FunnelChart = memo(
|
|
|
281
281
|
<g>{elements}</g>
|
|
282
282
|
{showTooltips && hoveredPoint && funnelData[hoveredPoint.pointIndex] && (
|
|
283
283
|
<ChartTooltip
|
|
284
|
-
dataPoint={funnelData[hoveredPoint.pointIndex]}
|
|
284
|
+
dataPoint={funnelData[hoveredPoint.pointIndex]!}
|
|
285
285
|
datasetLabel="Funnel Data"
|
|
286
286
|
datasetColor={funnelData[hoveredPoint.pointIndex]?.color || colors[hoveredPoint.pointIndex % colors.length]}
|
|
287
287
|
position={{
|
|
@@ -97,6 +97,7 @@ const RadarChart = memo(
|
|
|
97
97
|
const radius = Math.min(centerX, centerY) * 0.8;
|
|
98
98
|
|
|
99
99
|
const firstDataset = renderedDatasets[0];
|
|
100
|
+
if (!firstDataset) return null;
|
|
100
101
|
const dataPoints = firstDataset.data || [];
|
|
101
102
|
const angleStep = (2 * Math.PI) / dataPoints.length;
|
|
102
103
|
|
|
@@ -195,24 +196,28 @@ const RadarChart = memo(
|
|
|
195
196
|
points.push({ x, y, value, point: dataset.data[i] });
|
|
196
197
|
}
|
|
197
198
|
|
|
198
|
-
if (points.length === 0) return null;
|
|
199
|
+
if (points.length === 0 || !points[0]) return null;
|
|
199
200
|
|
|
200
201
|
// Generate path
|
|
201
202
|
let path = '';
|
|
202
203
|
if (smooth && points.length > 2) {
|
|
203
204
|
// For smooth curves, we would implement a more complex algorithm
|
|
204
205
|
// For now, we'll just connect the points with straight lines
|
|
205
|
-
path = `M ${points[0]
|
|
206
|
+
path = `M ${points[0]!.x},${points[0]!.y}`;
|
|
206
207
|
for (let i = 1; i < points.length; i++) {
|
|
207
|
-
|
|
208
|
+
if (points[i]) {
|
|
209
|
+
path += ` L ${points[i]!.x},${points[i]!.y}`;
|
|
210
|
+
}
|
|
208
211
|
}
|
|
209
|
-
path += ` L ${points[0]
|
|
212
|
+
path += ` L ${points[0]!.x},${points[0]!.y} Z`;
|
|
210
213
|
} else {
|
|
211
|
-
path = `M ${points[0]
|
|
214
|
+
path = `M ${points[0]!.x},${points[0]!.y}`;
|
|
212
215
|
for (let i = 1; i < points.length; i++) {
|
|
213
|
-
|
|
216
|
+
if (points[i]) {
|
|
217
|
+
path += ` L ${points[i]!.x},${points[i]!.y}`;
|
|
218
|
+
}
|
|
214
219
|
}
|
|
215
|
-
path += ` L ${points[0]
|
|
220
|
+
path += ` L ${points[0]!.x},${points[0]!.y} Z`;
|
|
216
221
|
}
|
|
217
222
|
|
|
218
223
|
return (
|
|
@@ -246,9 +251,11 @@ const RadarChart = memo(
|
|
|
246
251
|
r={isHovered ? pointRadius * 1.5 : pointRadius}
|
|
247
252
|
fill={color}
|
|
248
253
|
className={`c-chart__radar-point ${isHovered ? 'c-chart__radar-point--hovered' : ''}`}
|
|
249
|
-
onClick={() =>
|
|
250
|
-
|
|
251
|
-
|
|
254
|
+
onClick={() => {
|
|
255
|
+
if (point.point) {
|
|
256
|
+
handlers.onDataPointClick?.(point.point, datasetIndex, pointIndex);
|
|
257
|
+
}
|
|
258
|
+
}}
|
|
252
259
|
onMouseEnter={e => {
|
|
253
260
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
254
261
|
handlers.onPointHover(
|
|
@@ -276,10 +283,10 @@ const RadarChart = memo(
|
|
|
276
283
|
{dataPaths}
|
|
277
284
|
{axisLabels}
|
|
278
285
|
</g>
|
|
279
|
-
{showTooltips && hoveredPoint && (
|
|
286
|
+
{showTooltips && hoveredPoint && renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] && (
|
|
280
287
|
<ChartTooltip
|
|
281
288
|
dataPoint={
|
|
282
|
-
renderedDatasets[hoveredPoint.datasetIndex]
|
|
289
|
+
renderedDatasets[hoveredPoint.datasetIndex]!.data![hoveredPoint.pointIndex]!
|
|
283
290
|
}
|
|
284
291
|
datasetLabel={renderedDatasets[hoveredPoint.datasetIndex]?.label}
|
|
285
292
|
datasetColor={
|
|
@@ -60,7 +60,7 @@ const ScatterChart = memo(
|
|
|
60
60
|
renderedDatasets.forEach((dataset: ChartDataset, datasetIndex: number) => {
|
|
61
61
|
const color = dataset.color || colors[datasetIndex % colors.length];
|
|
62
62
|
|
|
63
|
-
dataset.data?.forEach((point:
|
|
63
|
+
dataset.data?.forEach((point: any, pointIndex: number) => {
|
|
64
64
|
const x =
|
|
65
65
|
point.x !== undefined
|
|
66
66
|
? scales.padding.left + (point.x / 100) * scales.innerWidth
|
|
@@ -125,10 +125,10 @@ const ScatterChart = memo(
|
|
|
125
125
|
return (
|
|
126
126
|
<>
|
|
127
127
|
{points}
|
|
128
|
-
{showTooltips && hoveredPoint && (
|
|
128
|
+
{showTooltips && hoveredPoint && renderedDatasets[hoveredPoint.datasetIndex]?.data?.[hoveredPoint.pointIndex] && (
|
|
129
129
|
<ChartTooltip
|
|
130
130
|
dataPoint={
|
|
131
|
-
renderedDatasets[hoveredPoint.datasetIndex]
|
|
131
|
+
renderedDatasets[hoveredPoint.datasetIndex]!.data![hoveredPoint.pointIndex]!
|
|
132
132
|
}
|
|
133
133
|
datasetLabel={renderedDatasets[hoveredPoint.datasetIndex]?.label}
|
|
134
134
|
datasetColor={
|
|
@@ -197,7 +197,7 @@ const TreemapChart = memo(
|
|
|
197
197
|
switch (scheme) {
|
|
198
198
|
case 'category':
|
|
199
199
|
return colors[index % colors.length];
|
|
200
|
-
case 'depth':
|
|
200
|
+
case 'depth': {
|
|
201
201
|
const depthColors = [
|
|
202
202
|
'var(--atomix-blue-9)',
|
|
203
203
|
'var(--atomix-blue-6)',
|
|
@@ -206,6 +206,7 @@ const TreemapChart = memo(
|
|
|
206
206
|
'var(--atomix-blue-2)',
|
|
207
207
|
];
|
|
208
208
|
return depthColors[Math.min(depth, depthColors.length - 1)];
|
|
209
|
+
}
|
|
209
210
|
case 'value':
|
|
210
211
|
if (data.length > 0) {
|
|
211
212
|
const maxValue = Math.max(...data.map(d => d.value));
|
|
@@ -289,9 +289,19 @@ export interface ChartProps extends BaseComponentProps {
|
|
|
289
289
|
|
|
290
290
|
/**
|
|
291
291
|
* Chart scales interface
|
|
292
|
-
* Imported from useChart for consistency
|
|
293
292
|
*/
|
|
294
|
-
export
|
|
293
|
+
export interface ChartScales {
|
|
294
|
+
xScale: (index: number, dataLength?: number) => number;
|
|
295
|
+
yScale: (value: number) => number;
|
|
296
|
+
minValue: number;
|
|
297
|
+
maxValue: number;
|
|
298
|
+
valueRange: number;
|
|
299
|
+
innerWidth: number;
|
|
300
|
+
innerHeight: number;
|
|
301
|
+
width: number;
|
|
302
|
+
height: number;
|
|
303
|
+
padding: { top: number; right: number; bottom: number; left: number };
|
|
304
|
+
}
|
|
295
305
|
|
|
296
306
|
/**
|
|
297
307
|
* Chart interaction state
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* @returns Color string
|
|
6
6
|
*/
|
|
7
7
|
export const getColorFromScheme = (colorScheme: string[], index: number): string => {
|
|
8
|
-
|
|
8
|
+
const color = colorScheme[index % colorScheme.length];
|
|
9
|
+
return color || colorScheme[0] || '#000000';
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -23,12 +24,12 @@ export const getColorFromValue = (
|
|
|
23
24
|
colorScheme: string[]
|
|
24
25
|
): string => {
|
|
25
26
|
if (minValue === maxValue) {
|
|
26
|
-
return colorScheme[0];
|
|
27
|
+
return colorScheme[0] || '#000000';
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
const normalized = (value - minValue) / (maxValue - minValue);
|
|
30
31
|
const index = Math.floor(normalized * (colorScheme.length - 1));
|
|
31
|
-
return colorScheme[index];
|
|
32
|
+
return colorScheme[index] || colorScheme[0] || '#000000';
|
|
32
33
|
};
|
|
33
34
|
|
|
34
35
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useRef } from 'react';
|
|
1
|
+
import React, { useRef, memo } from 'react';
|
|
2
2
|
import { DataTableProps } from '../../lib/types/components';
|
|
3
3
|
import { useDataTable } from '../../lib/composables/useDataTable';
|
|
4
4
|
import { DATA_TABLE_CLASSES } from '../../lib/constants/components';
|
|
@@ -19,7 +19,7 @@ import { Pagination } from '../Pagination/Pagination';
|
|
|
19
19
|
* />
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
-
export const DataTable: React.FC<DataTableProps> = ({
|
|
22
|
+
export const DataTable: React.FC<DataTableProps> = memo(({
|
|
23
23
|
data,
|
|
24
24
|
columns,
|
|
25
25
|
className,
|
|
@@ -205,7 +205,7 @@ export const DataTable: React.FC<DataTableProps> = ({
|
|
|
205
205
|
{renderPagination()}
|
|
206
206
|
</div>
|
|
207
207
|
);
|
|
208
|
-
};
|
|
208
|
+
});
|
|
209
209
|
|
|
210
210
|
export type { DataTableProps };
|
|
211
211
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useRef, useState, useCallback, createContext, useContext, useEffect } from 'react';
|
|
1
|
+
import React, { useRef, useState, useCallback, createContext, useContext, useEffect, memo } from 'react';
|
|
2
2
|
import { DROPDOWN } from '../../lib/constants/components';
|
|
3
3
|
import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
|
|
4
4
|
import type {
|
|
@@ -27,7 +27,7 @@ const DropdownContext = createContext<DropdownContextType>({
|
|
|
27
27
|
/**
|
|
28
28
|
* DropdownItem component for menu items
|
|
29
29
|
*/
|
|
30
|
-
export const DropdownItem: React.FC<DropdownItemProps> = ({
|
|
30
|
+
export const DropdownItem: React.FC<DropdownItemProps> = memo(({
|
|
31
31
|
children,
|
|
32
32
|
href,
|
|
33
33
|
active = false,
|
|
@@ -111,26 +111,26 @@ export const DropdownItem: React.FC<DropdownItemProps> = ({
|
|
|
111
111
|
</button>
|
|
112
112
|
</li>
|
|
113
113
|
);
|
|
114
|
-
};
|
|
114
|
+
});
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
117
|
* DropdownDivider component for separating groups of items
|
|
118
118
|
*/
|
|
119
|
-
export const DropdownDivider: React.FC<DropdownDividerProps> = ({ className = '' }) => {
|
|
119
|
+
export const DropdownDivider: React.FC<DropdownDividerProps> = memo(({ className = '' }) => {
|
|
120
120
|
return <li className={`c-dropdown__divider ${className}`} role="separator" />;
|
|
121
|
-
};
|
|
121
|
+
});
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
124
|
* DropdownHeader component for section headers
|
|
125
125
|
*/
|
|
126
|
-
export const DropdownHeader: React.FC<DropdownHeaderProps> = ({ children, className = '' }) => {
|
|
126
|
+
export const DropdownHeader: React.FC<DropdownHeaderProps> = memo(({ children, className = '' }) => {
|
|
127
127
|
return <li className={`c-dropdown__header ${className}`}>{children}</li>;
|
|
128
|
-
};
|
|
128
|
+
});
|
|
129
129
|
|
|
130
130
|
/**
|
|
131
131
|
* Dropdown component for creating dropdown menus
|
|
132
132
|
*/
|
|
133
|
-
export const Dropdown: React.FC<DropdownProps> = ({
|
|
133
|
+
export const Dropdown: React.FC<DropdownProps> = memo(({
|
|
134
134
|
children,
|
|
135
135
|
menu,
|
|
136
136
|
placement = 'bottom-start',
|
|
@@ -370,10 +370,13 @@ export const Dropdown: React.FC<DropdownProps> = ({
|
|
|
370
370
|
</div>
|
|
371
371
|
</div>
|
|
372
372
|
);
|
|
373
|
-
};
|
|
373
|
+
});
|
|
374
374
|
|
|
375
375
|
export type { DropdownProps, DropdownItemProps, DropdownDividerProps, DropdownHeaderProps };
|
|
376
376
|
|
|
377
377
|
Dropdown.displayName = 'Dropdown';
|
|
378
|
+
DropdownItem.displayName = 'DropdownItem';
|
|
379
|
+
DropdownDivider.displayName = 'DropdownDivider';
|
|
380
|
+
DropdownHeader.displayName = 'DropdownHeader';
|
|
378
381
|
|
|
379
382
|
export default Dropdown;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
|
-
import { FooterSectionProps } from '
|
|
3
|
-
import { GridCol } from '
|
|
4
|
-
import { useFooter } from '
|
|
2
|
+
import { FooterSectionProps } from '../../lib/types/components';
|
|
3
|
+
import { GridCol } from '../../layouts';
|
|
4
|
+
import { useFooter } from '../../lib/composables/useFooter';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* FooterSection component provides a section within the footer for organizing links and content.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { memo } from 'react';
|
|
2
2
|
import { CheckboxProps } from '../../lib/types/components';
|
|
3
3
|
import { useCheckbox } from '../../lib/composables/useCheckbox';
|
|
4
4
|
import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
|
|
@@ -6,7 +6,7 @@ import { AtomixGlass } from '../AtomixGlass/AtomixGlass';
|
|
|
6
6
|
/**
|
|
7
7
|
* Checkbox - A component for checkbox inputs
|
|
8
8
|
*/
|
|
9
|
-
export const Checkbox: React.FC<CheckboxProps> = ({
|
|
9
|
+
export const Checkbox: React.FC<CheckboxProps> = memo(({
|
|
10
10
|
label,
|
|
11
11
|
checked = false,
|
|
12
12
|
onChange,
|
|
@@ -81,7 +81,7 @@ export const Checkbox: React.FC<CheckboxProps> = ({
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
return checkboxContent;
|
|
84
|
-
};
|
|
84
|
+
});
|
|
85
85
|
|
|
86
86
|
export type { CheckboxProps };
|
|
87
87
|
|