@shohojdhara/atomix 0.2.8 → 0.2.9

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 (43) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +40 -1
  3. package/dist/atomix.css +96 -39
  4. package/dist/atomix.min.css +2 -2
  5. package/dist/index.d.ts +627 -2
  6. package/dist/index.esm.js +1292 -89
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.js +1316 -88
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.min.js +1 -1
  11. package/dist/index.min.js.map +1 -1
  12. package/dist/themes/applemix.css +96 -39
  13. package/dist/themes/applemix.min.css +2 -2
  14. package/dist/themes/boomdevs.css +96 -39
  15. package/dist/themes/boomdevs.min.css +2 -2
  16. package/dist/themes/esrar.css +96 -39
  17. package/dist/themes/esrar.min.css +2 -2
  18. package/dist/themes/flashtrade.css +97 -40
  19. package/dist/themes/flashtrade.min.css +2 -2
  20. package/dist/themes/mashroom.css +96 -39
  21. package/dist/themes/mashroom.min.css +3 -3
  22. package/dist/themes/shaj-default.css +96 -39
  23. package/dist/themes/shaj-default.min.css +2 -2
  24. package/package.json +13 -2
  25. package/src/components/Card/Card.tsx +9 -4
  26. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +301 -13
  27. package/src/components/Navigation/SideMenu/SideMenu.tsx +236 -9
  28. package/src/lib/composables/useSideMenu.ts +89 -30
  29. package/src/lib/index.ts +5 -0
  30. package/src/lib/theme/ThemeContext.tsx +17 -0
  31. package/src/lib/theme/ThemeManager.stories.tsx +472 -0
  32. package/src/lib/theme/ThemeManager.test.ts +186 -0
  33. package/src/lib/theme/ThemeManager.ts +501 -0
  34. package/src/lib/theme/ThemeProvider.tsx +227 -0
  35. package/src/lib/theme/index.ts +56 -0
  36. package/src/lib/theme/types.ts +247 -0
  37. package/src/lib/theme/useTheme.test.tsx +66 -0
  38. package/src/lib/theme/useTheme.ts +80 -0
  39. package/src/lib/theme/utils.test.ts +140 -0
  40. package/src/lib/theme/utils.ts +398 -0
  41. package/src/lib/types/components.ts +26 -0
  42. package/src/styles/06-components/_components.card.scss +39 -24
  43. package/src/styles/06-components/_components.side-menu.scss +79 -18
