@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
@@ -4873,6 +4873,10 @@ a, a:hover {
4873
4873
  .c-card--filled {
4874
4874
  background-color: var(--atomix-card-bg);
4875
4875
  }
4876
+ .c-card--glass {
4877
+ max-width: none;
4878
+ background-color: color-mix(in srgb, var(--atomix-card-bg) 50%, transparent);
4879
+ }
4876
4880
  .c-card--outlined {
4877
4881
  background-color: transparent;
4878
4882
  border-width: var(--atomix-card-border-width);
@@ -4882,22 +4886,22 @@ a, a:hover {
4882
4886
  border: none;
4883
4887
  }
4884
4888
  .c-card--elevated {
4885
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
4889
+ box-shadow: var(--atomix-box-shadow-md);
4886
4890
  }
4887
4891
  .c-card--elevation-none {
4888
4892
  box-shadow: none;
4889
4893
  }
4890
4894
  .c-card--elevation-sm {
4891
- box-shadow: var(--atomix-box-shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.05));
4895
+ box-shadow: var(--atomix-box-shadow-sm);
4892
4896
  }
4893
4897
  .c-card--elevation-md {
4894
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
4898
+ box-shadow: var(--atomix-box-shadow-md);
4895
4899
  }
4896
4900
  .c-card--elevation-lg {
4897
- box-shadow: var(--atomix-box-shadow-lg, 0 10px 15px rgba(0, 0, 0, 0.1));
4901
+ box-shadow: var(--atomix-box-shadow-lg);
4898
4902
  }
4899
4903
  .c-card--elevation-xl {
4900
- box-shadow: var(--atomix-box-shadow-xl, 0 20px 25px rgba(0, 0, 0, 0.1));
4904
+ box-shadow: var(--atomix-box-shadow-xl);
4901
4905
  }
4902
4906
  .c-card--disabled {
4903
4907
  opacity: 0.6;
@@ -4919,7 +4923,7 @@ a, a:hover {
4919
4923
  content: "";
4920
4924
  position: absolute;
4921
4925
  inset: 0;
4922
- background-color: rgba(255, 255, 255, 0.7);
4926
+ background-color: var(--atomix-card-bg-hover);
4923
4927
  -webkit-backdrop-filter: blur(1px);
4924
4928
  backdrop-filter: blur(1px);
4925
4929
  z-index: 1;
@@ -4931,7 +4935,7 @@ a, a:hover {
4931
4935
  .c-card--selected {
4932
4936
  --atomix-card-border-color: var(--atomix-brand-border-subtle);
4933
4937
  --atomix-card-border-width: 2px;
4934
- box-shadow: var(--atomix-box-shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
4938
+ box-shadow: var(--atomix-box-shadow-md);
4935
4939
  }
4936
4940
  .c-card--interactive {
4937
4941
  cursor: pointer;
@@ -4939,7 +4943,7 @@ a, a:hover {
4939
4943
  }
4940
4944
  .c-card--interactive:hover:not(.c-card--interactive--disabled) {
4941
4945
  transform: translateY(-2px);
4942
- box-shadow: var(--atomix-box-shadow-lg, 0 10px 15px rgba(0, 0, 0, 0.1));
4946
+ box-shadow: var(--atomix-box-shadow-lg);
4943
4947
  }
4944
4948
  .c-card--interactive:active:not(.c-card--interactive--disabled) {
4945
4949
  transform: translateY(0);
@@ -4949,54 +4953,66 @@ a, a:hover {
4949
4953
  --atomix-card-bg-hover: var(--atomix-brand-bg-subtle);
4950
4954
  --atomix-card-border-color: var(--atomix-brand-border-subtle);
4951
4955
  --atomix-card-title-color: var(--atomix-brand-text-emphasis);
4956
+ --atomix-card-icon-bg: var(--atomix-brand-text-emphasis);
4957
+ --atomix-card-icon-color: var(--atomix-brand-bg-subtle);
4952
4958
  }
4953
4959
  .c-card--secondary {
4954
4960
  --atomix-card-bg: var(--atomix-secondary-bg-subtle);
4955
4961
  --atomix-card-bg-hover: var(--atomix-secondary-bg-subtle);
4956
4962
  --atomix-card-border-color: var(--atomix-secondary-border-subtle);
4957
4963
  --atomix-card-title-color: var(--atomix-secondary-text-emphasis);
4964
+ --atomix-card-icon-bg: var(--atomix-secondary-text-emphasis);
4965
+ --atomix-card-icon-color: var(--atomix-secondary-bg-subtle);
4958
4966
  }
4959
4967
  .c-card--success {
4960
4968
  --atomix-card-bg: var(--atomix-success-bg-subtle);
4961
4969
  --atomix-card-bg-hover: var(--atomix-success-bg-subtle);
4962
4970
  --atomix-card-border-color: var(--atomix-success-border-subtle);
4963
4971
  --atomix-card-title-color: var(--atomix-success-text-emphasis);
4972
+ --atomix-card-icon-bg: var(--atomix-success-text-emphasis);
4973
+ --atomix-card-icon-color: var(--atomix-success-bg-subtle);
4964
4974
  }
4965
4975
  .c-card--info {
4966
4976
  --atomix-card-bg: var(--atomix-info-bg-subtle);
4967
4977
  --atomix-card-bg-hover: var(--atomix-info-bg-subtle);
4968
4978
  --atomix-card-border-color: var(--atomix-info-border-subtle);
4969
4979
  --atomix-card-title-color: var(--atomix-info-text-emphasis);
4980
+ --atomix-card-icon-bg: var(--atomix-info-text-emphasis);
4981
+ --atomix-card-icon-color: var(--atomix-info-bg-subtle);
4970
4982
  }
4971
4983
  .c-card--warning {
4972
4984
  --atomix-card-bg: var(--atomix-warning-bg-subtle);
4973
4985
  --atomix-card-bg-hover: var(--atomix-warning-bg-subtle);
4974
4986
  --atomix-card-border-color: var(--atomix-warning-border-subtle);
4975
4987
  --atomix-card-title-color: var(--atomix-warning-text-emphasis);
4988
+ --atomix-card-icon-bg: var(--atomix-warning-text-emphasis);
4989
+ --atomix-card-icon-color: var(--atomix-warning-bg-subtle);
4976
4990
  }
4977
4991
  .c-card--error {
4978
4992
  --atomix-card-bg: var(--atomix-error-bg-subtle);
4979
4993
  --atomix-card-bg-hover: var(--atomix-error-bg-subtle);
4980
4994
  --atomix-card-border-color: var(--atomix-error-border-subtle);
4981
4995
  --atomix-card-title-color: var(--atomix-error-text-emphasis);
4996
+ --atomix-card-icon-bg: var(--atomix-error-text-emphasis);
4997
+ --atomix-card-icon-color: var(--atomix-error-bg-subtle);
4982
4998
  }
4983
4999
  .c-card--light {
4984
5000
  --atomix-card-bg: var(--atomix-light);
4985
5001
  --atomix-card-bg-hover: var(--atomix-light-hover);
4986
5002
  --atomix-card-border-color: var(--atomix-light);
4987
5003
  --atomix-card-title-color: var(--atomix-dark);
4988
- --atomix-card-text-color: rgba(0, 0, 0, 0.7);
5004
+ --atomix-card-text-color: var(--atomix-dark);
5005
+ --atomix-card-icon-bg: var(--atomix-dark);
5006
+ --atomix-card-icon-color: var(--atomix-light);
4989
5007
  }
4990
5008
  .c-card--dark {
4991
5009
  --atomix-card-bg: var(--atomix-dark);
4992
5010
  --atomix-card-bg-hover: var(--atomix-dark-hover);
4993
5011
  --atomix-card-border-color: var(--atomix-dark);
4994
5012
  --atomix-card-title-color: var(--atomix-light);
4995
- --atomix-card-text-color: rgba(255, 255, 255, 0.8);
4996
- }
4997
- .c-card--glass {
4998
- max-width: none;
4999
- background-color: color-mix(in srgb, var(--atomix-card-bg) 50%, transparent);
5013
+ --atomix-card-text-color: var(--atomix-light);
5014
+ --atomix-card-icon-bg: var(--atomix-light);
5015
+ --atomix-card-icon-color: var(--atomix-dark);
5000
5016
  }
5001
5017
  .c-card__loading {
5002
5018
  position: absolute;
@@ -5013,8 +5029,8 @@ a, a:hover {
5013
5029
  height: 2.5rem;
5014
5030
  border: 4px solid;
5015
5031
  border-color: var(--atomix-border-primary, rgba(0, 0, 0, 0.15));
5016
- border-top-color: var(--atomix-brand-text-emphasis, var(--atomix-primary, #7c3aed));
5017
- border-right-color: var(--atomix-brand-text-emphasis, var(--atomix-primary, #7c3aed));
5032
+ border-top-color: var(--atomix-brand-text-emphasis, var(--atomix-primary));
5033
+ border-right-color: var(--atomix-brand-text-emphasis, var(--atomix-primary));
5018
5034
  border-radius: 50%;
5019
5035
  animation: spin 0.8s linear infinite;
5020
5036
  background-color: transparent;
@@ -11246,30 +11262,30 @@ a, a:hover {
11246
11262
  padding: 1rem 1rem;
11247
11263
  }
11248
11264
  }
11249
- @media (max-width: 991.98px) {
11250
- .c-side-menu__wrapper {
11251
- height: 0px;
11252
- overflow: hidden;
11253
- -webkit-user-select: none;
11254
- -moz-user-select: none;
11255
- user-select: none;
11256
- transition: var(--atomix-side-menu-wrapper-transition);
11257
- }
11265
+ .c-side-menu__wrapper {
11266
+ overflow: hidden;
11267
+ -webkit-user-select: none;
11268
+ -moz-user-select: none;
11269
+ user-select: none;
11270
+ transition: var(--atomix-side-menu-wrapper-transition);
11271
+ height: 0px;
11258
11272
  }
11259
- @media (max-width: 991.98px) {
11260
- .c-side-menu__inner {
11261
- padding-top: var(--atomix-side-menu-inner-padding-top);
11262
- }
11273
+ .c-side-menu__inner {
11274
+ padding-top: var(--atomix-side-menu-inner-padding-top);
11263
11275
  }
11264
11276
  .c-side-menu__title {
11265
11277
  color: var(--atomix-side-menu-title-color);
11266
11278
  font-size: var(--atomix-side-menu-title-font-size);
11267
11279
  font-weight: var(--atomix-side-menu-title-font-weight);
11280
+ margin: 0;
11268
11281
  margin-bottom: var(--atomix-side-menu-title-spacer-y);
11269
- margin: 0 0 var(--atomix-side-menu-title-spacer-y) 0;
11282
+ }
11283
+ .c-side-menu__toggler .c-side-menu__title {
11284
+ margin-bottom: 0;
11285
+ flex: 1 1;
11270
11286
  }
11271
11287
  .c-side-menu__toggler {
11272
- display: none;
11288
+ display: flex;
11273
11289
  align-items: center;
11274
11290
  justify-content: space-between;
11275
11291
  width: 100%;
@@ -11283,19 +11299,18 @@ a, a:hover {
11283
11299
  user-select: none;
11284
11300
  transition: var(--atomix-side-menu-toggler-transition);
11285
11301
  text-align: left;
11286
- }
11287
- @media (max-width: 991.98px) {
11288
- .c-side-menu__toggler {
11289
- display: flex;
11290
- }
11302
+ margin: 0;
11291
11303
  }
11292
11304
  .c-side-menu__toggler:hover {
11293
11305
  background-color: var(--atomix-side-menu-toggler-hover-bg);
11294
11306
  }
11295
- .c-side-menu__toggler:focus {
11307
+ .c-side-menu__toggler:focus-visible {
11296
11308
  outline: 2px solid var(--atomix-focus-ring-color);
11297
11309
  outline-offset: 2px;
11298
11310
  }
11311
+ .c-side-menu__toggler:focus:not(:focus-visible) {
11312
+ outline: none;
11313
+ }
11299
11314
  .c-side-menu__toggler:active {
11300
11315
  transform: scale(0.98);
11301
11316
  }
@@ -11307,6 +11322,23 @@ a, a:hover {
11307
11322
  .c-side-menu__toggler-icon {
11308
11323
  transition: var(--atomix-side-menu-toggler-transition);
11309
11324
  font-size: 0.875em;
11325
+ flex-shrink: 0;
11326
+ display: inline-flex;
11327
+ align-items: center;
11328
+ justify-content: center;
11329
+ transform-origin: center;
11330
+ }
11331
+ .c-side-menu__toggler--nested {
11332
+ margin-bottom: var(--atomix-side-menu-item-gap);
11333
+ }
11334
+ .c-side-menu__nested-wrapper {
11335
+ overflow: hidden;
11336
+ transition: var(--atomix-side-menu-wrapper-transition);
11337
+ height: 0px;
11338
+ margin: 0;
11339
+ }
11340
+ .c-side-menu__nested-inner {
11341
+ display: block;
11310
11342
  }
11311
11343
  .c-side-menu__list {
11312
11344
  list-style: none;
@@ -11319,6 +11351,9 @@ a, a:hover {
11319
11351
  .c-side-menu__list:last-child {
11320
11352
  margin-bottom: 0;
11321
11353
  }
11354
+ .c-side-menu__item {
11355
+ display: block;
11356
+ }
11322
11357
  .c-side-menu__link {
11323
11358
  display: flex;
11324
11359
  align-items: center;
@@ -11334,16 +11369,20 @@ a, a:hover {
11334
11369
  text-decoration: none;
11335
11370
  cursor: pointer;
11336
11371
  transition: var(--atomix-side-menu-item-transition);
11372
+ position: relative;
11337
11373
  }
11338
11374
  .c-side-menu__link:hover {
11339
11375
  color: var(--atomix-side-menu-item-hover-color);
11340
11376
  background-color: var(--atomix-side-menu-item-hover-bg);
11341
11377
  text-decoration: none;
11342
11378
  }
11343
- .c-side-menu__link:focus {
11379
+ .c-side-menu__link:focus-visible {
11344
11380
  outline: 2px solid var(--atomix-focus-ring-color);
11345
11381
  outline-offset: 2px;
11346
11382
  }
11383
+ .c-side-menu__link:focus:not(:focus-visible) {
11384
+ outline: none;
11385
+ }
11347
11386
  .c-side-menu__link:active {
11348
11387
  transform: scale(0.98);
11349
11388
  }
@@ -11370,9 +11409,15 @@ a, a:hover {
11370
11409
  background-color: transparent;
11371
11410
  border-bottom: none;
11372
11411
  }
11373
- .c-side-menu.is-open .c-side-menu__toggler-icon {
11412
+ .c-side-menu.is-open .c-side-menu__toggler .c-side-menu__toggler-icon {
11374
11413
  transform: rotate(90deg);
11375
11414
  }
11415
+ .c-side-menu__toggler--nested.is-open .c-side-menu__toggler-icon {
11416
+ transform: rotate(90deg);
11417
+ }
11418
+ .c-side-menu__toggler--nested.is-open + .c-side-menu__nested-wrapper {
11419
+ height: auto;
11420
+ }
11376
11421
  .dark-mode .c-side-menu {
11377
11422
  --atomix-side-menu-bg: var(--atomix-gray-9);
11378
11423
  --atomix-side-menu-border-color: var(--atomix-gray-7);
@@ -11390,6 +11435,18 @@ a, a:hover {
11390
11435
  .c-side-menu .c-side-menu__toggler-icon {
11391
11436
  transition: none;
11392
11437
  }
11438
+ .c-side-menu .c-side-menu__toggler:active {
11439
+ transform: none;
11440
+ }
11441
+ .c-side-menu .c-side-menu__link:active {
11442
+ transform: none;
11443
+ }
11444
+ }
11445
+ @media (prefers-contrast: high) {
11446
+ .c-side-menu .c-side-menu__toggler:focus-visible,
11447
+ .c-side-menu .c-side-menu__link:focus-visible {
11448
+ outline-width: 3px;
11449
+ }
11393
11450
  }
11394
11451
  .c-skeleton {
11395
11452
  --atomix-skeleton-width: 100%;