@rark-ui/themes 1.0.0 → 1.2.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 (172) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/default/crafts/{core/badge.d.ts → badge.d.ts} +1 -1
  3. package/dist/default/crafts/{core/badge.js → badge.js} +1 -1
  4. package/dist/default/crafts/{core/button.d.ts → button.d.ts} +1 -1
  5. package/dist/default/crafts/{core/button.js → button.js} +1 -1
  6. package/dist/default/crafts/{core/checkbox.d.ts → checkbox.d.ts} +1 -1
  7. package/dist/default/crafts/{core/checkbox.js → checkbox.js} +1 -1
  8. package/dist/default/crafts/{core/collapsible.d.ts → collapsible.d.ts} +1 -1
  9. package/dist/default/crafts/{core/collapsible.js → collapsible.js} +1 -1
  10. package/dist/default/crafts/{core/date-picker.d.ts → date-picker.d.ts} +1 -1
  11. package/dist/default/crafts/{core/date-picker.js → date-picker.js} +1 -1
  12. package/dist/default/crafts/{core/dialog.d.ts → dialog.d.ts} +1 -1
  13. package/dist/default/crafts/{core/dialog.js → dialog.js} +1 -1
  14. package/dist/default/crafts/{core/editable.d.ts → editable.d.ts} +1 -1
  15. package/dist/default/crafts/{core/editable.js → editable.js} +1 -1
  16. package/dist/default/crafts/{core/floating-panel.d.ts → floating-panel.d.ts} +1 -1
  17. package/dist/default/crafts/{core/floating-panel.js → floating-panel.js} +1 -1
  18. package/dist/default/crafts/{core/hotkey.d.ts → hotkey.d.ts} +1 -1
  19. package/dist/default/crafts/{core/hotkey.js → hotkey.js} +1 -1
  20. package/dist/default/crafts/{core/hover-card.d.ts → hover-card.d.ts} +1 -1
  21. package/dist/default/crafts/{core/hover-card.js → hover-card.js} +1 -1
  22. package/dist/default/crafts/{core/icon.d.ts → icon.d.ts} +1 -1
  23. package/dist/default/crafts/{core/icon.js → icon.js} +1 -1
  24. package/dist/default/crafts/index.d.ts +33 -4
  25. package/dist/default/crafts/index.js +33 -2
  26. package/dist/default/crafts/{core/input.d.ts → input.d.ts} +1 -1
  27. package/dist/default/crafts/{core/input.js → input.js} +1 -1
  28. package/dist/default/crafts/{core/menu.d.ts → menu.d.ts} +1 -1
  29. package/dist/default/crafts/{core/menu.js → menu.js} +1 -1
  30. package/dist/default/crafts/{core/message.d.ts → message.d.ts} +1 -1
  31. package/dist/default/crafts/{core/message.js → message.js} +1 -1
  32. package/dist/default/crafts/{core/number-input.d.ts → number-input.d.ts} +1 -1
  33. package/dist/default/crafts/{core/number-input.js → number-input.js} +1 -1
  34. package/dist/default/crafts/{core/pagination.d.ts → pagination.d.ts} +1 -1
  35. package/dist/default/crafts/{core/pagination.js → pagination.js} +1 -1
  36. package/dist/default/crafts/{core/popover.d.ts → popover.d.ts} +1 -1
  37. package/dist/default/crafts/{core/popover.js → popover.js} +1 -1
  38. package/dist/default/crafts/{core/progress.d.ts → progress.d.ts} +1 -1
  39. package/dist/default/crafts/{core/progress.js → progress.js} +1 -1
  40. package/dist/default/crafts/{core/radio-group.d.ts → radio-group.d.ts} +1 -1
  41. package/dist/default/crafts/{core/radio-group.js → radio-group.js} +1 -1
  42. package/dist/default/crafts/{core/rating-group.d.ts → rating-group.d.ts} +1 -1
  43. package/dist/default/crafts/{core/rating-group.js → rating-group.js} +1 -1
  44. package/dist/default/crafts/{core/scroll-area.d.ts → scroll-area.d.ts} +1 -1
  45. package/dist/default/crafts/{core/scroll-area.js → scroll-area.js} +1 -1
  46. package/dist/default/crafts/{core/select.d.ts → select.d.ts} +1 -1
  47. package/dist/default/crafts/{core/select.js → select.js} +1 -1
  48. package/dist/default/crafts/{core/skeleton.d.ts → skeleton.d.ts} +1 -1
  49. package/dist/default/crafts/{core/skeleton.js → skeleton.js} +1 -1
  50. package/dist/default/crafts/{core/slider.d.ts → slider.d.ts} +1 -1
  51. package/dist/default/crafts/{core/slider.js → slider.js} +1 -1
  52. package/dist/default/crafts/{core/spin.d.ts → spin.d.ts} +1 -1
  53. package/dist/default/crafts/{core/spin.js → spin.js} +1 -1
  54. package/dist/default/crafts/{core/switch.d.ts → switch.d.ts} +1 -1
  55. package/dist/default/crafts/{core/switch.js → switch.js} +1 -1
  56. package/dist/default/crafts/{core/tabs.d.ts → tabs.d.ts} +1 -1
  57. package/dist/default/crafts/{core/tabs.js → tabs.js} +1 -1
  58. package/dist/default/crafts/{core/tags-input.d.ts → tags-input.d.ts} +1 -1
  59. package/dist/default/crafts/{core/tags-input.js → tags-input.js} +1 -1
  60. package/dist/default/crafts/{core/toast.d.ts → toast.d.ts} +1 -1
  61. package/dist/default/crafts/{core/toast.js → toast.js} +1 -1
  62. package/dist/default/crafts/{core/toggle-group.d.ts → toggle-group.d.ts} +1 -1
  63. package/dist/default/crafts/{core/toggle-group.js → toggle-group.js} +1 -1
  64. package/dist/default/crafts/{core/toggle.d.ts → toggle.d.ts} +1 -1
  65. package/dist/default/crafts/{core/toggle.js → toggle.js} +1 -1
  66. package/dist/default/crafts/{core/tooltip.d.ts → tooltip.d.ts} +1 -1
  67. package/dist/default/crafts/{core/tooltip.js → tooltip.js} +1 -1
  68. package/dist/default/crafts/{core/tree.d.ts → tree.d.ts} +1 -1
  69. package/dist/default/crafts/{core/tree.js → tree.js} +1 -1
  70. package/dist/default/index.css +1838 -0
  71. package/dist/default/index.d.ts +1 -1
  72. package/dist/default/index.js +1 -1
  73. package/dist/razer/crafts/index.d.ts +15 -4
  74. package/dist/razer/crafts/index.js +15 -2
  75. package/dist/razer/index.css +3 -92
  76. package/dist/razer/index.d.ts +2 -2
  77. package/dist/razer/index.js +1 -1
  78. package/package.json +9 -5
  79. package/src/default/crafts/badge.ts +56 -0
  80. package/src/default/crafts/button.ts +68 -0
  81. package/src/default/crafts/checkbox.ts +75 -0
  82. package/src/default/crafts/collapsible.ts +61 -0
  83. package/src/default/crafts/date-picker.ts +261 -0
  84. package/src/default/crafts/dialog.ts +103 -0
  85. package/src/default/crafts/editable.ts +108 -0
  86. package/src/default/crafts/floating-panel.ts +71 -0
  87. package/src/default/crafts/hotkey.ts +24 -0
  88. package/src/default/crafts/hover-card.ts +83 -0
  89. package/src/default/crafts/icon.ts +15 -0
  90. package/src/default/crafts/index.ts +62 -0
  91. package/src/default/crafts/input.ts +50 -0
  92. package/src/default/crafts/menu.ts +118 -0
  93. package/src/default/crafts/message.ts +66 -0
  94. package/src/default/crafts/number-input.ts +51 -0
  95. package/src/default/crafts/pagination.ts +120 -0
  96. package/src/default/crafts/popover.ts +74 -0
  97. package/src/default/crafts/progress.ts +131 -0
  98. package/src/default/crafts/radio-group.ts +100 -0
  99. package/src/default/crafts/rating-group.ts +46 -0
  100. package/src/default/crafts/scroll-area.ts +116 -0
  101. package/src/default/crafts/select.ts +122 -0
  102. package/src/default/crafts/skeleton.ts +23 -0
  103. package/src/default/crafts/slider.ts +93 -0
  104. package/src/default/crafts/spin.ts +64 -0
  105. package/src/default/crafts/switch.ts +71 -0
  106. package/src/default/crafts/tabs.ts +122 -0
  107. package/src/default/crafts/tags-input.ts +81 -0
  108. package/src/default/crafts/toast.ts +70 -0
  109. package/src/default/crafts/toggle-group.ts +57 -0
  110. package/src/default/crafts/toggle.ts +34 -0
  111. package/src/default/crafts/tooltip.ts +63 -0
  112. package/src/default/crafts/tree.ts +165 -0
  113. package/src/default/index.css +3 -0
  114. package/src/default/index.ts +4 -0
  115. package/src/default/tailwind.config.ts +9 -0
  116. package/src/razer/components/arrow.css +20 -0
  117. package/src/razer/components/badge.css +13 -0
  118. package/src/razer/components/button.css +40 -0
  119. package/src/razer/components/checkbox.css +39 -0
  120. package/src/razer/components/collapsible.css +16 -0
  121. package/src/razer/components/date-picker.css +46 -0
  122. package/src/razer/components/dialog.css +29 -0
  123. package/src/razer/components/editable.css +27 -0
  124. package/src/razer/components/floating-panel.css +11 -0
  125. package/src/razer/components/hotkey.css +5 -0
  126. package/src/razer/components/hover-card.css +14 -0
  127. package/src/razer/components/input.css +29 -0
  128. package/src/razer/components/menu.css +47 -0
  129. package/src/razer/components/message.css +41 -0
  130. package/src/razer/components/number-input.css +9 -0
  131. package/src/razer/components/pagination.css +14 -0
  132. package/src/razer/components/popover.css +19 -0
  133. package/src/razer/components/progress.css +78 -0
  134. package/src/razer/components/radio-group.css +44 -0
  135. package/src/razer/components/rating-group.css +26 -0
  136. package/src/razer/components/scroll-area.css +14 -0
  137. package/src/razer/components/select.css +31 -0
  138. package/src/razer/components/skeleton.css +11 -0
  139. package/src/razer/components/slider.css +27 -0
  140. package/src/razer/components/spin.css +15 -0
  141. package/src/razer/components/switch.css +24 -0
  142. package/src/razer/components/tabs.css +11 -0
  143. package/src/razer/components/tags-input.css +16 -0
  144. package/src/razer/components/toast.css +41 -0
  145. package/src/razer/components/toggle-group.css +19 -0
  146. package/src/razer/components/toggle.css +17 -0
  147. package/src/razer/components/tooltip.css +16 -0
  148. package/src/razer/components/tree.css +19 -0
  149. package/src/razer/components/virtual.css +17 -0
  150. package/src/razer/components.css +33 -0
  151. package/{dist/razer/crafts/core/index.d.ts → src/razer/crafts/index.ts} +16 -15
  152. package/src/razer/index.css +6 -0
  153. package/src/razer/index.ts +4 -0
  154. package/src/razer/preset.css +261 -0
  155. package/src/razer/tailwind.config.ts +10 -0
  156. package/src/shared/css/animation-easing.css +21 -0
  157. package/src/shared/css/animations.css +252 -0
  158. package/src/shared/css/index.css +2 -0
  159. package/src/shared/css/static.css +31 -0
  160. package/src/shared/utils/cn.ts +1 -0
  161. package/src/shared/utils/tv.ts +91 -0
  162. package/dist/default/crafts/addons/index.d.ts +0 -2
  163. package/dist/default/crafts/addons/index.js +0 -2
  164. package/dist/default/crafts/addons/v-title.d.ts +0 -47
  165. package/dist/default/crafts/addons/v-title.js +0 -33
  166. package/dist/default/crafts/addons/virtual.d.ts +0 -112
  167. package/dist/default/crafts/addons/virtual.js +0 -86
  168. package/dist/default/crafts/core/index.d.ts +0 -33
  169. package/dist/default/crafts/core/index.js +0 -33
  170. package/dist/razer/crafts/addons/index.d.ts +0 -1
  171. package/dist/razer/crafts/addons/index.js +0 -1
  172. package/dist/razer/crafts/core/index.js +0 -15
