@raxium/themes 0.1.1

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 (167) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/default/crafts/badge.d.ts +44 -0
  3. package/dist/default/crafts/badge.js +48 -0
  4. package/dist/default/crafts/button.d.ts +107 -0
  5. package/dist/default/crafts/button.js +60 -0
  6. package/dist/default/crafts/checkbox.d.ts +62 -0
  7. package/dist/default/crafts/checkbox.js +70 -0
  8. package/dist/default/crafts/collapsible.d.ts +111 -0
  9. package/dist/default/crafts/collapsible.js +55 -0
  10. package/dist/default/crafts/date-picker.d.ts +369 -0
  11. package/dist/default/crafts/date-picker.js +242 -0
  12. package/dist/default/crafts/dialog.d.ts +116 -0
  13. package/dist/default/crafts/dialog.js +95 -0
  14. package/dist/default/crafts/editable.d.ts +197 -0
  15. package/dist/default/crafts/editable.js +95 -0
  16. package/dist/default/crafts/floating-panel.d.ts +143 -0
  17. package/dist/default/crafts/floating-panel.js +63 -0
  18. package/dist/default/crafts/hotkey.d.ts +149 -0
  19. package/dist/default/crafts/hotkey.js +16 -0
  20. package/dist/default/crafts/hover-card.d.ts +50 -0
  21. package/dist/default/crafts/hover-card.js +75 -0
  22. package/dist/default/crafts/icon.d.ts +8 -0
  23. package/dist/default/crafts/icon.js +7 -0
  24. package/dist/default/crafts/index.d.ts +33 -0
  25. package/dist/default/crafts/index.js +33 -0
  26. package/dist/default/crafts/input.d.ts +77 -0
  27. package/dist/default/crafts/input.js +45 -0
  28. package/dist/default/crafts/menu.d.ts +71 -0
  29. package/dist/default/crafts/menu.js +111 -0
  30. package/dist/default/crafts/message.d.ts +131 -0
  31. package/dist/default/crafts/message.js +58 -0
  32. package/dist/default/crafts/number-input.d.ts +83 -0
  33. package/dist/default/crafts/number-input.js +42 -0
  34. package/dist/default/crafts/pagination.d.ts +190 -0
  35. package/dist/default/crafts/pagination.js +100 -0
  36. package/dist/default/crafts/popover.d.ts +104 -0
  37. package/dist/default/crafts/popover.js +66 -0
  38. package/dist/default/crafts/progress.d.ts +110 -0
  39. package/dist/default/crafts/progress.js +121 -0
  40. package/dist/default/crafts/radio-group.d.ts +119 -0
  41. package/dist/default/crafts/radio-group.js +92 -0
  42. package/dist/default/crafts/rating-group.d.ts +71 -0
  43. package/dist/default/crafts/rating-group.js +38 -0
  44. package/dist/default/crafts/scroll-area.d.ts +74 -0
  45. package/dist/default/crafts/scroll-area.js +109 -0
  46. package/dist/default/crafts/select.d.ts +146 -0
  47. package/dist/default/crafts/select.js +114 -0
  48. package/dist/default/crafts/skeleton.d.ts +35 -0
  49. package/dist/default/crafts/skeleton.js +15 -0
  50. package/dist/default/crafts/slider.d.ts +167 -0
  51. package/dist/default/crafts/slider.js +85 -0
  52. package/dist/default/crafts/spin.d.ts +102 -0
  53. package/dist/default/crafts/spin.js +56 -0
  54. package/dist/default/crafts/switch.d.ts +92 -0
  55. package/dist/default/crafts/switch.js +66 -0
  56. package/dist/default/crafts/tabs.d.ts +119 -0
  57. package/dist/default/crafts/tabs.js +116 -0
  58. package/dist/default/crafts/tags-input.d.ts +158 -0
  59. package/dist/default/crafts/tags-input.js +72 -0
  60. package/dist/default/crafts/toast.d.ts +137 -0
  61. package/dist/default/crafts/toast.js +62 -0
  62. package/dist/default/crafts/toggle-group.d.ts +92 -0
  63. package/dist/default/crafts/toggle-group.js +49 -0
  64. package/dist/default/crafts/toggle.d.ts +29 -0
  65. package/dist/default/crafts/toggle.js +29 -0
  66. package/dist/default/crafts/tooltip.d.ts +86 -0
  67. package/dist/default/crafts/tooltip.js +55 -0
  68. package/dist/default/crafts/tree.d.ts +208 -0
  69. package/dist/default/crafts/tree.js +145 -0
  70. package/dist/default/index.css +1624 -0
  71. package/dist/default/index.d.ts +2 -0
  72. package/dist/default/index.js +1 -0
  73. package/dist/razer/crafts/index.d.ts +15 -0
  74. package/dist/razer/crafts/index.js +15 -0
  75. package/dist/razer/index.css +4830 -0
  76. package/dist/razer/index.d.ts +2 -0
  77. package/dist/razer/index.js +1 -0
  78. package/dist/utils/cn.d.ts +7 -0
  79. package/dist/utils/cn.js +13 -0
  80. package/dist/utils/index.d.ts +2 -0
  81. package/dist/utils/index.js +2 -0
  82. package/dist/utils/tv.d.ts +37 -0
  83. package/dist/utils/tv.js +29 -0
  84. package/package.json +61 -0
  85. package/src/css/animation-easing.css +21 -0
  86. package/src/css/animations.css +252 -0
  87. package/src/css/index.css +2 -0
  88. package/src/css/static.css +31 -0
  89. package/src/default/crafts/badge.ts +56 -0
  90. package/src/default/crafts/button.ts +68 -0
  91. package/src/default/crafts/checkbox.ts +75 -0
  92. package/src/default/crafts/collapsible.ts +61 -0
  93. package/src/default/crafts/date-picker.ts +261 -0
  94. package/src/default/crafts/dialog.ts +103 -0
  95. package/src/default/crafts/editable.ts +108 -0
  96. package/src/default/crafts/floating-panel.ts +71 -0
  97. package/src/default/crafts/hotkey.ts +24 -0
  98. package/src/default/crafts/hover-card.ts +83 -0
  99. package/src/default/crafts/icon.ts +15 -0
  100. package/src/default/crafts/index.ts +62 -0
  101. package/src/default/crafts/input.ts +50 -0
  102. package/src/default/crafts/menu.ts +118 -0
  103. package/src/default/crafts/message.ts +66 -0
  104. package/src/default/crafts/number-input.ts +51 -0
  105. package/src/default/crafts/pagination.ts +120 -0
  106. package/src/default/crafts/popover.ts +74 -0
  107. package/src/default/crafts/progress.ts +131 -0
  108. package/src/default/crafts/radio-group.ts +100 -0
  109. package/src/default/crafts/rating-group.ts +46 -0
  110. package/src/default/crafts/scroll-area.ts +116 -0
  111. package/src/default/crafts/select.ts +122 -0
  112. package/src/default/crafts/skeleton.ts +23 -0
  113. package/src/default/crafts/slider.ts +93 -0
  114. package/src/default/crafts/spin.ts +64 -0
  115. package/src/default/crafts/switch.ts +71 -0
  116. package/src/default/crafts/tabs.ts +122 -0
  117. package/src/default/crafts/tags-input.ts +81 -0
  118. package/src/default/crafts/toast.ts +70 -0
  119. package/src/default/crafts/toggle-group.ts +57 -0
  120. package/src/default/crafts/toggle.ts +34 -0
  121. package/src/default/crafts/tooltip.ts +63 -0
  122. package/src/default/crafts/tree.ts +165 -0
  123. package/src/default/index.css +3 -0
  124. package/src/default/index.ts +2 -0
  125. package/src/default/tailwind.config.ts +9 -0
  126. package/src/razer/components/arrow.css +20 -0
  127. package/src/razer/components/badge.css +13 -0
  128. package/src/razer/components/button.css +40 -0
  129. package/src/razer/components/checkbox.css +39 -0
  130. package/src/razer/components/collapsible.css +16 -0
  131. package/src/razer/components/date-picker.css +46 -0
  132. package/src/razer/components/dialog.css +29 -0
  133. package/src/razer/components/editable.css +27 -0
  134. package/src/razer/components/floating-panel.css +11 -0
  135. package/src/razer/components/hotkey.css +5 -0
  136. package/src/razer/components/hover-card.css +14 -0
  137. package/src/razer/components/input.css +29 -0
  138. package/src/razer/components/menu.css +47 -0
  139. package/src/razer/components/message.css +41 -0
  140. package/src/razer/components/number-input.css +9 -0
  141. package/src/razer/components/pagination.css +14 -0
  142. package/src/razer/components/popover.css +19 -0
  143. package/src/razer/components/progress.css +78 -0
  144. package/src/razer/components/radio-group.css +44 -0
  145. package/src/razer/components/rating-group.css +26 -0
  146. package/src/razer/components/scroll-area.css +14 -0
  147. package/src/razer/components/select.css +31 -0
  148. package/src/razer/components/skeleton.css +11 -0
  149. package/src/razer/components/slider.css +27 -0
  150. package/src/razer/components/spin.css +15 -0
  151. package/src/razer/components/switch.css +24 -0
  152. package/src/razer/components/tabs.css +11 -0
  153. package/src/razer/components/tags-input.css +16 -0
  154. package/src/razer/components/toast.css +41 -0
  155. package/src/razer/components/toggle-group.css +19 -0
  156. package/src/razer/components/toggle.css +17 -0
  157. package/src/razer/components/tooltip.css +16 -0
  158. package/src/razer/components/tree.css +19 -0
  159. package/src/razer/components.css +33 -0
  160. package/src/razer/crafts/index.ts +16 -0
  161. package/src/razer/index.css +6 -0
  162. package/src/razer/index.ts +2 -0
  163. package/src/razer/preset.css +261 -0
  164. package/src/razer/tailwind.config.ts +10 -0
  165. package/src/utils/cn.ts +18 -0
  166. package/src/utils/index.ts +2 -0
  167. package/src/utils/tv.ts +91 -0
