@shohojdhara/atomix 0.5.0 → 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 (168) hide show
  1. package/atomix.config.ts +12 -0
  2. package/build-tools/webpack-loader.js +5 -4
  3. package/dist/atomix.css +230 -83
  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 +24 -23
  9. package/dist/charts.js +271 -369
  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 +3 -2
  15. package/dist/core.js +342 -382
  16. package/dist/core.js.map +1 -1
  17. package/dist/forms.d.ts +4 -6
  18. package/dist/forms.js +233 -334
  19. package/dist/forms.js.map +1 -1
  20. package/dist/heavy.d.ts +11 -2
  21. package/dist/heavy.js +406 -445
  22. package/dist/heavy.js.map +1 -1
  23. package/dist/index.d.ts +109 -65
  24. package/dist/index.esm.js +654 -748
  25. package/dist/index.esm.js.map +1 -1
  26. package/dist/index.js +621 -717
  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 +24 -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 +1 -133
  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/AtomixGlass.tsx +188 -128
  55. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +63 -91
  56. package/src/components/AtomixGlass/PerformanceDashboard.tsx +153 -201
  57. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +9 -6
  58. package/src/components/AtomixGlass/glass-utils.ts +51 -1
  59. package/src/components/AtomixGlass/stories/AnimationFeatures.stories.tsx +52 -46
  60. package/src/components/AtomixGlass/stories/Examples.stories.tsx +573 -236
  61. package/src/components/AtomixGlass/stories/Playground.stories.tsx +88 -41
  62. package/src/components/AtomixGlass/stories/argTypes.ts +19 -19
  63. package/src/components/AtomixGlass/stories/shared-components.tsx +7 -12
  64. package/src/components/AtomixGlass/stories/types.ts +3 -3
  65. package/src/components/Button/Button.tsx +114 -57
  66. package/src/components/Callout/Callout.tsx +4 -4
  67. package/src/components/Chart/ChartRenderer.tsx +1 -1
  68. package/src/components/Chart/DonutChart.tsx +11 -8
  69. package/src/components/EdgePanel/EdgePanel.tsx +119 -115
  70. package/src/components/Form/Select.tsx +4 -4
  71. package/src/components/List/List.tsx +4 -4
  72. package/src/components/Navigation/SideMenu/SideMenu.tsx +6 -6
  73. package/src/components/PhotoViewer/PhotoViewerImage.tsx +1 -1
  74. package/src/components/ProductReview/ProductReview.tsx +4 -2
  75. package/src/components/Rating/Rating.tsx +4 -2
  76. package/src/components/SectionIntro/SectionIntro.tsx +4 -2
  77. package/src/components/Steps/Steps.tsx +1 -1
  78. package/src/components/Tabs/Tabs.tsx +5 -5
  79. package/src/components/Testimonial/Testimonial.tsx +4 -2
  80. package/src/components/VideoPlayer/VideoPlayer.tsx +4 -2
  81. package/src/layouts/CssGrid/CssGrid.stories.tsx +464 -0
  82. package/src/layouts/CssGrid/CssGrid.tsx +215 -0
  83. package/src/layouts/CssGrid/index.ts +8 -0
  84. package/src/layouts/CssGrid/scripts/CssGrid.js +284 -0
  85. package/src/layouts/CssGrid/scripts/index.js +43 -0
  86. package/src/layouts/Grid/scripts/Container.js +139 -0
  87. package/src/layouts/Grid/scripts/Grid.js +184 -0
  88. package/src/layouts/Grid/scripts/GridCol.js +273 -0
  89. package/src/layouts/Grid/scripts/Row.js +154 -0
  90. package/src/layouts/Grid/scripts/index.js +48 -0
  91. package/src/layouts/MasonryGrid/MasonryGrid.tsx +71 -59
  92. package/src/lib/composables/atomix-glass/useGlassSize.ts +1 -1
  93. package/src/lib/composables/useAccordion.ts +5 -5
  94. package/src/lib/composables/useAtomixGlass.ts +111 -74
  95. package/src/lib/composables/useAtomixGlassStyles.ts +0 -2
  96. package/src/lib/composables/useBarChart.ts +2 -2
  97. package/src/lib/composables/useChart.ts +3 -2
  98. package/src/lib/composables/useChartToolbar.ts +48 -66
  99. package/src/lib/composables/useDataTable.ts +1 -1
  100. package/src/lib/composables/useDatePicker.ts +2 -2
  101. package/src/lib/composables/useEdgePanel.ts +45 -54
  102. package/src/lib/composables/useHeroBackgroundSlider.ts +5 -5
  103. package/src/lib/composables/usePhotoViewer.ts +2 -3
  104. package/src/lib/composables/usePieChart.ts +1 -1
  105. package/src/lib/composables/usePopover.ts +151 -139
  106. package/src/lib/composables/useSideMenu.ts +28 -41
  107. package/src/lib/composables/useSlider.ts +2 -6
  108. package/src/lib/composables/useTooltip.ts +2 -2
  109. package/src/lib/config/index.ts +39 -0
  110. package/src/lib/constants/components.ts +1 -0
  111. package/src/lib/theme/devtools/Comparator.tsx +1 -1
  112. package/src/lib/theme/devtools/Inspector.tsx +1 -1
  113. package/src/lib/theme/devtools/LiveEditor.tsx +1 -1
  114. package/src/lib/theme/runtime/ThemeProvider.tsx +1 -1
  115. package/src/lib/types/components.ts +1 -0
  116. package/src/styles/01-settings/_index.scss +1 -0
  117. package/src/styles/01-settings/_settings.atomix-glass.scss +174 -0
  118. package/src/styles/01-settings/_settings.masonry-grid.scss +42 -6
  119. package/src/styles/02-tools/_tools.glass.scss +6 -0
  120. package/src/styles/05-objects/_objects.masonry-grid.scss +162 -24
  121. package/src/styles/06-components/_components.atomix-glass.scss +160 -99
  122. package/scripts/cli/__tests__/README.md +0 -81
  123. package/scripts/cli/__tests__/basic.test.js +0 -116
  124. package/scripts/cli/__tests__/clean.test.js +0 -278
  125. package/scripts/cli/__tests__/component-generator.test.js +0 -332
  126. package/scripts/cli/__tests__/component-validator.test.js +0 -433
  127. package/scripts/cli/__tests__/generator.test.js +0 -613
  128. package/scripts/cli/__tests__/glass-motion.test.js +0 -256
  129. package/scripts/cli/__tests__/integration.test.js +0 -938
  130. package/scripts/cli/__tests__/migrate.test.js +0 -74
  131. package/scripts/cli/__tests__/security.test.js +0 -206
  132. package/scripts/cli/__tests__/theme-bridge.test.js +0 -507
  133. package/scripts/cli/__tests__/token-manager.test.js +0 -251
  134. package/scripts/cli/__tests__/token-provider.test.js +0 -361
  135. package/scripts/cli/__tests__/utils.test.js +0 -165
  136. package/src/components/AtomixGlass/stories/AnimationTests.stories.tsx +0 -95
  137. package/src/components/AtomixGlass/stories/CardExamples.stories.tsx +0 -212
  138. package/src/components/AtomixGlass/stories/Customization.stories.tsx +0 -131
  139. package/src/components/AtomixGlass/stories/DashboardExamples.stories.tsx +0 -348
  140. package/src/components/AtomixGlass/stories/EcommerceExamples.stories.tsx +0 -410
  141. package/src/components/AtomixGlass/stories/FormExamples.stories.tsx +0 -436
  142. package/src/components/AtomixGlass/stories/HeroExamples.stories.tsx +0 -264
  143. package/src/components/AtomixGlass/stories/InteractivePlayground.stories.tsx +0 -247
  144. package/src/components/AtomixGlass/stories/MobileUIExamples.stories.tsx +0 -418
  145. package/src/components/AtomixGlass/stories/ModalExamples.stories.tsx +0 -402
  146. package/src/components/AtomixGlass/stories/Modes.stories.tsx +0 -1082
  147. package/src/components/AtomixGlass/stories/Overview.stories.tsx +0 -497
  148. package/src/components/AtomixGlass/stories/Performance.stories.tsx +0 -103
  149. package/src/components/AtomixGlass/stories/PresetGallery.stories.tsx +0 -335
  150. package/src/components/AtomixGlass/stories/Shaders.stories.tsx +0 -395
  151. package/src/components/AtomixGlass/stories/WidgetExamples.stories.tsx +0 -441
  152. package/src/components/TypedButton/TypedButton.stories.tsx +0 -59
  153. package/src/components/TypedButton/TypedButton.tsx +0 -39
  154. package/src/components/TypedButton/index.ts +0 -2
  155. package/src/lib/composables/useBreadcrumb.ts +0 -81
  156. package/src/lib/composables/useChartInteractions.ts +0 -123
  157. package/src/lib/composables/useChartPerformance.ts +0 -347
  158. package/src/lib/composables/useDropdown.ts +0 -338
  159. package/src/lib/composables/useModal.ts +0 -110
  160. package/src/lib/composables/useTypedButton.ts +0 -66
  161. package/src/lib/hooks/usePerformanceMonitor.ts +0 -148
  162. package/src/lib/utils/displacement-generator.ts +0 -92
  163. package/src/lib/utils/memoryMonitor.ts +0 -191
  164. package/src/styles/01-settings/_settings.testtypecheck.scss +0 -53
  165. package/src/styles/01-settings/_settings.typedbutton.scss +0 -53
  166. package/src/styles/06-components/_components.testbutton.scss +0 -212
  167. package/src/styles/06-components/_components.testtypecheck.scss +0 -212
  168. package/src/styles/06-components/_components.typedbutton.scss +0 -212