@@ -1,4 +1,4 @@
1
1
  export { cn } from '../shared/utils/cn';
2
2
  export { tv } from '../shared/utils/tv';
3
- export { addonsCrafts, coreCrafts } from './crafts';
3
+ export * as crafts from './crafts';
4
4
  export type * from './crafts';
@@ -1,3 +1,3 @@
1
1
  export { cn } from '../shared/utils/cn';
2
2
  export { tv } from '../shared/utils/tv';
3
- export { addonsCrafts, coreCrafts } from './crafts';
3
+ export * as crafts from './crafts';
@@ -1,4 +1,15 @@
1
- export * as addonsCrafts from './addons';
2
- export type * from './addons';
3
- export * as coreCrafts from './core';
4
- export type * from './core';
1
+ /**
2
+ *
3
+ * you can extend the core crafts by importing them from the default theme
4
+ * and then extending them with your own customizations
5
+ *
6
+ * example:
7
+ * import { coreCrafts } from '../../../default'
8
+ * import { tv } from '../../../shared/utils/tv'
9
+ * export const tvButton = tv({
10
+ * extend: coreCrafts.tvButton,
11
+ * // your own customizations here
12
+ * })
13
+ *
14
+ */
15
+ export {};
@@ -1,2 +1,15 @@
1
- export * as addonsCrafts from './addons';
2
- export * as coreCrafts from './core';
1
+ /**
2
+ *
3
+ * you can extend the core crafts by importing them from the default theme
4
+ * and then extending them with your own customizations
5
+ *
6
+ * example:
7
+ * import { coreCrafts } from '../../../default'
8
+ * import { tv } from '../../../shared/utils/tv'
9
+ * export const tvButton = tv({
10
+ * extend: coreCrafts.tvButton,
11
+ * // your own customizations here
12
+ * })
13
+ *
14
+ */
15
+ export {};
@@ -91,7 +91,6 @@
91
91
  --color-h28: oklch(27.68% 0 0);
