@rovula/ui 0.1.3 → 0.1.4

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 (62) hide show
  1. package/dist/cjs/bundle.css +144 -40
  2. package/dist/cjs/bundle.js +4 -4
  3. package/dist/cjs/bundle.js.map +1 -1
  4. package/dist/cjs/types/components/Dropdown/Dropdown.stories.d.ts +3 -0
  5. package/dist/cjs/types/components/InputFilter/InputFilter.stories.d.ts +3 -0
  6. package/dist/cjs/types/components/MaskedTextInput/MaskedTextInput.d.ts +3 -0
  7. package/dist/cjs/types/components/MaskedTextInput/MaskedTextInput.stories.d.ts +6 -0
  8. package/dist/cjs/types/components/PasswordInput/PasswordInput.stories.d.ts +3 -0
  9. package/dist/cjs/types/components/Search/Search.stories.d.ts +3 -0
  10. package/dist/cjs/types/components/Switch/Switch.d.ts +3 -1
  11. package/dist/cjs/types/components/Switch/Switch.stories.d.ts +12 -4
  12. package/dist/cjs/types/components/Switch/Switch.styles.d.ts +7 -0
  13. package/dist/cjs/types/components/TextInput/TextInput.d.ts +6 -0
  14. package/dist/cjs/types/components/TextInput/TextInput.stories.d.ts +9 -0
  15. package/dist/cjs/types/components/TextInput/TextInput.styles.d.ts +4 -0
  16. package/dist/cjs/types/components/Toast/Toast.d.ts +1 -0
  17. package/dist/cjs/types/components/Toast/Toast.stories.d.ts +14 -0
  18. package/dist/cjs/types/components/Toast/Toast.styles.d.ts +1 -0
  19. package/dist/components/Switch/Switch.js +4 -17
  20. package/dist/components/Switch/Switch.stories.js +12 -2
  21. package/dist/components/Switch/Switch.styles.js +39 -0
  22. package/dist/components/TextInput/TextInput.js +28 -7
  23. package/dist/components/TextInput/TextInput.stories.js +13 -0
  24. package/dist/components/TextInput/TextInput.styles.js +22 -0
  25. package/dist/components/Toast/Toast.js +5 -5
  26. package/dist/components/Toast/Toast.stories.js +11 -2
  27. package/dist/components/Toast/Toast.styles.js +38 -6
  28. package/dist/components/Toast/Toaster.js +17 -1
  29. package/dist/esm/bundle.css +144 -40
  30. package/dist/esm/bundle.js +4 -4
  31. package/dist/esm/bundle.js.map +1 -1
  32. package/dist/esm/types/components/Dropdown/Dropdown.stories.d.ts +3 -0
  33. package/dist/esm/types/components/InputFilter/InputFilter.stories.d.ts +3 -0
  34. package/dist/esm/types/components/MaskedTextInput/MaskedTextInput.d.ts +3 -0
  35. package/dist/esm/types/components/MaskedTextInput/MaskedTextInput.stories.d.ts +6 -0
  36. package/dist/esm/types/components/PasswordInput/PasswordInput.stories.d.ts +3 -0
  37. package/dist/esm/types/components/Search/Search.stories.d.ts +3 -0
  38. package/dist/esm/types/components/Switch/Switch.d.ts +3 -1
  39. package/dist/esm/types/components/Switch/Switch.stories.d.ts +12 -4
  40. package/dist/esm/types/components/Switch/Switch.styles.d.ts +7 -0
  41. package/dist/esm/types/components/TextInput/TextInput.d.ts +6 -0
  42. package/dist/esm/types/components/TextInput/TextInput.stories.d.ts +9 -0
  43. package/dist/esm/types/components/TextInput/TextInput.styles.d.ts +4 -0
  44. package/dist/esm/types/components/Toast/Toast.d.ts +1 -0
  45. package/dist/esm/types/components/Toast/Toast.stories.d.ts +14 -0
  46. package/dist/esm/types/components/Toast/Toast.styles.d.ts +1 -0
  47. package/dist/index.d.ts +13 -1
  48. package/dist/src/theme/global.css +191 -87
  49. package/package.json +1 -1
  50. package/src/components/Switch/Switch.stories.tsx +33 -2
  51. package/src/components/Switch/Switch.styles.ts +48 -0
  52. package/src/components/Switch/Switch.tsx +68 -45
  53. package/src/components/TextInput/TextInput.stories.tsx +82 -0
  54. package/src/components/TextInput/TextInput.styles.ts +22 -0
  55. package/src/components/TextInput/TextInput.tsx +40 -11
  56. package/src/components/Toast/Toast.stories.tsx +12 -2
  57. package/src/components/Toast/Toast.styles.tsx +38 -6
  58. package/src/components/Toast/Toast.tsx +7 -7
  59. package/src/components/Toast/Toaster.tsx +26 -4
  60. package/src/theme/themes/xspector/baseline.css +0 -1
  61. package/src/theme/tokens/components/switch.css +10 -11
  62. package/src/theme/themes/xspector/components/switch.css +0 -30
