@rovula/ui 0.1.3 → 0.1.5

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 (66) hide show
  1. package/dist/cjs/bundle.css +158 -42
  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/PasswordInput/PasswordInput.js +2 -2
  20. package/dist/components/PasswordInput/PasswordInput.stories.js +1 -1
  21. package/dist/components/Switch/Switch.js +4 -17
  22. package/dist/components/Switch/Switch.stories.js +12 -2
  23. package/dist/components/Switch/Switch.styles.js +39 -0
  24. package/dist/components/TextInput/TextInput.js +28 -7
  25. package/dist/components/TextInput/TextInput.stories.js +13 -0
  26. package/dist/components/TextInput/TextInput.styles.js +26 -4
  27. package/dist/components/Toast/Toast.js +5 -5
  28. package/dist/components/Toast/Toast.stories.js +11 -2
  29. package/dist/components/Toast/Toast.styles.js +38 -6
  30. package/dist/components/Toast/Toaster.js +17 -1
  31. package/dist/esm/bundle.css +158 -42
  32. package/dist/esm/bundle.js +4 -4
  33. package/dist/esm/bundle.js.map +1 -1
  34. package/dist/esm/types/components/Dropdown/Dropdown.stories.d.ts +3 -0
  35. package/dist/esm/types/components/InputFilter/InputFilter.stories.d.ts +3 -0
  36. package/dist/esm/types/components/MaskedTextInput/MaskedTextInput.d.ts +3 -0
  37. package/dist/esm/types/components/MaskedTextInput/MaskedTextInput.stories.d.ts +6 -0
  38. package/dist/esm/types/components/PasswordInput/PasswordInput.stories.d.ts +3 -0
  39. package/dist/esm/types/components/Search/Search.stories.d.ts +3 -0
  40. package/dist/esm/types/components/Switch/Switch.d.ts +3 -1
  41. package/dist/esm/types/components/Switch/Switch.stories.d.ts +12 -4
  42. package/dist/esm/types/components/Switch/Switch.styles.d.ts +7 -0
  43. package/dist/esm/types/components/TextInput/TextInput.d.ts +6 -0
  44. package/dist/esm/types/components/TextInput/TextInput.stories.d.ts +9 -0
  45. package/dist/esm/types/components/TextInput/TextInput.styles.d.ts +4 -0
  46. package/dist/esm/types/components/Toast/Toast.d.ts +1 -0
  47. package/dist/esm/types/components/Toast/Toast.stories.d.ts +14 -0
  48. package/dist/esm/types/components/Toast/Toast.styles.d.ts +1 -0
  49. package/dist/index.d.ts +13 -1
  50. package/dist/src/theme/global.css +208 -89
  51. package/package.json +1 -1
  52. package/src/components/PasswordInput/PasswordInput.stories.tsx +1 -1
  53. package/src/components/PasswordInput/PasswordInput.tsx +2 -2
  54. package/src/components/Switch/Switch.stories.tsx +33 -2
  55. package/src/components/Switch/Switch.styles.ts +48 -0
  56. package/src/components/Switch/Switch.tsx +68 -45
  57. package/src/components/TextInput/TextInput.stories.tsx +82 -0
  58. package/src/components/TextInput/TextInput.styles.ts +36 -17
  59. package/src/components/TextInput/TextInput.tsx +40 -11
  60. package/src/components/Toast/Toast.stories.tsx +12 -2
  61. package/src/components/Toast/Toast.styles.tsx +38 -6
  62. package/src/components/Toast/Toast.tsx +7 -7
  63. package/src/components/Toast/Toaster.tsx +26 -4
  64. package/src/theme/themes/xspector/baseline.css +0 -1
  65. package/src/theme/tokens/components/switch.css +10 -11
  66. 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);
