@shohojdhara/atomix 0.5.1 → 0.5.2

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.
Files changed (123) hide show
  1. package/atomix.config.ts +12 -0
  2. package/build-tools/webpack-loader.js +5 -4
  3. package/dist/atomix.css +138 -17
  4. package/dist/atomix.css.map +1 -1
  5. package/dist/atomix.min.css +1 -1
  6. package/dist/atomix.min.css.map +1 -1
  7. package/dist/build-tools/webpack-loader.js +5 -4
  8. package/dist/charts.d.ts +23 -23
  9. package/dist/charts.js +40 -37
  10. package/dist/charts.js.map +1 -1
  11. package/dist/config.d.ts +624 -0
  12. package/dist/config.js +59 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/core.d.ts +2 -2
  15. package/dist/core.js +111 -50
  16. package/dist/core.js.map +1 -1
  17. package/dist/forms.d.ts +3 -6
  18. package/dist/forms.js +2 -2
  19. package/dist/forms.js.map +1 -1
  20. package/dist/heavy.d.ts +1 -1
  21. package/dist/heavy.js +173 -111
  22. package/dist/heavy.js.map +1 -1
  23. package/dist/index.d.ts +98 -65
  24. package/dist/index.esm.js +427 -422
  25. package/dist/index.esm.js.map +1 -1
  26. package/dist/index.js +394 -391
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.min.js +1 -1
  29. package/dist/index.min.js.map +1 -1
  30. package/dist/layout.js +59 -60
  31. package/dist/layout.js.map +1 -1
  32. package/dist/theme.js +4 -4
  33. package/dist/theme.js.map +1 -1
  34. package/package.json +14 -9
  35. package/scripts/atomix-cli.js +15 -1
  36. package/scripts/cli/__tests__/complexity-utils.test.js +24 -0
  37. package/scripts/cli/__tests__/detector.test.js +50 -0
  38. package/scripts/cli/__tests__/template-engine.test.js +23 -0
  39. package/scripts/cli/__tests__/test-setup.js +3 -0
  40. package/scripts/cli/commands/doctor.js +15 -3
  41. package/scripts/cli/commands/generate.js +113 -51
  42. package/scripts/cli/internal/ai-engine.js +30 -10
  43. package/scripts/cli/internal/complexity-utils.js +60 -0
  44. package/scripts/cli/internal/component-validator.js +49 -16
  45. package/scripts/cli/internal/generator.js +89 -36
  46. package/scripts/cli/internal/hook-generator.js +5 -2
  47. package/scripts/cli/internal/itcss-generator.js +16 -12
  48. package/scripts/cli/templates/next-templates.js +81 -30
  49. package/scripts/cli/templates/storybook-templates.js +12 -2
  50. package/scripts/cli/utils/detector.js +45 -7
  51. package/scripts/cli/utils/diagnostics.js +78 -0
  52. package/scripts/cli/utils/telemetry.js +13 -0
  53. package/src/components/Accordion/Accordion.stories.tsx +4 -0
  54. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +1 -1
  55. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +219 -0
  56. package/src/components/AtomixGlass/glass-utils.ts +1 -1
  57. package/src/components/Button/Button.tsx +114 -57
  58. package/src/components/Callout/Callout.tsx +4 -4
  59. package/src/components/Chart/ChartRenderer.tsx +1 -1
  60. package/src/components/Chart/DonutChart.tsx +11 -8
  61. package/src/components/EdgePanel/EdgePanel.tsx +119 -115
  62. package/src/components/Form/Select.tsx +4 -4
  63. package/src/components/List/List.tsx +4 -4
  64. package/src/components/Navigation/SideMenu/SideMenu.tsx +6 -6
  65. package/src/components/PhotoViewer/PhotoViewerImage.tsx +1 -1
  66. package/src/components/ProductReview/ProductReview.tsx +4 -2
  67. package/src/components/Rating/Rating.tsx +4 -2
  68. package/src/components/SectionIntro/SectionIntro.tsx +4 -2
  69. package/src/components/Steps/Steps.tsx +1 -1
  70. package/src/components/Tabs/Tabs.tsx +5 -5
  71. package/src/components/Testimonial/Testimonial.tsx +4 -2
  72. package/src/components/VideoPlayer/VideoPlayer.tsx +4 -2
  73. package/src/layouts/CssGrid/CssGrid.stories.tsx +464 -0
  74. package/src/layouts/CssGrid/CssGrid.tsx +215 -0
  75. package/src/layouts/CssGrid/index.ts +8 -0
  76. package/src/layouts/CssGrid/scripts/CssGrid.js +284 -0
  77. package/src/layouts/CssGrid/scripts/index.js +43 -0
  78. package/src/layouts/Grid/scripts/Container.js +139 -0
  79. package/src/layouts/Grid/scripts/Grid.js +184 -0
  80. package/src/layouts/Grid/scripts/GridCol.js +273 -0
  81. package/src/layouts/Grid/scripts/Row.js +154 -0
  82. package/src/layouts/Grid/scripts/index.js +48 -0
  83. package/src/layouts/MasonryGrid/MasonryGrid.tsx +71 -59
  84. package/src/lib/composables/atomix-glass/useGlassSize.ts +1 -1
  85. package/src/lib/composables/useAccordion.ts +5 -5
  86. package/src/lib/composables/useAtomixGlass.ts +3 -3
  87. package/src/lib/composables/useBarChart.ts +2 -2
  88. package/src/lib/composables/useChart.ts +3 -2
  89. package/src/lib/composables/useChartToolbar.ts +48 -66
  90. package/src/lib/composables/useDataTable.ts +1 -1
  91. package/src/lib/composables/useDatePicker.ts +2 -2
  92. package/src/lib/composables/useEdgePanel.ts +45 -54
  93. package/src/lib/composables/useHeroBackgroundSlider.ts +5 -5
  94. package/src/lib/composables/usePhotoViewer.ts +2 -3
  95. package/src/lib/composables/usePieChart.ts +1 -1
  96. package/src/lib/composables/usePopover.ts +151 -139
  97. package/src/lib/composables/useSideMenu.ts +28 -41
  98. package/src/lib/composables/useSlider.ts +2 -6
  99. package/src/lib/composables/useTooltip.ts +2 -2
  100. package/src/lib/config/index.ts +39 -0
  101. package/src/lib/theme/devtools/Comparator.tsx +1 -1
  102. package/src/lib/theme/devtools/Inspector.tsx +1 -1
  103. package/src/lib/theme/devtools/LiveEditor.tsx +1 -1
  104. package/src/lib/theme/runtime/ThemeProvider.tsx +1 -1
  105. package/src/styles/01-settings/_index.scss +1 -0
  106. package/src/styles/01-settings/_settings.atomix-glass.scss +174 -0
  107. package/src/styles/01-settings/_settings.masonry-grid.scss +42 -6
  108. package/src/styles/02-tools/_tools.glass.scss +6 -0
  109. package/src/styles/05-objects/_objects.masonry-grid.scss +162 -24
  110. package/src/styles/06-components/_components.atomix-glass.scss +4 -4
  111. package/src/lib/composables/useBreadcrumb.ts +0 -81
  112. package/src/lib/composables/useChartInteractions.ts +0 -123
  113. package/src/lib/composables/useChartPerformance.ts +0 -347
  114. package/src/lib/composables/useDropdown.ts +0 -338
  115. package/src/lib/composables/useModal.ts +0 -110
  116. package/src/lib/hooks/usePerformanceMonitor.ts +0 -148
  117. package/src/lib/utils/displacement-generator.ts +0 -92
  118. package/src/lib/utils/memoryMonitor.ts +0 -191
  119. package/src/styles/01-settings/_settings.testtypecheck.scss +0 -53
  120. package/src/styles/01-settings/_settings.typedbutton.scss +0 -53
  121. package/src/styles/06-components/_components.testbutton.scss +0 -212
  122. package/src/styles/06-components/_components.testtypecheck.scss +0 -212
  123. package/src/styles/06-components/_components.typedbutton.scss +0 -212
