@shohojdhara/atomix 0.2.8 → 0.3.0

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 (50) hide show
  1. package/CHANGELOG.md +60 -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 +632 -2
  6. package/dist/index.esm.js +1306 -95
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.js +1330 -94
  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/Breadcrumb/Breadcrumb.tsx +8 -3
  26. package/src/components/Card/Card.tsx +9 -4
  27. package/src/components/Footer/Footer.stories.tsx +1 -2
  28. package/src/components/Footer/Footer.tsx +0 -5
  29. package/src/components/Footer/FooterLink.tsx +3 -2
  30. package/src/components/Footer/FooterSection.tsx +0 -7
  31. package/src/components/Navigation/Nav/NavItem.tsx +8 -3
  32. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +301 -13
  33. package/src/components/Navigation/SideMenu/SideMenu.tsx +236 -9
  34. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +9 -4
  35. package/src/lib/composables/useSideMenu.ts +89 -30
  36. package/src/lib/index.ts +5 -0
  37. package/src/lib/theme/ThemeContext.tsx +17 -0
  38. package/src/lib/theme/ThemeManager.stories.tsx +472 -0
  39. package/src/lib/theme/ThemeManager.test.ts +186 -0
  40. package/src/lib/theme/ThemeManager.ts +501 -0
  41. package/src/lib/theme/ThemeProvider.tsx +227 -0
  42. package/src/lib/theme/index.ts +56 -0
  43. package/src/lib/theme/types.ts +247 -0
  44. package/src/lib/theme/useTheme.test.tsx +66 -0
  45. package/src/lib/theme/useTheme.ts +80 -0
  46. package/src/lib/theme/utils.test.ts +140 -0
  47. package/src/lib/theme/utils.ts +398 -0
  48. package/src/lib/types/components.ts +32 -0
  49. package/src/styles/06-components/_components.card.scss +39 -24
  50. package/src/styles/06-components/_components.side-menu.scss +79 -18