92
92
  --color-h78: oklch(57.27% 0 0);
93
93
  --color-h88: oklch(62.68% 0 0);
94
- --color-hee: oklch(94.91% 0 0);
95
94
  --color-h44: oklch(38.67% 0 0);
96
95
  --color-h22: oklch(25.2% 0 0);
97
96
  --color-h16: oklch(20.02% 0 0);
@@ -271,9 +270,6 @@
271
270
  .pointer-events-none {
272
271
  pointer-events: none;
273
272
  }
274
- .invisible {
275
- visibility: hidden;
276
- }
277
273
  .visible {
278
274
  visibility: visible;
279
275
  }
@@ -345,9 +341,6 @@
345
341
  .left-1\/2 {
346
342
  left: calc(1/2 * 100%);
347
343
  }
348
- .z-\(--z-devtools\) {
349
- z-index: var(--z-devtools);
350
- }
351
344
  .z-\(--z-loading\) {
352
345
  z-index: var(--z-loading);
353
346
  }
@@ -669,9 +662,6 @@
669
662
  .h-\[max\(var\(--slider-thumb-height\)\,1rem\)\] {
670
663
  height: max(var(--slider-thumb-height), 1rem);
671
664
  }
672
- .h-auto {
673
- height: auto;
674
- }
675
665
  .h-full {
676
666
  height: 100%;
677
667
  }