@@ -8474,6 +8539,16 @@ input[type=number] {
8474
8539
  border-color: color-mix(in srgb, var(--input-color-active-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
8475
8540
  }
8476
8541
 
8542
+ .hover\:border-l-input-active-stroke:hover {
8543
+ --tw-border-opacity: 1;
8544
+ border-left-color: color-mix(in srgb, var(--input-color-active-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
8545
+ }
8546
+
8547
+ .hover\:border-r-input-active-stroke:hover {
8548
+ --tw-border-opacity: 1;
8549
+ border-right-color: color-mix(in srgb, var(--input-color-active-stroke) calc(100% * var(--tw-border-opacity, 1)), transparent);
8550
+ }
8551
+
8477
8552
  .hover\:bg-\[var\(--dropdown-menu-hover-bg\)\]:hover {
8478
8553
  background-color: var(--dropdown-menu-hover-bg);
8479
8554
  }
@@ -8754,8 +8829,8 @@ input[type=number] {
8754
8829
  fill: color-mix(in srgb, var(--input-color-default-text) calc(100% * 1), transparent);
8755
8830
  }
8756
8831
 
8757
- .hover\:stroke-input-active-stroke:hover {
8758
- stroke: color-mix(in srgb, var(--input-color-active-stroke) calc(100% * 1), transparent);
8832
+ .hover\:fill-input-filled-text:hover {
8833
+ fill: color-mix(in srgb, var(--input-color-filled-text) calc(100% * 1), transparent);
8759
8834
  }
8760
8835
 
8761
8836
  .hover\:stroke-input-filled-text:hover {
@@ -8943,6 +9018,11 @@ input[type=number] {
8943
9018
  --tw-ring-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-ring-opacity, 1)), transparent);
8944
9019
  }
8945
9020
 
9021
+ .hover\:ring-warning-stroke:hover {
9022
+ --tw-ring-opacity: 1;
9023
+ --tw-ring-color: color-mix(in srgb, var(--state-color-warning-stroke) calc(100% * var(--tw-ring-opacity, 1)), transparent);
9024
+ }
9025
+
8946
9026
  .hover\:placeholder\:text-input-disable-text:hover::-moz-placeholder {
8947
9027
  --tw-text-opacity: 1;
8948
9028
  color: color-mix(in srgb, var(--input-color-disable-text) calc(100% * var(--tw-text-opacity, 1)), transparent);
@@ -9019,6 +9099,11 @@ input[type=number] {
9019
9099
  --tw-ring-color: color-mix(in srgb, var(--input-color-error) calc(100% * var(--tw-ring-opacity, 1)), transparent);
9020
9100
  }
9021
9101
 
9102
+ .focus\:ring-warning-stroke:focus {
9103
+ --tw-ring-opacity: 1;
9104
+ --tw-ring-color: color-mix(in srgb, var(--state-color-warning-stroke) calc(100% * var(--tw-ring-opacity, 1)), transparent);
9105
+ }
9106
+
9022
9107
  .focus\:ring-offset-2:focus {
9023
9108
  --tw-ring-offset-width: 2px;
9024
9109
  }
@@ -10032,13 +10117,7 @@ input[type=number] {
10032
10117
  opacity: 0.5;
10033
10118
  }
10034
10119
 
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\] {
10120
+ .group:disabled .group-disabled\:\!bg-\[var\(--switch-thumb-disabled-color\)\] {
10042
10121
  background-color: var(--switch-thumb-disabled-color) !important;
10043
10122
  }
10044
10123
 
@@ -10245,8 +10324,8 @@ input[type=number] {
10245
10324
  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
10325
  }
10247
10326
 
10248
- .data-\[state\=unchecked\]\:-translate-x-\[2px\][data-state="unchecked"] {
10249
- --tw-translate-x: -2px;
10327
+ .data-\[state\=unchecked\]\:translate-x-0[data-state="unchecked"] {
10328
+ --tw-translate-x: 0px;
10250
10329
  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
10330
  }
10252
10331
 
@@ -10397,10 +10476,6 @@ input[type=number] {
10397
10476
  background-color: var(--dropdown-menu-disabled-bg) !important;
10398
10477
  }
10399
10478
 
10400
- .data-\[disabled\]\:\!bg-\[var\(--switch-disabled-color\)\][data-disabled] {
10401
- background-color: var(--switch-disabled-color) !important;
10402
- }
10403
-
10404
10479
  .data-\[loading\=true\]\:bg-button-error-flat-active[data-loading="true"] {
10405
10480
  --tw-bg-opacity: 1;
10406
10481
  background-color: color-mix(in srgb, var(--button-error-flat-active-bg) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -10510,14 +10585,14 @@ input[type=number] {
10510
10585
  background-color: var(--dropdown-menu-selected-bg);
10511
10586
  }
10512
10587
 
10513
- .data-\[state\=checked\]\:bg-\[var\(--switch-active-color\)\][data-state="checked"] {
10514
- background-color: var(--switch-active-color);
10515
- }
10516
-
10517
10588
  .data-\[state\=checked\]\:bg-\[var\(--switch-thumb-active-color\)\][data-state="checked"] {
10518
10589
  background-color: var(--switch-thumb-active-color);
10519
10590
  }
10520
10591
 
10592
+ .data-\[state\=checked\]\:bg-\[var\(--switch-thumb-active-hover-color\)\][data-state="checked"] {
10593
+ background-color: var(--switch-thumb-active-hover-color);
10594
+ }
10595
+
10521
10596
  .data-\[state\=checked\]\:bg-function-active-solid[data-state="checked"] {
10522
10597
  --tw-bg-opacity: 1;
10523
10598
  background-color: color-mix(in srgb, var(--function-active-solid) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -10538,14 +10613,14 @@ input[type=number] {
10538
10613
  background-color: color-mix(in srgb, var(--grey-grey-20) calc(100% * var(--tw-bg-opacity, 1)), transparent);
10539
10614
  }
10540
10615
 
10541
- .data-\[state\=unchecked\]\:bg-\[var\(--switch-default-color\)\][data-state="unchecked"] {
10542
- background-color: var(--switch-default-color);
10543
- }
10544
-
10545
10616
  .data-\[state\=unchecked\]\:bg-\[var\(--switch-thumb-default-color\)\][data-state="unchecked"] {
10546
10617
  background-color: var(--switch-thumb-default-color);
10547
10618
  }
10548
10619
 
10620
+ .data-\[state\=unchecked\]\:bg-\[var\(--switch-thumb-hover-color\)\][data-state="unchecked"] {
10621
+ background-color: var(--switch-thumb-hover-color);
10622
+ }
10623
+
10549
10624
  .data-\[disabled\]\:\!fill-state-disable-solid[data-disabled] {
10550
10625
  fill: color-mix(in srgb, var(--state-color-disable-solid) calc(100% * 1), transparent) !important;
10551
10626
  }
@@ -10752,6 +10827,10 @@ input[type=number] {
10752
10827
  color: var(--dropdown-menu-selected-text);
10753
10828
  }
10754
10829
 
10830
+ .data-\[state\=checked\]\:text-\[var\(--state-color-primary-hover-bg\)\][data-state="checked"] {
10831
+ color: var(--state-color-primary-hover-bg);
10832
+ }
10833
+
10755
10834
  .data-\[state\=checked\]\:text-function-active-icon[data-state="checked"] {
10756
10835
  --tw-text-opacity: 1;
10757
10836
  color: color-mix(in srgb, var(--function-active-icon) calc(100% * var(--tw-text-opacity, 1)), transparent);
@@ -10772,6 +10851,10 @@ input[type=number] {
10772
10851
  color: color-mix(in srgb, var(--primary-foreground) calc(100% * var(--tw-text-opacity, 1)), transparent);
10773
10852
  }
10774
10853
 
10854
+ .data-\[state\=unchecked\]\:text-\[var\(--state-color-tertiary-hover-bg\)\][data-state="unchecked"] {
10855
+ color: var(--state-color-tertiary-hover-bg);
10856
+ }
10857
+
10775
10858
  .data-\[swipe\=move\]\:transition-none[data-swipe="move"] {
10776
10859
  transition-property: none;
10777
10860
  }
@@ -10782,6 +10865,31 @@ input[type=number] {
10782
10865
  font-weight: var(--subtitle5-weight, 500);
10783
10866
  }
10784
10867
 
10868
+ .data-\[disabled\]\:before\:\!bg-\[var\(--switch-disabled-color\)\][data-disabled]::before {
10869
+ content: var(--tw-content);
10870
+ background-color: var(--switch-disabled-color) !important;
10871
+ }
10872
+
10873
+ .data-\[state\=checked\]\:before\:bg-\[var\(--switch-active-color\)\][data-state="checked"]::before {
10874
+ content: var(--tw-content);
10875
+ background-color: var(--switch-active-color);
10876
+ }
10877
+
10878
+ .data-\[state\=checked\]\:before\:bg-\[var\(--switch-active-hover-color\)\][data-state="checked"]::before {
10879
+ content: var(--tw-content);
10880
+ background-color: var(--switch-active-hover-color);
10881
+ }
10882
+
10883
+ .data-\[state\=unchecked\]\:before\:bg-\[var\(--switch-default-color\)\][data-state="unchecked"]::before {
10884
+ content: var(--tw-content);
10885
+ background-color: var(--switch-default-color);
10886
+ }
10887
+
10888
+ .data-\[state\=unchecked\]\:before\:bg-\[var\(--switch-hover-color\)\][data-state="unchecked"]::before {
10889
+ content: var(--tw-content);
10890
+ background-color: var(--switch-hover-color);
10891
+ }
10892
+
10785
10893
  .hover\:data-\[state\=checked\]\:border-function-active-hover[data-state="checked"]:hover {
10786
10894
  --tw-border-opacity: 1;
10787
10895
  border-color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-border-opacity, 1)), transparent);
@@ -10792,10 +10900,6 @@ input[type=number] {
10792
10900
  border-color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-border-opacity, 1)), transparent);
10793
10901
  }
10794
10902
 
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
10903
  .hover\:data-\[state\=checked\]\:bg-function-active-hover[data-state="checked"]:hover {
10800
10904
  --tw-bg-opacity: 1;
10801
10905
  background-color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -10806,15 +10910,21 @@ input[type=number] {
10806
10910
  background-color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-bg-opacity, 1)), transparent);
10807
10911
  }
10808
10912
 
10809
- .hover\:data-\[state\=unchecked\]\:bg-\[var\(--switch-hover-color\)\][data-state="unchecked"]:hover {
10810
- background-color: var(--switch-hover-color);
10811
- }
10812
-
10813
10913
  .hover\:data-\[state\=checked\]\:text-function-active-hover[data-state="checked"]:hover {
10814
10914
  --tw-text-opacity: 1;
10815
10915
  color: color-mix(in srgb, var(--function-active-hover) calc(100% * var(--tw-text-opacity, 1)), transparent);
10816
10916
  }
10817
10917
 
10918
+ .hover\:data-\[state\=checked\]\:before\:bg-\[var\(--switch-active-hover-color\)\][data-state="checked"]:hover::before {
10919
+ content: var(--tw-content);
10920
+ background-color: var(--switch-active-hover-color);
10921
+ }
10922
+
10923
+ .hover\:data-\[state\=unchecked\]\:before\:bg-\[var\(--switch-hover-color\)\][data-state="unchecked"]:hover::before {
10924
+ content: var(--tw-content);
10925
+ background-color: var(--switch-hover-color);
10926
+ }
10927
+
10818
10928
  .disabled\:data-\[state\=checked\]\:bg-state-disable-solid[data-state="checked"]:disabled {
10819
10929
  --tw-bg-opacity: 1;
10820
10930
  background-color: color-mix(in srgb, var(--state-color-disable-solid) calc(100% * var(--tw-bg-opacity, 1)), transparent);
@@ -10833,14 +10943,6 @@ input[type=number] {
10833
10943
  background-color: var(--switch-thumb-hover-color);
10834
10944
  }
10835
10945
 
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
10946
  @media (min-width: 640px) {
10845
10947
  .sm\:mt-0 {
10846
10948
  margin-top: 0px;
@@ -10911,6 +11013,18 @@ input[type=number] {
10911
11013
  display: block;
10912
11014
  }
10913
11015
 
11016
+ .\[\&_\.switch-thumb-halo\]\:opacity-100 .switch-thumb-halo {
11017
+ opacity: 1;
11018
+ }
11019
+
11020
+ .group:hover .group-hover\:\[\&_\.switch-thumb-halo\]\:opacity-100 .switch-thumb-halo {
11021
+ opacity: 1;
11022
+ }
11023
+
11024
+ .group:disabled .group-disabled\:\[\&_\.switch-thumb-halo\]\:opacity-0 .switch-thumb-halo {
11025
+ opacity: 0;
11026
+ }
11027
+
10914
11028
  .\[\&_button\]\:rounded-full button {
10915
11029
  border-radius: 9999px;
10916
11030
  }
@@ -10973,6 +11087,11 @@ input[type=number] {
10973
11087
  color: color-mix(in srgb, var(--input-color-default-text) calc(100% * var(--tw-text-opacity, 1)), transparent);
10974
11088
  }
10975
11089
 
11090
+ .hover\:\[\&_svg\]\:text-input-filled-text svg:hover {
11091
+ --tw-text-opacity: 1;
11092
+ color: color-mix(in srgb, var(--input-color-filled-text) calc(100% * var(--tw-text-opacity, 1)), transparent);
11093
+ }
11094
+
10976
11095
  .peer:hover ~ .peer-hover\:\[\&_svg\]\:text-input-filled-text svg {
10977
11096
  --tw-text-opacity: 1;
10978
11097
  color: color-mix(in srgb, var(--input-color-filled-text) calc(100% * var(--tw-text-opacity, 1)), transparent);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rovula/ui",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "main": "dist/cjs/bundle.js",
5
5
  "module": "dist/esm/bundle.js",
6
6
  "types": "dist/index.d.ts",
@@ -11,7 +11,7 @@ const meta = {
11
11
  },
12
12
  decorators: [
13
13
  (Story) => (
14
- <div className="p-5 flex w-full bg-[rgb(var(--base-bg-2))]">
14
+ <div className="p-5 flex w-full bg-base-bg2">
15
15
  <Story />
16
16
  </div>
17
17
  ),
@@ -26,8 +26,8 @@ export const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(
26
26
  };
27
27
 
28
28
  const toggleIcon = visible
29
- ? showIcon ?? <Icon name="eye" type="lucide" size="inherit" className="size-full stroke-input-default-stroke hover:stroke-input-active-stroke" aria-label="Hide password" />
30
- : hideIcon ?? <Icon name="eye-closed" type="lucide" size="inherit" className="size-full stroke-input-default-stroke hover:stroke-input-active-stroke" aria-label="Show password" />;
29
+ ? showIcon ?? <Icon name="eye" type="lucide" size="inherit" className="size-full" aria-label="Hide password" />
30
+ : hideIcon ?? <Icon name="eye-closed" type="lucide" size="inherit" className="size-full" aria-label="Show password" />;
31
31
 
32
32
  return (
33
33
  <TextInput
@@ -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
+ ]);