@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
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 {
@@ -1898,7 +2020,6 @@ a, a:hover {
1898
2020
  position: relative;
1899
2021
  --_glass-radius: var(--atomix-glass-radius, var(--atomix-radius-md, 0.75rem));
1900
2022
  --_glass-transform: var(--atomix-glass-transform, translateZ(0));
1901
- --_glass-backdrop: var(--atomix-glass-border-backdrop, blur(14px) saturate(140%));
1902
2023
  --atomix-glass-position: absolute;
1903
2024
  --atomix-glass-border-width: var(--atomix-spacing-0-5, 0.125rem);
1904
2025
  --atomix-glass-top: 0;
@@ -2012,8 +2133,8 @@ a, a:hover {
2012
2133
  .c-atomix-glass__border-backdrop {
2013
2134
  mix-blend-mode: overlay;
2014
2135
  z-index: var(--_glass-z-border-1);
2015
- -webkit-backdrop-filter: var(--_glass-backdrop);
2016
- backdrop-filter: var(--_glass-backdrop);
2136
+ -webkit-backdrop-filter: blur(30px) saturate(140%) brightness(110%);
2137
+ backdrop-filter: blur(30px) saturate(140%) brightness(110%);
2017
2138
  box-shadow: var(--atomix-glass-border-shadow);
2018
2139
  }
2019
2140
  .c-atomix-glass__border-1 {
@@ -2075,8 +2196,8 @@ a, a:hover {
2075
2196
  }
2076
2197
  .c-atomix-glass__content {
2077
2198
  position: relative;
2078
- width: var(--atomix-glass-container-width);
2079
- height: var(--atomix-glass-container-height);
2199
+ width: var(--atomix-glass-width);
2200
+ height: var(--atomix-glass-height);
2080
2201
  border-radius: var(--_glass-radius);
2081
2202
  z-index: var(--_glass-z-content);
2082
2203
  text-shadow: var(--atomix-glass-container-text-shadow);