@shohojdhara/atomix 0.3.14 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/build-tools/EXAMPLES.md +372 -0
- package/build-tools/README.md +242 -0
- package/build-tools/__tests__/error-handler.test.js +230 -0
- package/build-tools/__tests__/index.test.js +141 -0
- package/build-tools/__tests__/rollup-plugin.test.js +194 -0
- package/build-tools/__tests__/utils.test.js +161 -0
- package/build-tools/__tests__/vite-plugin.test.js +129 -0
- package/build-tools/__tests__/webpack-loader.test.js +190 -0
- package/build-tools/error-handler.js +308 -0
- package/build-tools/index.d.ts +44 -0
- package/build-tools/index.js +88 -0
- package/build-tools/package.json +50 -0
- package/build-tools/rollup-plugin.js +236 -0
- package/build-tools/types.d.ts +163 -0
- package/build-tools/utils.js +203 -0
- package/build-tools/vite-plugin.js +161 -0
- package/build-tools/webpack-loader.js +123 -0
- package/dist/atomix.css +21044 -2618
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +77 -3
- package/dist/atomix.min.css.map +1 -1
- package/dist/build-tools/EXAMPLES.md +372 -0
- package/dist/build-tools/README.md +242 -0
- package/dist/build-tools/__tests__/error-handler.test.js +230 -0
- package/dist/build-tools/__tests__/index.test.js +141 -0
- package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
- package/dist/build-tools/__tests__/utils.test.js +161 -0
- package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
- package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
- package/dist/build-tools/error-handler.js +308 -0
- package/dist/build-tools/index.d.ts +44 -0
- package/dist/build-tools/index.js +88 -0
- package/dist/build-tools/package.json +50 -0
- package/dist/build-tools/rollup-plugin.js +236 -0
- package/dist/build-tools/types.d.ts +163 -0
- package/dist/build-tools/utils.js +203 -0
- package/dist/build-tools/vite-plugin.js +161 -0
- package/dist/build-tools/webpack-loader.js +123 -0
- package/dist/charts.d.ts +1 -1
- package/dist/charts.js +86 -57
- package/dist/charts.js.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +136 -112
- package/dist/core.js.map +1 -1
- package/dist/forms.d.ts +2 -5
- package/dist/forms.js +140 -128
- package/dist/forms.js.map +1 -1
- package/dist/heavy.d.ts +1 -1
- package/dist/heavy.js +136 -112
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +152 -78
- package/dist/index.esm.js +346 -340
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +359 -353
- 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.js.map +1 -1
- package/dist/theme.d.ts +9 -9
- package/dist/theme.js.map +1 -1
- package/package.json +23 -8
- package/scripts/atomix-cli.js +170 -73
- package/scripts/cli/__tests__/README.md +81 -0
- package/scripts/cli/__tests__/basic.test.js +115 -0
- package/scripts/cli/__tests__/component-generator.test.js +332 -0
- package/scripts/cli/__tests__/integration.test.js +327 -0
- package/scripts/cli/__tests__/test-setup.js +133 -0
- package/scripts/cli/__tests__/token-manager.test.js +251 -0
- package/scripts/cli/__tests__/utils.test.js +161 -0
- package/scripts/cli/component-generator.js +253 -299
- package/scripts/cli/dependency-checker.js +355 -0
- package/scripts/cli/interactive-init.js +46 -5
- package/scripts/cli/template-manager.js +0 -2
- package/scripts/cli/templates/common-templates.js +636 -0
- package/scripts/cli/templates/composable-templates.js +148 -126
- package/scripts/cli/templates/index.js +23 -16
- package/scripts/cli/templates/project-templates.js +151 -23
- package/scripts/cli/templates/react-templates.js +280 -210
- package/scripts/cli/templates/scss-templates.js +90 -91
- package/scripts/cli/templates/testing-templates.js +206 -27
- package/scripts/cli/templates/testing-utils.js +278 -0
- package/scripts/cli/templates/types-templates.js +70 -56
- package/scripts/cli/theme-bridge.js +8 -2
- package/scripts/cli/token-manager.js +318 -206
- package/scripts/cli/utils.js +0 -1
- package/src/components/Accordion/Accordion.stories.tsx +358 -850
- package/src/components/Accordion/Accordion.test.tsx +70 -50
- package/src/components/Accordion/Accordion.tsx +99 -94
- package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
- package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
- package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
- package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
- package/src/components/AtomixGlass/glass-utils.ts +6 -5
- package/src/components/AtomixGlass/shader-utils.ts +133 -52
- package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +2957 -2853
- package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
- package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
- package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
- package/src/components/AtomixGlass/stories/Playground.stories.tsx +51 -36
- package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +2 -2
- package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
- package/src/components/Avatar/Avatar.stories.tsx +195 -0
- package/src/components/Avatar/Avatar.tsx +58 -56
- package/src/components/Badge/Badge.stories.tsx +122 -352
- package/src/components/Badge/Badge.test.tsx +41 -41
- package/src/components/Badge/Badge.tsx +64 -62
- package/src/components/Block/Block.stories.tsx +30 -11
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +142 -23
- package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
- package/src/components/Button/Button.stories.tsx +454 -1126
- package/src/components/Button/Button.test.tsx +123 -0
- package/src/components/Button/Button.tsx +88 -60
- package/src/components/Button/ButtonGroup.stories.tsx +376 -215
- package/src/components/Button/ButtonGroup.tsx +4 -15
- package/src/components/Callout/Callout.stories.tsx +316 -568
- package/src/components/Card/Card.stories.tsx +292 -81
- package/src/components/Card/Card.tsx +30 -14
- package/src/components/Chart/AreaChart.tsx +1 -1
- package/src/components/Chart/CandlestickChart.tsx +23 -16
- package/src/components/Chart/Chart.stories.tsx +153 -16
- package/src/components/Chart/Chart.tsx +40 -44
- package/src/components/Chart/ChartRenderer.tsx +39 -12
- package/src/components/Chart/ChartToolbar.tsx +21 -5
- package/src/components/Chart/DonutChart.tsx +1 -1
- package/src/components/Chart/FunnelChart.tsx +4 -1
- package/src/components/Chart/GaugeChart.tsx +3 -1
- package/src/components/Chart/HeatmapChart.tsx +50 -37
- package/src/components/Chart/LineChart.tsx +3 -2
- package/src/components/Chart/MultiAxisChart.tsx +24 -16
- package/src/components/Chart/RadarChart.tsx +19 -17
- package/src/components/Chart/ScatterChart.tsx +29 -21
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +152 -66
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
- package/src/components/Countdown/Countdown.stories.tsx +114 -7
- package/src/components/DataTable/DataTable.stories.tsx +349 -144
- package/src/components/DataTable/DataTable.test.tsx +26 -148
- package/src/components/DataTable/DataTable.tsx +485 -456
- package/src/components/DatePicker/DatePicker.stories.tsx +310 -1066
- package/src/components/DatePicker/DatePicker.tsx +31 -26
- package/src/components/Dropdown/Dropdown.stories.tsx +153 -36
- package/src/components/Dropdown/Dropdown.tsx +313 -299
- package/src/components/EdgePanel/EdgePanel.stories.tsx +221 -25
- package/src/components/EdgePanel/EdgePanel.tsx +1 -3
- package/src/components/Footer/Footer.stories.tsx +396 -327
- package/src/components/Footer/Footer.tsx +130 -128
- package/src/components/Footer/FooterLink.tsx +2 -2
- package/src/components/Form/Checkbox.stories.tsx +140 -6
- package/src/components/Form/Checkbox.test.tsx +63 -0
- package/src/components/Form/Checkbox.tsx +122 -78
- package/src/components/Form/Form.stories.tsx +110 -19
- package/src/components/Form/FormGroup.stories.tsx +127 -4
- package/src/components/Form/Input.stories.tsx +22 -39
- package/src/components/Form/Input.test.tsx +38 -44
- package/src/components/Form/Radio.stories.tsx +146 -17
- package/src/components/Form/Radio.tsx +68 -66
- package/src/components/Form/Select.stories.tsx +140 -8
- package/src/components/Form/Select.tsx +184 -182
- package/src/components/Form/Textarea.stories.tsx +149 -6
- package/src/components/Form/Textarea.test.tsx +27 -32
- package/src/components/Hero/Hero.stories.tsx +372 -38
- package/src/components/Hero/Hero.tsx +201 -55
- package/src/components/Icon/index.ts +7 -1
- package/src/components/List/List.stories.tsx +141 -3
- package/src/components/List/List.tsx +19 -23
- package/src/components/Modal/Modal.stories.tsx +183 -43
- package/src/components/Modal/Modal.tsx +130 -127
- package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
- package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
- package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
- package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
- package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
- package/src/components/Pagination/Pagination.stories.tsx +7 -4
- package/src/components/Pagination/Pagination.tsx +199 -202
- package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
- package/src/components/Popover/Popover.stories.tsx +354 -97
- package/src/components/Popover/Popover.tsx +41 -37
- package/src/components/Progress/Progress.stories.tsx +160 -7
- package/src/components/River/River.stories.tsx +3 -2
- package/src/components/SectionIntro/SectionIntro.stories.tsx +239 -47
- package/src/components/Slider/Slider.stories.tsx +12 -4
- package/src/components/Spinner/Spinner.stories.tsx +104 -8
- package/src/components/Spinner/Spinner.test.tsx +23 -23
- package/src/components/Spinner/Spinner.tsx +43 -46
- package/src/components/Steps/Steps.stories.tsx +173 -42
- package/src/components/Tabs/Tabs.stories.tsx +141 -12
- package/src/components/Tabs/Tabs.tsx +74 -72
- package/src/components/Testimonial/Testimonial.stories.tsx +120 -3
- package/src/components/Todo/Todo.stories.tsx +198 -9
- package/src/components/Toggle/Toggle.stories.tsx +137 -36
- package/src/components/Toggle/Toggle.test.tsx +65 -70
- package/src/components/Toggle/Toggle.tsx +4 -1
- package/src/components/Tooltip/Tooltip.stories.tsx +194 -100
- package/src/components/Tooltip/Tooltip.tsx +104 -106
- package/src/components/Upload/Upload.stories.tsx +241 -150
- package/src/components/Upload/Upload.tsx +287 -283
- package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
- package/src/components/index.ts +13 -2
- package/src/layouts/Grid/Grid.stories.tsx +9 -3
- package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
- package/src/lib/README.md +2 -2
- package/src/lib/__tests__/theme-tools.test.ts +219 -0
- package/src/lib/composables/index.ts +2 -2
- package/src/lib/composables/shared-mouse-tracker.ts +13 -14
- package/src/lib/composables/useAtomixGlass.ts +126 -97
- package/src/lib/composables/useChartExport.ts +3 -8
- package/src/lib/composables/useDataTable.ts +72 -43
- package/src/lib/composables/useHero.ts +58 -14
- package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
- package/src/lib/composables/useInput.ts +10 -8
- package/src/lib/composables/useSideMenu.ts +6 -5
- package/src/lib/composables/useTooltip.ts +1 -2
- package/src/lib/composables/useVideoPlayer.ts +44 -35
- package/src/lib/config/index.ts +154 -154
- package/src/lib/constants/components.ts +9 -32
- package/src/lib/constants/cssVariables.ts +29 -29
- package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
- package/src/lib/hooks/index.ts +1 -1
- package/src/lib/hooks/useComponentCustomization.ts +11 -17
- package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
- package/src/lib/patterns/__tests__/slots.test.ts +1 -1
- package/src/lib/patterns/index.ts +1 -1
- package/src/lib/patterns/slots.tsx +8 -13
- package/src/lib/storybook/InteractiveDemo.tsx +13 -18
- package/src/lib/storybook/PreviewContainer.tsx +1 -1
- package/src/lib/storybook/VariantsGrid.tsx +3 -7
- package/src/lib/storybook/index.ts +1 -1
- package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
- package/src/lib/theme/adapters/index.ts +3 -9
- package/src/lib/theme/adapters/themeAdapter.ts +41 -26
- package/src/lib/theme/config/index.ts +1 -1
- package/src/lib/theme/config/types.ts +2 -2
- package/src/lib/theme/config/validator.ts +10 -5
- package/src/lib/theme/constants/constants.ts +2 -2
- package/src/lib/theme/constants/index.ts +1 -2
- package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
- package/src/lib/theme/core/composeTheme.ts +32 -26
- package/src/lib/theme/core/createTheme.ts +1 -1
- package/src/lib/theme/core/createThemeObject.ts +308 -301
- package/src/lib/theme/core/index.ts +3 -3
- package/src/lib/theme/devtools/CLI.ts +107 -105
- package/src/lib/theme/devtools/Comparator.tsx +50 -32
- package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
- package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
- package/src/lib/theme/devtools/Inspector.tsx +75 -60
- package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
- package/src/lib/theme/devtools/Preview.tsx +150 -106
- package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
- package/src/lib/theme/devtools/index.ts +3 -9
- package/src/lib/theme/devtools/useHistory.ts +23 -21
- package/src/lib/theme/errors/errors.ts +12 -11
- package/src/lib/theme/errors/index.ts +2 -7
- package/src/lib/theme/generators/generateCSS.ts +9 -13
- package/src/lib/theme/generators/generateCSSNested.ts +1 -6
- package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
- package/src/lib/theme/generators/index.ts +1 -4
- package/src/lib/theme/i18n/index.ts +1 -1
- package/src/lib/theme/i18n/rtl.ts +13 -13
- package/src/lib/theme/index.ts +7 -16
- package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
- package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
- package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
- package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
- package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
- package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
- package/src/lib/theme/runtime/index.ts +2 -5
- package/src/lib/theme/runtime/useTheme.ts +18 -18
- package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
- package/src/lib/theme/test/testTheme.ts +15 -16
- package/src/lib/theme/tokens/index.ts +2 -7
- package/src/lib/theme/tokens/tokens.ts +25 -24
- package/src/lib/theme/types.ts +428 -411
- package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
- package/src/lib/theme/utils/componentTheming.ts +18 -18
- package/src/lib/theme/utils/domUtils.ts +277 -289
- package/src/lib/theme/utils/index.ts +1 -2
- package/src/lib/theme/utils/injectCSS.ts +10 -14
- package/src/lib/theme/utils/naming.ts +20 -16
- package/src/lib/theme/utils/themeHelpers.ts +10 -12
- package/src/lib/theme/utils/themeUtils.ts +85 -86
- package/src/lib/theme/utils/themeValidation.ts +82 -33
- package/src/lib/theme-tools.ts +8 -6
- package/src/lib/types/components.ts +172 -71
- package/src/lib/types/partProps.ts +1 -1
- package/src/lib/utils/__tests__/csv.test.ts +45 -0
- package/src/lib/utils/componentUtils.ts +8 -12
- package/src/lib/utils/csv.ts +19 -0
- package/src/lib/utils/dataTableExport.ts +2 -15
- package/src/lib/utils/fontPreloader.ts +10 -19
- package/src/lib/utils/icons.ts +4 -1
- package/src/lib/utils/index.ts +2 -6
- package/src/lib/utils/memoryMonitor.ts +10 -8
- package/src/lib/utils/themeNaming.ts +2 -2
- package/src/styles/01-settings/_index.scss +1 -1
- package/src/styles/01-settings/_settings.accordion.scss +28 -7
- package/src/styles/01-settings/_settings.colors.scss +11 -11
- package/src/styles/01-settings/_settings.design-tokens.scss +61 -50
- package/src/styles/01-settings/_settings.navbar.scss +1 -1
- package/src/styles/01-settings/_settings.spacing.scss +3 -4
- package/src/styles/01-settings/_settings.tooltip.scss +1 -1
- package/src/styles/01-settings/_settings.typography.scss +4 -4
- package/src/styles/02-tools/_tools.button.scss +51 -21
- package/src/styles/02-tools/_tools.utility-api.scss +38 -12
- package/src/styles/03-generic/_generic.root.scss +4 -3
- package/src/styles/06-components/_components.accordion.scss +56 -14
- package/src/styles/06-components/_components.atomix-glass.scss +13 -9
- package/src/styles/06-components/_components.button.scss +16 -4
- package/src/styles/06-components/_components.callout.scss +27 -21
- package/src/styles/06-components/_components.card.scss +5 -14
- package/src/styles/06-components/_components.chart.scss +22 -19
- package/src/styles/06-components/_components.checkbox.scss +25 -17
- package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
- package/src/styles/06-components/_components.edge-panel.scss +9 -2
- package/src/styles/06-components/_components.footer.scss +1 -1
- package/src/styles/06-components/_components.side-menu.scss +5 -5
- package/src/styles/06-components/_components.toggle.scss +18 -0
- package/src/styles/06-components/_index.scss +1 -1
- package/src/styles/06-components/old.chart.styles.scss +0 -2
- package/src/styles/99-utilities/_index.scss +2 -0
- package/src/styles/99-utilities/_utilities.border.scss +69 -27
- package/src/styles/99-utilities/_utilities.display.scss +1 -1
- package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
- package/src/styles/99-utilities/_utilities.position.scss +16 -9
- package/src/styles/99-utilities/_utilities.scss +2 -0
- package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
- package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
- package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
- package/src/styles/99-utilities/_utilities.text.scss +67 -46
- package/themes/dark-complementary/README.md +98 -0
- package/themes/dark-complementary/index.scss +158 -0
- package/themes/default-light/README.md +81 -0
- package/themes/default-light/index.scss +154 -0
- package/themes/high-contrast/README.md +105 -0
- package/themes/high-contrast/index.scss +172 -0
- package/themes/test-theme/README.md +38 -0
- package/themes/test-theme/index.scss +47 -0
- package/scripts/cli/templates-original-backup.js +0 -1655
- package/scripts/cli/templates_backup.js +0 -684
- package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
- package/src/lib/composables/useButton.ts +0 -93
- package/src/lib/composables/useCheckbox.ts +0 -70
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// Theme: dark-complementary
|
|
2
|
+
// =============================================================================
|
|
3
|
+
|
|
4
|
+
@import '../../src/styles/01-settings';
|
|
5
|
+
@import '../../src/styles/02-tools';
|
|
6
|
+
|
|
7
|
+
// Theme Variables
|
|
8
|
+
// =============================================================================
|
|
9
|
+
:root[data-theme="dark-complementary"] {
|
|
10
|
+
// Colors (complementary to light theme)
|
|
11
|
+
--atomix-color-primary: #4dabf7; // Lighter blue for dark background
|
|
12
|
+
--atomix-color-primary-light: #74c0fc;
|
|
13
|
+
--atomix-color-primary-dark: #228be6;
|
|
14
|
+
--atomix-color-secondary: #868e96; // Lighter gray
|
|
15
|
+
--atomix-color-secondary-light: #adb5bd;
|
|
16
|
+
--atomix-color-secondary-dark: #495057;
|
|
17
|
+
--atomix-color-success: #51cf66; // Brighter green
|
|
18
|
+
--atomix-color-success-light: #8ce99a;
|
|
19
|
+
--atomix-color-success-dark: #40c057;
|
|
20
|
+
--atomix-color-error: #ff6b6b; // Brighter red
|
|
21
|
+
--atomix-color-error-light: #ff8787;
|
|
22
|
+
--atomix-color-error-dark: #fa5252;
|
|
23
|
+
--atomix-color-warning: #ffd43b; // Brighter yellow
|
|
24
|
+
--atomix-color-warning-light: #ffe066;
|
|
25
|
+
--atomix-color-warning-dark: #fab005;
|
|
26
|
+
--atomix-color-info: #74c0fc; // Brighter cyan
|
|
27
|
+
--atomix-color-info-light: #a5d8ff;
|
|
28
|
+
--atomix-color-info-dark: #339af0;
|
|
29
|
+
|
|
30
|
+
// Background (dark)
|
|
31
|
+
--atomix-color-background: #1a1a1a;
|
|
32
|
+
--atomix-color-background-paper: #2d2d2d;
|
|
33
|
+
--atomix-color-background-subtle: #404040;
|
|
34
|
+
|
|
35
|
+
// Text (light)
|
|
36
|
+
--atomix-color-text: #ffffff;
|
|
37
|
+
--atomix-color-text-secondary: #cccccc;
|
|
38
|
+
--atomix-color-text-disabled: #888888;
|
|
39
|
+
|
|
40
|
+
// Border (dark theme borders)
|
|
41
|
+
--atomix-color-border: #404040;
|
|
42
|
+
--atomix-color-border-light: #555555;
|
|
43
|
+
--atomix-color-border-dark: #1a1a1a;
|
|
44
|
+
|
|
45
|
+
// Spacing (same as light theme)
|
|
46
|
+
--atomix-space-0: 0;
|
|
47
|
+
--atomix-space-1: 0.25rem;
|
|
48
|
+
--atomix-space-2: 0.5rem;
|
|
49
|
+
--atomix-space-3: 0.75rem;
|
|
50
|
+
--atomix-space-4: 1rem;
|
|
51
|
+
--atomix-space-5: 1.25rem;
|
|
52
|
+
--atomix-space-6: 1.5rem;
|
|
53
|
+
--atomix-space-8: 2rem;
|
|
54
|
+
--atomix-space-10: 2.5rem;
|
|
55
|
+
--atomix-space-12: 3rem;
|
|
56
|
+
--atomix-space-16: 4rem;
|
|
57
|
+
--atomix-space-20: 5rem;
|
|
58
|
+
--atomix-space-24: 6rem;
|
|
59
|
+
--atomix-space-32: 8rem;
|
|
60
|
+
--atomix-space-base: 1rem;
|
|
61
|
+
|
|
62
|
+
// Typography (same as light theme)
|
|
63
|
+
--atomix-font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
64
|
+
--atomix-font-family-heading: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
65
|
+
--atomix-font-family-mono: 'Fira Code', 'Monaco', 'Consolas', monospace;
|
|
66
|
+
|
|
67
|
+
--atomix-font-size-xs: 0.75rem;
|
|
68
|
+
--atomix-font-size-sm: 0.875rem;
|
|
69
|
+
--atomix-font-size-base: 1rem;
|
|
70
|
+
--atomix-font-size-lg: 1.125rem;
|
|
71
|
+
--atomix-font-size-xl: 1.25rem;
|
|
72
|
+
--atomix-font-size-2xl: 1.5rem;
|
|
73
|
+
--atomix-font-size-3xl: 1.875rem;
|
|
74
|
+
--atomix-font-size-4xl: 2.25rem;
|
|
75
|
+
--atomix-font-size-5xl: 3rem;
|
|
76
|
+
|
|
77
|
+
--atomix-font-weight-light: 300;
|
|
78
|
+
--atomix-font-weight-normal: 400;
|
|
79
|
+
--atomix-font-weight-medium: 500;
|
|
80
|
+
--atomix-font-weight-semibold: 600;
|
|
81
|
+
--atomix-font-weight-bold: 700;
|
|
82
|
+
--atomix-font-weight-extrabold: 800;
|
|
83
|
+
|
|
84
|
+
--atomix-line-height-tight: 1.25;
|
|
85
|
+
--atomix-line-height-snug: 1.375;
|
|
86
|
+
--atomix-line-height-normal: 1.5;
|
|
87
|
+
--atomix-line-height-relaxed: 1.625;
|
|
88
|
+
--atomix-line-height-loose: 2;
|
|
89
|
+
|
|
90
|
+
// Shadows (adjusted for dark theme)
|
|
91
|
+
--atomix-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
|
|
92
|
+
--atomix-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px 0 rgba(0, 0, 0, 0.2);
|
|
93
|
+
--atomix-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.2);
|
|
94
|
+
--atomix-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -2px rgba(0, 0, 0, 0.2);
|
|
95
|
+
--atomix-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
|
|
96
|
+
--atomix-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
97
|
+
--atomix-shadow-inner: inset 0 2px 4px 0 rgba(255, 255, 255, 0.1);
|
|
98
|
+
--atomix-shadow-outline: 0 0 0 3px rgba(77, 144, 254, 0.6);
|
|
99
|
+
|
|
100
|
+
// Animations/Transitions (same as light theme)
|
|
101
|
+
--atomix-transition-fast: 150ms ease-in-out;
|
|
102
|
+
--atomix-transition-base: 200ms ease-in-out;
|
|
103
|
+
--atomix-transition-slow: 300ms ease-in-out;
|
|
104
|
+
|
|
105
|
+
--atomix-animation-duration-fast: 150ms;
|
|
106
|
+
--atomix-animation-duration-base: 200ms;
|
|
107
|
+
--atomix-animation-duration-slow: 300ms;
|
|
108
|
+
|
|
109
|
+
--atomix-animation-easing-ease: ease;
|
|
110
|
+
--atomix-animation-easing-ease-in: ease-in;
|
|
111
|
+
--atomix-animation-easing-ease-out: ease-out;
|
|
112
|
+
--atomix-animation-easing-ease-in-out: ease-in-out;
|
|
113
|
+
|
|
114
|
+
// Border Radius (same as light theme)
|
|
115
|
+
--atomix-radius-none: 0;
|
|
116
|
+
--atomix-radius-sm: 0.125rem;
|
|
117
|
+
--atomix-radius-base: 0.25rem;
|
|
118
|
+
--atomix-radius-md: 0.375rem;
|
|
119
|
+
--atomix-radius-lg: 0.5rem;
|
|
120
|
+
--atomix-radius-xl: 0.75rem;
|
|
121
|
+
--atomix-radius-2xl: 1rem;
|
|
122
|
+
--atomix-radius-full: 9999px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Theme-specific Component Overrides
|
|
126
|
+
// =============================================================================
|
|
127
|
+
[data-theme="dark-complementary"] {
|
|
128
|
+
// Button overrides
|
|
129
|
+
.c-button {
|
|
130
|
+
border-radius: var(--atomix-radius-base);
|
|
131
|
+
transition: all var(--atomix-transition-base);
|
|
132
|
+
background-color: var(--atomix-color-background-paper);
|
|
133
|
+
border: 1px solid var(--atomix-color-border);
|
|
134
|
+
|
|
135
|
+
&:hover {
|
|
136
|
+
transform: translateY(-1px);
|
|
137
|
+
box-shadow: var(--atomix-shadow-md);
|
|
138
|
+
background-color: var(--atomix-color-background-subtle);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
&:focus {
|
|
142
|
+
box-shadow: var(--atomix-shadow-outline);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Card overrides
|
|
147
|
+
.c-card {
|
|
148
|
+
border: 1px solid var(--atomix-color-border);
|
|
149
|
+
border-radius: var(--atomix-radius-lg);
|
|
150
|
+
box-shadow: var(--atomix-shadow-sm);
|
|
151
|
+
background-color: var(--atomix-color-background-paper);
|
|
152
|
+
|
|
153
|
+
&:hover {
|
|
154
|
+
box-shadow: var(--atomix-shadow-md);
|
|
155
|
+
background-color: var(--atomix-color-background-subtle);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# default-light Theme
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
The default-light theme provides a clean, modern light theme with a blue primary color scheme. This theme is optimized for readability and provides excellent contrast ratios for accessibility.
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
### CSS Theme
|
|
10
|
+
|
|
11
|
+
```scss
|
|
12
|
+
@import 'themes/default-light';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### JavaScript Theme
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { defaultLightTheme } from './themes/default-light';
|
|
19
|
+
import { ThemeProvider } from '@shohojdhara/atomix/theme';
|
|
20
|
+
|
|
21
|
+
function App() {
|
|
22
|
+
return (
|
|
23
|
+
<ThemeProvider theme={defaultLightTheme}>
|
|
24
|
+
{/* Your app */}
|
|
25
|
+
</ThemeProvider>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Customization
|
|
31
|
+
|
|
32
|
+
Edit the theme variables in `index.scss` to customize colors, typography, spacing, and more. The theme uses CSS custom properties for easy customization.
|
|
33
|
+
|
|
34
|
+
### Color Customization
|
|
35
|
+
|
|
36
|
+
```scss
|
|
37
|
+
:root[data-theme='default-light'] {
|
|
38
|
+
--atomix-color-primary: #your-primary-color;
|
|
39
|
+
--atomix-color-background: #your-background-color;
|
|
40
|
+
// ... other variables
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Typography Customization
|
|
45
|
+
|
|
46
|
+
```scss
|
|
47
|
+
:root[data-theme='default-light'] {
|
|
48
|
+
--atomix-font-family-base: 'Your Font', sans-serif;
|
|
49
|
+
--atomix-font-size-base: 1rem;
|
|
50
|
+
// ... other typography variables
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Features
|
|
55
|
+
|
|
56
|
+
- **High Contrast**: Excellent readability with proper contrast ratios
|
|
57
|
+
- **Modern Design**: Clean, minimal aesthetic with subtle shadows
|
|
58
|
+
- **Responsive**: Scales well across all device sizes
|
|
59
|
+
- **Accessible**: Meets WCAG 2.1 AA standards for color contrast
|
|
60
|
+
|
|
61
|
+
## Build
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
atomix build-theme themes/default-light
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Color Palette
|
|
68
|
+
|
|
69
|
+
- **Primary**: Blue (#007bff) - Used for primary actions and links
|
|
70
|
+
- **Secondary**: Gray (#6c757d) - Used for secondary elements
|
|
71
|
+
- **Success**: Green (#28a745) - Used for success states
|
|
72
|
+
- **Error**: Red (#dc3545) - Used for error states
|
|
73
|
+
- **Warning**: Yellow (#ffc107) - Used for warning states
|
|
74
|
+
- **Info**: Cyan (#17a2b8) - Used for informational elements
|
|
75
|
+
|
|
76
|
+
## Typography
|
|
77
|
+
|
|
78
|
+
- **Base Font**: Inter (system font stack fallback)
|
|
79
|
+
- **Mono Font**: Fira Code (for code elements)
|
|
80
|
+
- **Font Sizes**: Responsive scale from xs to 5xl
|
|
81
|
+
- **Font Weights**: Light (300) to Extra Bold (800)
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// Theme: default-light
|
|
2
|
+
// =============================================================================
|
|
3
|
+
|
|
4
|
+
@import '../../src/styles/01-settings';
|
|
5
|
+
@import '../../src/styles/02-tools';
|
|
6
|
+
|
|
7
|
+
// Theme Variables
|
|
8
|
+
// =============================================================================
|
|
9
|
+
:root[data-theme="default-light"] {
|
|
10
|
+
// Colors
|
|
11
|
+
--atomix-color-primary: #007bff;
|
|
12
|
+
--atomix-color-primary-light: #4dabf7;
|
|
13
|
+
--atomix-color-primary-dark: #0056b3;
|
|
14
|
+
--atomix-color-secondary: #6c757d;
|
|
15
|
+
--atomix-color-secondary-light: #adb5bd;
|
|
16
|
+
--atomix-color-secondary-dark: #495057;
|
|
17
|
+
--atomix-color-success: #28a745;
|
|
18
|
+
--atomix-color-success-light: #71dd8a;
|
|
19
|
+
--atomix-color-success-dark: #1e7e34;
|
|
20
|
+
--atomix-color-error: #dc3545;
|
|
21
|
+
--atomix-color-error-light: #f28b94;
|
|
22
|
+
--atomix-color-error-dark: #bd2130;
|
|
23
|
+
--atomix-color-warning: #ffc107;
|
|
24
|
+
--atomix-color-warning-light: #ffda6a;
|
|
25
|
+
--atomix-color-warning-dark: #d39e00;
|
|
26
|
+
--atomix-color-info: #17a2b8;
|
|
27
|
+
--atomix-color-info-light: #6edff6;
|
|
28
|
+
--atomix-color-info-dark: #117a8b;
|
|
29
|
+
|
|
30
|
+
// Background
|
|
31
|
+
--atomix-color-background: #ffffff;
|
|
32
|
+
--atomix-color-background-paper: #f8f9fa;
|
|
33
|
+
--atomix-color-background-subtle: #e9ecef;
|
|
34
|
+
|
|
35
|
+
// Text
|
|
36
|
+
--atomix-color-text: #212529;
|
|
37
|
+
--atomix-color-text-secondary: #6c757d;
|
|
38
|
+
--atomix-color-text-disabled: #adb5bd;
|
|
39
|
+
|
|
40
|
+
// Border
|
|
41
|
+
--atomix-color-border: #dee2e6;
|
|
42
|
+
--atomix-color-border-light: #f8f9fa;
|
|
43
|
+
--atomix-color-border-dark: #343a40;
|
|
44
|
+
|
|
45
|
+
// Spacing
|
|
46
|
+
--atomix-space-0: 0;
|
|
47
|
+
--atomix-space-1: 0.25rem;
|
|
48
|
+
--atomix-space-2: 0.5rem;
|
|
49
|
+
--atomix-space-3: 0.75rem;
|
|
50
|
+
--atomix-space-4: 1rem;
|
|
51
|
+
--atomix-space-5: 1.25rem;
|
|
52
|
+
--atomix-space-6: 1.5rem;
|
|
53
|
+
--atomix-space-8: 2rem;
|
|
54
|
+
--atomix-space-10: 2.5rem;
|
|
55
|
+
--atomix-space-12: 3rem;
|
|
56
|
+
--atomix-space-16: 4rem;
|
|
57
|
+
--atomix-space-20: 5rem;
|
|
58
|
+
--atomix-space-24: 6rem;
|
|
59
|
+
--atomix-space-32: 8rem;
|
|
60
|
+
--atomix-space-base: 1rem;
|
|
61
|
+
|
|
62
|
+
// Typography
|
|
63
|
+
--atomix-font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
64
|
+
--atomix-font-family-heading: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
65
|
+
--atomix-font-family-mono: 'Fira Code', 'Monaco', 'Consolas', monospace;
|
|
66
|
+
|
|
67
|
+
--atomix-font-size-xs: 0.75rem;
|
|
68
|
+
--atomix-font-size-sm: 0.875rem;
|
|
69
|
+
--atomix-font-size-base: 1rem;
|
|
70
|
+
--atomix-font-size-lg: 1.125rem;
|
|
71
|
+
--atomix-font-size-xl: 1.25rem;
|
|
72
|
+
--atomix-font-size-2xl: 1.5rem;
|
|
73
|
+
--atomix-font-size-3xl: 1.875rem;
|
|
74
|
+
--atomix-font-size-4xl: 2.25rem;
|
|
75
|
+
--atomix-font-size-5xl: 3rem;
|
|
76
|
+
|
|
77
|
+
--atomix-font-weight-light: 300;
|
|
78
|
+
--atomix-font-weight-normal: 400;
|
|
79
|
+
--atomix-font-weight-medium: 500;
|
|
80
|
+
--atomix-font-weight-semibold: 600;
|
|
81
|
+
--atomix-font-weight-bold: 700;
|
|
82
|
+
--atomix-font-weight-extrabold: 800;
|
|
83
|
+
|
|
84
|
+
--atomix-line-height-tight: 1.25;
|
|
85
|
+
--atomix-line-height-snug: 1.375;
|
|
86
|
+
--atomix-line-height-normal: 1.5;
|
|
87
|
+
--atomix-line-height-relaxed: 1.625;
|
|
88
|
+
--atomix-line-height-loose: 2;
|
|
89
|
+
|
|
90
|
+
// Shadows
|
|
91
|
+
--atomix-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
92
|
+
--atomix-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
|
|
93
|
+
--atomix-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
94
|
+
--atomix-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
95
|
+
--atomix-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
|
96
|
+
--atomix-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
|
97
|
+
--atomix-shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);
|
|
98
|
+
--atomix-shadow-outline: 0 0 0 3px rgba(59, 130, 246, 0.5);
|
|
99
|
+
|
|
100
|
+
// Animations/Transitions
|
|
101
|
+
--atomix-transition-fast: 150ms ease-in-out;
|
|
102
|
+
--atomix-transition-base: 200ms ease-in-out;
|
|
103
|
+
--atomix-transition-slow: 300ms ease-in-out;
|
|
104
|
+
|
|
105
|
+
--atomix-animation-duration-fast: 150ms;
|
|
106
|
+
--atomix-animation-duration-base: 200ms;
|
|
107
|
+
--atomix-animation-duration-slow: 300ms;
|
|
108
|
+
|
|
109
|
+
--atomix-animation-easing-ease: ease;
|
|
110
|
+
--atomix-animation-easing-ease-in: ease-in;
|
|
111
|
+
--atomix-animation-easing-ease-out: ease-out;
|
|
112
|
+
--atomix-animation-easing-ease-in-out: ease-in-out;
|
|
113
|
+
|
|
114
|
+
// Border Radius
|
|
115
|
+
--atomix-radius-none: 0;
|
|
116
|
+
--atomix-radius-sm: 0.125rem;
|
|
117
|
+
--atomix-radius-base: 0.25rem;
|
|
118
|
+
--atomix-radius-md: 0.375rem;
|
|
119
|
+
--atomix-radius-lg: 0.5rem;
|
|
120
|
+
--atomix-radius-xl: 0.75rem;
|
|
121
|
+
--atomix-radius-2xl: 1rem;
|
|
122
|
+
--atomix-radius-full: 9999px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Theme-specific Component Overrides
|
|
126
|
+
// =============================================================================
|
|
127
|
+
[data-theme="default-light"] {
|
|
128
|
+
// Button overrides
|
|
129
|
+
.c-button {
|
|
130
|
+
border-radius: var(--atomix-radius-base);
|
|
131
|
+
transition: all var(--atomix-transition-base);
|
|
132
|
+
|
|
133
|
+
&:hover {
|
|
134
|
+
transform: translateY(-1px);
|
|
135
|
+
box-shadow: var(--atomix-shadow-md);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
&:focus {
|
|
139
|
+
box-shadow: var(--atomix-shadow-outline);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Card overrides
|
|
144
|
+
.c-card {
|
|
145
|
+
border: 1px solid var(--atomix-color-border);
|
|
146
|
+
border-radius: var(--atomix-radius-lg);
|
|
147
|
+
box-shadow: var(--atomix-shadow-sm);
|
|
148
|
+
background-color: var(--atomix-color-background);
|
|
149
|
+
|
|
150
|
+
&:hover {
|
|
151
|
+
box-shadow: var(--atomix-shadow-md);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# high-contrast Theme
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
The high-contrast theme provides maximum visibility and readability for users with visual impairments or those requiring enhanced accessibility. This theme uses pure black and white backgrounds with bright, high-contrast accent colors and thicker borders.
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
### CSS Theme
|
|
10
|
+
|
|
11
|
+
```scss
|
|
12
|
+
@import 'themes/high-contrast';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### JavaScript Theme
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { highContrastTheme } from './themes/high-contrast';
|
|
19
|
+
import { ThemeProvider } from '@shohojdhara/atomix/theme';
|
|
20
|
+
|
|
21
|
+
function App() {
|
|
22
|
+
return (
|
|
23
|
+
<ThemeProvider theme={highContrastTheme}>
|
|
24
|
+
{/* Your app */}
|
|
25
|
+
</ThemeProvider>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Customization
|
|
31
|
+
|
|
32
|
+
Edit the theme variables in `index.scss` to customize colors, typography, spacing, and more. The theme uses CSS custom properties for easy customization.
|
|
33
|
+
|
|
34
|
+
### Color Customization
|
|
35
|
+
|
|
36
|
+
For high-contrast themes, maintain maximum contrast ratios:
|
|
37
|
+
|
|
38
|
+
```scss
|
|
39
|
+
:root[data-theme='high-contrast'] {
|
|
40
|
+
--atomix-color-primary: #your-high-contrast-color;
|
|
41
|
+
--atomix-color-background: #ffffff; // Keep pure white
|
|
42
|
+
--atomix-color-text: #000000; // Keep pure black
|
|
43
|
+
// ... other variables
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Border Customization
|
|
48
|
+
|
|
49
|
+
High-contrast themes benefit from thicker borders:
|
|
50
|
+
|
|
51
|
+
```scss
|
|
52
|
+
:root[data-theme='high-contrast'] {
|
|
53
|
+
--atomix-color-border: #000000; // Pure black borders
|
|
54
|
+
// Component-specific border widths can be adjusted in overrides
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Features
|
|
59
|
+
|
|
60
|
+
- **Maximum Accessibility**: Meets WCAG 2.1 AAA standards for color contrast
|
|
61
|
+
- **Visual Impairment Support**: Optimized for users with low vision
|
|
62
|
+
- **Clear Visual Hierarchy**: Thick borders and high contrast ensure clarity
|
|
63
|
+
- **Reduced Motion**: Faster transitions for users sensitive to animation
|
|
64
|
+
- **Bold Typography**: Heavier font weights and larger sizes for better readability
|
|
65
|
+
|
|
66
|
+
## Build
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
atomix build-theme themes/high-contrast
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Color Palette
|
|
73
|
+
|
|
74
|
+
- **Primary**: Bright Blue (#0066cc) - High contrast for primary actions
|
|
75
|
+
- **Secondary**: Medium Gray (#666666) - For secondary elements
|
|
76
|
+
- **Success**: Pure Green (#008000) - Maximum visibility for success states
|
|
77
|
+
- **Error**: Bright Red (#cc0000) - Highly visible error states
|
|
78
|
+
- **Warning**: Bright Yellow (#ffcc00) - Noticeable warning states
|
|
79
|
+
- **Info**: Bright Cyan (#0099cc) - Clear informational elements
|
|
80
|
+
|
|
81
|
+
## Typography
|
|
82
|
+
|
|
83
|
+
- **Base Font**: Arial/Helvetica (highly readable system fonts)
|
|
84
|
+
- **Mono Font**: Courier New (for code elements)
|
|
85
|
+
- **Font Sizes**: Larger scale starting from 0.875rem for better readability
|
|
86
|
+
- **Font Weights**: No light weights (minimum 400), emphasizing bold (700-900)
|
|
87
|
+
- **Text Colors**: Pure black (#000000) on pure white (#ffffff)
|
|
88
|
+
|
|
89
|
+
## Accessibility Features
|
|
90
|
+
|
|
91
|
+
- **Thick Borders**: 2-3px borders for maximum visibility
|
|
92
|
+
- **High Contrast Focus Rings**: 4px thick focus indicators
|
|
93
|
+
- **Bold Text**: Minimum font-weight of 400, recommended 600-700
|
|
94
|
+
- **Minimal Animations**: Reduced motion for users with vestibular disorders
|
|
95
|
+
- **Clear Visual States**: Distinct hover, focus, and active states
|
|
96
|
+
|
|
97
|
+
## Component Overrides
|
|
98
|
+
|
|
99
|
+
- **Buttons**: Thick black borders, bold text, clear state changes
|
|
100
|
+
- **Cards**: 3px borders, enhanced focus states, high contrast backgrounds
|
|
101
|
+
- **Focus Management**: Thick outline rings for keyboard navigation
|
|
102
|
+
|
|
103
|
+
## Browser Support
|
|
104
|
+
|
|
105
|
+
This theme is designed to work in all modern browsers and provides fallback support for older browsers through the use of standard CSS properties.
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// Theme: high-contrast
|
|
2
|
+
// =============================================================================
|
|
3
|
+
|
|
4
|
+
@import '../../src/styles/01-settings';
|
|
5
|
+
@import '../../src/styles/02-tools';
|
|
6
|
+
|
|
7
|
+
// Theme Variables
|
|
8
|
+
// =============================================================================
|
|
9
|
+
:root[data-theme="high-contrast"] {
|
|
10
|
+
// Colors (high contrast - pure black/white with bright accents)
|
|
11
|
+
--atomix-color-primary: #0066cc; // Bright blue for high visibility
|
|
12
|
+
--atomix-color-primary-light: #3399ff;
|
|
13
|
+
--atomix-color-primary-dark: #004d99;
|
|
14
|
+
--atomix-color-secondary: #666666; // Medium gray
|
|
15
|
+
--atomix-color-secondary-light: #999999;
|
|
16
|
+
--atomix-color-secondary-dark: #333333;
|
|
17
|
+
--atomix-color-success: #008000; // Pure green
|
|
18
|
+
--atomix-color-success-light: #00cc00;
|
|
19
|
+
--atomix-color-success-dark: #004d00;
|
|
20
|
+
--atomix-color-error: #cc0000; // Bright red
|
|
21
|
+
--atomix-color-error-light: #ff3333;
|
|
22
|
+
--atomix-color-error-dark: #990000;
|
|
23
|
+
--atomix-color-warning: #ffcc00; // Bright yellow
|
|
24
|
+
--atomix-color-warning-light: #ffff66;
|
|
25
|
+
--atomix-color-warning-dark: #cc9900;
|
|
26
|
+
--atomix-color-info: #0099cc; // Bright cyan
|
|
27
|
+
--atomix-color-info-light: #33ccff;
|
|
28
|
+
--atomix-color-info-dark: #006699;
|
|
29
|
+
|
|
30
|
+
// Background (pure white/black)
|
|
31
|
+
--atomix-color-background: #ffffff;
|
|
32
|
+
--atomix-color-background-paper: #ffffff;
|
|
33
|
+
--atomix-color-background-subtle: #f0f0f0;
|
|
34
|
+
|
|
35
|
+
// Text (pure black/white)
|
|
36
|
+
--atomix-color-text: #000000;
|
|
37
|
+
--atomix-color-text-secondary: #333333;
|
|
38
|
+
--atomix-color-text-disabled: #666666;
|
|
39
|
+
|
|
40
|
+
// Border (thick black borders for maximum visibility)
|
|
41
|
+
--atomix-color-border: #000000;
|
|
42
|
+
--atomix-color-border-light: #333333;
|
|
43
|
+
--atomix-color-border-dark: #000000;
|
|
44
|
+
|
|
45
|
+
// Spacing (same as other themes)
|
|
46
|
+
--atomix-space-0: 0;
|
|
47
|
+
--atomix-space-1: 0.25rem;
|
|
48
|
+
--atomix-space-2: 0.5rem;
|
|
49
|
+
--atomix-space-3: 0.75rem;
|
|
50
|
+
--atomix-space-4: 1rem;
|
|
51
|
+
--atomix-space-5: 1.25rem;
|
|
52
|
+
--atomix-space-6: 1.5rem;
|
|
53
|
+
--atomix-space-8: 2rem;
|
|
54
|
+
--atomix-space-10: 2.5rem;
|
|
55
|
+
--atomix-space-12: 3rem;
|
|
56
|
+
--atomix-space-16: 4rem;
|
|
57
|
+
--atomix-space-20: 5rem;
|
|
58
|
+
--atomix-space-24: 6rem;
|
|
59
|
+
--atomix-space-32: 8rem;
|
|
60
|
+
--atomix-space-base: 1rem;
|
|
61
|
+
|
|
62
|
+
// Typography (high contrast fonts)
|
|
63
|
+
--atomix-font-family-base: 'Arial', 'Helvetica', sans-serif; // More readable fonts
|
|
64
|
+
--atomix-font-family-heading: 'Arial Black', 'Arial', 'Helvetica', sans-serif;
|
|
65
|
+
--atomix-font-family-mono: 'Courier New', 'Monaco', 'Consolas', monospace;
|
|
66
|
+
|
|
67
|
+
--atomix-font-size-xs: 0.875rem; // Slightly larger for better readability
|
|
68
|
+
--atomix-font-size-sm: 1rem;
|
|
69
|
+
--atomix-font-size-base: 1.125rem;
|
|
70
|
+
--atomix-font-size-lg: 1.25rem;
|
|
71
|
+
--atomix-font-size-xl: 1.375rem;
|
|
72
|
+
--atomix-font-size-2xl: 1.625rem;
|
|
73
|
+
--atomix-font-size-3xl: 2rem;
|
|
74
|
+
--atomix-font-size-4xl: 2.5rem;
|
|
75
|
+
--atomix-font-size-5xl: 3.25rem;
|
|
76
|
+
|
|
77
|
+
--atomix-font-weight-light: 400; // No light fonts for better readability
|
|
78
|
+
--atomix-font-weight-normal: 400;
|
|
79
|
+
--atomix-font-weight-medium: 600;
|
|
80
|
+
--atomix-font-weight-semibold: 700;
|
|
81
|
+
--atomix-font-weight-bold: 700;
|
|
82
|
+
--atomix-font-weight-extrabold: 900;
|
|
83
|
+
|
|
84
|
+
--atomix-line-height-tight: 1.4;
|
|
85
|
+
--atomix-line-height-snug: 1.5;
|
|
86
|
+
--atomix-line-height-normal: 1.6;
|
|
87
|
+
--atomix-line-height-relaxed: 1.7;
|
|
88
|
+
--atomix-line-height-loose: 2;
|
|
89
|
+
|
|
90
|
+
// Shadows (minimal for high contrast)
|
|
91
|
+
--atomix-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.5);
|
|
92
|
+
--atomix-shadow-sm: 0 2px 4px 0 rgba(0, 0, 0, 0.5);
|
|
93
|
+
--atomix-shadow-md: 0 4px 8px 0 rgba(0, 0, 0, 0.5);
|
|
94
|
+
--atomix-shadow-lg: 0 8px 16px 0 rgba(0, 0, 0, 0.5);
|
|
95
|
+
--atomix-shadow-xl: 0 16px 32px 0 rgba(0, 0, 0, 0.5);
|
|
96
|
+
--atomix-shadow-2xl: 0 24px 48px 0 rgba(0, 0, 0, 0.5);
|
|
97
|
+
--atomix-shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.5);
|
|
98
|
+
--atomix-shadow-outline: 0 0 0 4px #0066cc; // Thick focus ring
|
|
99
|
+
|
|
100
|
+
// Animations/Transitions (reduced for accessibility)
|
|
101
|
+
--atomix-transition-fast: 100ms ease-in-out;
|
|
102
|
+
--atomix-transition-base: 150ms ease-in-out;
|
|
103
|
+
--atomix-transition-slow: 200ms ease-in-out;
|
|
104
|
+
|
|
105
|
+
--atomix-animation-duration-fast: 100ms;
|
|
106
|
+
--atomix-animation-duration-base: 150ms;
|
|
107
|
+
--atomix-animation-duration-slow: 200ms;
|
|
108
|
+
|
|
109
|
+
--atomix-animation-easing-ease: ease;
|
|
110
|
+
--atomix-animation-easing-ease-in: ease-in;
|
|
111
|
+
--atomix-animation-easing-ease-out: ease-out;
|
|
112
|
+
--atomix-animation-easing-ease-in-out: ease-in-out;
|
|
113
|
+
|
|
114
|
+
// Border Radius (minimal for high contrast)
|
|
115
|
+
--atomix-radius-none: 0;
|
|
116
|
+
--atomix-radius-sm: 0.125rem;
|
|
117
|
+
--atomix-radius-base: 0.25rem;
|
|
118
|
+
--atomix-radius-md: 0.25rem;
|
|
119
|
+
--atomix-radius-lg: 0.25rem;
|
|
120
|
+
--atomix-radius-xl: 0.5rem;
|
|
121
|
+
--atomix-radius-2xl: 0.5rem;
|
|
122
|
+
--atomix-radius-full: 9999px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Theme-specific Component Overrides
|
|
126
|
+
// =============================================================================
|
|
127
|
+
[data-theme="high-contrast"] {
|
|
128
|
+
// Button overrides (high contrast)
|
|
129
|
+
.c-button {
|
|
130
|
+
border: 2px solid var(--atomix-color-border);
|
|
131
|
+
border-radius: var(--atomix-radius-sm);
|
|
132
|
+
transition: all var(--atomix-transition-fast);
|
|
133
|
+
font-weight: var(--atomix-font-weight-bold);
|
|
134
|
+
background-color: var(--atomix-color-background);
|
|
135
|
+
|
|
136
|
+
&:hover {
|
|
137
|
+
background-color: var(--atomix-color-background-subtle);
|
|
138
|
+
border-color: var(--atomix-color-primary);
|
|
139
|
+
color: var(--atomix-color-primary);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
&:focus {
|
|
143
|
+
outline: none;
|
|
144
|
+
box-shadow: var(--atomix-shadow-outline);
|
|
145
|
+
border-color: var(--atomix-color-primary);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
&:active {
|
|
149
|
+
background-color: var(--atomix-color-primary);
|
|
150
|
+
color: var(--atomix-color-background);
|
|
151
|
+
border-color: var(--atomix-color-primary);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Card overrides (high contrast)
|
|
156
|
+
.c-card {
|
|
157
|
+
border: 3px solid var(--atomix-color-border);
|
|
158
|
+
border-radius: var(--atomix-radius-sm);
|
|
159
|
+
box-shadow: var(--atomix-shadow-sm);
|
|
160
|
+
background-color: var(--atomix-color-background);
|
|
161
|
+
|
|
162
|
+
&:hover {
|
|
163
|
+
border-color: var(--atomix-color-primary);
|
|
164
|
+
box-shadow: var(--atomix-shadow-md);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
&:focus-within {
|
|
168
|
+
border-color: var(--atomix-color-primary);
|
|
169
|
+
box-shadow: var(--atomix-shadow-outline);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|