@shohojdhara/atomix 0.3.14 → 0.3.15
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 +43 -0
- package/build-tools/index.js +88 -0
- package/build-tools/package.json +67 -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 +203 -90
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +3 -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 +43 -0
- package/dist/build-tools/index.js +88 -0
- package/dist/build-tools/package.json +67 -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 +9 -61
- package/dist/index.esm.js +237 -286
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +250 -299
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.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 +369 -870
- package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
- package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
- package/src/components/AtomixGlass/glass-utils.ts +2 -2
- package/src/components/AtomixGlass/shader-utils.ts +5 -0
- 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 +50 -35
- package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +1 -1
- package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
- package/src/components/Avatar/Avatar.stories.tsx +213 -1
- package/src/components/Badge/Badge.stories.tsx +121 -362
- package/src/components/Block/Block.stories.tsx +21 -12
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +141 -23
- package/src/components/Button/Button.stories.tsx +463 -1126
- package/src/components/Button/Button.test.tsx +107 -0
- package/src/components/Button/Button.tsx +46 -50
- package/src/components/Button/ButtonGroup.stories.tsx +373 -217
- package/src/components/Callout/Callout.stories.tsx +289 -634
- package/src/components/Card/Card.stories.tsx +248 -68
- package/src/components/Chart/Chart.stories.tsx +150 -8
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +151 -69
- package/src/components/Countdown/Countdown.stories.tsx +115 -8
- package/src/components/DataTable/DataTable.stories.tsx +346 -146
- package/src/components/DatePicker/DatePicker.stories.tsx +325 -1066
- package/src/components/Dropdown/Dropdown.stories.tsx +153 -33
- package/src/components/EdgePanel/EdgePanel.stories.tsx +230 -21
- package/src/components/Footer/Footer.stories.tsx +392 -328
- package/src/components/Form/Checkbox.stories.tsx +140 -6
- package/src/components/Form/Checkbox.test.tsx +63 -0
- package/src/components/Form/Checkbox.tsx +87 -51
- package/src/components/Form/Form.stories.tsx +119 -20
- package/src/components/Form/FormGroup.stories.tsx +127 -4
- package/src/components/Form/Radio.stories.tsx +140 -5
- package/src/components/Form/Select.stories.tsx +140 -8
- package/src/components/Form/Textarea.stories.tsx +149 -6
- package/src/components/Hero/Hero.stories.tsx +333 -32
- package/src/components/List/List.stories.tsx +141 -3
- package/src/components/Modal/Modal.stories.tsx +181 -42
- package/src/components/Popover/Popover.stories.tsx +448 -98
- package/src/components/Progress/Progress.stories.tsx +167 -5
- package/src/components/River/River.stories.tsx +1 -1
- package/src/components/SectionIntro/SectionIntro.stories.tsx +240 -48
- package/src/components/Spinner/Spinner.stories.tsx +102 -8
- package/src/components/Steps/Steps.stories.tsx +172 -43
- package/src/components/Tabs/Tabs.stories.tsx +136 -10
- 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 +126 -39
- package/src/components/Tooltip/Tooltip.stories.tsx +194 -104
- package/src/components/Upload/Upload.stories.tsx +113 -24
- package/src/lib/README.md +2 -2
- package/src/lib/__tests__/theme-tools.test.ts +193 -0
- package/src/lib/composables/index.ts +2 -2
- package/src/lib/composables/useAtomixGlass.ts +28 -56
- package/src/lib/composables/useChartExport.ts +2 -7
- package/src/lib/composables/useDataTable.ts +46 -29
- package/src/lib/constants/components.ts +9 -32
- package/src/lib/theme/devtools/CLI.ts +1 -1
- package/src/lib/types/components.ts +1 -1
- package/src/lib/utils/__tests__/csv.test.ts +45 -0
- package/src/lib/utils/csv.ts +17 -0
- package/src/lib/utils/dataTableExport.ts +1 -10
- package/src/styles/01-settings/_index.scss +2 -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.typography.scss +5 -5
- package/src/styles/02-tools/_tools.utility-api.scss +14 -0
- package/src/styles/06-components/_components.accordion.scss +56 -14
- package/src/styles/06-components/_components.checkbox.scss +23 -17
- package/src/styles/99-utilities/_index.scss +2 -0
- package/src/styles/99-utilities/_utilities.scss +3 -1
- package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
- 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,45 @@
|
|
|
1
|
+
// Text gradient utilities - requires special CSS properties
|
|
2
|
+
// These utilities apply gradient colors to text using background-clip technique
|
|
3
|
+
// Using utility generator system with advanced best practices
|
|
4
|
+
|
|
5
|
+
@use 'sass:map';
|
|
6
|
+
@use '../01-settings/settings.design-tokens' as *;
|
|
7
|
+
|
|
8
|
+
// Define utilities for text gradients
|
|
9
|
+
$utilities-text-gradient: (
|
|
10
|
+
// Base text gradient utility - applies the core text gradient properties
|
|
11
|
+
'text-gradient': (
|
|
12
|
+
property: null, // No specific CSS property, we're only using local-vars
|
|
13
|
+
class: u-text-gradient,
|
|
14
|
+
values: (
|
|
15
|
+
// Base class with no modifier applies the core text gradient styles
|
|
16
|
+
'base': null
|
|
17
|
+
),
|
|
18
|
+
local-vars: (
|
|
19
|
+
'background-clip': text,
|
|
20
|
+
'-webkit-background-clip': text,
|
|
21
|
+
'-webkit-text-fill-color': transparent
|
|
22
|
+
)
|
|
23
|
+
),
|
|
24
|
+
|
|
25
|
+
// Text gradient color variations using existing CSS gradient tokens
|
|
26
|
+
'text-gradient-colors': (
|
|
27
|
+
property: background-image,
|
|
28
|
+
class: u-text-gradient,
|
|
29
|
+
values: (
|
|
30
|
+
primary: var(--atomix-primary-gradient),
|
|
31
|
+
secondary: var(--atomix-secondary-gradient),
|
|
32
|
+
success: var(--atomix-success-gradient),
|
|
33
|
+
warning: var(--atomix-warning-gradient),
|
|
34
|
+
error: var(--atomix-error-gradient),
|
|
35
|
+
info: var(--atomix-info-gradient),
|
|
36
|
+
light: var(--atomix-light-gradient),
|
|
37
|
+
dark: var(--atomix-dark-gradient)
|
|
38
|
+
),
|
|
39
|
+
local-vars: (
|
|
40
|
+
'background-clip': text,
|
|
41
|
+
'-webkit-background-clip': text,
|
|
42
|
+
'-webkit-text-fill-color': transparent
|
|
43
|
+
)
|
|
44
|
+
)
|
|
45
|
+
);
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# dark-complementary Theme
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
The dark-complementary theme provides a modern dark theme with complementary colors optimized for low-light environments and reduced eye strain. This theme maintains excellent readability while providing a sophisticated dark aesthetic.
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
### CSS Theme
|
|
10
|
+
|
|
11
|
+
```scss
|
|
12
|
+
@import 'themes/dark-complementary';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### JavaScript Theme
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { darkComplementaryTheme } from './themes/dark-complementary';
|
|
19
|
+
import { ThemeProvider } from '@shohojdhara/atomix/theme';
|
|
20
|
+
|
|
21
|
+
function App() {
|
|
22
|
+
return (
|
|
23
|
+
<ThemeProvider theme={darkComplementaryTheme}>
|
|
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='dark-complementary'] {
|
|
38
|
+
--atomix-color-primary: #your-primary-color;
|
|
39
|
+
--atomix-color-background: #your-background-color;
|
|
40
|
+
// ... other variables
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Background Customization
|
|
45
|
+
|
|
46
|
+
For dark themes, consider the background hierarchy:
|
|
47
|
+
|
|
48
|
+
```scss
|
|
49
|
+
:root[data-theme='dark-complementary'] {
|
|
50
|
+
--atomix-color-background: #1a1a1a; // Main background
|
|
51
|
+
--atomix-color-background-paper: #2d2d2d; // Card/surface backgrounds
|
|
52
|
+
--atomix-color-background-subtle: #404040; // Hover states, subtle elements
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Features
|
|
57
|
+
|
|
58
|
+
- **Dark Mode Optimized**: Reduced blue light for better eye comfort
|
|
59
|
+
- **High Contrast**: Maintained readability in low-light conditions
|
|
60
|
+
- **Complementary Colors**: Brighter, more vibrant color palette for dark backgrounds
|
|
61
|
+
- **Modern Design**: Clean aesthetic with enhanced shadows for depth
|
|
62
|
+
- **Accessible**: Meets WCAG 2.1 AA standards with proper contrast ratios
|
|
63
|
+
|
|
64
|
+
## Build
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
atomix build-theme themes/dark-complementary
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Color Palette
|
|
71
|
+
|
|
72
|
+
- **Primary**: Light Blue (#4dabf7) - Brighter blue for dark backgrounds
|
|
73
|
+
- **Secondary**: Light Gray (#868e96) - Muted for secondary elements
|
|
74
|
+
- **Success**: Bright Green (#51cf66) - Highly visible success states
|
|
75
|
+
- **Error**: Bright Red (#ff6b6b) - Attention-grabbing error states
|
|
76
|
+
- **Warning**: Bright Yellow (#ffd43b) - Noticeable warning states
|
|
77
|
+
- **Info**: Bright Cyan (#74c0fc) - Clear informational elements
|
|
78
|
+
|
|
79
|
+
## Typography
|
|
80
|
+
|
|
81
|
+
- **Base Font**: Inter (system font stack fallback)
|
|
82
|
+
- **Mono Font**: Fira Code (for code elements)
|
|
83
|
+
- **Font Sizes**: Responsive scale from xs to 5xl
|
|
84
|
+
- **Font Weights**: Light (300) to Extra Bold (800)
|
|
85
|
+
- **Text Colors**: White primary (#ffffff), Light gray secondary (#cccccc)
|
|
86
|
+
|
|
87
|
+
## Background Hierarchy
|
|
88
|
+
|
|
89
|
+
- **Main Background**: Dark gray (#1a1a1a)
|
|
90
|
+
- **Paper/Surface**: Medium dark gray (#2d2d2d)
|
|
91
|
+
- **Subtle Elements**: Light medium gray (#404040)
|
|
92
|
+
|
|
93
|
+
## Shadows
|
|
94
|
+
|
|
95
|
+
Enhanced shadow definitions for better depth perception in dark themes:
|
|
96
|
+
|
|
97
|
+
- Inner shadows use white tints for subtle highlights
|
|
98
|
+
- Outer shadows use increased opacity for better definition
|
|
@@ -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.
|