@@ -1105,23 +1105,21 @@
1105
1105
  /* Element: [progress, track] */
1106
1106
  /* ------------------------------------------------------------------ */
1107
1107
  /* Default State */
1108
- --switch-default-color: rgb(from var(--state-color-tertiary-active) r g b / 0.32);
1109
- --switch-thumb-default-color: var(--state-color-tertiary-active);
1108
+ --switch-default-color: rgb(from var(--grey-grey-100, #9e9e9e) r g b / 0.32);
1109
+ --switch-thumb-default-color: var(--grey-grey-100, #9e9e9e);
1110
+ --switch-thumb-filter: drop-shadow(0 2px 8px rgba(145, 158, 171, 0.24));
1110
1111
  /* Hover State */
1111
- --switch-hover-color: rgb(from var(--state-color-tertiary-active) r g b / 0.48);
1112
- --switch-thumb-hover-color: var(--switch-thumb-default-color);
1113
- --switch-thumb-hover-ring: var(--state-color-tertiary-hover-bg);
1112
+ --switch-hover-color: rgb(from var(--grey-grey-80, #b1b1b1) r g b / 0.48);
1113
+ --switch-thumb-hover-color: var(--grey-grey-80, #b1b1b1);
1114
1114
  /* Active State */
1115
- --switch-active-color: rgb(from var(--state-color-secondary-active) r g b / 0.32);
1116
- --switch-thumb-active-color: var(--state-color-secondary-active);
1115
+ --switch-active-color: rgb(from var(--state-color-primary-active) r g b / 0.32);
1116
+ --switch-thumb-active-color: var(--state-color-primary-active, #ddcd00);
1117
1117
  /* Active Hover State */
1118
- --switch-active-hover-color: rgb(from var(--state-color-secondary-active) r g b / 0.48);
1119
- --switch-thumb-active-hover-color: var(--switch-thumb-active-color);
1120
- --switch-thumb-active-hover-ring: var(--state-color-secondary-hover-bg);
1118
+ --switch-active-hover-color: rgb(from var(--state-color-primary-text-hover) r g b / 0.48);
1119
+ --switch-thumb-active-hover-color: var(--state-color-primary-text-hover);
1121
1120
  /* Disabled State */
1122
1121
  --switch-disabled-color: rgb(from var(--state-color-disable-solid) r g b / 0.32);
1123
- --switch-thumb-disabled-color: var(--state-color-disable-solid)
1124
- ;
1122
+ --switch-thumb-disabled-color: var(--state-color-disable-solid, #454f5b);
1125
1123
  /* COLOR PROJECT */
1126
1124
  --main-primary-xspector: #ddcd00;
1127
1125
  --main-primary-report-xspector-light-mode: #1e3249;
@@ -2674,30 +2672,6 @@
2674
2672
  /* Disabled State */
2675
2673
  --dropdown-menu-disabled-bg: transparent;
2676
2674
  --dropdown-menu-disabled-text: var(--grey-grey-140);
2677
- /* ------------------------------------------------------------------ */
2678
- /* Switch Component Tokens */
2679
- /* ------------------------------------------------------------------ */
2680
- /* Naming Convention: --[component]-[element]-[state]-[property] */
2681
- /* Element: [progress, track] */
2682
- /* ------------------------------------------------------------------ */
2683
- /* Default State */
2684
- --switch-default-color: rgb(from var(--state-color-secondary-active) r g b / 0.32);
2685
- --switch-thumb-default-color: var(--state-color-secondary-active);
2686
- /* Hover State */
2687
- --switch-hover-color: rgb(from var(--state-color-secondary-active) r g b / 0.48);
2688
- --switch-thumb-hover-color: var(--switch-thumb-default-color);
2689
- --switch-thumb-hover-ring: var(--state-color-secondary-hover-bg);
2690
- /* Active State */
2691
- --switch-active-color: rgb(from var(--state-color-primary-active) r g b / 0.32);
2692
- --switch-thumb-active-color: var(--state-color-primary-active);
2693
- /* Active Hover State */
2694
- --switch-active-hover-color: rgb(from var(--state-color-primary-active) r g b / 0.48);
2695
- --switch-thumb-active-hover-color: var(--switch-thumb-active-color);
2696
- --switch-thumb-active-hover-ring: var(--state-color-primary-hover-bg);
2697
- /* Disabled State */
2698
- --switch-disabled-color: rgb(from var(--state-color-disable-solid) r g b / 0.32);
2699
- --switch-thumb-disabled-color: var(--state-color-disable-solid)
2700
- ;
2701
2675
  }
2702
2676
 
2703
2677
  :root[data-theme="skyller"] {
@@ -3892,6 +3866,10 @@ input[type=number] {
3892
3866
  top: 100%;
3893
3867
  }
3894
3868
 
3869
+ .isolate {
3870
+ isolation: isolate;
3871
+ }
3872
+
3895
3873
  .-z-10 {
3896
3874
  z-index: -10;
3897
3875
  }
@@ -4120,6 +4098,11 @@ input[type=number] {
4120
4098
  height: 18px;
4121
4099
  }
4122
4100
 
4101
+ .size-\[22px\] {
4102
+ width: 22px;
4103
+ height: 22px;
4104
+ }
4105
+
4123
4106
  .size-\[30px\] {
4124
4107
  width: 30px;
4125
4108
  height: 30px;
@@ -4426,6 +4409,16 @@ input[type=number] {
4426
4409
  border-collapse: collapse;
4427
4410
  }
4428
4411
 
4412
+ .-translate-x-1\/2 {
4413
+ --tw-translate-x: -50%;
4414
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
4415
+ }
4416
+
4417
+ .-translate-y-1\/2 {
4418
+ --tw-translate-y: -50%;
4419
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
4420
+ }
4421
+
4429
4422
  .translate-x-\[-50\%\] {
4430
4423
  --tw-translate-x: -50%;
4431
4424
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@@ -4533,6 +4526,10 @@ input[type=number] {
4533
4526
  grid-template-columns: 160px 16px;
4534
4527
  }
4535
4528
 
4529
+ .grid-cols-\[1fr_40px\] {
4530
+ grid-template-columns: 1fr 40px;
4531
+ }
4532
+
4536
4533
  .grid-cols-\[repeat\(3\2c minmax\(0\2c 1fr\)\)\] {
4537
4534
  grid-template-columns: repeat(3,minmax(0,1fr));
4538
4535
  }
@@ -4699,6 +4696,10 @@ input[type=number] {
4699
4696
  overflow: hidden;
4700
4697
  }
4701
4698
 
4699
+ .overflow-visible {
4700
+ overflow: visible;
4701
+ }
4702
+
4702
4703
  .overflow-x-auto {
4703
4704
  overflow-x: auto;
4704
4705
  }
@@ -5165,6 +5166,11 @@ input[type=number] {
5165
5166
  border-left-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-border-opacity, 1)), transparent);
5166
5167
  }
5167
5168
 
5169
+ .border-l-warning-stroke {
5170
+ --tw-border-opacity: 1;
5171
+ border-left-color: color-mix(in srgb, var(--state-color-warning-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
5172
+ }
5173
+
5168
5174
  .border-r-input-default-stroke {
5169
5175
  --tw-border-opacity: 1;
5170
5176
  border-right-color: color-mix(in srgb, var(--input-color-default-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
@@ -5175,6 +5181,11 @@ input[type=number] {
5175
5181
  border-right-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-border-opacity, 1)), transparent);
5176
5182
  }
5177
5183
 
5184
+ .border-r-warning-stroke {
5185
+ --tw-border-opacity: 1;
5186
+ border-right-color: color-mix(in srgb, var(--state-color-warning-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
5187
+ }
5188
+
5178
5189
  .border-t-\[var\(--footer-border-color\)\] {
5179
5190
  border-top-color: var(--footer-border-color);
5180
5191
  }
@@ -6978,14 +6989,6 @@ input[type=number] {
6978
6989
  stroke: color-mix(in srgb, var(--input-color-disable-stroke) calc(100% * 1), transparent);
6979
6990
  }
6980
6991
 
6981
- .stroke-input-error {
6982
- stroke: color-mix(in srgb, var(--input-color-error) calc(100% * 1), transparent);
6983
- }
6984
-
6985
- .stroke-input-filled-text {
6986
- stroke: color-mix(in srgb, var(--input-color-filled-text) calc(100% * 1), transparent);
6987
- }
6988
-
6989
6992
  .stroke-primary-default {
6990
6993
  stroke: color-mix(in srgb, var(--state-color-primary-default) calc(100% * 1), transparent);
6991
6994
  }
@@ -7026,6 +7029,11 @@ input[type=number] {
7026
7029
  padding: 2rem;
7027
7030
  }
7028
7031
 
7032
+ .px-1 {
7033
+ padding-left: 0.25rem;
7034
+ padding-right: 0.25rem;
7035
+ }
7036
+
7029
7037
  .px-2 {
7030
7038
  padding-left: 0.5rem;
7031
7039
  padding-right: 0.5rem;
@@ -7899,6 +7907,10 @@ input[type=number] {
7899
7907
  caret-color: color-mix(in srgb, var(--state-color-primary-default) calc(100% * 1), transparent);
7900
7908
  }
7901
7909
 
7910
+ .opacity-0 {
7911
+ opacity: 0;
7912
+ }
7913
+
7902
7914
  .opacity-50 {
7903
7915
  opacity: 0.5;
7904
7916
  }
@@ -7917,6 +7929,12 @@ input[type=number] {
7917
7929
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
7918
7930
  }
7919
7931
 
7932
+ .shadow-\[0px_8px_16px_0px_rgba\(0\2c 0\2c 0\2c 0\.12\)\] {
7933
+ --tw-shadow: 0px 8px 16px 0px rgba(0,0,0,0.12);
7934
+ --tw-shadow-colored: 0px 8px 16px 0px var(--tw-shadow-color);
7935
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
7936
+ }
7937
+
7920
7938
  .shadow-lg {
7921
7939
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
7922
7940
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
@@ -7999,6 +8017,11 @@ input[type=number] {
7999
8017
  --tw-ring-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-ring-opacity, 1)), transparent);
8000
8018
  }
8001
8019
 
8020
+ .ring-warning-stroke {
8021
+ --tw-ring-opacity: 1;
8022
+ --tw-ring-color: color-mix(in srgb, var(--state-color-warning-stroke) calc(100% * var(--tw-ring-opacity, 1)), transparent);
8023
+ }
8024
+
8002
8025
  .ring-offset-background {
8003
8026
  --tw-ring-offset-color: color-mix(in srgb, var(--background) calc(100% * 1), transparent);
8004
8027
  }
@@ -8025,6 +8048,12 @@ input[type=number] {
8025
8048
  transition-duration: 150ms;
8026
8049
  }
8027
8050
 
8051
+ .transition-\[transform\2c background-color\2c color\2c filter\] {
8052
+ transition-property: transform,background-color,color,filter;
8053
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8054
+ transition-duration: 150ms;
8055
+ }
8056
+
8028
8057
  .transition-all {
8029
8058
  transition-property: all;
8030
8059
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
@@ -8049,12 +8078,6 @@ input[type=number] {
8049
8078
  transition-duration: 150ms;
8050
8079
  }
8051
8080
 
8052
- .transition-transform {
8053
- transition-property: transform;
8054
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8055
- transition-duration: 150ms;
8056
- }
8057
-
8058
8081
  .delay-150 {
8059
8082
  transition-delay: 150ms;
8060
8083
  }
@@ -8271,6 +8294,10 @@ input[type=number] {
8271
8294
  /* background: transparent; */
8272
8295
  }
8273
8296
 
8297
+ .\[filter\:var\(--switch-thumb-filter\)\] {
8298
+ filter: var(--switch-thumb-filter);
8299
+ }
8300
+
8274
8301
  .placeholder\:text-input-default-text::-moz-placeholder {
8275
8302
  --tw-text-opacity: 1;
8276
8303
  color: color-mix(in srgb, var(--input-color-default-text) calc(100% * var(--tw-text-opacity, 1)), transparent);
@@ -8314,11 +8341,42 @@ input[type=number] {
8314
8341
  inset: 0px;
8315
8342
  }
8316
8343
 
8344
+ .before\:left-1::before {
8345
+ content: var(--tw-content);
8346
+ left: 0.25rem;
8347
+ }
8348
+
8349
+ .before\:top-1\/2::before {
8350
+ content: var(--tw-content);
8351
+ top: 50%;
8352
+ }
8353
+
8354
+ .before\:h-3::before {
8355
+ content: var(--tw-content);
8356
+ height: 0.75rem;
8357
+ }
8358
+
8359
+ .before\:w-8::before {
8360
+ content: var(--tw-content);
8361
+ width: 2rem;
8362
+ }
8363
+
8364
+ .before\:-translate-y-1\/2::before {
8365
+ content: var(--tw-content);
8366
+ --tw-translate-y: -50%;
8367
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
8368
+ }
8369
+
8317
8370
  .before\:rounded-\[inherit\]::before {
8318
8371
  content: var(--tw-content);
8319
8372
  border-radius: inherit;
8320
8373
  }
8321
8374
 
8375
+ .before\:rounded-full::before {
8376
+ content: var(--tw-content);
8377
+ border-radius: 9999px;
8378
+ }
8379
+
8322
8380
  .before\:border::before {
8323
8381
  content: var(--tw-content);
8324
8382
  border-width: 1px;
@@ -8334,6 +8392,13 @@ input[type=number] {
8334
8392
  border-color: inherit;
8335
8393
  }
8336
8394
 
8395
+ .before\:transition-colors::before {
8396
+ content: var(--tw-content);
8397
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
8398
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8399
+ transition-duration: 150ms;
8400
+ }
8401
+
8337
8402
  .before\:content-\[\'\'\]::before {
8338
8403
  --tw-content: '';
8339
8404
  content: var(--tw-content);
@@ -8943,6 +9008,11 @@ input[type=number] {
8943
9008
  --tw-ring-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-ring-opacity, 1)), transparent);
8944
9009
  }
8945
9010
 
9011
+ .hover\:ring-warning-stroke:hover {
9012
+ --tw-ring-opacity: 1;
9013
+ --tw-ring-color: color-mix(in srgb, var(--state-color-warning-stroke) calc(100% * var(--tw-ring-opacity, 1)), transparent);
9014
+ }
9015
+
8946
9016
  .hover\:placeholder\:text-input-disable-text:hover::-moz-placeholder {
8947
9017
  --tw-text-opacity: 1;
8948
9018
  color: color-mix(in srgb, var(--input-color-disable-text) calc(100% * var(--tw-text-opacity, 1)), transparent);
@@ -9019,6 +9089,11 @@ input[type=number] {
9019
9089
  --tw-ring-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-ring-opacity, 1)), transparent);
9020
9090
  }
9021
9091
 
9092
+ .focus\:ring-warning-stroke:focus {
9093
+ --tw-ring-opacity: 1;
9094
+ --tw-ring-color: color-mix(in srgb, var(--state-color-warning-stroke) calc(100% * var(--tw-ring-opacity, 1)), transparent);
9095
+ }
9096
+
9022
9097
  .focus\:ring-offset-2:focus {
9023
9098
  --tw-ring-offset-width: 2px;
9024
9099
  }
@@ -10032,13 +10107,7 @@ input[type=number] {
10032
10107
  opacity: 0.5;
10033
10108
  }
10034
10109
 
10035
- .group:hover .group-hover\:ring {
10036
- --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
10037
- --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
10038
- box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
10039
- }
10040
-
10041
- .group:disabled .group-disabled\:\!bg-\[--switch-thumb-disabled-color\] {
10110
+ .group:disabled .group-disabled\:\!bg-\[var\(--switch-thumb-disabled-color\)\] {
10042
10111
  background-color: var(--switch-thumb-disabled-color) !important;
10043
10112
  }
10044
10113
 
@@ -10245,8 +10314,8 @@ input[type=number] {
10245
10314
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
10246
10315
  }
10247
10316
 
10248
- .data-\[state\=unchecked\]\:-translate-x-\[2px\][data-state="unchecked"] {
10249
- --tw-translate-x: -2px;
10317
+ .data-\[state\=unchecked\]\:translate-x-0[data-state="unchecked"] {
10318
+ --tw-translate-x: 0px;
10250
10319
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
10251
10320
  }
10252
10321
 
@@ -10397,10 +10466,6 @@ input[type=number] {
10397
10466
  background-color: var(--dropdown-menu-disabled-bg) !important;
10398
10467
  }
10399
10468
 
10400
- .data-\[disabled\]\:\!bg-\[var\(--switch-disabled-color\)\][data-disabled] {
10401
- background-color: var(--switch-disabled-color) !important;
10402
- }
10403
-
10404
10469
  .data-\[loading\=true\]\:bg-button-error-flat-active[data-loading="true"] {
10405
10470
  --tw-bg-opacity: 1;
10406
10471
  background-color: color-mix(in srgb, var(--button-error-flat-active-bg) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -10510,14 +10575,14 @@ input[type=number] {
10510
10575
  background-color: var(--dropdown-menu-selected-bg);
10511
10576
  }
10512
10577
 
10513
- .data-\[state\=checked\]\:bg-\[var\(--switch-active-color\)\][data-state="checked"] {
10514
- background-color: var(--switch-active-color);
10515
- }
10516
-
10517
10578
  .data-\[state\=checked\]\:bg-\[var\(--switch-thumb-active-color\)\][data-state="checked"] {
10518
10579
  background-color: var(--switch-thumb-active-color);
10519
10580
  }
10520
10581
 
10582
+ .data-\[state\=checked\]\:bg-\[var\(--switch-thumb-active-hover-color\)\][data-state="checked"] {
10583
+ background-color: var(--switch-thumb-active-hover-color);
10584
+ }
10585
+
10521
10586
  .data-\[state\=checked\]\:bg-function-active-solid[data-state="checked"] {
10522
10587
  --tw-bg-opacity: 1;
10523
10588
  background-color: color-mix(in srgb, var(--function-active-solid) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -10538,14 +10603,14 @@ input[type=number] {
10538
10603
  background-color: color-mix(in srgb, var(--grey-grey-20) calc(100% * var(--tw-bg-opacity, 1)), transparent);
10539
10604
  }
10540
10605
 
10541
- .data-\[state\=unchecked\]\:bg-\[var\(--switch-default-color\)\][data-state="unchecked"] {
10542
- background-color: var(--switch-default-color);
10543
- }
10544
-
10545
10606
  .data-\[state\=unchecked\]\:bg-\[var\(--switch-thumb-default-color\)\][data-state="unchecked"] {
10546
10607
  background-color: var(--switch-thumb-default-color);
10547
10608
  }
10548
10609
 
10610
+ .data-\[state\=unchecked\]\:bg-\[var\(--switch-thumb-hover-color\)\][data-state="unchecked"] {
10611
+ background-color: var(--switch-thumb-hover-color);
10612
+ }
10613
+
10549
10614
  .data-\[disabled\]\:\!fill-state-disable-solid[data-disabled] {
10550
10615
  fill: color-mix(in srgb, var(--state-color-disable-solid) calc(100% * 1), transparent) !important;
10551
10616
  }
@@ -10752,6 +10817,10 @@ input[type=number] {
10752
10817
  color: var(--dropdown-menu-selected-text);
10753
10818
  }
10754
10819
 
10820
+ .data-\[state\=checked\]\:text-\[var\(--state-color-primary-hover-bg\)\][data-state="checked"] {
10821
+ color: var(--state-color-primary-hover-bg);
10822
+ }
10823
+
10755
10824
  .data-\[state\=checked\]\:text-function-active-icon[data-state="checked"] {
10756
10825
  --tw-text-opacity: 1;
10757
10826
  color: color-mix(in srgb, var(--function-active-icon) calc(100% * var(--tw-text-opacity, 1)), transparent);
@@ -10772,6 +10841,10 @@ input[type=number] {
10772
10841
  color: color-mix(in srgb, var(--primary-foreground) calc(100% * var(--tw-text-opacity, 1)), transparent);
10773
10842
  }
10774
10843
 
10844
+ .data-\[state\=unchecked\]\:text-\[var\(--state-color-tertiary-hover-bg\)\][data-state="unchecked"] {
10845
+ color: var(--state-color-tertiary-hover-bg);
10846
+ }
10847
+
10775
10848
  .data-\[swipe\=move\]\:transition-none[data-swipe="move"] {
10776
10849
  transition-property: none;
10777
10850
  }
@@ -10782,6 +10855,31 @@ input[type=number] {
10782
10855
  font-weight: var(--subtitle5-weight, 500);
10783
10856
  }
10784
10857
 
10858
+ .data-\[disabled\]\:before\:\!bg-\[var\(--switch-disabled-color\)\][data-disabled]::before {
10859
+ content: var(--tw-content);
10860
+ background-color: var(--switch-disabled-color) !important;
10861
+ }
10862
+
10863
+ .data-\[state\=checked\]\:before\:bg-\[var\(--switch-active-color\)\][data-state="checked"]::before {
10864
+ content: var(--tw-content);
10865
+ background-color: var(--switch-active-color);
10866
+ }
10867
+
10868
+ .data-\[state\=checked\]\:before\:bg-\[var\(--switch-active-hover-color\)\][data-state="checked"]::before {
10869
+ content: var(--tw-content);
10870
+ background-color: var(--switch-active-hover-color);
10871
+ }
10872
+
10873
+ .data-\[state\=unchecked\]\:before\:bg-\[var\(--switch-default-color\)\][data-state="unchecked"]::before {
10874
+ content: var(--tw-content);
10875
+ background-color: var(--switch-default-color);
10876
+ }
10877
+
10878
+ .data-\[state\=unchecked\]\:before\:bg-\[var\(--switch-hover-color\)\][data-state="unchecked"]::before {
10879
+ content: var(--tw-content);
10880
+ background-color: var(--switch-hover-color);
10881
+ }
10882
+
10785
10883
  .hover\:data-\[state\=checked\]\:border-function-active-hover[data-state="checked"]:hover {
10786
10884
  --tw-border-opacity: 1;
10787
10885
  border-color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-border-opacity, 1)), transparent);
@@ -10792,10 +10890,6 @@ input[type=number] {
10792
10890
  border-color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-border-opacity, 1)), transparent);
10793
10891
  }
10794
10892
 
10795
- .hover\:data-\[state\=checked\]\:bg-\[var\(--switch-active-hover-color\)\][data-state="checked"]:hover {
10796
- background-color: var(--switch-active-hover-color);
10797
- }
10798
-
10799
10893
  .hover\:data-\[state\=checked\]\:bg-function-active-hover[data-state="checked"]:hover {
10800
10894
  --tw-bg-opacity: 1;
10801
10895
  background-color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -10806,15 +10900,21 @@ input[type=number] {
10806
10900
  background-color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-bg-opacity, 1)), transparent);
10807
10901
  }
10808
10902
 
10809
- .hover\:data-\[state\=unchecked\]\:bg-\[var\(--switch-hover-color\)\][data-state="unchecked"]:hover {
10810
- background-color: var(--switch-hover-color);
10811
- }
10812
-
10813
10903
  .hover\:data-\[state\=checked\]\:text-function-active-hover[data-state="checked"]:hover {
10814
10904
  --tw-text-opacity: 1;
10815
10905
  color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-text-opacity, 1)), transparent);
10816
10906
  }
10817
10907
 
10908
+ .hover\:data-\[state\=checked\]\:before\:bg-\[var\(--switch-active-hover-color\)\][data-state="checked"]:hover::before {
10909
+ content: var(--tw-content);
10910
+ background-color: var(--switch-active-hover-color);
10911
+ }
10912
+
10913
+ .hover\:data-\[state\=unchecked\]\:before\:bg-\[var\(--switch-hover-color\)\][data-state="unchecked"]:hover::before {
10914
+ content: var(--tw-content);
10915
+ background-color: var(--switch-hover-color);
10916
+ }
10917
+
10818
10918
  .disabled\:data-\[state\=checked\]\:bg-state-disable-solid[data-state="checked"]:disabled {
10819
10919
  --tw-bg-opacity: 1;
10820
10920
  background-color: color-mix(in srgb, var(--state-color-disable-solid) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -10833,14 +10933,6 @@ input[type=number] {
10833
10933
  background-color: var(--switch-thumb-hover-color);
10834
10934
  }
10835
10935
 
10836
- .group:hover .group-hover\:data-\[state\=checked\]\:ring-\[var\(--switch-thumb-active-hover-ring\)\][data-state="checked"] {
10837
- --tw-ring-color: var(--switch-thumb-active-hover-ring);
10838
- }
10839
-
10840
- .group:hover .group-hover\:data-\[state\=unchecked\]\:ring-\[var\(--switch-thumb-hover-ring\)\][data-state="unchecked"] {
10841
- --tw-ring-color: var(--switch-thumb-hover-ring);
10842
- }
10843
-
10844
10936
  @media (min-width: 640px) {
10845
10937
  .sm\:mt-0 {
10846
10938
  margin-top: 0px;
@@ -10911,6 +11003,18 @@ input[type=number] {
10911
11003
  display: block;
10912
11004
  }
10913
11005
 
11006
+ .\[\&_\.switch-thumb-halo\]\:opacity-100 .switch-thumb-halo {
11007
+ opacity: 1;
11008
+ }
11009
+
11010
+ .group:hover .group-hover\:\[\&_\.switch-thumb-halo\]\:opacity-100 .switch-thumb-halo {
11011
+ opacity: 1;
11012
+ }
11013
+
11014
+ .group:disabled .group-disabled\:\[\&_\.switch-thumb-halo\]\:opacity-0 .switch-thumb-halo {
11015
+ opacity: 0;
11016
+ }
11017
+
10914
11018
  .\[\&_button\]\:rounded-full button {
10915
11019
  border-radius: 9999px;
10916
11020
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rovula/ui",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "main": "dist/cjs/bundle.js",
5
5
  "module": "dist/esm/bundle.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,6 +21,7 @@ const meta = {
21
21
  } satisfies Meta<typeof Switch>;
22
22
 
23
23
  export default meta;
24
+ type Story = StoryObj<typeof Switch>;
24
25
 
25
26
  export const Default = {
26
27
  args: {
@@ -28,7 +29,6 @@ export const Default = {
28
29
  disabled: false,
29
30
  },
30
31
  render: (args) => {
31
- console.log("args ", args);
32
32
  const props: typeof args = {
33
33
  ...args,
34
34
  };
@@ -38,4 +38,35 @@ export const Default = {
38
38
  </div>
39
39
  );
40
40
  },
41
- } satisfies StoryObj;
41
+ } satisfies Story;
42
+
43
+ type SwitchPreviewRow = {
44
+ label: string;
45
+ checked: boolean;
46
+ disabled?: boolean;
47
+ forceHover?: boolean;
48
+ };
49
+
50
+ const switchPreviewRows: SwitchPreviewRow[] = [
51
+ { label: "On - Default", checked: true },
52
+ { label: "On - Hover", checked: true, forceHover: true },
53
+ { label: "On - Disable", checked: true, disabled: true },
54
+ { label: "Off - Default", checked: false },
55
+ { label: "Off - Hover", checked: false, forceHover: true },
56
+ { label: "Off - Disable", checked: false, disabled: true },
57
+ ];
58
+
59
+ export const FigmaPreview = {
60
+ render: () => (
61
+ <div className="bg-base-bg2 p-8 min-h-screen">
62
+ <div className="mx-auto flex w-full max-w-[300px] flex-col gap-4 rounded-lg border border-base-bg-stroke1 bg-base-bg1 p-6">
63
+ {switchPreviewRows.map((row) => (
64
+ <div key={row.label} className="grid grid-cols-[1fr_40px] items-center gap-6">
65
+ <span className="text-sm font-medium text-text-white">{row.label}</span>
66
+ <Switch checked={row.checked} disabled={row.disabled} forceHover={row.forceHover} />
67
+ </div>
68
+ ))}
69
+ </div>
70
+ </div>
71
+ ),
72
+ } satisfies Story;
@@ -0,0 +1,48 @@
1
+ import { cva } from "class-variance-authority";
2
+
3
+ export const switchRootVariants = cva(
4
+ [
5
+ "group relative inline-flex h-6 w-10 shrink-0 cursor-pointer items-center overflow-visible px-1",
6
+ "before:pointer-events-none before:absolute before:left-1 before:top-1/2 before:h-3 before:w-8 before:-translate-y-1/2 before:rounded-full before:transition-colors",
7
+ "data-[state=unchecked]:before:bg-[var(--switch-default-color)] hover:data-[state=unchecked]:before:bg-[var(--switch-hover-color)]",
8
+ "data-[state=checked]:before:bg-[var(--switch-active-color)] hover:data-[state=checked]:before:bg-[var(--switch-active-hover-color)]",
9
+ "data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:before:!bg-[var(--switch-disabled-color)]",
10
+ ],
11
+ {
12
+ variants: {
13
+ forceHover: {
14
+ true: "data-[state=unchecked]:before:bg-[var(--switch-hover-color)] data-[state=checked]:before:bg-[var(--switch-active-hover-color)]",
15
+ false: "",
16
+ },
17
+ },
18
+ defaultVariants: {
19
+ forceHover: false,
20
+ },
21
+ },
22
+ );
23
+
24
+ export const switchThumbVariants = cva(
25
+ [
26
+ "relative isolate block size-4 rounded-full [filter:var(--switch-thumb-filter)] transition-[transform,background-color,color,filter]",
27
+ "data-[state=unchecked]:bg-[var(--switch-thumb-default-color)] data-[state=unchecked]:translate-x-0",
28
+ "data-[state=checked]:bg-[var(--switch-thumb-active-color)] data-[state=checked]:translate-x-4",
29
+ "data-[state=unchecked]:text-[var(--state-color-tertiary-hover-bg)] data-[state=checked]:text-[var(--state-color-primary-hover-bg)]",
30
+ "group-hover:[&_.switch-thumb-halo]:opacity-100 group-hover:data-[state=checked]:bg-[var(--switch-thumb-active-hover-color)] group-hover:data-[state=unchecked]:bg-[var(--switch-thumb-hover-color)]",
31
+ "group-disabled:!bg-[var(--switch-thumb-disabled-color)] group-disabled:[&_.switch-thumb-halo]:opacity-0",
32
+ ],
33
+ {
34
+ variants: {
35
+ forceHover: {
36
+ true: "[&_.switch-thumb-halo]:opacity-100 data-[state=unchecked]:bg-[var(--switch-thumb-hover-color)] data-[state=checked]:bg-[var(--switch-thumb-active-hover-color)]",
37
+ false: "",
38
+ },
39
+ },
40
+ defaultVariants: {
41
+ forceHover: false,
42
+ },
43
+ },
44
+ );
45
+
46
+ export const switchThumbHaloVariants = cva([
47
+ "switch-thumb-halo pointer-events-none absolute left-0 top-0.5 -z-10 block size-6 -translate-x-1/2 -translate-y-1/2 opacity-0 transition-opacity",
48
+ ]);