@@ -3423,6 +3423,10 @@ a, a:hover {
3423
3423
  .c-card--filled {
3424
3424
  background-color: var(--atomix-card-bg);
3425
3425
  }
3426
+ .c-card--glass {
3427
+ max-width: none;
3428
+ background-color: color-mix(in srgb, var(--atomix-card-bg) 50%, transparent);
3429
+ }
3426
3430
  .c-card--outlined {
3427
3431
  background-color: transparent;
3428
3432
  border-width: var(--atomix-card-border-width);
@@ -3432,22 +3436,22 @@ a, a:hover {
3432
3436
  border: none;
3433
3437
  }
3434
3438
  .c-card--elevated {
3435
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
3439
+ box-shadow: var(--atomix-box-shadow-md);
3436
3440
  }
3437
3441
  .c-card--elevation-none {
3438
3442
  box-shadow: none;
3439
3443
  }
3440
3444
  .c-card--elevation-sm {
3441
- box-shadow: var(--atomix-box-shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.05));
3445
+ box-shadow: var(--atomix-box-shadow-sm);
3442
3446
  }
3443
3447
  .c-card--elevation-md {
3444
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
3448
+ box-shadow: var(--atomix-box-shadow-md);
3445
3449
  }
3446
3450
  .c-card--elevation-lg {
3447
- box-shadow: var(--atomix-box-shadow-lg, 0 10px 15px rgba(0, 0, 0, 0.1));
3451
+ box-shadow: var(--atomix-box-shadow-lg);
3448
3452
  }
3449
3453
  .c-card--elevation-xl {
3450
- box-shadow: var(--atomix-box-shadow-xl, 0 20px 25px rgba(0, 0, 0, 0.1));
3454
+ box-shadow: var(--atomix-box-shadow-xl);
3451
3455
  }
3452
3456
  .c-card--disabled {
3453
3457
  opacity: 0.6;
@@ -3469,7 +3473,7 @@ a, a:hover {
3469
3473
  content: "";
3470
3474
  position: absolute;
3471
3475
  inset: 0;
3472
- background-color: rgba(255, 255, 255, 0.7);
3476
+ background-color: var(--atomix-card-bg-hover);
3473
3477
  -webkit-backdrop-filter: blur(1px);
3474
3478
  backdrop-filter: blur(1px);
3475
3479
  z-index: 1;
@@ -3481,7 +3485,7 @@ a, a:hover {
3481
3485
  .c-card--selected {
3482
3486
  --atomix-card-border-color: var(--atomix-brand-border-subtle);
3483
3487
  --atomix-card-border-width: 2px;
3484
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
3488
+ box-shadow: var(--atomix-box-shadow-md);
3485
3489
  }
3486
3490
  .c-card--interactive {
3487
3491
  cursor: pointer;
@@ -3489,7 +3493,7 @@ a, a:hover {
3489
3493
  }
3490
3494
  .c-card--interactive:hover:not(.c-card--interactive--disabled) {
3491
3495
  transform: translateY(-2px);
3492
- box-shadow: var(--atomix-box-shadow-lg, 0 10px 15px rgba(0, 0, 0, 0.1));
3496
+ box-shadow: var(--atomix-box-shadow-lg);
3493
3497
  }
3494
3498
  .c-card--interactive:active:not(.c-card--interactive--disabled) {
3495
3499
  transform: translateY(0);
@@ -3499,54 +3503,66 @@ a, a:hover {
3499
3503
  --atomix-card-bg-hover: var(--atomix-brand-bg-subtle);
3500
3504
  --atomix-card-border-color: var(--atomix-brand-border-subtle);
3501
3505
  --atomix-card-title-color: var(--atomix-brand-text-emphasis);
3506
+ --atomix-card-icon-bg: var(--atomix-brand-text-emphasis);
3507
+ --atomix-card-icon-color: var(--atomix-brand-bg-subtle);
3502
3508
  }
3503
3509
  .c-card--secondary {
3504
3510
  --atomix-card-bg: var(--atomix-secondary-bg-subtle);
3505
3511
  --atomix-card-bg-hover: var(--atomix-secondary-bg-subtle);
3506
3512
  --atomix-card-border-color: var(--atomix-secondary-border-subtle);
3507
3513
  --atomix-card-title-color: var(--atomix-secondary-text-emphasis);
3514
+ --atomix-card-icon-bg: var(--atomix-secondary-text-emphasis);
3515
+ --atomix-card-icon-color: var(--atomix-secondary-bg-subtle);
3508
3516
  }
3509
3517
  .c-card--success {
3510
3518
  --atomix-card-bg: var(--atomix-success-bg-subtle);
3511
3519
  --atomix-card-bg-hover: var(--atomix-success-bg-subtle);
3512
3520
  --atomix-card-border-color: var(--atomix-success-border-subtle);
3513
3521
  --atomix-card-title-color: var(--atomix-success-text-emphasis);
3522
+ --atomix-card-icon-bg: var(--atomix-success-text-emphasis);
3523
+ --atomix-card-icon-color: var(--atomix-success-bg-subtle);
3514
3524
  }
3515
3525
  .c-card--info {
3516
3526
  --atomix-card-bg: var(--atomix-info-bg-subtle);
3517
3527
  --atomix-card-bg-hover: var(--atomix-info-bg-subtle);
3518
3528
  --atomix-card-border-color: var(--atomix-info-border-subtle);
3519
3529
  --atomix-card-title-color: var(--atomix-info-text-emphasis);
3530
+ --atomix-card-icon-bg: var(--atomix-info-text-emphasis);
3531
+ --atomix-card-icon-color: var(--atomix-info-bg-subtle);
3520
3532
  }
3521
3533
  .c-card--warning {
3522
3534
  --atomix-card-bg: var(--atomix-warning-bg-subtle);
3523
3535
  --atomix-card-bg-hover: var(--atomix-warning-bg-subtle);
3524
3536
  --atomix-card-border-color: var(--atomix-warning-border-subtle);
3525
3537
  --atomix-card-title-color: var(--atomix-warning-text-emphasis);
3538
+ --atomix-card-icon-bg: var(--atomix-warning-text-emphasis);
3539
+ --atomix-card-icon-color: var(--atomix-warning-bg-subtle);
3526
3540
  }
3527
3541
  .c-card--error {
3528
3542
  --atomix-card-bg: var(--atomix-error-bg-subtle);
3529
3543
  --atomix-card-bg-hover: var(--atomix-error-bg-subtle);
3530
3544
  --atomix-card-border-color: var(--atomix-error-border-subtle);
3531
3545
  --atomix-card-title-color: var(--atomix-error-text-emphasis);
3546
+ --atomix-card-icon-bg: var(--atomix-error-text-emphasis);
3547
+ --atomix-card-icon-color: var(--atomix-error-bg-subtle);
3532
3548
  }
3533
3549
  .c-card--light {
3534
3550
  --atomix-card-bg: var(--atomix-light);
3535
3551
  --atomix-card-bg-hover: var(--atomix-light-hover);
3536
3552
  --atomix-card-border-color: var(--atomix-light);
3537
3553
  --atomix-card-title-color: var(--atomix-dark);
3538
- --atomix-card-text-color: rgba(0, 0, 0, 0.7);
3554
+ --atomix-card-text-color: var(--atomix-dark);
3555
+ --atomix-card-icon-bg: var(--atomix-dark);
3556
+ --atomix-card-icon-color: var(--atomix-light);
3539
3557
  }
3540
3558
  .c-card--dark {
3541
3559
  --atomix-card-bg: var(--atomix-dark);
3542
3560
  --atomix-card-bg-hover: var(--atomix-dark-hover);
3543
3561
  --atomix-card-border-color: var(--atomix-dark);
3544
3562
  --atomix-card-title-color: var(--atomix-light);
3545
- --atomix-card-text-color: rgba(255, 255, 255, 0.8);
3546
- }
3547
- .c-card--glass {
3548
- max-width: none;
3549
- background-color: color-mix(in srgb, var(--atomix-card-bg) 50%, transparent);
3563
+ --atomix-card-text-color: var(--atomix-light);
3564
+ --atomix-card-icon-bg: var(--atomix-light);
3565
+ --atomix-card-icon-color: var(--atomix-dark);
3550
3566
  }
3551
3567
  .c-card__loading {
3552
3568
  position: absolute;
@@ -3563,8 +3579,8 @@ a, a:hover {
3563
3579
  height: 2.5rem;
3564
3580
  border: 4px solid;
3565
3581
  border-color: var(--atomix-border-primary, rgba(0, 0, 0, 0.15));
3566
- border-top-color: var(--atomix-brand-text-emphasis, var(--atomix-primary, #7c3aed));
3567
- border-right-color: var(--atomix-brand-text-emphasis, var(--atomix-primary, #7c3aed));
3582
+ border-top-color: var(--atomix-brand-text-emphasis, var(--atomix-primary));
3583
+ border-right-color: var(--atomix-brand-text-emphasis, var(--atomix-primary));
3568
3584
  border-radius: 50%;
3569
3585
  animation: spin 0.8s linear infinite;
3570
3586
  background-color: transparent;
@@ -9794,30 +9810,30 @@ a, a:hover {
9794
9810
  padding: 1rem 1rem;
9795
9811
  }
9796
9812
  }
9797
- @media (max-width: 991.98px) {
9798
- .c-side-menu__wrapper {
9799
- height: 0px;
9800
- overflow: hidden;
9801
- -webkit-user-select: none;
9802
- -moz-user-select: none;
9803
- user-select: none;
9804
- transition: var(--atomix-side-menu-wrapper-transition);
9805
- }
9813
+ .c-side-menu__wrapper {
9814
+ overflow: hidden;
9815
+ -webkit-user-select: none;
9816
+ -moz-user-select: none;
9817
+ user-select: none;
9818
+ transition: var(--atomix-side-menu-wrapper-transition);
9819
+ height: 0px;
9806
9820
  }
9807
- @media (max-width: 991.98px) {
9808
- .c-side-menu__inner {
9809
- padding-top: var(--atomix-side-menu-inner-padding-top);
9810
- }
9821
+ .c-side-menu__inner {
9822
+ padding-top: var(--atomix-side-menu-inner-padding-top);
9811
9823
  }
9812
9824
  .c-side-menu__title {
9813
9825
  color: var(--atomix-side-menu-title-color);
9814
9826
  font-size: var(--atomix-side-menu-title-font-size);
9815
9827
  font-weight: var(--atomix-side-menu-title-font-weight);
9828
+ margin: 0;
9816
9829
  margin-bottom: var(--atomix-side-menu-title-spacer-y);
9817
- margin: 0 0 var(--atomix-side-menu-title-spacer-y) 0;
9830
+ }
9831
+ .c-side-menu__toggler .c-side-menu__title {
9832
+ margin-bottom: 0;
9833
+ flex: 1 1;
9818
9834
  }
9819
9835
  .c-side-menu__toggler {
9820
- display: none;
9836
+ display: flex;
9821
9837
  align-items: center;
9822
9838
  justify-content: space-between;
9823
9839
  width: 100%;
@@ -9831,19 +9847,18 @@ a, a:hover {
9831
9847
  user-select: none;
9832
9848
  transition: var(--atomix-side-menu-toggler-transition);
9833
9849
  text-align: left;
9834
- }
9835
- @media (max-width: 991.98px) {
9836
- .c-side-menu__toggler {
9837
- display: flex;
9838
- }
9850
+ margin: 0;
9839
9851
  }
9840
9852
  .c-side-menu__toggler:hover {
9841
9853
  background-color: var(--atomix-side-menu-toggler-hover-bg);
9842
9854
  }
9843
- .c-side-menu__toggler:focus {
9855
+ .c-side-menu__toggler:focus-visible {
9844
9856
  outline: 2px solid var(--atomix-focus-ring-color);
9845
9857
  outline-offset: 2px;
9846
9858
  }
9859
+ .c-side-menu__toggler:focus:not(:focus-visible) {
9860
+ outline: none;
9861
+ }
9847
9862
  .c-side-menu__toggler:active {
9848
9863
  transform: scale(0.98);
9849
9864
  }
@@ -9855,6 +9870,23 @@ a, a:hover {
9855
9870
  .c-side-menu__toggler-icon {
9856
9871
  transition: var(--atomix-side-menu-toggler-transition);
9857
9872
  font-size: 0.875em;
9873
+ flex-shrink: 0;
9874
+ display: inline-flex;
9875
+ align-items: center;
9876
+ justify-content: center;
9877
+ transform-origin: center;
9878
+ }
9879
+ .c-side-menu__toggler--nested {
9880
+ margin-bottom: var(--atomix-side-menu-item-gap);
9881
+ }
9882
+ .c-side-menu__nested-wrapper {
9883
+ overflow: hidden;
9884
+ transition: var(--atomix-side-menu-wrapper-transition);
9885
+ height: 0px;
9886
+ margin: 0;
9887
+ }
9888
+ .c-side-menu__nested-inner {
9889
+ display: block;
9858
9890
  }
9859
9891
  .c-side-menu__list {
9860
9892
  list-style: none;
@@ -9867,6 +9899,9 @@ a, a:hover {
9867
9899
  .c-side-menu__list:last-child {
9868
9900
  margin-bottom: 0;
9869
9901
  }
9902
+ .c-side-menu__item {
9903
+ display: block;
9904
+ }
9870
9905
  .c-side-menu__link {
9871
9906
  display: flex;
9872
9907
  align-items: center;
@@ -9882,16 +9917,20 @@ a, a:hover {
9882
9917
  text-decoration: none;
9883
9918
  cursor: pointer;
9884
9919
  transition: var(--atomix-side-menu-item-transition);
9920
+ position: relative;
9885
9921
  }
9886
9922
  .c-side-menu__link:hover {
9887
9923
  color: var(--atomix-side-menu-item-hover-color);
9888
9924
  background-color: var(--atomix-side-menu-item-hover-bg);
9889
9925
  text-decoration: none;
9890
9926
  }
9891
- .c-side-menu__link:focus {
9927
+ .c-side-menu__link:focus-visible {
9892
9928
  outline: 2px solid var(--atomix-focus-ring-color);
9893
9929
  outline-offset: 2px;
9894
9930
  }
9931
+ .c-side-menu__link:focus:not(:focus-visible) {
9932
+ outline: none;
9933
+ }
9895
9934
  .c-side-menu__link:active {
9896
9935
  transform: scale(0.98);
9897
9936
  }
@@ -9918,9 +9957,15 @@ a, a:hover {
9918
9957
  background-color: transparent;
9919
9958
  border-bottom: none;
9920
9959
  }
9921
- .c-side-menu.is-open .c-side-menu__toggler-icon {
9960
+ .c-side-menu.is-open .c-side-menu__toggler .c-side-menu__toggler-icon {
9922
9961
  transform: rotate(90deg);
9923
9962
  }
9963
+ .c-side-menu__toggler--nested.is-open .c-side-menu__toggler-icon {
9964
+ transform: rotate(90deg);
9965
+ }
9966
+ .c-side-menu__toggler--nested.is-open + .c-side-menu__nested-wrapper {
9967
+ height: auto;
9968
+ }
9924
9969
  .dark-mode .c-side-menu {
9925
9970
  --atomix-side-menu-bg: var(--atomix-gray-9);
9926
9971
  --atomix-side-menu-border-color: var(--atomix-gray-7);
@@ -9938,6 +9983,18 @@ a, a:hover {
9938
9983
  .c-side-menu .c-side-menu__toggler-icon {
9939
9984
  transition: none;
9940
9985
  }
9986
+ .c-side-menu .c-side-menu__toggler:active {
9987
+ transform: none;
9988
+ }
9989
+ .c-side-menu .c-side-menu__link:active {
9990
+ transform: none;
9991
+ }
9992
+ }
9993
+ @media (prefers-contrast: high) {
9994
+ .c-side-menu .c-side-menu__toggler:focus-visible,
9995
+ .c-side-menu .c-side-menu__link:focus-visible {
9996
+ outline-width: 3px;
9997
+ }
9941
9998
  }
9942
9999
  .c-skeleton {
9943
10000
  --atomix-skeleton-width: 100%;