package/atomix.config.ts CHANGED
@@ -109,6 +109,18 @@ export default defineConfig({
109
109
  anonymize: true
110
110
  },
111
111
 
112
+ /**
113
+ * CLI component generator defaults (`atomix generate component`).
114
+ * CLI flags override these values.
115
+ */
116
+ // generator: {
117
+ // outputPath: './src/components',
118
+ // framework: 'react',
119
+ // features: { storybook: true, hook: true, styles: true, tests: false },
120
+ // hookOutputDir: 'src/lib/composables',
121
+ // storybookCssImport: '@shohojdhara/atomix/scss',
122
+ // },
123
+
112
124
  /**
113
125
  * Theme Customization
114
126
  *
@@ -110,11 +110,12 @@ export function getAtomixConfig(context) {
110
110
 
111
111
  return require(configPath);
112
112
  } catch {
113
+ // Return default config matching AtomixConfig interface
113
114
  return {
114
- theme: 'default',
115
- optimize: true,
116
- includeAtoms: false,
117
- components: [],
115
+ prefix: 'atomix',
116
+ theme: {
117
+ extend: {}
118
+ }
118
119
  };
119
120
  }
120
121
  }
package/dist/atomix.css CHANGED
@@ -1409,22 +1409,85 @@ a, a:hover {
1409
1409
  margin-left: 91.6666666667%;
1410
1410
  }
1411
1411
  }
1412
+ .o-masonry-grid--css-fallback {
1413
+ display: grid;
1414
+ grid-gap: var(--atomix-spacing-16);
1415
+ gap: var(--atomix-spacing-16);
1416
+ grid-template-columns: repeat(auto-fit, minmax(var(--atomix-masonry-min-column-width, 250px), 1fr));
1417
+ }
1418
+ @media (min-width: 576px) {
1419
+ .o-masonry-grid--css-fallback {
1420
+ gap: var(--atomix-spacing-8);
1421
+ }
1422
+ }
1423
+ @media (min-width: 768px) {
1424
+ .o-masonry-grid--css-fallback {
1425
+ gap: var(--atomix-spacing-16);
1426
+ }
1427
+ }
1428
+ @media (min-width: 992px) {
1429
+ .o-masonry-grid--css-fallback {
1430
+ gap: var(--atomix-spacing-24);
1431
+ }
1432
+ }
1433
+ .o-masonry-grid--css-fallback .o-masonry-grid__item {
1434
+ position: static;
1435
+ opacity: 1;
1436
+ visibility: visible;
1437
+ width: 100%;
1438
+ }
1439
+ .o-masonry-grid--css-fallback .o-masonry-grid__item:focus {
1440
+ outline: var(--atomix-focus-ring-width) solid var(--atomix-focus-ring-color);
1441
+ outline-offset: var(--atomix-focus-ring-offset);
1442
+ z-index: var(--atomix-z-index-5);
1443
+ }
1412
1444
  .o-masonry-grid {
1413
1445
  position: relative;
1414
1446
  width: 100%;
1415
- min-height: 100px;
1447
+ min-height: var(--atomix-spacing-200);
1448
+ }
1449
+ .o-masonry-grid:focus-within .o-masonry-grid__item:focus {
1450
+ outline: var(--atomix-focus-ring-width) solid var(--atomix-focus-ring-color);
1451
+ outline-offset: var(--atomix-focus-ring-offset);
1452
+ z-index: var(--atomix-z-index-5);
1416
1453
  }
1417
1454
  .o-masonry-grid--animate .o-masonry-grid__item {
1418
- transition: opacity 0.3s ease, top 0.3s ease, left 0.3s ease;
1455
+ transition: opacity var(--atomix-transition-duration-base) var(--atomix-transition-timing-base), top var(--atomix-transition-duration-base) var(--atomix-transition-timing-base), left var(--atomix-transition-duration-base) var(--atomix-transition-timing-base);
1456
+ }
1457
+ @supports (transition-behavior: allow-discrete) {
1458
+ .o-masonry-grid--animate .o-masonry-grid__item {
1459
+ transition-behavior: allow-discrete;
1460
+ }
1419
1461
  }
1420
1462
  .o-masonry-grid__item {
1421
1463
  box-sizing: border-box;
1422
1464
  width: 100%;
1465
+ background-color: var(--atomix-body-bg);
1466
+ }
1467
+ .o-masonry-grid__item:focus {
1468
+ outline: var(--atomix-focus-ring-width) solid var(--atomix-focus-ring-color);
1469
+ outline-offset: var(--atomix-focus-ring-offset);
1470
+ z-index: var(--atomix-z-index-5);
1471
+ transform: scale(1.02);
1472
+ transition: transform var(--atomix-transition-duration-fast) var(--atomix-transition-timing-base);
1473
+ }
1474
+ @media (prefers-contrast: high) {
1475
+ .o-masonry-grid__item:focus {
1476
+ outline-width: calc(var(--atomix-focus-ring-width) * 2);
1477
+ }
1423
1478
  }
1424
1479
  .o-masonry-grid__item:not([style*="position: absolute"]) {
1425
1480
  opacity: 0;
1426
1481
  visibility: hidden;
1427
1482
  }
1483
+ @supports (view-transition-name: masonry-item) {
1484
+ .o-masonry-grid__item:not([style*="position: absolute"]) {
1485
+ view-transition-name: masonry-item;
1486
+ }
1487
+ }
1488
+ .o-masonry-grid__item-loading {
1489
+ position: relative;
1490
+ }
1428
1491
  .o-masonry-grid__item-loading::before {
1429
1492
  content: "";
1430
1493
  position: absolute;
@@ -1432,15 +1495,41 @@ a, a:hover {
1432
1495
  left: 0;
1433
1496
  width: 100%;
1434
1497
  height: 100%;
1435
- background-color: var(--atomix-gray-10);
1436
- z-index: 1;
1437
- border-radius: 4px;
1498
+ background: var(--atomix-gray-10);
1499
+ z-index: var(--atomix-z-index-10);
1500
+ border-radius: var(--atomix-border-radius-sm);
1501
+ animation: masonry-loading-fade-in 0.5s ease-out forwards;
1438
1502
  }
1439
1503
  .o-masonry-grid__item-loading img {
1440
1504
  opacity: 0;
1441
1505
  }
1506
+ @supports (property: opacity) and (animation-timeline: view()) {
1507
+ .o-masonry-grid__item-loading img {
1508
+ opacity: var(--masonry-img-opacity);
1509
+ }
1510
+ @property --masonry-img-opacity {
1511
+ .o-masonry-grid__item-loading img {
1512
+ syntax: "<number>";
1513
+ inherits: false;
1514
+ initial-value: 0;
1515
+ }
1516
+ }
1517
+ }
1442
1518
  .o-masonry-grid__item-loaded img {
1443
- animation: masonry-item-fade-in 0.3s ease forwards;
1519
+ animation: masonry-item-fade-in var(--atomix-transition-duration-base) var(--atomix-transition-timing-base) forwards;
1520
+ }
1521
+ @supports (property: opacity) and (animation-timeline: view()) {
1522
+ .o-masonry-grid__item-loaded img {
1523
+ opacity: var(--masonry-img-opacity);
1524
+ animation: masonry-item-fade-in-advanced var(--atomix-transition-duration-base) var(--atomix-transition-timing-base) forwards;
1525
+ }
1526
+ @property --masonry-img-opacity {
1527
+ .o-masonry-grid__item-loaded img {
1528
+ syntax: "<number>";
1529
+ inherits: false;
1530
+ initial-value: 0;
1531
+ }
1532
+ }
1444
1533
  }
1445
1534
  .o-masonry-grid--loading-images {
1446
1535
  position: relative;
@@ -1448,28 +1537,61 @@ a, a:hover {
1448
1537
  .o-masonry-grid--loading-images::after {
1449
1538
  content: "";
1450
1539
  position: absolute;
1451
- bottom: 16px;
1452
- right: 16px;
1453
- width: 24px;
1454
- height: 24px;
1455
- border: 2px solid rgba(0, 0, 0, 0.1);
1540
+ bottom: var(--atomix-spacing-16);
1541
+ right: var(--atomix-spacing-16);
1542
+ width: var(--atomix-spacing-24);
1543
+ height: var(--atomix-spacing-24);
1544
+ border: var(--atomix-border-width-2) solid rgba(0, 0, 0, 0.1);
1456
1545
  border-radius: 50%;
1457
1546
  border-top-color: var(--atomix-brand-border-subtle);
1458
1547
  animation: masonry-spinner 0.8s linear infinite;
1459
- z-index: 1000;
1548
+ z-index: var(--atomix-z-index-10);
1460
1549
  pointer-events: none;
1461
1550
  }
1551
+ @media (prefers-color-scheme: dark) {
1552
+ .o-masonry-grid--loading-images::after {
1553
+ border-color: rgba(255, 255, 255, 0.1);
1554
+ border-top-color: var(--atomix-brand-border-subtle-dark);
1555
+ }
1556
+ }
1557
+ @media (min-width: 768px) {
1558
+ .o-masonry-grid {
1559
+ min-height: var(--atomix-spacing-100);
1560
+ }
1561
+ }
1462
1562
  @keyframes masonry-spinner {
1463
1563
  to {
1464
1564
  transform: rotate(360deg);
1465
1565
  }
1466
1566
  }
1567
+ @keyframes masonry-loading-fade-in {
1568
+ from {
1569
+ opacity: 0;
1570
+ transform: scale(0.95);
1571
+ }
1572
+ to {
1573
+ opacity: 1;
1574
+ transform: scale(1);
1575
+ }
1576
+ }
1467
1577
  @keyframes masonry-item-fade-in {
1468
1578
  from {
1469
1579
  opacity: 0;
1580
+ transform: translateY(20px);
1470
1581
  }
1471
1582
  to {
1472
1583
  opacity: 1;
1584
+ transform: translateY(0);
1585
+ }
1586
+ }
1587
+ @keyframes masonry-item-fade-in-advanced {
1588
+ from {
1589
+ --masonry-img-opacity: 0;
1590
+ transform: translateY(20px) scale(0.95);
1591
+ }
1592
+ to {
1593
+ --masonry-img-opacity: 1;
1594
+ transform: translateY(0) scale(1);
1473
1595
  }
1474
1596
  }
1475
1597
  .o-block {
@@ -1896,81 +2018,95 @@ a, a:hover {
1896
2018
  }
1897
2019
  .c-atomix-glass {
1898
2020
  position: relative;
1899
- --atomix-glass-transition: all 0.15s ease;
2021
+ --_glass-radius: var(--atomix-glass-radius, var(--atomix-radius-md, 0.75rem));
2022
+ --_glass-transform: var(--atomix-glass-transform, translateZ(0));
1900
2023
  --atomix-glass-position: absolute;
1901
- --atomix-glass-border-width: var(--atomix-spacing-0-5, 0.09375rem);
1902
- --atomix-glass-base-z-index: 0;
1903
- --_glass-z-background: calc(var(--atomix-glass-base-z-index) + 0);
1904
- --_glass-z-container: calc(var(--atomix-glass-base-z-index) + 1);
1905
- --_glass-z-filter: calc(var(--atomix-glass-base-z-index) + 1);
1906
- --_glass-z-effect: calc(var(--atomix-glass-base-z-index) + 2);
1907
- --_glass-z-hover: calc(var(--atomix-glass-base-z-index) + 3);
1908
- --_glass-z-overlay-highlight: calc(var(--atomix-glass-base-z-index) + 4);
1909
- --_glass-z-border-1: calc(var(--atomix-glass-base-z-index) + 5);
1910
- --_glass-z-border-2: calc(var(--atomix-glass-base-z-index) + 6);
1911
- --_glass-z-content: calc(var(--atomix-glass-base-z-index) + 7);
1912
- position: relative;
1913
- }
1914
- .c-atomix-glass__hover-1, .c-atomix-glass__hover-2, .c-atomix-glass__hover-3 {
2024
+ --atomix-glass-border-width: var(--atomix-spacing-0-5, 0.125rem);
2025
+ --atomix-glass-top: 0;
2026
+ --atomix-glass-left: 0;
2027
+ --atomix-glass-right: auto;
2028
+ --atomix-glass-bottom: auto;
2029
+ --_glass-transition: var(--atomix-transition-base);
2030
+ --atomix-glass-base-z-index: var(--atomix-z-index-base, 0);
2031
+ --_glass-z-background: calc(
2032
+ var(--atomix-glass-base-z-index) + var(--atomix-z-index-background, 0)
2033
+ );
2034
+ --_glass-z-container: calc(var(--atomix-glass-base-z-index) + var(--atomix-z-index-overlay, 1));
2035
+ --_glass-z-filter: calc(var(--atomix-glass-base-z-index) + var(--atomix-z-index-overlay, 1));
2036
+ --_glass-z-effect: calc(var(--atomix-glass-base-z-index) + var(--atomix-z-index-overlay, 1));
2037
+ --_glass-z-hover: calc(var(--atomix-glass-base-z-index) + var(--atomix-z-index-overlay, 1));
2038
+ --_glass-z-overlay-highlight: calc(
2039
+ var(--atomix-glass-base-z-index) + var(--atomix-z-index-overlay, 1)
2040
+ );
2041
+ --_glass-z-border-1: calc(var(--atomix-glass-base-z-index) + var(--atomix-z-index-overlay, 1));
2042
+ --_glass-z-border-2: calc(var(--atomix-glass-base-z-index) + var(--atomix-z-index-overlay, 1));
2043
+ --_glass-z-border-3: calc(var(--atomix-glass-base-z-index) + var(--atomix-z-index-content, 2));
2044
+ --_glass-z-content: calc(var(--atomix-glass-base-z-index) + var(--atomix-z-index-content, 2));
2045
+ --atomix-glass-border-shadow:
2046
+ 0 0 0 0.5px var(--atomix-glass-border-color, rgba(255, 255, 255, 0.45)) inset,
2047
+ 0 1px 2px var(--atomix-glass-inner-shadow-color, rgba(255, 255, 255, 0.18)) inset,
2048
+ 0 2px 6px var(--atomix-glass-outer-shadow-color, rgba(0, 0, 0, 0.28));
2049
+ }
2050
+ .c-atomix-glass__hover-1, .c-atomix-glass__hover-2, .c-atomix-glass__hover-3, .c-atomix-glass__base, .c-atomix-glass__overlay {
1915
2051
  position: var(--atomix-glass-position);
1916
2052
  top: var(--atomix-glass-top);
1917
2053
  left: var(--atomix-glass-left);
2054
+ right: var(--atomix-glass-right);
2055
+ bottom: var(--atomix-glass-bottom);
2056
+ width: var(--atomix-glass-width);
2057
+ height: var(--atomix-glass-height);
1918
2058
  pointer-events: none;
1919
- border-radius: var(--atomix-glass-radius);
1920
- transform: var(--atomix-glass-transform);
1921
- transition: var(--atomix-glass-transition);
2059
+ border-radius: var(--_glass-radius);
2060
+ transform: var(--_glass-transform);
2061
+ transition: var(--_glass-transition);
2062
+ }
2063
+ .c-atomix-glass__hover-1, .c-atomix-glass__hover-2, .c-atomix-glass__hover-3 {
1922
2064
  z-index: var(--_glass-z-hover);
1923
2065
  }
1924
2066
  .c-atomix-glass__base, .c-atomix-glass__overlay {
1925
- pointer-events: none;
1926
- border-radius: var(--atomix-glass-radius);
1927
- transform: var(--atomix-glass-transform);
1928
- transition: var(--atomix-glass-transition);
1929
2067
  z-index: var(--_glass-z-effect);
1930
2068
  }
1931
2069
  .c-atomix-glass__hover-1, .c-atomix-glass__hover-2, .c-atomix-glass__hover-3 {
1932
2070
  mix-blend-mode: overlay;
1933
- opacity: var(--atomix-glass-hover-1-opacity, 0);
1934
- background: var(--atomix-glass-hover-1-gradient, none);
1935
2071
  }
1936
2072
  .c-atomix-glass__hover-1 {
1937
- transition: opacity 0.2s cubic-bezier(0.22, 1, 0.36, 1), background 0.35s cubic-bezier(0.22, 1, 0.36, 1);
2073
+ transition: var(--_glass-transition), background var(--atomix-transition-duration-base, 0.3s) var(--atomix-easing-base, cubic-bezier(0.23, 1, 0.32, 1));
1938
2074
  opacity: var(--atomix-glass-hover-1-opacity, 0);
1939
- background: var(--atomix-glass-hover-1-gradient, none);
2075
+ background: var(--atomix-glass-hover-1-gradient, radial-gradient(60% 60% at 50% 0%, var(--atomix-glass-hover-1-start-color, rgba(255, 255, 255, 0.18)) 0%, var(--atomix-glass-hover-1-end-color, rgba(255, 255, 255, 0)) 60%));
1940
2076
  }
1941
2077
  .c-atomix-glass__hover-2 {
1942
- transition: opacity 0.35s cubic-bezier(0.22, 1, 0.36, 1), background 0.45s cubic-bezier(0.22, 1, 0.36, 1);
2078
+ transition: var(--_glass-transition), background var(--atomix-transition-duration-base, 0.3s) var(--atomix-easing-base, cubic-bezier(0.23, 1, 0.32, 1));
1943
2079
  opacity: var(--atomix-glass-hover-2-opacity, 0);
1944
- background: var(--atomix-glass-hover-2-gradient, none);
2080
+ background: var(--atomix-glass-hover-2-gradient, radial-gradient(80% 80% at 50% 100%, var(--atomix-glass-hover-2-start-color, rgba(0, 0, 0, 0.12)) 0%, var(--atomix-glass-hover-2-end-color, rgba(0, 0, 0, 0)) 60%));
1945
2081
  }
1946
2082
  .c-atomix-glass__hover-3 {
1947
- transition: opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1), background 0.6s cubic-bezier(0.22, 1, 0.36, 1);
2083
+ transition: var(--_glass-transition);
1948
2084
  opacity: var(--atomix-glass-hover-3-opacity, 0);
1949
- background: var(--atomix-glass-hover-3-gradient, none);
2085
+ background: var(--atomix-glass-hover-3-gradient, linear-gradient(180deg, var(--atomix-glass-hover-3-start-color, rgba(255, 255, 255, 0.06)) 0%, var(--atomix-glass-hover-3-end-color, rgba(255, 255, 255, 0)) 100%));
1950
2086
  }
1951
2087
  .c-atomix-glass__base {
1952
2088
  mix-blend-mode: soft-light;
1953
- opacity: var(--atomix-glass-base-opacity, 0);
1954
- background: var(--atomix-glass-base-gradient, none);
2089
+ opacity: var(--atomix-glass-base-opacity, 0.6);
2090
+ background: var(--atomix-glass-base-gradient, linear-gradient(180deg, var(--atomix-glass-base-start-color, rgba(255, 255, 255, 0.08)) 0%, var(--atomix-glass-base-end-color, rgba(255, 255, 255, 0.02)) 100%));
1955
2091
  }
1956
2092
  .c-atomix-glass__overlay {
1957
2093
  mix-blend-mode: overlay;
1958
- opacity: var(--atomix-glass-overlay-opacity, 0);
1959
- background: var(--atomix-glass-overlay-gradient, none);
2094
+ opacity: var(--atomix-glass-overlay-opacity, 0.35);
2095
+ background: var(--atomix-glass-overlay-gradient, radial-gradient(120% 120% at 50% -10%, var(--atomix-glass-overlay-start-color, rgba(255, 255, 255, 0.12)) 0%, var(--atomix-glass-overlay-end-color, rgba(255, 255, 255, 0)) 40%));
1960
2096
  }
1961
2097
  .c-atomix-glass__overlay-highlight {
1962
2098
  position: absolute;
1963
2099
  inset: var(--atomix-spacing-0-5, 0.125rem);
1964
2100
  pointer-events: none;
1965
- border-radius: var(--atomix-glass-radius);
1966
- transform: var(--atomix-glass-transform);
1967
- transition: var(--atomix-glass-transition);
2101
+ border-radius: var(--_glass-radius);
2102
+ transform: var(--_glass-transform);
2103
+ transition: var(--_glass-transition);
1968
2104
  mix-blend-mode: screen;
1969
2105
  z-index: var(--_glass-z-overlay-highlight);
1970
- opacity: var(--atomix-glass-overlay-highlight-opacity, 0);
1971
- background: var(--atomix-glass-overlay-highlight-bg, none);
2106
+ opacity: var(--atomix-glass-overlay-highlight-opacity, 0.25);
2107
+ background: var(--atomix-glass-overlay-highlight-bg, linear-gradient(180deg, var(--atomix-glass-highlight-start-color, rgba(255, 255, 255, 0.24)) 0%, var(--atomix-glass-highlight-end-color, rgba(255, 255, 255, 0)) 60%));
1972
2108
  }
1973
- .c-atomix-glass__border-1, .c-atomix-glass__border-2 {
2109
+ .c-atomix-glass__border-backdrop, .c-atomix-glass__border-1, .c-atomix-glass__border-2 {
1974
2110
  padding: var(--atomix-glass-border-width);
1975
2111
  box-sizing: border-box;
1976
2112
  overflow: hidden;
@@ -1986,41 +2122,48 @@ a, a:hover {
1986
2122
  position: var(--atomix-glass-position);
1987
2123
  top: var(--atomix-glass-top);
1988
2124
  left: var(--atomix-glass-left);
2125
+ right: var(--atomix-glass-right);
2126
+ bottom: var(--atomix-glass-bottom);
1989
2127
  width: var(--atomix-glass-width);
1990
2128
  height: var(--atomix-glass-height);
1991
- border-radius: var(--atomix-glass-radius);
1992
- transform: var(--atomix-glass-transform);
1993
- transition: var(--atomix-glass-transition);
2129
+ border-radius: var(--_glass-radius);
2130
+ transform: var(--_glass-transform);
2131
+ transition: var(--_glass-transition);
2132
+ }
2133
+ .c-atomix-glass__border-backdrop {
2134
+ mix-blend-mode: overlay;
2135
+ z-index: var(--_glass-z-border-1);
2136
+ -webkit-backdrop-filter: blur(30px) saturate(140%) brightness(110%);
2137
+ backdrop-filter: blur(30px) saturate(140%) brightness(110%);
2138
+ box-shadow: var(--atomix-glass-border-shadow);
1994
2139
  }
1995
2140
  .c-atomix-glass__border-1 {
1996
- opacity: var(--atomix-opacity-20, 0.2);
2141
+ opacity: var(--atomix-glass-border-1-opacity, var(--atomix-opacity-18, 0.18));
1997
2142
  mix-blend-mode: screen;
1998
- z-index: var(--_glass-z-border-1);
2143
+ z-index: var(--_glass-z-border-2);
1999
2144
  background: var(--atomix-glass-border-gradient-1, none);
2000
- box-shadow: var(--atomix-glass-border-shadow, 0 0 0 0.5px rgba(255, 255, 255, 0.5) inset, 0 1px 3px rgba(255, 255, 255, 0.25) inset, 0 1px 4px rgba(0, 0, 0, 0.35));
2001
2145
  }
2002
2146
  .c-atomix-glass__border-2 {
2003
2147
  mix-blend-mode: overlay;
2004
- z-index: var(--_glass-z-border-2);
2148
+ z-index: var(--_glass-z-border-3);
2005
2149
  background: var(--atomix-glass-border-gradient-2, none);
2006
- box-shadow: var(--atomix-glass-border-shadow, 0 0 0 0.5px rgba(255, 255, 255, 0.5) inset, 0 1px 3px rgba(255, 255, 255, 0.25) inset, 0 1px 4px rgba(0, 0, 0, 0.35));
2007
2150
  }
2008
2151
  .c-atomix-glass__container {
2009
- position: var(--atomix-glass-position);
2152
+ position: relative;
2010
2153
  top: var(--atomix-glass-top);
2011
2154
  left: var(--atomix-glass-left);
2012
- border-radius: var(--atomix-glass-radius);
2013
- transition: var(--atomix-glass-transition);
2014
- transform: var(--atomix-glass-transform);
2155
+ right: var(--atomix-glass-right);
2156
+ bottom: var(--atomix-glass-bottom);
2157
+ border-radius: var(--_glass-radius);
2158
+ transition: var(--_glass-transition);
2159
+ transform: var(--_glass-transform);
2015
2160
  z-index: var(--_glass-z-container);
2016
2161
  }
2017
2162
  .c-atomix-glass__inner {
2018
2163
  width: 100%;
2019
2164
  height: 100%;
2020
2165
  position: relative;
2021
- border-radius: var(--atomix-glass-radius);
2022
- padding: var(--atomix-glass-container-padding);
2023
- box-shadow: var(--atomix-glass-container-box-shadow);
2166
+ border-radius: var(--_glass-radius);
2024
2167
  }
2025
2168
  .c-atomix-glass__filter {
2026
2169
  position: absolute;
@@ -2032,43 +2175,46 @@ a, a:hover {
2032
2175
  z-index: var(--_glass-z-filter);
2033
2176
  }
2034
2177
  .c-atomix-glass__filter svg {
2035
- border-radius: var(--atomix-glass-radius);
2178
+ border-radius: var(--_glass-radius);
2036
2179
  }
2037
2180
  .c-atomix-glass__filter-overlay {
2038
2181
  position: absolute;
2039
2182
  inset: 0;
2040
2183
  pointer-events: none;
2041
- border-radius: var(--atomix-glass-container-radius);
2042
- -webkit-backdrop-filter: var(--atomix-glass-container-backdrop);
2043
- backdrop-filter: var(--atomix-glass-container-backdrop);
2184
+ border-radius: var(--_glass-radius);
2185
+ -webkit-backdrop-filter: var(--atomix-glass-container-backdrop, var(--_glass-backdrop));
2186
+ backdrop-filter: var(--atomix-glass-container-backdrop, var(--_glass-backdrop));
2044
2187
  }
2045
2188
  .c-atomix-glass__filter-shadow {
2046
2189
  position: absolute;
2047
2190
  inset: var(--atomix-glass-border-width);
2048
2191
  pointer-events: none;
2049
- border-radius: var(--atomix-glass-container-radius);
2192
+ border-radius: var(--_glass-radius);
2050
2193
  box-shadow: var(--atomix-glass-container-shadow);
2051
2194
  opacity: var(--atomix-glass-container-shadow-opacity);
2052
2195
  background: var(--atomix-glass-container-bg);
2053
2196
  }
2054
2197
  .c-atomix-glass__content {
2055
2198
  position: relative;
2056
- width: var(--atomix-glass-container-width);
2057
- height: var(--atomix-glass-container-height);
2058
- border-radius: var(--atomix-glass-radius);
2199
+ width: var(--atomix-glass-width);
2200
+ height: var(--atomix-glass-height);
2201
+ border-radius: var(--_glass-radius);
2059
2202
  z-index: var(--_glass-z-content);
2060
2203
  text-shadow: var(--atomix-glass-container-text-shadow);
2204
+ box-shadow: var(--atomix-glass-container-box-shadow);
2061
2205
  }
2062
2206
  .c-atomix-glass__background-layer {
2063
2207
  position: var(--atomix-glass-position);
2064
2208
  top: var(--atomix-glass-top);
2065
2209
  left: var(--atomix-glass-left);
2210
+ right: var(--atomix-glass-right);
2211
+ bottom: var(--atomix-glass-bottom);
2066
2212
  width: var(--atomix-glass-width);
2067
2213
  height: var(--atomix-glass-height);
2068
2214
  pointer-events: none;
2069
- border-radius: var(--atomix-glass-radius);
2070
- transform: var(--atomix-glass-transform);
2071
- transition: var(--atomix-glass-transition);
2215
+ border-radius: var(--_glass-radius);
2216
+ transform: var(--_glass-transform);
2217
+ transition: var(--_glass-transition);
2072
2218
  z-index: var(--_glass-z-background);
2073
2219
  }
2074
2220
  .c-atomix-glass__background-layer--dark {
@@ -2079,24 +2225,25 @@ a, a:hover {
2079
2225
  mix-blend-mode: overlay;
2080
2226
  }
2081
2227
  .c-atomix-glass__background-layer--dark.c-atomix-glass__background-layer--over-light {
2082
- opacity: var(--atomix-opacity-50, 0.5);
2228
+ opacity: var(--atomix-glass-over-light-dark-opacity, var(--atomix-opacity-50, 0.5));
2083
2229
  }
2084
2230
  .c-atomix-glass__background-layer--black.c-atomix-glass__background-layer--over-light {
2085
- opacity: var(--atomix-opacity-25, 0.25);
2231
+ opacity: var(--atomix-glass-over-light-black-opacity, var(--atomix-opacity-25, 0.25));
2086
2232
  }
2087
2233
  .c-atomix-glass__background-layer--hidden {
2088
2234
  opacity: var(--atomix-opacity-0, 0);
2089
2235
  }
2090
2236
  .c-atomix-glass--reduced-motion {
2091
2237
  --atomix-glass-transition: none;
2238
+ --_glass-transition: none;
2092
2239
  }
2093
2240
  .c-atomix-glass--reduced-motion * {
2094
2241
  transition: none !important;
2095
2242
  }
2096
2243
  .c-atomix-glass--high-contrast {
2097
- border: var(--atomix-spacing-0-5, 2px) solid currentColor;
2098
- outline: var(--atomix-spacing-0-5, 2px) solid transparent;
2099
- outline-offset: var(--atomix-spacing-0-5, 2px);
2244
+ border: var(--atomix-spacing-0-5) solid currentColor;
2245
+ outline: var(--atomix-spacing-0-5) solid transparent;
2246
+ outline-offset: var(--atomix-spacing-0-5);
2100
2247
  }
2101
2248
  .c-atomix-glass--disabled-effects {
2102
2249
  --atomix-glass-transform: none;