@@ -0,0 +1,61 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
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>
@@ -0,0 +1,261 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-date-picker'
5
+
6
+ export const tvDatePicker = tv(
7
+ {
8
+ slots: {
9
+ root: '',
10
+ control: ['flex', 'items-center', 'gap-2', 'w-fit'],
11
+ content: [
12
+ 'group/content',
13
+ 'relative',
14
+ 'z-auto',
15
+ 'min-w-(--reference-width)',
16
+ 'rounded',
17
+ 'p-0',
18
+ 'z-(--z-popover)',
19
+ 'data-[state=open]:motion-opacity-in',
20
+ 'data-[state=open]:motion-scale-in-95',
21
+ 'data-[state=open]:data-[placement^=bottom]:motion-translate-y-in-[.25rem]',
22
+ 'data-[state=open]:data-[placement^=top]:-motion-translate-y-in-[.25rem]',
23
+ 'data-[state=open]:data-[placement^=left]:-motion-translate-x-in-[.25rem]',
24
+ 'data-[state=open]:data-[placement^=right]:motion-translate-x-in-[.25rem]',
25
+ 'data-[state=closed]:motion-opacity-out',
26
+ 'data-[state=closed]:motion-scale-out-95',
27
+ 'data-[state=closed]:data-[placement^=bottom]:motion-translate-y-out-[.25rem]',
28
+ 'data-[state=closed]:data-[placement^=top]:-motion-translate-y-out-[.25rem]',
29
+ 'data-[state=closed]:data-[placement^=left]:-motion-translate-x-out-[.25rem]',
30
+ 'data-[state=closed]:data-[placement^=right]:motion-translate-x-out-[.25rem]',
31
+ ],
32
+ contentInner: '',
33
+ },
34
+
35
+ variants: {
36
+ size: {
37
+ xs: {
38
+ contentInner: 'px-1.5 py-1',
39
+ },
40
+ sm: {
41
+ contentInner: 'px-2 py-1.5',
42
+ },
43
+ base: {
44
+ contentInner: 'px-2.5 py-1.5',
45
+ },
46
+ lg: {
47
+ contentInner: 'px-3 py-2',
48
+ },
49
+ },
50
+ bordered: {
51
+ true: {
52
+ content: 'border',
53
+ },
54
+ false: '',
55
+ },
56
+ },
57
+ },
58
+ {
59
+ slots: {
60
+ root: `${prefix}`,
61
+ control: `${prefix}-control`,
62
+ content: `${prefix}-content`,
63
+ contentInner: `${prefix}-content-inner`,
64
+ },
65
+ },
66
+ )
67
+
68
+ export type DatePickerVariants = VariantProps<typeof tvDatePicker>
69
+
70
+ export const tvDatePickerView = tv(
71
+ {
72
+ slots: {
73
+ view: 'flex flex-col gap-2',
74
+ viewControl: ['flex', 'items-center', 'justify-between', 'w-full'],
75
+ viewControlTrigger: '',
76
+ viewTrigger: 'rounded',
77
+ table: 'grid gap-2',
78
+ tableHead: 'grid',
79
+ tableHeader: 'block text-center truncate uppercase',
80
+ tableBody: 'grid',
81
+ tableCell: '',
82
+ tableCellTrigger: [
83
+ 'relative',
84
+ 'flex',
85
+ 'items-center',
86
+ 'justify-center',
87
+ 'size-full',
88
+ 'cursor-default',
89
+ ],
90
+ },
91
+ variants: {
92
+ size: {
93
+ xs: {
94
+ view: 'text-xs',
95
+ viewControl: '',
96
+ viewControlTrigger: 'box-content p-1.5',
97
+ viewTrigger: 'text-xs h-6 px-1.5',
98
+ tableHeader: 'w-6 text-xxs',
99
+ },
100
+ sm: {
101
+ view: 'text-sm',
102
+ viewControl: '',
103
+ viewControlTrigger: 'box-content p-2',
104
+ viewTrigger: 'text-sm h-8 px-2',
105
+ tableHeader: 'w-8 text-xs',
106
+ },
107
+ base: {
108
+ view: 'text-base',
109
+ viewControl: '',
110
+ viewControlTrigger: 'box-content p-2.5',
111
+ viewTrigger: 'text-base h-9.5 px-2.5',
112
+ tableHeader: 'w-10 text-sm',
113
+ },
114
+ lg: {
115
+ view: 'text-lg',
116
+ viewControl: '',
117
+ viewControlTrigger: 'box-content p-3',
118
+ viewTrigger: 'text-lg h-10 px-3',
119
+ tableHeader: 'w-12 text-base',
120
+ },
121
+ },
122
+
123
+ view: {
124
+ day: {
125
+ tableHead: 'grid-cols-7',
126
+ tableBody: 'grid-cols-7',
127
+ tableCell: 'aspect-square',
128
+ },
129
+ month: {
130
+ tableBody: 'grid-cols-4',
131
+ tableCell: 'aspect-[16/9]',
132
+ },
133
+ year: {
134
+ tableBody: 'grid-cols-4',
135
+ tableCell: 'aspect-[16/9]',
136
+ },
137
+ },
138
+
139
+ selected: {
140
+ true: {
141
+ tableCellTrigger: 'rounded',
142
+ },
143
+ },
144
+
145
+ inRange: {
146
+ true: {
147
+ tableCellTrigger: 'rounded-none',
148
+ },
149
+ },
150
+ firstInRange: {
151
+ true: {
152
+ tableCellTrigger: 'rounded-tl rounded-bl',
153
+ },
154
+ },
155
+ firstInHoveredRange: {
156
+ true: {
157
+ tableCellTrigger: 'rounded-tl rounded-bl',
158
+ },
159
+ },
160
+ lastInRange: {
161
+ true: {
162
+ tableCellTrigger: 'rounded-br rounded-tr',
163
+ },
164
+ },
165
+ lastInHoveredRange: {
166
+ true: {
167
+ tableCellTrigger: 'rounded-br rounded-tr',
168
+ },
169
+ },
170
+ today: {
171
+ true: {
172
+ tableCellTrigger: [
173
+ 'after:content-[""]',
174
+ 'after:absolute',
175
+ 'after:top-0',
176
+ 'after:right-0',
177
+ 'after:rounded-full',
178
+ ],
179
+ },
180
+ },
181
+ },
182
+
183
+ compoundVariants: [
184
+ {
185
+ size: 'xs',
186
+ view: ['month', 'year'],
187
+ class: {
188
+ tableCell: 'w-12',
189
+ },
190
+ },
191
+ {
192
+ size: 'sm',
193
+ view: ['month', 'year'],
194
+ class: {
195
+ tableCell: 'w-14',
196
+ },
197
+ },
198
+ {
199
+ size: 'base',
200
+ view: ['month', 'year'],
201
+ class: {
202
+ tableCell: 'w-16',
203
+ },
204
+ },
205
+ {
206
+ size: 'lg',
207
+ view: ['month', 'year'],
208
+ class: {
209
+ tableCell: 'w-18',
210
+ },
211
+ },
212
+ {
213
+ today: true,
214
+ size: 'xs',
215
+ class: {
216
+ tableCellTrigger: 'after:w-1.25 after:h-1.25',
217
+ },
218
+ },
219
+ {
220
+ today: true,
221
+ size: 'sm',
222
+ class: {
223
+ tableCellTrigger: 'after:w-1.5 after:h-1.5',
224
+ },
225
+ },
226
+ {
227
+ today: true,
228
+ size: 'base',
229
+ class: {
230
+ tableCellTrigger: 'after:w-1.75 after:h-1.75',
231
+ },
232
+ },
233
+ {
234
+ today: true,
235
+ size: 'lg',
236
+ class: {
237
+ tableCellTrigger: 'after:w-2 after:h-2',
238
+ },
239
+ },
240
+ ],
241
+ defaultVariants: {
242
+ size: 'base',
243
+ },
244
+ },
245
+ {
246
+ slots: {
247
+ view: `${prefix}-view`,
248
+ viewControl: `${prefix}-view-control`,
249
+ viewTrigger: `${prefix}-view-trigger`,
250
+ viewControlTrigger: `${prefix}-view-control-trigger`,
251
+ table: `${prefix}-table`,
252
+ tableHead: `${prefix}-table-head`,
253
+ tableHeader: `${prefix}-table-header`,
254
+ tableBody: `${prefix}-table-body`,
255
+ tableCell: `${prefix}-table-cell`,
256
+ tableCellTrigger: `${prefix}-table-cell-trigger`,
257
+ },
258
+ },
259
+ )
260
+
261
+ export type DatePickerViewVariants = VariantProps<typeof tvDatePickerView>
@@ -0,0 +1,103 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-dialog'
5
+
6
+ export const tvDialog = tv(
7
+ {
8
+ slots: {
9
+ backdrop: [
10
+ 'fixed',
11
+ 'inset-0',
12
+ 'z-(--z-overlay)',
13
+ 'data-[state=open]:motion-opacity-in',
14
+ 'data-[state=open]:animate-backdrop-blur-in',
15
+ 'data-[state=closed]:motion-opacity-out',
16
+ 'data-[state=closed]:animate-backdrop-blur-out',
17
+ ],
18
+ positioner: ['fixed', 'inset-0', 'z-(--z-modal)', 'flex', 'items-center', 'justify-center'],
19
+ content: [
20
+ 'relative',
21
+ 'max-w-full',
22
+ 'md:max-w-[80vw]',
23
+ 'border',
24
+ 'rounded',
25
+ 'data-[state=open]:motion-opacity-in',
26
+ 'data-[state=open]:motion-translate-y-in',
27
+ 'data-[state=closed]:motion-opacity-out',
28
+ 'data-[state=closed]:motion-translate-y-out',
29
+ ],
30
+ close: '',
31
+ header: ['flex', 'items-center', 'justify-between'],
32
+ title: [],
33
+ body: ['flex-1', 'overflow-y-auto'],
34
+ footer: ['flex', 'items-center', 'justify-end'],
35
+ },
36
+ variants: {
37
+ size: {
38
+ xs: {
39
+ body: 'p-4 text-xs',
40
+ footer: 'px-4 py-3 gap-4 text-xs',
41
+ header: 'py-2 px-4 text-xs',
42
+ close: [
43
+ 'p-0.25',
44
+ 'text-xs',
45
+ 'data-[variant=content-close]:pt-1.5',
46
+ 'data-[variant=content-close]:pr-1.5',
47
+ ],
48
+ },
49
+ sm: {
50
+ body: 'p-5 text-sm',
51
+ footer: 'px-5 py-4 gap-5 text-sm',
52
+ header: 'py-2.5 px-5 text-sm',
53
+ close: [
54
+ 'p-0.5',
55
+ 'text-sm',
56
+ 'data-[variant=content-close]:p-0',
57
+ 'data-[variant=content-close]:pt-2',
58
+ 'data-[variant=content-close]:pr-2',
59
+ ],
60
+ },
61
+ base: {
62
+ body: 'p-6 text-base',
63
+ footer: 'px-6 py-5 gap-6 text-base',
64
+ header: 'py-3 px-6 text-base',
65
+ close: [
66
+ 'p-0.75',
67
+ 'text-base',
68
+ 'data-[variant=content-close]:pt-2.5',
69
+ 'data-[variant=content-close]:pr-2.5',
70
+ ],
71
+ },
72
+ lg: {
73
+ body: 'p-8 text-lg',
74
+ footer: 'px-8 py-6 gap-8 text-lg',
75
+ header: 'py-4 px-8 text-lg',
76
+ close: [
77
+ 'p-1',
78
+ 'text-lg',
79
+ 'data-[variant=content-close]:pt-3',
80
+ 'data-[variant=content-close]:pr-3',
81
+ ],
82
+ },
83
+ },
84
+ },
85
+ defaultVariants: {
86
+ size: 'base',
87
+ },
88
+ },
89
+ {
90
+ slots: {
91
+ backdrop: `${prefix}-backdrop`,
92
+ positioner: `${prefix}-positioner`,
93
+ content: `${prefix}-content`,
94
+ header: `${prefix}-header`,
95
+ close: `${prefix}-close`,
96
+ title: `${prefix}-title`,
97
+ body: `${prefix}-body`,
98
+ footer: `${prefix}-footer`,
99
+ },
100
+ },
101
+ )
102
+
103
+ export type DialogVariants = VariantProps<typeof tvDialog>
@@ -0,0 +1,108 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+ import { tvInput } from './input'
4
+
5
+ const prefix = 'rui-editable'
6
+
7
+ export const tvEditable = tv(
8
+ {
9
+ slots: {
10
+ root: 'flex items-center',
11
+ area: '',
12
+ preview: '',
13
+ },
14
+ variants: {
15
+ size: {
16
+ xs: '',
17
+ sm: '',
18
+ base: '',
19
+ lg: '',
20
+ },
21
+ },
22
+ compoundVariants: [
23
+ {
24
+ size: 'xs',
25
+ class: {
26
+ root: 'text-xs',
27
+ },
28
+ },
29
+ {
30
+ size: 'sm',
31
+ class: {
32
+ root: 'text-sm',
33
+ },
34
+ },
35
+ {
36
+ size: 'base',
37
+ class: {
38
+ root: 'text-base',
39
+ },
40
+ },
41
+ {
42
+ size: 'lg',
43
+ class: {
44
+ root: 'text-lg',
45
+ },
46
+ },
47
+ ],
48
+ defaultVariants: { size: 'base' },
49
+ },
50
+ {
51
+ slots: {
52
+ root: prefix,
53
+ area: `${prefix}-area`,
54
+ preview: `${prefix}-preview`,
55
+ },
56
+ },
57
+ )
58
+
59
+ export const tvEditableInput = tv(
60
+ {
61
+ extend: tvInput,
62
+ slots: {
63
+ root: '',
64
+ input: 'min-w-20 w-fit',
65
+ clearable: '',
66
+ },
67
+ compoundVariants: [
68
+ {
69
+ size: 'xs',
70
+ class: {
71
+ root: 'px-1 py-0.25',
72
+ clearable: 'text-xs size-[1lh]',
73
+ },
74
+ },
75
+ {
76
+ size: 'sm',
77
+ class: {
78
+ root: 'px-1 py-0.5',
79
+ clearable: 'text-sm size-[1lh]',
80
+ },
81
+ },
82
+ {
83
+ size: 'base',
84
+ class: {
85
+ root: 'px-2 py-0.75',
86
+ clearable: 'text-base size-[1lh]',
87
+ },
88
+ },
89
+ {
90
+ size: 'lg',
91
+ class: {
92
+ root: 'px-2 py-1',
93
+ clearable: 'text-lg size-[1lh]',
94
+ },
95
+ },
96
+ ],
97
+ },
98
+ {
99
+ slots: {
100
+ root: `${prefix}-input`,
101
+ input: `${prefix}-input-input`,
102
+ clearable: `${prefix}-input-clearable`,
103
+ },
104
+ },
105
+ )
106
+
107
+ export type EditableVariants = VariantProps<typeof tvEditable>
108
+ export type EditableInputVariants = VariantProps<typeof tvEditableInput>
@@ -0,0 +1,71 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-floating-panel'
5
+
6
+ export const tvFloatingPanel = tv(
7
+ {
8
+ slots: {
9
+ positioner: '',
10
+ content: '',
11
+ header: 'w-full flex items-center justify-between',
12
+ control: 'flex items-center gap-2',
13
+ title: '',
14
+ trigger: 'flex items-center justify-center',
15
+ resizeVertical: 'h-full w-2',
16
+ resizeHorizontal: 'w-full h-2',
17
+ resizeCorner: 'size-2',
18
+ },
19
+ variants: {
20
+ size: {
21
+ xs: {
22
+ header: 'py-2 pl-4 pr-3 text-xs',
23
+ control: '',
24
+ trigger: 'size-5',
25
+ resizeVertical: 'w-0.5',
26
+ resizeHorizontal: 'h-0.5',
27
+ resizeCorner: 'size-1',
28
+ },
29
+ sm: {
30
+ header: 'py-2.5 pl-5 pr-4 text-sm',
31
+ control: '',
32
+ trigger: 'size-6',
33
+ resizeVertical: 'w-0.75',
34
+ resizeHorizontal: 'h-0.75',
35
+ resizeCorner: 'size-1.5',
36
+ },
37
+ base: {
38
+ header: 'py-3 pl-6 pr-5 text-base',
39
+ control: '',
40
+ trigger: 'size-7',
41
+ resizeVertical: 'w-1',
42
+ resizeHorizontal: 'h-1',
43
+ resizeCorner: 'size-2',
44
+ },
45
+ lg: {
46
+ header: 'py-4 pl-8 pr-7 text-lg',
47
+ control: '',
48
+ trigger: 'size-8',
49
+ resizeVertical: 'w-1.25',
50
+ resizeHorizontal: 'h-1.25',
51
+ resizeCorner: 'size-2.5',
52
+ },
53
+ },
54
+ },
55
+ },
56
+ {
57
+ slots: {
58
+ positioner: `${prefix}-positioner`,
59
+ content: `${prefix}-content`,
60
+ header: `${prefix}-header`,
61
+ control: `${prefix}-control`,
62
+ title: `${prefix}-title`,
63
+ trigger: `${prefix}-trigger`,
64
+ resizeVertical: `${prefix}-resize-vertical`,
65
+ resizeHorizontal: `${prefix}-resize-horizontal`,
66
+ resizeCorner: `${prefix}-resize-corner`,
67
+ },
68
+ },
69
+ )
70
+
71
+ export type FloatingPanelVariants = VariantProps<typeof tvFloatingPanel>
@@ -0,0 +1,24 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+ import { tvInput } from './input'
4
+
5
+ const inputPrefix = 'rui-input'
6
+ const prefix = 'rui-hotkey'
7
+
8
+ export const tvHotkey = tv(
9
+ {
10
+ extend: tvInput,
11
+ slots: {
12
+ root: ['relative'],
13
+ input: [],
14
+ },
15
+ },
16
+ {
17
+ slots: {
18
+ root: [inputPrefix, prefix],
19
+ input: [`${inputPrefix}-input`, `${prefix}-input`],
20
+ },
21
+ },
22
+ )
23
+
24
+ export type HotkeyVariants = VariantProps<typeof tvHotkey>
@@ -0,0 +1,83 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-hover-card'
5
+
6
+ export const tvHoverCard = tv(
7
+ {
8
+ slots: {
9
+ content: [
10
+ 'rounded-(--border-radius)',
11
+ 'data-[state=open]:motion-opacity-in',
12
+ 'data-[state=open]:motion-scale-in-95',
13
+ 'data-[state=open]:data-[placement^=bottom]:motion-translate-y-in-[.25rem]',
14
+ 'data-[state=open]:data-[placement^=top]:-motion-translate-y-in-[.25rem]',
15
+ 'data-[state=open]:data-[placement^=left]:-motion-translate-x-in-[.25rem]',
16
+ 'data-[state=open]:data-[placement^=right]:motion-translate-x-in-[.25rem]',
17
+ 'data-[state=closed]:motion-opacity-out',
18
+ 'data-[state=closed]:motion-scale-out-95',
19
+ 'data-[state=closed]:data-[placement^=bottom]:motion-translate-y-out-[.25rem]',
20
+ 'data-[state=closed]:data-[placement^=top]:-motion-translate-y-out-[.25rem]',
21
+ 'data-[state=closed]:data-[placement^=left]:-motion-translate-x-out-[.25rem]',
22
+ 'data-[state=closed]:data-[placement^=right]:motion-translate-x-out-[.25rem]',
23
+ ],
24
+ contentInner: ['relative', 'rounded-(--border-radius)', 'z-10'],
25
+ },
26
+ variants: {
27
+ size: {
28
+ xs: '',
29
+ sm: '',
30
+ base: '',
31
+ lg: '',
32
+ },
33
+ bordered: {
34
+ true: '',
35
+ false: '',
36
+ },
37
+ },
38
+ defaultVariants: {
39
+ size: 'base',
40
+ bordered: true,
41
+ },
42
+ compoundVariants: [
43
+ {
44
+ size: 'xs',
45
+ class: {
46
+ contentInner: 'px-1.5 py-0.5 text-xs',
47
+ },
48
+ },
49
+ {
50
+ size: 'sm',
51
+ class: {
52
+ contentInner: 'px-2 py-1 text-sm',
53
+ },
54
+ },
55
+ {
56
+ size: 'base',
57
+ class: {
58
+ contentInner: 'px-2.5 py-1.5 text-base',
59
+ },
60
+ },
61
+ {
62
+ size: 'lg',
63
+ class: {
64
+ contentInner: 'px-3 py-2 text-lg',
65
+ },
66
+ },
67
+ {
68
+ bordered: true,
69
+ class: {
70
+ content: 'border',
71
+ },
72
+ },
73
+ ],
74
+ },
75
+ {
76
+ slots: {
77
+ content: `${prefix}-content`,
78
+ contentInner: `${prefix}-content-inner`,
79
+ },
80
+ },
81
+ )
82
+
83
+ export type HoverCardVariants = VariantProps<typeof tvHoverCard>