@@ -1,212 +0,0 @@
1
- // TestButton Component Styles
2
- // Generated by Atomix CLI
3
- // ITCSS Layer: Components
4
- // =============================================================================
5
-
6
- @use 'sass:map';
7
- @use '../../01-settings/settings.testbutton' as *;
8
- @use '../../02-tools/mixins' as *;
9
- @use '../../02-tools/functions' as *;
10
-
11
- // Base Component Class
12
- // =============================================================================
13
-
14
- .c-testbutton {
15
- // Layout
16
- display: inline-flex;
17
- align-items: center;
18
- justify-content: center;
19
- gap: var(--testbutton-gap);
20
-
21
- // Spacing
22
- padding: var(--testbutton-padding-y) var(--testbutton-padding-x);
23
-
24
- // Typography
25
- font-size: var(--testbutton-font-size);
26
- font-weight: var(--testbutton-font-weight);
27
- line-height: var(--testbutton-line-height);
28
-
29
- // Appearance
30
- border-radius: var(--testbutton-radius);
31
- border: none;
32
- cursor: pointer;
33
-
34
- // Transition
35
- transition: all var(--atomix-duration-fast) var(--atomix-easing-smooth);
36
-
37
- // Focus
38
- &:focus-visible {
39
- outline: none;
40
- box-shadow: var(--testbutton-focus-ring);
41
- }
42
-
43
- // Disabled state
44
- &:disabled {
45
- opacity: var(--testbutton-disabled-opacity);
46
- cursor: not-allowed;
47
- pointer-events: none;
48
- }
49
- }
50
-
51
- // Variants
52
- // =============================================================================
53
-
54
- @if true {
55
- .c-testbutton--variant-primary {
56
- background-color: var(--testbutton-primary);
57
- color: var(--atomix-color-white);
58
-
59
- &:hover:not(:disabled) {
60
- background-color: var(--testbutton-primary-hover);
61
- }
62
-
63
- &:active:not(:disabled) {
64
- background-color: var(--testbutton-primary-active);
65
- }
66
- }
67
-
68
- .c-testbutton--variant-secondary {
69
- background-color: var(--atomix-color-neutral-100);
70
- color: var(--atomix-color-neutral-900);
71
-
72
- &:hover:not(:disabled) {
73
- background-color: var(--atomix-color-neutral-200);
74
- }
75
- }
76
-
77
- .c-testbutton--variant-outline {
78
- background-color: transparent;
79
- border: 1px solid var(--atomix-color-neutral-300);
80
- color: var(--atomix-color-neutral-700);
81
-
82
- &:hover:not(:disabled) {
83
- border-color: var(--atomix-color-neutral-400);
84
- background-color: var(--atomix-color-neutral-50);
85
- }
86
- }
87
- }
88
-
89
- // Glassmorphism Variant
90
- // =============================================================================
91
-
92
- .c-testbutton--glass {
93
- background: rgba(255, 255, 255, 0.1);
94
- backdrop-filter: blur(10px) saturate(200%);
95
- border: 1px solid rgba(255, 255, 255, 0.2);
96
-
97
- @media (prefers-reduced-transparency: reduce) {
98
- background: rgba(255, 255, 255, 0.8);
99
- backdrop-filter: none;
100
- }
101
-
102
- &:hover:not(:disabled) {
103
- background: rgba(255, 255, 255, 0.15);
104
- }
105
- }
106
-
107
- // Animation Variants
108
- // =============================================================================
109
-
110
- @if true {
111
- // Fade In Animation
112
- .c-testbutton--animate-fade-in {
113
- animation: atomix-fade-in var(--atomix-duration-base) var(--atomix-easing-smooth);
114
- }
115
-
116
- // Slide In Up Animation
117
- .c-testbutton--animate-slide-in-up {
118
- animation: atomix-slide-in-up var(--atomix-duration-slow) var(--atomix-easing-smooth);
119
- }
120
-
121
- // Scale In Animation
122
- .c-testbutton--animate-scale-in {
123
- animation: atomix-scale-in var(--atomix-duration-base) var(--atomix-easing-smooth);
124
- }
125
-
126
- // Pulse Animation (for loading states)
127
- .c-testbutton--animate-pulse {
128
- animation: atomix-pulse 2s var(--atomix-easing-smooth) infinite;
129
- }
130
-
131
- // Shimmer Animation (for skeleton loaders)
132
- .c-testbutton--animate-shimmer {
133
- animation: atomix-shimmer 2s linear infinite;
134
- background: linear-gradient(
135
- 90deg,
136
- var(--atomix-color-neutral-100) 0%,
137
- var(--atomix-color-neutral-200) 50%,
138
- var(--atomix-color-neutral-100) 100%
139
- );
140
- background-size: 200% 100%;
141
- }
142
- }
143
-
144
- // Motion Preferences
145
- // =============================================================================
146
-
147
- @media (prefers-reduced-motion: reduce) {
148
- .c-testbutton,
149
- .c-testbutton * {
150
- animation-duration: 0.01ms !important;
151
- animation-iteration-count: 1 !important;
152
- transition-duration: 0.01ms !important;
153
- }
154
- }
155
-
156
- // Sizes
157
- // =============================================================================
158
-
159
- @if true {
160
- .c-testbutton--size-sm {
161
- padding: calc(var(--testbutton-padding-y) * 0.75) calc(var(--testbutton-padding-x) * 0.75);
162
- font-size: var(--atomix-font-size-sm);
163
- }
164
-
165
- .c-testbutton--size-md {
166
- // Default size - no overrides needed
167
- }
168
-
169
- .c-testbutton--size-lg {
170
- padding: calc(var(--testbutton-padding-y) * 1.25) calc(var(--testbutton-padding-x) * 1.25);
171
- font-size: var(--atomix-font-size-lg);
172
- }
173
- }
174
-
175
- // States
176
- // =============================================================================
177
-
178
- @if true {
179
- .c-testbutton--state-loading {
180
- position: relative;
181
- pointer-events: none;
182
-
183
- &::after {
184
- content: '';
185
- position: absolute;
186
- inset: 0;
187
- background: rgba(255, 255, 255, 0.3);
188
- backdrop-filter: blur(2px);
189
- }
190
- }
191
-
192
- .c-testbutton--state-glass {
193
- background-color: rgba(255, 255, 255, 0.1);
194
- backdrop-filter: blur(10px);
195
- border: 1px solid rgba(255, 255, 255, 0.2);
196
- }
197
- }
198
-
199
- // Responsive Overrides
200
- // =============================================================================
201
-
202
- @include atomix-media-breakpoint-up(md) {
203
- .c-testbutton {
204
- // Tablet-specific adjustments if needed
205
- }
206
- }
207
-
208
- @include atomix-media-breakpoint-up(lg) {
209
- .c-testbutton {
210
- // Desktop-specific adjustments if needed
211
- }
212
- }
@@ -1,212 +0,0 @@
1
- // TestTypeCheck Component Styles
2
- // Generated by Atomix CLI
3
- // ITCSS Layer: Components
4
- // =============================================================================
5
-
6
- @use 'sass:map';
7
- @use '../../01-settings/settings.testtypecheck' as *;
8
- @use '../../02-tools/mixins' as *;
9
- @use '../../02-tools/functions' as *;
10
-
11
- // Base Component Class
12
- // =============================================================================
13
-
14
- .c-testtypecheck {
15
- // Layout
16
- display: inline-flex;
17
- align-items: center;
18
- justify-content: center;
19
- gap: var(--testtypecheck-gap);
20
-
21
- // Spacing
22
- padding: var(--testtypecheck-padding-y) var(--testtypecheck-padding-x);
23
-
24
- // Typography
25
- font-size: var(--testtypecheck-font-size);
26
- font-weight: var(--testtypecheck-font-weight);
27
- line-height: var(--testtypecheck-line-height);
28
-
29
- // Appearance
30
- border-radius: var(--testtypecheck-radius);
31
- border: none;
32
- cursor: pointer;
33
-
34
- // Transition
35
- transition: all var(--atomix-duration-fast) var(--atomix-easing-smooth);
36
-
37
- // Focus
38
- &:focus-visible {
39
- outline: none;
40
- box-shadow: var(--testtypecheck-focus-ring);
41
- }
42
-
43
- // Disabled state
44
- &:disabled {
45
- opacity: var(--testtypecheck-disabled-opacity);
46
- cursor: not-allowed;
47
- pointer-events: none;
48
- }
49
- }
50
-
51
- // Variants
52
- // =============================================================================
53
-
54
- @if true {
55
- .c-testtypecheck--variant-primary {
56
- background-color: var(--testtypecheck-primary);
57
- color: var(--atomix-color-white);
58
-
59
- &:hover:not(:disabled) {
60
- background-color: var(--testtypecheck-primary-hover);
61
- }
62
-
63
- &:active:not(:disabled) {
64
- background-color: var(--testtypecheck-primary-active);
65
- }
66
- }
67
-
68
- .c-testtypecheck--variant-secondary {
69
- background-color: var(--atomix-color-neutral-100);
70
- color: var(--atomix-color-neutral-900);
71
-
72
- &:hover:not(:disabled) {
73
- background-color: var(--atomix-color-neutral-200);
74
- }
75
- }
76
-
77
- .c-testtypecheck--variant-outline {
78
- background-color: transparent;
79
- border: 1px solid var(--atomix-color-neutral-300);
80
- color: var(--atomix-color-neutral-700);
81
-
82
- &:hover:not(:disabled) {
83
- border-color: var(--atomix-color-neutral-400);
84
- background-color: var(--atomix-color-neutral-50);
85
- }
86
- }
87
- }
88
-
89
- // Glassmorphism Variant
90
- // =============================================================================
91
-
92
- .c-testtypecheck--glass {
93
- background: rgba(255, 255, 255, 0.1);
94
- backdrop-filter: blur(10px) saturate(200%);
95
- border: 1px solid rgba(255, 255, 255, 0.2);
96
-
97
- @media (prefers-reduced-transparency: reduce) {
98
- background: rgba(255, 255, 255, 0.8);
99
- backdrop-filter: none;
100
- }
101
-
102
- &:hover:not(:disabled) {
103
- background: rgba(255, 255, 255, 0.15);
104
- }
105
- }
106
-
107
- // Animation Variants
108
- // =============================================================================
109
-
110
- @if true {
111
- // Fade In Animation
112
- .c-testtypecheck--animate-fade-in {
113
- animation: atomix-fade-in var(--atomix-duration-base) var(--atomix-easing-smooth);
114
- }
115
-
116
- // Slide In Up Animation
117
- .c-testtypecheck--animate-slide-in-up {
118
- animation: atomix-slide-in-up var(--atomix-duration-slow) var(--atomix-easing-smooth);
119
- }
120
-
121
- // Scale In Animation
122
- .c-testtypecheck--animate-scale-in {
123
- animation: atomix-scale-in var(--atomix-duration-base) var(--atomix-easing-smooth);
124
- }
125
-
126
- // Pulse Animation (for loading states)
127
- .c-testtypecheck--animate-pulse {
128
- animation: atomix-pulse 2s var(--atomix-easing-smooth) infinite;
129
- }
130
-
131
- // Shimmer Animation (for skeleton loaders)
132
- .c-testtypecheck--animate-shimmer {
133
- animation: atomix-shimmer 2s linear infinite;
134
- background: linear-gradient(
135
- 90deg,
136
- var(--atomix-color-neutral-100) 0%,
137
- var(--atomix-color-neutral-200) 50%,
138
- var(--atomix-color-neutral-100) 100%
139
- );
140
- background-size: 200% 100%;
141
- }
142
- }
143
-
144
- // Motion Preferences
145
- // =============================================================================
146
-
147
- @media (prefers-reduced-motion: reduce) {
148
- .c-testtypecheck,
149
- .c-testtypecheck * {
150
- animation-duration: 0.01ms !important;
151
- animation-iteration-count: 1 !important;
152
- transition-duration: 0.01ms !important;
153
- }
154
- }
155
-
156
- // Sizes
157
- // =============================================================================
158
-
159
- @if true {
160
- .c-testtypecheck--size-sm {
161
- padding: calc(var(--testtypecheck-padding-y) * 0.75) calc(var(--testtypecheck-padding-x) * 0.75);
162
- font-size: var(--atomix-font-size-sm);
163
- }
164
-
165
- .c-testtypecheck--size-md {
166
- // Default size - no overrides needed
167
- }
168
-
169
- .c-testtypecheck--size-lg {
170
- padding: calc(var(--testtypecheck-padding-y) * 1.25) calc(var(--testtypecheck-padding-x) * 1.25);
171
- font-size: var(--atomix-font-size-lg);
172
- }
173
- }
174
-
175
- // States
176
- // =============================================================================
177
-
178
- @if true {
179
- .c-testtypecheck--state-loading {
180
- position: relative;
181
- pointer-events: none;
182
-
183
- &::after {
184
- content: '';
185
- position: absolute;
186
- inset: 0;
187
- background: rgba(255, 255, 255, 0.3);
188
- backdrop-filter: blur(2px);
189
- }
190
- }
191
-
192
- .c-testtypecheck--state-glass {
193
- background-color: rgba(255, 255, 255, 0.1);
194
- backdrop-filter: blur(10px);
195
- border: 1px solid rgba(255, 255, 255, 0.2);
196
- }
197
- }
198
-
199
- // Responsive Overrides
200
- // =============================================================================
201
-
202
- @include atomix-media-breakpoint-up(md) {
203
- .c-testtypecheck {
204
- // Tablet-specific adjustments if needed
205
- }
206
- }
207
-
208
- @include atomix-media-breakpoint-up(lg) {
209
- .c-testtypecheck {
210
- // Desktop-specific adjustments if needed
211
- }
212
- }
@@ -1,212 +0,0 @@
1
- // TypedButton Component Styles
2
- // Generated by Atomix CLI
3
- // ITCSS Layer: Components
4
- // =============================================================================
5
-
6
- @use 'sass:map';
7
- @use '../../01-settings/settings.typedbutton' as *;
8
- @use '../../02-tools/mixins' as *;
9
- @use '../../02-tools/functions' as *;
10
-
11
- // Base Component Class
12
- // =============================================================================
13
-
14
- .c-typedbutton {
15
- // Layout
16
- display: inline-flex;
17
- align-items: center;
18
- justify-content: center;
19
- gap: var(--typedbutton-gap);
20
-
21
- // Spacing
22
- padding: var(--typedbutton-padding-y) var(--typedbutton-padding-x);
23
-
24
- // Typography
25
- font-size: var(--typedbutton-font-size);
26
- font-weight: var(--typedbutton-font-weight);
27
- line-height: var(--typedbutton-line-height);
28
-
29
- // Appearance
30
- border-radius: var(--typedbutton-radius);
31
- border: none;
32
- cursor: pointer;
33
-
34
- // Transition
35
- transition: all var(--atomix-duration-fast) var(--atomix-easing-smooth);
36
-
37
- // Focus
38
- &:focus-visible {
39
- outline: none;
40
- box-shadow: var(--typedbutton-focus-ring);
41
- }
42
-
43
- // Disabled state
44
- &:disabled {
45
- opacity: var(--typedbutton-disabled-opacity);
46
- cursor: not-allowed;
47
- pointer-events: none;
48
- }
49
- }
50
-
51
- // Variants
52
- // =============================================================================
53
-
54
- @if true {
55
- .c-typedbutton--variant-primary {
56
- background-color: var(--typedbutton-primary);
57
- color: var(--atomix-color-white);
58
-
59
- &:hover:not(:disabled) {
60
- background-color: var(--typedbutton-primary-hover);
61
- }
62
-
63
- &:active:not(:disabled) {
64
- background-color: var(--typedbutton-primary-active);
65
- }
66
- }
67
-
68
- .c-typedbutton--variant-secondary {
69
- background-color: var(--atomix-color-neutral-100);
70
- color: var(--atomix-color-neutral-900);
71
-
72
- &:hover:not(:disabled) {
73
- background-color: var(--atomix-color-neutral-200);
74
- }
75
- }
76
-
77
- .c-typedbutton--variant-outline {
78
- background-color: transparent;
79
- border: 1px solid var(--atomix-color-neutral-300);
80
- color: var(--atomix-color-neutral-700);
81
-
82
- &:hover:not(:disabled) {
83
- border-color: var(--atomix-color-neutral-400);
84
- background-color: var(--atomix-color-neutral-50);
85
- }
86
- }
87
- }
88
-
89
- // Glassmorphism Variant
90
- // =============================================================================
91
-
92
- .c-typedbutton--glass {
93
- background: rgba(255, 255, 255, 0.1);
94
- backdrop-filter: blur(10px) saturate(200%);
95
- border: 1px solid rgba(255, 255, 255, 0.2);
96
-
97
- @media (prefers-reduced-transparency: reduce) {
98
- background: rgba(255, 255, 255, 0.8);
99
- backdrop-filter: none;
100
- }
101
-
102
- &:hover:not(:disabled) {
103
- background: rgba(255, 255, 255, 0.15);
104
- }
105
- }
106
-
107
- // Animation Variants
108
- // =============================================================================
109
-
110
- @if true {
111
- // Fade In Animation
112
- .c-typedbutton--animate-fade-in {
113
- animation: atomix-fade-in var(--atomix-duration-base) var(--atomix-easing-smooth);
114
- }
115
-
116
- // Slide In Up Animation
117
- .c-typedbutton--animate-slide-in-up {
118
- animation: atomix-slide-in-up var(--atomix-duration-slow) var(--atomix-easing-smooth);
119
- }
120
-
121
- // Scale In Animation
122
- .c-typedbutton--animate-scale-in {
123
- animation: atomix-scale-in var(--atomix-duration-base) var(--atomix-easing-smooth);
124
- }
125
-
126
- // Pulse Animation (for loading states)
127
- .c-typedbutton--animate-pulse {
128
- animation: atomix-pulse 2s var(--atomix-easing-smooth) infinite;
129
- }
130
-
131
- // Shimmer Animation (for skeleton loaders)
132
- .c-typedbutton--animate-shimmer {
133
- animation: atomix-shimmer 2s linear infinite;
134
- background: linear-gradient(
135
- 90deg,
136
- var(--atomix-color-neutral-100) 0%,
137
- var(--atomix-color-neutral-200) 50%,
138
- var(--atomix-color-neutral-100) 100%
139
- );
140
- background-size: 200% 100%;
141
- }
142
- }
143
-
144
- // Motion Preferences
145
- // =============================================================================
146
-
147
- @media (prefers-reduced-motion: reduce) {
148
- .c-typedbutton,
149
- .c-typedbutton * {
150
- animation-duration: 0.01ms !important;
151
- animation-iteration-count: 1 !important;
152
- transition-duration: 0.01ms !important;
153
- }
154
- }
155
-
156
- // Sizes
157
- // =============================================================================
158
-
159
- @if true {
160
- .c-typedbutton--size-sm {
161
- padding: calc(var(--typedbutton-padding-y) * 0.75) calc(var(--typedbutton-padding-x) * 0.75);
162
- font-size: var(--atomix-font-size-sm);
163
- }
164
-
165
- .c-typedbutton--size-md {
166
- // Default size - no overrides needed
167
- }
168
-
169
- .c-typedbutton--size-lg {
170
- padding: calc(var(--typedbutton-padding-y) * 1.25) calc(var(--typedbutton-padding-x) * 1.25);
171
- font-size: var(--atomix-font-size-lg);
172
- }
173
- }
174
-
175
- // States
176
- // =============================================================================
177
-
178
- @if true {
179
- .c-typedbutton--state-loading {
180
- position: relative;
181
- pointer-events: none;
182
-
183
- &::after {
184
- content: '';
185
- position: absolute;
186
- inset: 0;
187
- background: rgba(255, 255, 255, 0.3);
188
- backdrop-filter: blur(2px);
189
- }
190
- }
191
-
192
- .c-typedbutton--state-glass {
193
- background-color: rgba(255, 255, 255, 0.1);
194
- backdrop-filter: blur(10px);
195
- border: 1px solid rgba(255, 255, 255, 0.2);
196
- }
197
- }
198
-
199
- // Responsive Overrides
200
- // =============================================================================
201
-
202
- @include atomix-media-breakpoint-up(md) {
203
- .c-typedbutton {
204
- // Tablet-specific adjustments if needed
205
- }
206
- }
207
-
208
- @include atomix-media-breakpoint-up(lg) {
209
- .c-typedbutton {
210
- // Desktop-specific adjustments if needed
211
- }
212
- }