@@ -3081,6 +3081,10 @@ a, a:hover {
3081
3081
  .c-card--filled {
3082
3082
  background-color: color-mix(in srgb, var(--atomix-card-bg) 50%, transparent);
3083
3083
  }
3084
+ .c-card--glass {
3085
+ max-width: none;
3086
+ background-color: color-mix(in srgb, var(--atomix-card-bg) 50%, transparent);
3087
+ }
3084
3088
  .c-card--outlined {
3085
3089
  background-color: transparent;
3086
3090
  border-width: var(--atomix-card-border-width);
@@ -3090,22 +3094,22 @@ a, a:hover {
3090
3094
  border: none;
3091
3095
  }
3092
3096
  .c-card--elevated {
3093
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
3097
+ box-shadow: var(--atomix-box-shadow-md);
3094
3098
  }
3095
3099
  .c-card--elevation-none {
3096
3100
  box-shadow: none;
3097
3101
  }
3098
3102
  .c-card--elevation-sm {
3099
- box-shadow: var(--atomix-box-shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.05));
3103
+ box-shadow: var(--atomix-box-shadow-sm);
3100
3104
  }
3101
3105
  .c-card--elevation-md {
3102
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
3106
+ box-shadow: var(--atomix-box-shadow-md);
3103
3107
  }
3104
3108
  .c-card--elevation-lg {
3105
- box-shadow: var(--atomix-box-shadow-lg, 0 10px 15px rgba(0, 0, 0, 0.1));
3109
+ box-shadow: var(--atomix-box-shadow-lg);
3106
3110
  }
3107
3111
  .c-card--elevation-xl {
3108
- box-shadow: var(--atomix-box-shadow-xl, 0 20px 25px rgba(0, 0, 0, 0.1));
3112
+ box-shadow: var(--atomix-box-shadow-xl);
3109
3113
  }
3110
3114
  .c-card--disabled {
3111
3115
  opacity: 0.6;
@@ -3127,7 +3131,7 @@ a, a:hover {
3127
3131
  content: "";
3128
3132
  position: absolute;
3129
3133
  inset: 0;
3130
- background-color: rgba(255, 255, 255, 0.7);
3134
+ background-color: var(--atomix-card-bg-hover);
3131
3135
  -webkit-backdrop-filter: blur(1px);
3132
3136
  backdrop-filter: blur(1px);
3133
3137
  z-index: 1;
@@ -3139,7 +3143,7 @@ a, a:hover {
3139
3143
  .c-card--selected {
3140
3144
  --atomix-card-border-color: var(--atomix-brand-border-subtle);
3141
3145
  --atomix-card-border-width: 2px;
3142
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
3146
+ box-shadow: var(--atomix-box-shadow-md);
3143
3147
  }
3144
3148
  .c-card--interactive {
3145
3149
  cursor: pointer;
@@ -3147,7 +3151,7 @@ a, a:hover {
3147
3151
  }
3148
3152
  .c-card--interactive:hover:not(.c-card--interactive--disabled) {
3149
3153
  transform: translateY(-2px);
3150
- box-shadow: var(--atomix-box-shadow-lg, 0 10px 15px rgba(0, 0, 0, 0.1));
3154
+ box-shadow: var(--atomix-box-shadow-lg);
3151
3155
  }
3152
3156
  .c-card--interactive:active:not(.c-card--interactive--disabled) {
3153
3157
  transform: translateY(0);
@@ -3157,54 +3161,66 @@ a, a:hover {
3157
3161
  --atomix-card-bg-hover: var(--atomix-brand-bg-subtle);
3158
3162
  --atomix-card-border-color: var(--atomix-brand-border-subtle);
3159
3163
  --atomix-card-title-color: var(--atomix-brand-text-emphasis);
3164
+ --atomix-card-icon-bg: var(--atomix-brand-text-emphasis);
3165
+ --atomix-card-icon-color: var(--atomix-brand-bg-subtle);
3160
3166
  }
3161
3167
  .c-card--secondary {
3162
3168
  --atomix-card-bg: var(--atomix-secondary-bg-subtle);
3163
3169
  --atomix-card-bg-hover: var(--atomix-secondary-bg-subtle);
3164
3170
  --atomix-card-border-color: var(--atomix-secondary-border-subtle);
3165
3171
  --atomix-card-title-color: var(--atomix-secondary-text-emphasis);
3172
+ --atomix-card-icon-bg: var(--atomix-secondary-text-emphasis);
3173
+ --atomix-card-icon-color: var(--atomix-secondary-bg-subtle);
3166
3174
  }
3167
3175
  .c-card--success {
3168
3176
  --atomix-card-bg: var(--atomix-success-bg-subtle);
3169
3177
  --atomix-card-bg-hover: var(--atomix-success-bg-subtle);
3170
3178
  --atomix-card-border-color: var(--atomix-success-border-subtle);
3171
3179
  --atomix-card-title-color: var(--atomix-success-text-emphasis);
3180
+ --atomix-card-icon-bg: var(--atomix-success-text-emphasis);
3181
+ --atomix-card-icon-color: var(--atomix-success-bg-subtle);
3172
3182
  }
3173
3183
  .c-card--info {
3174
3184
  --atomix-card-bg: var(--atomix-info-bg-subtle);
3175
3185
  --atomix-card-bg-hover: var(--atomix-info-bg-subtle);
3176
3186
  --atomix-card-border-color: var(--atomix-info-border-subtle);
3177
3187
  --atomix-card-title-color: var(--atomix-info-text-emphasis);
3188
+ --atomix-card-icon-bg: var(--atomix-info-text-emphasis);
3189
+ --atomix-card-icon-color: var(--atomix-info-bg-subtle);
3178
3190
  }
3179
3191
  .c-card--warning {
3180
3192
  --atomix-card-bg: var(--atomix-warning-bg-subtle);
3181
3193
  --atomix-card-bg-hover: var(--atomix-warning-bg-subtle);
3182
3194
  --atomix-card-border-color: var(--atomix-warning-border-subtle);
3183
3195
  --atomix-card-title-color: var(--atomix-warning-text-emphasis);
3196
+ --atomix-card-icon-bg: var(--atomix-warning-text-emphasis);
3197
+ --atomix-card-icon-color: var(--atomix-warning-bg-subtle);
3184
3198
  }
3185
3199
  .c-card--error {
3186
3200
  --atomix-card-bg: var(--atomix-error-bg-subtle);
3187
3201
  --atomix-card-bg-hover: var(--atomix-error-bg-subtle);
3188
3202
  --atomix-card-border-color: var(--atomix-error-border-subtle);
3189
3203
  --atomix-card-title-color: var(--atomix-error-text-emphasis);
3204
+ --atomix-card-icon-bg: var(--atomix-error-text-emphasis);
3205
+ --atomix-card-icon-color: var(--atomix-error-bg-subtle);
3190
3206
  }
3191
3207
  .c-card--light {
3192
3208
  --atomix-card-bg: var(--atomix-light);
3193
3209
  --atomix-card-bg-hover: var(--atomix-light-hover);
3194
3210
  --atomix-card-border-color: var(--atomix-light);
3195
3211
  --atomix-card-title-color: var(--atomix-dark);
3196
- --atomix-card-text-color: rgba(0, 0, 0, 0.7);
3212
+ --atomix-card-text-color: var(--atomix-dark);
3213
+ --atomix-card-icon-bg: var(--atomix-dark);
3214
+ --atomix-card-icon-color: var(--atomix-light);
3197
3215
  }
3198
3216
  .c-card--dark {
3199
3217
  --atomix-card-bg: var(--atomix-dark);
3200
3218
  --atomix-card-bg-hover: var(--atomix-dark-hover);
3201
3219
  --atomix-card-border-color: var(--atomix-dark);
3202
3220
  --atomix-card-title-color: var(--atomix-light);
3203
- --atomix-card-text-color: rgba(255, 255, 255, 0.8);
3204
- }
3205
- .c-card--glass {
3206
- max-width: none;
3207
- background-color: color-mix(in srgb, var(--atomix-card-bg) 50%, transparent);
3221
+ --atomix-card-text-color: var(--atomix-light);
3222
+ --atomix-card-icon-bg: var(--atomix-light);
3223
+ --atomix-card-icon-color: var(--atomix-dark);
3208
3224
  }
3209
3225
  .c-card__loading {
3210
3226
  position: absolute;
@@ -3221,8 +3237,8 @@ a, a:hover {
3221
3237
  height: 2.5rem;
3222
3238
  border: 4px solid;
3223
3239
  border-color: var(--atomix-border-primary, rgba(0, 0, 0, 0.15));
3224
- border-top-color: var(--atomix-brand-text-emphasis, var(--atomix-primary, #7c3aed));
3225
- border-right-color: var(--atomix-brand-text-emphasis, var(--atomix-primary, #7c3aed));
3240
+ border-top-color: var(--atomix-brand-text-emphasis, var(--atomix-primary));
3241
+ border-right-color: var(--atomix-brand-text-emphasis, var(--atomix-primary));
3226
3242
  border-radius: 50%;
3227
3243
  animation: spin 0.8s linear infinite;
3228
3244
  background-color: transparent;
@@ -9458,30 +9474,30 @@ a, a:hover {
9458
9474
  padding: 1rem 1rem;
9459
9475
  }
9460
9476
  }
9461
- @media (max-width: 991.98px) {
9462
- .c-side-menu__wrapper {
9463
- height: 0px;
9464
- overflow: hidden;
9465
- -webkit-user-select: none;
9466
- -moz-user-select: none;
9467
- user-select: none;
9468
- transition: var(--atomix-side-menu-wrapper-transition);
9469
- }
9477
+ .c-side-menu__wrapper {
9478
+ overflow: hidden;
9479
+ -webkit-user-select: none;
9480
+ -moz-user-select: none;
9481
+ user-select: none;
9482
+ transition: var(--atomix-side-menu-wrapper-transition);
9483
+ height: 0px;
9470
9484
  }
9471
- @media (max-width: 991.98px) {
9472
- .c-side-menu__inner {
9473
- padding-top: var(--atomix-side-menu-inner-padding-top);
9474
- }
9485
+ .c-side-menu__inner {
9486
+ padding-top: var(--atomix-side-menu-inner-padding-top);
9475
9487
  }
9476
9488
  .c-side-menu__title {
9477
9489
  color: var(--atomix-side-menu-title-color);
9478
9490
  font-size: var(--atomix-side-menu-title-font-size);
9479
9491
  font-weight: var(--atomix-side-menu-title-font-weight);
9492
+ margin: 0;
9480
9493
  margin-bottom: var(--atomix-side-menu-title-spacer-y);
9481
- margin: 0 0 var(--atomix-side-menu-title-spacer-y) 0;
9494
+ }
9495
+ .c-side-menu__toggler .c-side-menu__title {
9496
+ margin-bottom: 0;
9497
+ flex: 1 1;
9482
9498
  }
9483
9499
  .c-side-menu__toggler {
9484
- display: none;
9500
+ display: flex;
9485
9501
  align-items: center;
9486
9502
  justify-content: space-between;
9487
9503
  width: 100%;
@@ -9495,19 +9511,18 @@ a, a:hover {
9495
9511
  user-select: none;
9496
9512
  transition: var(--atomix-side-menu-toggler-transition);
9497
9513
  text-align: left;
9498
- }
9499
- @media (max-width: 991.98px) {
9500
- .c-side-menu__toggler {
9501
- display: flex;
9502
- }
9514
+ margin: 0;
9503
9515
  }
9504
9516
  .c-side-menu__toggler:hover {
9505
9517
  background-color: color-mix(in srgb, var(--atomix-side-menu-toggler-hover-bg) 50%, transparent);
9506
9518
  }
9507
- .c-side-menu__toggler:focus {
9519
+ .c-side-menu__toggler:focus-visible {
9508
9520
  outline: 2px solid var(--atomix-focus-ring-color);
9509
9521
  outline-offset: 2px;
9510
9522
  }
9523
+ .c-side-menu__toggler:focus:not(:focus-visible) {
9524
+ outline: none;
9525
+ }
9511
9526
  .c-side-menu__toggler:active {
9512
9527
  transform: scale(0.98);
9513
9528
  }
@@ -9519,6 +9534,23 @@ a, a:hover {
9519
9534
  .c-side-menu__toggler-icon {
9520
9535
  transition: var(--atomix-side-menu-toggler-transition);
9521
9536
  font-size: 0.875em;
9537
+ flex-shrink: 0;
9538
+ display: inline-flex;
9539
+ align-items: center;
9540
+ justify-content: center;
9541
+ transform-origin: center;
9542
+ }
9543
+ .c-side-menu__toggler--nested {
9544
+ margin-bottom: var(--atomix-side-menu-item-gap);
9545
+ }
9546
+ .c-side-menu__nested-wrapper {
9547
+ overflow: hidden;
9548
+ transition: var(--atomix-side-menu-wrapper-transition);
9549
+ height: 0px;
9550
+ margin: 0;
9551
+ }
9552
+ .c-side-menu__nested-inner {
9553
+ display: block;
9522
9554
  }
9523
9555
  .c-side-menu__list {
9524
9556
  list-style: none;
@@ -9531,6 +9563,9 @@ a, a:hover {
9531
9563
  .c-side-menu__list:last-child {
9532
9564
  margin-bottom: 0;
9533
9565
  }
9566
+ .c-side-menu__item {
9567
+ display: block;
9568
+ }
9534
9569
  .c-side-menu__link {
9535
9570
  display: flex;
9536
9571
  align-items: center;
@@ -9546,16 +9581,20 @@ a, a:hover {
9546
9581
  text-decoration: none;
9547
9582
  cursor: pointer;
9548
9583
  transition: var(--atomix-side-menu-item-transition);
9584
+ position: relative;
9549
9585
  }
9550
9586
  .c-side-menu__link:hover {
9551
9587
  color: var(--atomix-side-menu-item-hover-color);
9552
9588
  background-color: color-mix(in srgb, var(--atomix-side-menu-item-hover-bg) 50%, transparent);
9553
9589
  text-decoration: none;
9554
9590
  }
9555
- .c-side-menu__link:focus {
9591
+ .c-side-menu__link:focus-visible {
9556
9592
  outline: 2px solid var(--atomix-focus-ring-color);
9557
9593
  outline-offset: 2px;
9558
9594
  }
9595
+ .c-side-menu__link:focus:not(:focus-visible) {
9596
+ outline: none;
9597
+ }
9559
9598
  .c-side-menu__link:active {
9560
9599
  transform: scale(0.98);
9561
9600
  }
@@ -9582,9 +9621,15 @@ a, a:hover {
9582
9621
  background-color: transparent;
9583
9622
  border-bottom: none;
9584
9623
  }
9585
- .c-side-menu.is-open .c-side-menu__toggler-icon {
9624
+ .c-side-menu.is-open .c-side-menu__toggler .c-side-menu__toggler-icon {
9586
9625
  transform: rotate(90deg);
9587
9626
  }
9627
+ .c-side-menu__toggler--nested.is-open .c-side-menu__toggler-icon {
9628
+ transform: rotate(90deg);
9629
+ }
9630
+ .c-side-menu__toggler--nested.is-open + .c-side-menu__nested-wrapper {
9631
+ height: auto;
9632
+ }
9588
9633
  .dark-mode .c-side-menu {
9589
9634
  --atomix-side-menu-bg: var(--atomix-gray-9);
9590
9635
  --atomix-side-menu-border-color: var(--atomix-gray-7);
@@ -9602,6 +9647,18 @@ a, a:hover {
9602
9647
  .c-side-menu .c-side-menu__toggler-icon {
9603
9648
  transition: none;
9604
9649
  }
9650
+ .c-side-menu .c-side-menu__toggler:active {
9651
+ transform: none;
9652
+ }
9653
+ .c-side-menu .c-side-menu__link:active {
9654
+ transform: none;
9655
+ }
9656
+ }
9657
+ @media (prefers-contrast: high) {
9658
+ .c-side-menu .c-side-menu__toggler:focus-visible,
9659
+ .c-side-menu .c-side-menu__link:focus-visible {
9660
+ outline-width: 3px;
9661
+ }
9605
9662
  }
9606
9663
  .c-skeleton {
9607
9664
  --atomix-skeleton-width: 100%;