@@ -810,9 +800,6 @@
810
800
  .w-screen {
811
801
  width: 100vw;
812
802
  }
813
- .max-w-125 {
814
- max-width: calc(var(--spacing) * 125);
815
- }
816
803
  .max-w-\[520px\] {
817
804
  max-width: 520px;
818
805
  }
@@ -1039,9 +1026,6 @@
1039
1026
  .overflow-y-auto {
1040
1027
  overflow-y: auto;
1041
1028
  }
1042
- .overscroll-contain {
1043
- overscroll-behavior: contain;
1044
- }
1045
1029
  .rounded {
1046
1030
  border-radius: var(--radius);
1047
1031
  }
@@ -1257,9 +1241,6 @@
1257
1241
  .py-1\.5 {
1258
1242
  padding-block: calc(var(--spacing) * 1.5);
1259
1243
  }
1260
- .py-1\.25 {
1261
- padding-block: calc(var(--spacing) * 1.25);
1262
- }
1263
1244
  .py-2 {
1264
1245
  padding-block: calc(var(--spacing) * 2);
1265
1246
  }
@@ -1369,9 +1350,6 @@
1369
1350
  --tw-font-weight: var(--font-weight-medium);
1370
1351
  font-weight: var(--font-weight-medium);
1371
1352
  }
