@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
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Font Preloading Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for preloading fonts to improve performance
|
|
5
|
+
* and prevent Flash of Invisible Text (FOIT).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export interface FontPreloadConfig {
|
|
9
|
+
/**
|
|
10
|
+
* Font family name
|
|
11
|
+
*/
|
|
12
|
+
family: string;
|
|
13
|
+
/**
|
|
14
|
+
* Font file path (relative to public/assets/fonts or absolute URL)
|
|
15
|
+
*/
|
|
16
|
+
path: string;
|
|
17
|
+
/**
|
|
18
|
+
* Font weight
|
|
19
|
+
*/
|
|
20
|
+
weight?: string | number;
|
|
21
|
+
/**
|
|
22
|
+
* Font style
|
|
23
|
+
*/
|
|
24
|
+
style?: 'normal' | 'italic';
|
|
25
|
+
/**
|
|
26
|
+
* Font format (woff2 is preferred)
|
|
27
|
+
*/
|
|
28
|
+
format?: 'woff2' | 'woff';
|
|
29
|
+
/**
|
|
30
|
+
* Cross-origin setting
|
|
31
|
+
*/
|
|
32
|
+
crossorigin?: 'anonymous' | 'use-credentials';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Creates a preload link element for a font
|
|
37
|
+
*
|
|
38
|
+
* @param config - Font preload configuration
|
|
39
|
+
* @returns HTML link element for preloading
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* const preloadLink = createFontPreloadLink({
|
|
44
|
+
* family: 'Nunito Sans',
|
|
45
|
+
* path: '/fonts/nunito-sans/nunito-sans-regular.woff2',
|
|
46
|
+
* weight: 400
|
|
47
|
+
* });
|
|
48
|
+
* document.head.appendChild(preloadLink);
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export function createFontPreloadLink(config: FontPreloadConfig): HTMLLinkElement {
|
|
52
|
+
const {
|
|
53
|
+
path,
|
|
54
|
+
format = 'woff2',
|
|
55
|
+
crossorigin = 'anonymous',
|
|
56
|
+
} = config;
|
|
57
|
+
|
|
58
|
+
const link = document.createElement('link');
|
|
59
|
+
link.rel = 'preload';
|
|
60
|
+
link.as = 'font';
|
|
61
|
+
link.href = path;
|
|
62
|
+
link.type = `font/${format}`;
|
|
63
|
+
link.crossOrigin = crossorigin;
|
|
64
|
+
|
|
65
|
+
return link;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Preloads multiple fonts
|
|
70
|
+
*
|
|
71
|
+
* @param fonts - Array of font configurations to preload
|
|
72
|
+
* @returns Array of created link elements
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```tsx
|
|
76
|
+
* const links = preloadFonts([
|
|
77
|
+
* { family: 'Nunito Sans', path: '/fonts/nunito-sans/nunito-sans-regular.woff2', weight: 400 },
|
|
78
|
+
* { family: 'Nunito Sans', path: '/fonts/nunito-sans/nunito-sans-bold.woff2', weight: 700 },
|
|
79
|
+
* ]);
|
|
80
|
+
* links.forEach(link => document.head.appendChild(link));
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export function preloadFonts(fonts: FontPreloadConfig[]): HTMLLinkElement[] {
|
|
84
|
+
return fonts.map(createFontPreloadLink);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Generates preload link HTML tags as strings
|
|
89
|
+
* Useful for server-side rendering or static HTML generation
|
|
90
|
+
*
|
|
91
|
+
* @param fonts - Array of font configurations
|
|
92
|
+
* @returns Array of HTML string representations
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```tsx
|
|
96
|
+
* const htmlTags = generateFontPreloadTags([
|
|
97
|
+
* { family: 'Nunito Sans', path: '/fonts/nunito-sans/nunito-sans-regular.woff2' },
|
|
98
|
+
* ]);
|
|
99
|
+
* // Returns: ['<link rel="preload" as="font" href="/fonts/..." type="font/woff2" crossorigin="anonymous">']
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export function generateFontPreloadTags(fonts: FontPreloadConfig[]): string[] {
|
|
103
|
+
return fonts.map((config) => {
|
|
104
|
+
const {
|
|
105
|
+
path,
|
|
106
|
+
format = 'woff2',
|
|
107
|
+
crossorigin = 'anonymous',
|
|
108
|
+
} = config;
|
|
109
|
+
|
|
110
|
+
return `<link rel="preload" as="font" href="${path}" type="font/${format}" crossorigin="${crossorigin}">`;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Default font configurations for Atomix Design System
|
|
116
|
+
* These can be used as a starting point for font preloading
|
|
117
|
+
*/
|
|
118
|
+
export const DEFAULT_ATOMIX_FONTS: FontPreloadConfig[] = [
|
|
119
|
+
{
|
|
120
|
+
family: 'Nunito Sans',
|
|
121
|
+
path: '/fonts/nunito-sans/nunito-sans-regular.woff2',
|
|
122
|
+
weight: 400,
|
|
123
|
+
style: 'normal',
|
|
124
|
+
format: 'woff2',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
family: 'Nunito Sans',
|
|
128
|
+
path: '/fonts/nunito-sans/nunito-sans-bold.woff2',
|
|
129
|
+
weight: 700,
|
|
130
|
+
style: 'normal',
|
|
131
|
+
format: 'woff2',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
family: 'Nunito Sans',
|
|
135
|
+
path: '/fonts/nunito-sans/nunito-sans-italic.woff2',
|
|
136
|
+
weight: 400,
|
|
137
|
+
style: 'italic',
|
|
138
|
+
format: 'woff2',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
family: 'Nunito Sans',
|
|
142
|
+
path: '/fonts/nunito-sans/nunito-sans-bold-italic.woff2',
|
|
143
|
+
weight: 700,
|
|
144
|
+
style: 'italic',
|
|
145
|
+
format: 'woff2',
|
|
146
|
+
},
|
|
147
|
+
];
|
|
148
|
+
|
package/src/lib/utils/index.ts
CHANGED
|
@@ -19,3 +19,14 @@ export {
|
|
|
19
19
|
export type {
|
|
20
20
|
MergePropsOptions,
|
|
21
21
|
} from './componentUtils';
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
createFontPreloadLink,
|
|
25
|
+
preloadFonts,
|
|
26
|
+
generateFontPreloadTags,
|
|
27
|
+
DEFAULT_ATOMIX_FONTS,
|
|
28
|
+
} from './fontPreloader';
|
|
29
|
+
|
|
30
|
+
export type {
|
|
31
|
+
FontPreloadConfig,
|
|
32
|
+
} from './fontPreloader';
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Monitoring Utilities
|
|
3
|
+
*
|
|
4
|
+
* Detects memory leaks and tracks component lifecycle memory usage
|
|
5
|
+
* Only available in development mode
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Memory snapshot for comparison
|
|
10
|
+
*/
|
|
11
|
+
export interface MemorySnapshot {
|
|
12
|
+
/**
|
|
13
|
+
* Used JavaScript heap size in bytes
|
|
14
|
+
*/
|
|
15
|
+
usedJSHeapSize: number;
|
|
16
|
+
/**
|
|
17
|
+
* Total JavaScript heap size in bytes
|
|
18
|
+
*/
|
|
19
|
+
totalJSHeapSize: number;
|
|
20
|
+
/**
|
|
21
|
+
* JavaScript heap size limit in bytes
|
|
22
|
+
*/
|
|
23
|
+
jsHeapSizeLimit: number;
|
|
24
|
+
/**
|
|
25
|
+
* Timestamp of the snapshot
|
|
26
|
+
*/
|
|
27
|
+
timestamp: number;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Check if memory monitoring is available
|
|
32
|
+
*/
|
|
33
|
+
export function isMemoryMonitoringAvailable(): boolean {
|
|
34
|
+
return (
|
|
35
|
+
typeof performance !== 'undefined' &&
|
|
36
|
+
'memory' in performance &&
|
|
37
|
+
process.env.NODE_ENV === 'development'
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Get current memory usage snapshot
|
|
43
|
+
*
|
|
44
|
+
* @returns Memory snapshot or null if not available
|
|
45
|
+
*/
|
|
46
|
+
export function getMemorySnapshot(): MemorySnapshot | null {
|
|
47
|
+
if (!isMemoryMonitoringAvailable()) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const memory = (performance as any).memory;
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
usedJSHeapSize: memory.usedJSHeapSize,
|
|
55
|
+
totalJSHeapSize: memory.totalJSHeapSize,
|
|
56
|
+
jsHeapSizeLimit: memory.jsHeapSizeLimit,
|
|
57
|
+
timestamp: performance.now(),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Format bytes to human-readable string
|
|
63
|
+
*
|
|
64
|
+
* @param bytes - Number of bytes
|
|
65
|
+
* @returns Formatted string (e.g., "1.5 MB")
|
|
66
|
+
*/
|
|
67
|
+
export function formatBytes(bytes: number): string {
|
|
68
|
+
if (bytes === 0) return '0 Bytes';
|
|
69
|
+
|
|
70
|
+
const k = 1024;
|
|
71
|
+
const sizes = ['Bytes', 'KB', 'MB', 'GB'];
|
|
72
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
73
|
+
|
|
74
|
+
return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Compare two memory snapshots and detect potential leaks
|
|
79
|
+
*
|
|
80
|
+
* @param before - Snapshot before operation
|
|
81
|
+
* @param after - Snapshot after operation
|
|
82
|
+
* @param threshold - Threshold in bytes to consider a leak (default: 5MB)
|
|
83
|
+
* @returns Object with leak detection results
|
|
84
|
+
*/
|
|
85
|
+
export function detectMemoryLeak(
|
|
86
|
+
before: MemorySnapshot | null,
|
|
87
|
+
after: MemorySnapshot | null,
|
|
88
|
+
threshold: number = 5 * 1024 * 1024 // 5MB
|
|
89
|
+
): {
|
|
90
|
+
hasLeak: boolean;
|
|
91
|
+
memoryIncrease: number;
|
|
92
|
+
formattedIncrease: string;
|
|
93
|
+
percentageIncrease: number;
|
|
94
|
+
} {
|
|
95
|
+
if (!before || !after) {
|
|
96
|
+
return {
|
|
97
|
+
hasLeak: false,
|
|
98
|
+
memoryIncrease: 0,
|
|
99
|
+
formattedIncrease: '0 Bytes',
|
|
100
|
+
percentageIncrease: 0,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const memoryIncrease = after.usedJSHeapSize - before.usedJSHeapSize;
|
|
105
|
+
const percentageIncrease = (memoryIncrease / before.usedJSHeapSize) * 100;
|
|
106
|
+
|
|
107
|
+
return {
|
|
108
|
+
hasLeak: memoryIncrease > threshold,
|
|
109
|
+
memoryIncrease,
|
|
110
|
+
formattedIncrease: formatBytes(memoryIncrease),
|
|
111
|
+
percentageIncrease,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Monitor memory usage over time
|
|
117
|
+
*
|
|
118
|
+
* @param interval - Interval in milliseconds to check memory
|
|
119
|
+
* @param callback - Callback function called with each snapshot
|
|
120
|
+
* @returns Function to stop monitoring
|
|
121
|
+
*/
|
|
122
|
+
export function monitorMemoryUsage(
|
|
123
|
+
interval: number = 5000,
|
|
124
|
+
callback?: (snapshot: MemorySnapshot) => void
|
|
125
|
+
): () => void {
|
|
126
|
+
if (!isMemoryMonitoringAvailable()) {
|
|
127
|
+
console.warn('[Memory Monitor] Memory monitoring is not available');
|
|
128
|
+
return () => {};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const checkMemory = () => {
|
|
132
|
+
const snapshot = getMemorySnapshot();
|
|
133
|
+
if (snapshot) {
|
|
134
|
+
if (callback) {
|
|
135
|
+
callback(snapshot);
|
|
136
|
+
} else if (process.env.NODE_ENV === 'development') {
|
|
137
|
+
console.log('[Memory Monitor]', {
|
|
138
|
+
used: formatBytes(snapshot.usedJSHeapSize),
|
|
139
|
+
total: formatBytes(snapshot.totalJSHeapSize),
|
|
140
|
+
limit: formatBytes(snapshot.jsHeapSizeLimit),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
const intervalId = setInterval(checkMemory, interval);
|
|
147
|
+
|
|
148
|
+
// Initial check
|
|
149
|
+
checkMemory();
|
|
150
|
+
|
|
151
|
+
// Return cleanup function
|
|
152
|
+
return () => {
|
|
153
|
+
clearInterval(intervalId);
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Track component lifecycle memory usage
|
|
159
|
+
*
|
|
160
|
+
* @param componentName - Name of the component
|
|
161
|
+
* @returns Object with start and end tracking functions
|
|
162
|
+
*/
|
|
163
|
+
export function trackComponentMemory(componentName: string) {
|
|
164
|
+
const before = getMemorySnapshot();
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
/**
|
|
168
|
+
* Get memory snapshot at component mount
|
|
169
|
+
*/
|
|
170
|
+
getBeforeSnapshot: () => before,
|
|
171
|
+
/**
|
|
172
|
+
* Get memory snapshot at component unmount and detect leaks
|
|
173
|
+
*/
|
|
174
|
+
getAfterSnapshot: () => {
|
|
175
|
+
const after = getMemorySnapshot();
|
|
176
|
+
if (before && after) {
|
|
177
|
+
const leakInfo = detectMemoryLeak(before, after);
|
|
178
|
+
if (leakInfo.hasLeak && process.env.NODE_ENV === 'development') {
|
|
179
|
+
console.warn(
|
|
180
|
+
`[Memory Monitor] Potential memory leak detected in ${componentName}:`,
|
|
181
|
+
leakInfo
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return after;
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
@@ -3,15 +3,12 @@ $assets-fonts-path: '../assets/fonts/' !default;
|
|
|
3
3
|
@mixin font-face($name, $foldername, $filename, $weight: normal, $style: normal) {
|
|
4
4
|
@font-face {
|
|
5
5
|
font-family: $name;
|
|
6
|
-
src: url('#{$assets-fonts-path}/#{$foldername}/#{$filename}.eot');
|
|
7
6
|
src:
|
|
8
|
-
url('#{$assets-fonts-path}/#{$foldername}/#{$filename}.eot?#iefix')
|
|
9
|
-
format('embedded-opentype'),
|
|
10
7
|
url('#{$assets-fonts-path}/#{$foldername}/#{$filename}.woff2') format('woff2'),
|
|
11
|
-
url('#{$assets-fonts-path}/#{$foldername}/#{$filename}.woff') format('woff')
|
|
12
|
-
url('#{$assets-fonts-path}/#{$foldername}/#{$filename}.ttf') format('truetype');
|
|
8
|
+
url('#{$assets-fonts-path}/#{$foldername}/#{$filename}.woff') format('woff');
|
|
13
9
|
font-weight: $weight;
|
|
14
10
|
font-style: $style;
|
|
11
|
+
font-display: swap;
|
|
15
12
|
text-rendering: optimizeLegibility;
|
|
16
13
|
}
|
|
17
14
|
}
|
|
@@ -24,7 +24,7 @@ $navbar-brand-font-weight: $font-weight-bold !default;
|
|
|
24
24
|
$navbar-brand-color: var(--#{$prefix}body-color) !default;
|
|
25
25
|
|
|
26
26
|
// Mobile toggler
|
|
27
|
-
$navbar-toggler-size:
|
|
27
|
+
$navbar-toggler-size: 2rem !default;
|
|
28
28
|
$navbar-toggler-color: var(--#{$prefix}body-color) !default;
|
|
29
29
|
$navbar-toggler-bg: transparent !default;
|
|
30
30
|
$navbar-toggler-border: 0 !default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* AUTO-GENERATED - DO NOT EDIT MANUALLY */
|
|
2
|
+
/* Generated on: 2025-12-23T09:44:24.463Z */
|
|
3
|
+
/* This file is generated from atomix.config.ts */
|
|
4
|
+
/* Edit atomix.config.ts and run 'npm run sync:config' to regenerate */
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
--atomix-primary: #3b82f6;
|
|
8
|
+
--atomix-primary-1: #d8e6fd;
|
|
9
|
+
--atomix-primary-10: #183462;
|
|
10
|
+
--atomix-primary-2: #b8d2fc;
|
|
11
|
+
--atomix-primary-3: #99befa;
|
|
12
|
+
--atomix-primary-4: #7aaaf9;
|
|
13
|
+
--atomix-primary-5: #5a96f7;
|
|
14
|
+
--atomix-primary-6: #3b82f6;
|
|
15
|
+
--atomix-primary-7: #326fd1;
|
|
16
|
+
--atomix-primary-8: #295bac;
|
|
17
|
+
--atomix-primary-9: #204887;
|
|
18
|
+
--atomix-primary-bg-subtle: rgba(59, 130, 246, 0.1);
|
|
19
|
+
--atomix-primary-border-subtle: rgba(59, 130, 246, 0.2);
|
|
20
|
+
--atomix-primary-dark: #204887;
|
|
21
|
+
--atomix-primary-hover: #326fd1;
|
|
22
|
+
--atomix-primary-light: #99befa;
|
|
23
|
+
--atomix-primary-main: #3b82f6;
|
|
24
|
+
--atomix-primary-rgb: 59, 130, 246;
|
|
25
|
+
--atomix-primary-text-emphasis: #5895f7;
|
|
26
|
+
}
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
&__toggler {
|
|
75
|
+
position: relative;
|
|
75
76
|
display: none;
|
|
76
77
|
align-items: center;
|
|
77
78
|
justify-content: center;
|
|
@@ -99,17 +100,13 @@
|
|
|
99
100
|
|
|
100
101
|
&-icon {
|
|
101
102
|
position: relative;
|
|
102
|
-
display: inline-block;
|
|
103
|
-
width: 1.5em;
|
|
104
|
-
height: 1.5em;
|
|
105
|
-
vertical-align: middle;
|
|
106
103
|
|
|
107
104
|
&::before,
|
|
108
105
|
&::after,
|
|
109
106
|
& {
|
|
110
107
|
position: absolute;
|
|
111
108
|
height: 2px;
|
|
112
|
-
width:
|
|
109
|
+
width: var(--#{$prefix}navbar-toggler-size);
|
|
113
110
|
background-color: var(--#{$prefix}navbar-toggler-color);
|
|
114
111
|
border-radius: 1px;
|
|
115
112
|
transition: transform 0.15s ease;
|
|
@@ -228,6 +225,10 @@
|
|
|
228
225
|
#{$root}__collapse {
|
|
229
226
|
display: flex !important;
|
|
230
227
|
}
|
|
228
|
+
|
|
229
|
+
#{$root}__toggler {
|
|
230
|
+
display: none !important;
|
|
231
|
+
}
|
|
231
232
|
}
|
|
232
233
|
}
|
|
233
234
|
|
package/src/themes/README.md
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
# Atomix Design System Themes
|
|
2
1
|
|
|
3
2
|
# Atomix Design System Themes
|
|
4
3
|
|
|
5
|
-
This guide documents how to build SCSS-based themes for the Atomix Design System
|
|
4
|
+
This guide documents how to build SCSS-based themes for the Atomix Design System
|
|
6
5
|
|
|
7
6
|
## Theme Architecture
|
|
8
7
|
|
|
@@ -1,186 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Theme Configuration
|
|
3
3
|
*
|
|
4
|
-
* This file is auto-generated from
|
|
5
|
-
* DO NOT EDIT MANUALLY - Edit
|
|
4
|
+
* This file is auto-generated from atomix.config.ts
|
|
5
|
+
* DO NOT EDIT MANUALLY - Edit atomix.config.ts instead
|
|
6
6
|
* Run 'npm run sync:config' to regenerate
|
|
7
7
|
*
|
|
8
|
-
* Generated on: 2025-12-
|
|
8
|
+
* Generated on: 2025-12-23T09:44:24.454Z
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
export const themesConfig = {
|
|
12
|
+
// CSS variable prefix (from atomix.config.ts)
|
|
13
|
+
prefix: 'atomix',
|
|
14
|
+
|
|
12
15
|
// Theme metadata
|
|
13
|
-
metadata: {
|
|
14
|
-
shaj-default: {
|
|
15
|
-
name: "Shaj Default",
|
|
16
|
-
description: "The default theme for the Atomix Design System",
|
|
17
|
-
author: "Shohoj Dhara",
|
|
18
|
-
version: "1.0.0",
|
|
19
|
-
tags: [
|
|
20
|
-
"default",
|
|
21
|
-
"light"
|
|
22
|
-
],
|
|
23
|
-
supportsDarkMode: true,
|
|
24
|
-
status: "stable",
|
|
25
|
-
a11y: {
|
|
26
|
-
contrastTarget: 4.5,
|
|
27
|
-
modes: [
|
|
28
|
-
"light",
|
|
29
|
-
"dark"
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
color: "#3b82f6"
|
|
33
|
-
},
|
|
34
|
-
boomdevs: {
|
|
35
|
-
name: "BoomDevs",
|
|
36
|
-
description: "BoomDevs theme for the Atomix Design System",
|
|
37
|
-
author: "BoomDevs Team",
|
|
38
|
-
version: "1.0.0",
|
|
39
|
-
tags: [
|
|
40
|
-
"dark",
|
|
41
|
-
"modern"
|
|
42
|
-
],
|
|
43
|
-
supportsDarkMode: true,
|
|
44
|
-
status: "beta",
|
|
45
|
-
a11y: {
|
|
46
|
-
contrastTarget: 4.5,
|
|
47
|
-
modes: [
|
|
48
|
-
"light",
|
|
49
|
-
"dark"
|
|
50
|
-
]
|
|
51
|
-
},
|
|
52
|
-
color: "#8b5cf6"
|
|
53
|
-
},
|
|
54
|
-
esrar: {
|
|
55
|
-
name: "Esrar",
|
|
56
|
-
description: "Esrar theme for the Atomix Design System",
|
|
57
|
-
author: "Esrar Team",
|
|
58
|
-
version: "1.0.0",
|
|
59
|
-
tags: [
|
|
60
|
-
"light",
|
|
61
|
-
"minimal"
|
|
62
|
-
],
|
|
63
|
-
supportsDarkMode: true,
|
|
64
|
-
status: "beta",
|
|
65
|
-
a11y: {
|
|
66
|
-
contrastTarget: 4.5,
|
|
67
|
-
modes: [
|
|
68
|
-
"light",
|
|
69
|
-
"dark"
|
|
70
|
-
]
|
|
71
|
-
},
|
|
72
|
-
color: "#10b981"
|
|
73
|
-
},
|
|
74
|
-
mashroom: {
|
|
75
|
-
name: "Mashroom",
|
|
76
|
-
description: "Mashroom theme for the Atomix Design System",
|
|
77
|
-
author: "Mashroom Team",
|
|
78
|
-
version: "1.0.0",
|
|
79
|
-
tags: [
|
|
80
|
-
"dark",
|
|
81
|
-
"contrast"
|
|
82
|
-
],
|
|
83
|
-
supportsDarkMode: true,
|
|
84
|
-
status: "beta",
|
|
85
|
-
a11y: {
|
|
86
|
-
contrastTarget: 4.5,
|
|
87
|
-
modes: [
|
|
88
|
-
"light",
|
|
89
|
-
"dark"
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
|
-
color: "#f59e0b"
|
|
93
|
-
},
|
|
94
|
-
applemix: {
|
|
95
|
-
name: "Applemix",
|
|
96
|
-
description: "Apple Mac OS 2026 Liquid Glass inspired theme with morphism effects",
|
|
97
|
-
author: "Atomix Design System",
|
|
98
|
-
version: "1.0.0",
|
|
99
|
-
tags: [
|
|
100
|
-
"glass",
|
|
101
|
-
"apple",
|
|
102
|
-
"modern",
|
|
103
|
-
"liquid",
|
|
104
|
-
"morphism"
|
|
105
|
-
],
|
|
106
|
-
supportsDarkMode: true,
|
|
107
|
-
status: "experimental",
|
|
108
|
-
a11y: {
|
|
109
|
-
contrastTarget: 4.5,
|
|
110
|
-
modes: [
|
|
111
|
-
"light",
|
|
112
|
-
"dark"
|
|
113
|
-
]
|
|
114
|
-
},
|
|
115
|
-
color: "#f5f5f5",
|
|
116
|
-
features: [
|
|
117
|
-
"Liquid glass morphism effects",
|
|
118
|
-
"Apple-inspired color palette",
|
|
119
|
-
"Chromatic aberration effects",
|
|
120
|
-
"Smooth animations and transitions",
|
|
121
|
-
"AtomixGlass component integration",
|
|
122
|
-
"Comprehensive component overrides",
|
|
123
|
-
"Light and dark mode support"
|
|
124
|
-
]
|
|
125
|
-
},
|
|
126
|
-
flashtrade: {
|
|
127
|
-
name: "Flash Trade",
|
|
128
|
-
description: "Professional dark crypto perpetuals trading platform theme inspired by flash.trade",
|
|
129
|
-
author: "Atomix Design System",
|
|
130
|
-
version: "1.1.0",
|
|
131
|
-
tags: [
|
|
132
|
-
"dark",
|
|
133
|
-
"crypto",
|
|
134
|
-
"trading",
|
|
135
|
-
"glass",
|
|
136
|
-
"modern",
|
|
137
|
-
"decentralized",
|
|
138
|
-
"defi"
|
|
139
|
-
],
|
|
140
|
-
supportsDarkMode: true,
|
|
141
|
-
status: "stable",
|
|
142
|
-
a11y: {
|
|
143
|
-
contrastTarget: 4.5,
|
|
144
|
-
modes: [
|
|
145
|
-
"dark"
|
|
146
|
-
]
|
|
147
|
-
},
|
|
148
|
-
color: "#06b6d4",
|
|
149
|
-
features: [
|
|
150
|
-
"Ultra-dark trading interface aesthetic matching flash.trade",
|
|
151
|
-
"Bright cyan (#06b6d4) primary color for brand consistency",
|
|
152
|
-
"High contrast for financial data readability",
|
|
153
|
-
"Trading-focused color palette (green for long/profit, red for short/loss)",
|
|
154
|
-
"Glass morphism effects for modern UI depth",
|
|
155
|
-
"Optimized Inter typography for trading information",
|
|
156
|
-
"Fast animations for real-time data updates",
|
|
157
|
-
"Professional navbar with asset selector bar",
|
|
158
|
-
"Trading cards with hover effects and glass morphism",
|
|
159
|
-
"Comprehensive button styles for trading actions",
|
|
160
|
-
"Price change badges with glow effects",
|
|
161
|
-
"Responsive mobile-first design",
|
|
162
|
-
"AtomixGlass component integration"
|
|
163
|
-
]
|
|
164
|
-
}
|
|
165
|
-
},
|
|
16
|
+
metadata: {},
|
|
166
17
|
|
|
167
18
|
// Build configuration
|
|
168
19
|
build: {
|
|
169
20
|
output: {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
21
|
+
directory: 'dist/themes',
|
|
22
|
+
formats: {
|
|
23
|
+
expanded: '.css',
|
|
24
|
+
compressed: '.min.css'
|
|
25
|
+
}
|
|
175
26
|
},
|
|
176
27
|
sass: {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
28
|
+
style: 'expanded',
|
|
29
|
+
sourceMap: true,
|
|
30
|
+
loadPaths: [
|
|
31
|
+
'src'
|
|
32
|
+
]
|
|
182
33
|
}
|
|
183
|
-
},
|
|
34
|
+
},
|
|
184
35
|
|
|
185
36
|
// Export configuration for package.json
|
|
186
37
|
exports: {
|
|
@@ -191,28 +42,26 @@ export const themesConfig = {
|
|
|
191
42
|
// Theme integration settings
|
|
192
43
|
integration: {
|
|
193
44
|
cssVariables: {
|
|
194
|
-
|
|
45
|
+
colorMode: '--color-mode'
|
|
195
46
|
},
|
|
196
47
|
classNames: {
|
|
197
|
-
|
|
198
|
-
|
|
48
|
+
theme: 'data-theme',
|
|
49
|
+
colorMode: 'data-color-mode'
|
|
199
50
|
}
|
|
200
|
-
},
|
|
51
|
+
},
|
|
201
52
|
|
|
202
53
|
// Runtime theme loading configuration
|
|
203
54
|
runtime: {
|
|
204
|
-
basePath:
|
|
55
|
+
basePath: '/themes',
|
|
205
56
|
cdnPath: null,
|
|
206
|
-
preload: [
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
storageKey: "atomix-theme",
|
|
212
|
-
dataAttribute: "data-theme",
|
|
57
|
+
preload: [],
|
|
58
|
+
lazy: false,
|
|
59
|
+
defaultTheme: null,
|
|
60
|
+
storageKey: 'atomix-theme',
|
|
61
|
+
dataAttribute: 'data-atomix-theme',
|
|
213
62
|
enablePersistence: true,
|
|
214
|
-
useMinified:
|
|
215
|
-
},
|
|
63
|
+
useMinified: false
|
|
64
|
+
},
|
|
216
65
|
|
|
217
66
|
// Theme dependencies (if a theme requires another theme to be loaded)
|
|
218
67
|
dependencies: {},
|