1372
- .break-words {
1373
- overflow-wrap: break-word;
1374
- }
1375
1353
  .wrap-break-word {
1376
1354
  overflow-wrap: break-word;
1377
1355
  }
@@ -1448,6 +1426,9 @@
1448
1426
  --tw-blur: blur(8px);
1449
1427
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1450
1428
  }
1429
+ .filter {
1430
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1431
+ }
1451
1432
  .transition-all {
1452
1433
  transition-property: all;
1453
1434
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -1525,9 +1506,6 @@
1525
1506
  .\[--width\:var\(--spacing\)\] {
1526
1507
  --width: var(--spacing);
1527
1508
  }
1528
- .overflow-anchor-none {
1529
- overflow-anchor: none;
1530
- }
1531
1509
  .placeholder\:text-base {
1532
1510
  &::placeholder {
1533
1511
  font-size: var(--text-base);
@@ -4221,56 +4199,6 @@
4221
4199
  }
4222
4200
  }
4223
4201
  }
4224
- @layer components {
4225
- .rui-virtual-list {
4226
- &::-webkit-scrollbar {
4227
- width: 6px;
4228
- height: 6px;
4229
- }
4230
- &::-webkit-scrollbar-track-piece {
4231
- border-radius: 6px;
4232
- background-color: transparent;
4233
- }
4234
- &::-webkit-scrollbar-thumb {
4235
- height: 30px;
4236
- border-radius: 6px;
4237
- background-color: color-mix(in srgb, oklch(46.04% 0 0) 40%, transparent);
4238
- @supports (color: color-mix(in lab, red, red)) {
4239
- background-color: color-mix(in oklab, var(--color-h58) 40%, transparent);
4240
- }
4241
- &:hover {
4242
- @media (hover: hover) {
4243
- background-color: var(--color-rz-green);
4244
- }
4245
- }
4246
- &:focus {
4247
- background-color: color-mix(in srgb, oklch(76.87% 0.2343 141.32) 70%, transparent);
4248
- @supports (color: color-mix(in lab, red, red)) {
4249
- background-color: color-mix(in oklab, var(--color-rz-green) 70%, transparent);
4250
- }
4251
- }
4252
- &:active {
4253
- background-color: color-mix(in srgb, oklch(76.87% 0.2343 141.32) 70%, transparent);
4254
- @supports (color: color-mix(in lab, red, red)) {
4255
- background-color: color-mix(in oklab, var(--color-rz-green) 70%, transparent);
4256
- }
4257
- }
4258
- }
4259
- }
4260
- .rui-virtual-infinite-spinner {
4261
- stroke: var(--color-rz-green);
4262
- }
4263
- .rui-virtual-infinite-error {
4264
- & .retry {
4265
- cursor: pointer;
4266
- &:hover {
4267
- @media (hover: hover) {
4268
- color: var(--color-rz-green);
4269
- }
4270
- }
4271
- }
4272
- }
4273
- }
4274
4202
  @layer components {
4275
4203
  .rui-floating-panel-content {
4276
4204
  border-radius: 1.25rem;
@@ -4297,23 +4225,6 @@
4297
4225
  }
4298
4226
  }
4299
4227
  }
4300
- @layer components {
4301
- .rui-v-title {
4302
- border-color: var(--color-h00);
4303
- background-color: var(--color-hee);
4304
- color: var(--color-h00);
4305
- &:where([data-theme-surface=dark], [data-theme-surface=dark] *) {
4306
- --tw-border-style: none;
4307
- border-style: none;
4308
- }
4309
- &:where([data-theme-surface=dark], [data-theme-surface=dark] *) {
4310
- background-color: var(--color-h44);
4311
- }
4312
- &:where([data-theme-surface=dark], [data-theme-surface=dark] *) {
4313
- color: var(--color-hee);
4314
- }
4315
- }
4316
- }
4317
4228
  @layer base {
4318
4229
  @property --motion-bounce {
4319
4230
  syntax: "*";
@@ -1,4 +1,4 @@
1
1
  export { cn } from '../shared/utils/cn';
2
2
  export { tv } from '../shared/utils/tv';
3
- export { addonsCrafts, coreCrafts } from './crafts';
4
- export type * from './crafts';
3
+ export * as crafts from './crafts/index';
4
+ export type * as Crafts from './crafts/index';
@@ -1,3 +1,3 @@
1
1
  export { cn } from '../shared/utils/cn';
2
2
  export { tv } from '../shared/utils/tv';
3
- export { addonsCrafts, coreCrafts } from './crafts';
3
+ export * as crafts from './crafts/index';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rark-ui/themes",
3
3
  "type": "module",
4
- "version": "1.0.0",
4
+ "version": "1.2.0",
5
5
  "packageManager": "pnpm@10.13.1",
6
6
  "description": "Themes for Rark UI",
7
7
  "author": "Hwacc(mshcccck@gmail.com)",
@@ -23,15 +23,16 @@
23
23
  "default": "./dist/default/index.js"
24
24
  },
25
25
  "./razer/index.css": "./dist/razer/index.css",
26
+ "./razer/preset.css": "./src/razer/preset.css",
26
27
  "./default/index.css": "./dist/default/index.css"
27
28
  },
29
+ "module": "./dist/index.js",
28
30
  "files": [
29
- "dist"
31
+ "dist",
32
+ "src"
30
33
  ],
31
34
  "scripts": {
32
- "build": "pnpm -s run build:js && pnpm -s run build:css",
33
- "build:js": "tsc",
34
- "build:css": "pnpm exec tailwindcss -i ./src/razer/index.css -o ./dist/razer/index.css",
35
+ "build": "bun run build.ts",
35
36
  "test": "echo \"Error: no test specified\" && exit 1"
36
37
  },
37
38
  "dependencies": {
@@ -43,5 +44,8 @@
43
44
  "tailwindcss": "^4.1.18",
44
45
  "tailwindcss-animated": "^2.0.0",
45
46
  "tailwindcss-motion": "^1.1.1"
47
+ },
48
+ "publishConfig": {
49
+ "access": "public"
46
50
  }
47
51
  }
@@ -0,0 +1,56 @@
1
+ import type { VariantProps } from '../../shared/utils/tv'
2
+ import { tv } from '../../shared/utils/tv'
3
+
4
+ const prefix = 'rui-badge'
5
+
6
+ export const tvBadge = tv(
7
+ {
8
+ base: [
9
+ 'inline-flex',
10
+ 'items-center',
11
+ 'rounded',
12
+ 'uppercase',
13
+ 'outline-none',
14
+ 'transition-colors',
15
+ ],
16
+ variants: {
17
+ variant: {
18
+ default: '',
19
+ secondary: '',
20
+ dot: ['rounded-full', '-top-[.5em]', '-right-[.5em]'],
21
+ },
22
+ size: {
23
+ xs: ['text-3xs', 'py-0.25', 'px-1'],
24
+ sm: ['text-2xs', 'py-0.25', 'px-1'],
25
+ base: ['text-xs', 'py-0.5', 'px-1.25'],
26
+ lg: ['text-sm', 'py-0.5', 'px-1.5'],
27
+ },
28
+ },
29
+ defaultVariants: {
30
+ variant: 'default',
31
+ size: 'base',
32
+ },
33
+ compoundVariants: [
34
+ {
35
+ variant: 'dot',
36
+ size: 'base',
37
+ class: ['p-0', 'size-[.375rem]'],
38
+ },
39
+ {
40
+ variant: 'dot',
41
+ size: 'sm',
42
+ class: ['p-0', 'size-[.25rem]'],
43
+ },
44
+ {
45
+ variant: 'dot',
46
+ size: 'lg',
47
+ class: ['p-0', 'size-[.5rem]'],
48
+ },
49
+ ],
50
+ },
51
+ {
52
+ class: prefix,
53
+ },
54
+ )
55
+
56
+ export type BadgeVariants = VariantProps<typeof tvBadge>
@@ -0,0 +1,68 @@
1
+ import type { VariantProps } from '../../shared/utils/tv'
2
+ import { tv } from '../../shared/utils/tv'
3
+
4
+ const prefix = 'rui-btn'
5
+
6
+ export const tvButton = tv(
7
+ {
8
+ slots: {
9
+ root: [
10
+ 'inline-flex',
11
+ 'items-center',
12
+ 'justify-center',
13
+ 'rounded',
14
+ 'border',
15
+ 'transition-all',
16
+ 'disabled:pointer-events-none',
17
+ 'disabled:opacity-(--disabled-opacity)',
18
+ '[&_svg]:pointer-events-none',
19
+ '[&_svg]:shrink-0',
20
+ ],
21
+ loading: 'size-[1lh] animate-spin',
22
+ },
23
+ variants: {
24
+ variant: {
25
+ default: '',
26
+ normal: '',
27
+ outline: '',
28
+ text: '',
29
+ icon: {
30
+ root: ['p-0', 'aspect-square', 'border-none'],
31
+ },
32
+ },
33
+ size: {
34
+ xs: {
35
+ root: 'h-6 px-3 gap-1.5 text-xs',
36
+ },
37
+ sm: {
38
+ root: 'h-7 px-4 gap-2 text-sm',
39
+ },
40
+ base: {
41
+ root: 'h-8 px-5 gap-2.5 text-base',
42
+ },
43
+ lg: {
44
+ root: 'h-9 px-6 gap-3 text-lg',
45
+ },
46
+ },
47
+ loading: {
48
+ true: {
49
+ root: 'pointer-events-none',
50
+ },
51
+ false: '',
52
+ },
53
+ },
54
+ defaultVariants: {
55
+ variant: 'default',
56
+ size: 'base',
57
+ loading: false,
58
+ },
59
+ },
60
+ {
61
+ slots: {
62
+ root: prefix,
63
+ loading: `${prefix}-loading`,
64
+ },
65
+ },
66
+ )
67
+
68
+ export type ButtonVariants = VariantProps<typeof tvButton>
@@ -0,0 +1,75 @@
1
+ import type { VariantProps } from '../../shared/utils/tv'
2
+ import { tv } from '../../shared/utils/tv'
3
+
4
+ const prefix = 'rui-checkbox'
5
+
6
+ export const tvCheckbox = tv({
7
+ slots: {
8
+ root: ['flex', 'items-center', 'gap-2.5', 'w-fit'],
9
+ control: ['peer', 'shrink-0', 'rounded-xs', 'border'],
10
+ indicator: ['flex', 'h-full', 'w-full', 'items-center', 'justify-center', 'text-inherit'],
11
+ indicatorChecked: 'size-[0.875lh] stroke-black stroke-[.125rem] [&>path]:animate-check-dash',
12
+ indicatorMinus: 'size-[0.875lh] stroke-black stroke-[.125rem] [&_path]:animate-indeterminate-dash',
13
+ label: '',
14
+ },
15
+ variants: {
16
+ disabled: {
17
+ true: '',
18
+ false: '',
19
+ },
20
+ size: {
21
+ xs: '',
22
+ sm: '',
23
+ base: '',
24
+ lg: '',
25
+ },
26
+ },
27
+ defaultVariants: {
28
+ size: 'base',
29
+ },
30
+ compoundVariants: [
31
+ {
32
+ size: 'xs',
33
+ class: {
34
+ control: 'size-3.5',
35
+ label: 'text-xs',
36
+ indicator: 'text-xs',
37
+ },
38
+ },
39
+ {
40
+ size: 'sm',
41
+ class: {
42
+ control: 'size-4',
43
+ label: 'text-sm',
44
+ indicator: 'text-sm',
45
+ },
46
+ },
47
+ {
48
+ size: 'base',
49
+ class: {
50
+ control: 'size-4.5',
51
+ label: 'text-base',
52
+ indicator: 'text-base',
53
+ },
54
+ },
55
+ {
56
+ size: 'lg',
57
+ class: {
58
+ control: 'size-5',
59
+ label: 'text-lg',
60
+ indicator: 'text-lg',
61
+ },
62
+ },
63
+ ],
64
+ }, {
65
+ slots: {
66
+ root: prefix,
67
+ control: `${prefix}-control`,
68
+ indicator: `${prefix}-indicator`,
69
+ indicatorChecked: `${prefix}-indicator-checked`,
70
+ indicatorMinus: `${prefix}-indicator-minus`,
71
+ label: `${prefix}-label`,
72
+ },
73
+ })
74
+
75
+ export type CheckboxVariants = VariantProps<typeof tvCheckbox>
@@ -0,0 +1,61 @@
1
+ import type { VariantProps } from '../../shared/utils/tv'
2
+ import { tv } from '../../shared/utils/tv'
3
+
4
+ const prefix = 'rui-collapsible'
5
+
6
+ export const tvCollapsible = tv({
7
+ slots: {
8
+ root: [],
9
+ trigger: ['w-fit flex items-center'],
10
+ indicator: [
11
+ 'data-[state=closed]:rotate-0',
12
+ 'data-[state=open]:rotate-180',
13
+ 'transition-transform',
14
+ ],
15
+ content: [
16
+ 'overflow-hidden',
17
+ 'data-[state=open]:animate-collapsible-down',
18
+ 'data-[state=closed]:animate-collapsible-up',
19
+ ],
20
+ },
21
+ variants: {
22
+ size: {
23
+ xs: {
24
+ trigger: ['text-xs gap-3'],
25
+ },
26
+ sm: {
27
+ trigger: ['text-sm gap-4'],
28
+ },
29
+ base: {
30
+ trigger: ['text-base gap-4.5'],
31
+ },
32
+ lg: {
33
+ trigger: ['text-lg gap-5'],
34
+ },
35
+ },
36
+ },
37
+ }, {
38
+ slots: {
39
+ root: prefix,
40
+ trigger: `${prefix}-trigger`,
41
+ indicator: `${prefix}-trigger-indicator`,
42
+ content: `${prefix}-content`,
43
+ },
44
+ })
45
+ export type CollapsibleVariants = VariantProps<typeof tvCollapsible>
46
+
47
+ const readMorePrefix = 'rui-readmore'
48
+ export const tvReadMore = tv({
49
+ slots: {
50
+ root: [],
51
+ content: [],
52
+ trigger: [],
53
+ },
54
+ }, {
55
+ slots: {
56
+ root: readMorePrefix,
57
+ content: `${readMorePrefix}-content`,
58
+ trigger: `${readMorePrefix}-trigger`,
59
+ },
60
+ })
61
+ export type ReadMoreVariants = VariantProps<typeof tvReadMore>