@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,122 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-tabs'
5
+
6
+ export const tvTabs = tv({
7
+ slots: {
8
+ root: '',
9
+ list: ['flex', 'items-center', 'relative', 'overflow-hidden'],
10
+ trigger: [
11
+ 'inline-flex',
12
+ 'items-center',
13
+ 'justify-center',
14
+ 'whitespace-nowrap',
15
+ 'rounded',
16
+ 'transition-all',
17
+ 'outline-offset-[-2px]',
18
+ 'disabled:pointer-events-none',
19
+ 'disabled:opacity-(--disabled-opacity)',
20
+ ],
21
+ content: ['mt-2'],
22
+ indicator: [],
23
+ },
24
+
25
+ variants: {
26
+ size: {
27
+ xs: {
28
+ trigger: 'text-xs',
29
+ },
30
+ sm: {
31
+ trigger: 'text-sm',
32
+ },
33
+ base: {
34
+ trigger: 'text-base',
35
+ },
36
+ lg: {
37
+ trigger: 'text-lg',
38
+ },
39
+ },
40
+ orientation: {
41
+ horizontal: {
42
+ indicator: 'w-(--width) bottom-0',
43
+ },
44
+ vertical: {
45
+ indicator: 'h-(--height)',
46
+ },
47
+ },
48
+ prev: {
49
+ true: '',
50
+ false: '',
51
+ },
52
+ next: {
53
+ true: '',
54
+ false: '',
55
+ },
56
+ },
57
+ compoundVariants: [
58
+ // horizontal
59
+ {
60
+ orientation: 'horizontal',
61
+ size: 'xs',
62
+ class: {
63
+ trigger: 'px-3 py-2',
64
+ indicator: 'h-0.5',
65
+ },
66
+ },
67
+ {
68
+ orientation: 'horizontal',
69
+ size: 'sm',
70
+ class: {
71
+ trigger: 'px-3.5 py-2.5',
72
+ indicator: 'h-0.75',
73
+ },
74
+ },
75
+ {
76
+ orientation: 'horizontal',
77
+ size: 'base',
78
+ class: {
79
+ trigger: 'px-4 py-3',
80
+ indicator: 'h-1',
81
+ },
82
+ },
83
+ {
84
+ orientation: 'horizontal',
85
+ size: 'lg',
86
+ class: {
87
+ trigger: 'px-4.5 py-3.5',
88
+ indicator: 'h-1.25',
89
+ },
90
+ },
91
+ {
92
+ orientation: 'horizontal',
93
+ prev: true,
94
+ class: {
95
+ content: 'data-[state=open]:-motion-translate-x-in data-[state=open]:motion-opacity-in',
96
+ },
97
+ },
98
+ {
99
+ orientation: 'horizontal',
100
+ next: true,
101
+ class: {
102
+ content: 'data-[state=open]:motion-translate-x-in data-[state=open]:motion-opacity-in',
103
+ },
104
+ },
105
+ ],
106
+ defaultVariants: {
107
+ size: 'base',
108
+ orientation: 'horizontal',
109
+ prev: false,
110
+ next: false,
111
+ },
112
+ }, {
113
+ slots: {
114
+ root: prefix,
115
+ list: `${prefix}-list`,
116
+ trigger: `${prefix}-trigger`,
117
+ content: `${prefix}-content`,
118
+ indicator: `${prefix}-indicator`,
119
+ },
120
+ })
121
+
122
+ export type TabsVariants = VariantProps<typeof tvTabs>
@@ -0,0 +1,81 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-tags-input'
5
+
6
+ export const tvTagsInput = tv(
7
+ {
8
+ slots: {
9
+ root: ['flex flex-col'],
10
+ control: ['flex', 'items-center'],
11
+ scrollArea: '',
12
+ scrollAreaContent: '',
13
+ input: ['focus:outline-none', 'bg-transparent'],
14
+ item: '',
15
+ itemPreview: 'flex items-center gap-1 rounded-full cursor-default',
16
+ itemInput: 'p-0 w-fit min-w-0 outline-none',
17
+ itemText: '',
18
+ },
19
+
20
+ variants: {
21
+ size: {
22
+ xs: {
23
+ input: 'text-xs',
24
+ itemPreview: 'text-xs px-1.5',
25
+ itemInput: 'text-xs px-0.5',
26
+ },
27
+ sm: {
28
+ input: 'text-sm',
29
+ itemPreview: 'text-sm px-2',
30
+ itemInput: 'text-sm px-1',
31
+ },
32
+ base: {
33
+ input: 'text-base',
34
+ itemPreview: 'text-base px-2.5',
35
+ itemInput: 'text-base px-1.5',
36
+ },
37
+ lg: {
38
+ input: 'text-lg',
39
+ itemPreview: 'text-lg px-2.5',
40
+ itemInput: 'text-lg px-1.5',
41
+ },
42
+ },
43
+ inline: {
44
+ true: {
45
+ control: ['flex-nowrap', 'p-0', 'gap-0'],
46
+ scrollArea: ['flex-shrink-0', 'py-1.5', 'px-2', 'max-w-[calc(100%-var(--spacing)*10)]'],
47
+ scrollAreaContent: ['flex', 'flex-nowrap', 'gap-2'],
48
+ input: ['flex-shrink-1', 'py-1.5', 'px-2', 'min-w-5'],
49
+ itemText: 'whitespace-nowrap',
50
+ },
51
+ false: {
52
+ control: 'flex-wrap',
53
+ },
54
+ },
55
+ empty: {
56
+ true: {
57
+ scrollArea: 'p-0',
58
+ },
59
+ },
60
+ },
61
+ defaultVariants: {
62
+ size: 'base',
63
+ inline: true,
64
+ },
65
+ },
66
+ {
67
+ slots: {
68
+ root: prefix,
69
+ control: `${prefix}-control`,
70
+ input: `${prefix}-input`,
71
+ scrollArea: `${prefix}-scroll-area`,
72
+ scrollAreaContent: `${prefix}-scroll-area-content`,
73
+ item: `${prefix}-item`,
74
+ itemPreview: `${prefix}-item-preview`,
75
+ itemInput: `${prefix}-item-input`,
76
+ itemText: `${prefix}-item-text`,
77
+ },
78
+ },
79
+ )
80
+
81
+ export type TagsInputVariants = VariantProps<typeof tvTagsInput>
@@ -0,0 +1,70 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-toast'
5
+
6
+ export const tvToast = tv(
7
+ {
8
+ slots: {
9
+ root: ['group/toast'],
10
+ content: ['flex', 'items-center', 'border-l-3', 'rounded-md'],
11
+ inner: 'flex flex-col w-max',
12
+ title: '',
13
+ description: '',
14
+ icon: 'size-[1lh]',
15
+ close: '',
16
+ },
17
+ variants: {
18
+ size: {
19
+ xs: {
20
+ content: 'py-3 px-4 space-x-3',
21
+ inner: 'gap-0.5',
22
+ icon: 'text-sm',
23
+ close: 'text-xs',
24
+ title: 'text-sm',
25
+ description: 'text-xs',
26
+ },
27
+ sm: {
28
+ content: 'py-4 px-6 space-x-4',
29
+ inner: 'gap-1',
30
+ icon: 'text-base',
31
+ close: 'text-sm',
32
+ title: 'text-base',
33
+ description: 'text-sm',
34
+ },
35
+ base: {
36
+ content: 'py-5 px-8 space-x-5',
37
+ inner: 'gap-1.5',
38
+ icon: 'text-base',
39
+ close: 'text-base',
40
+ title: 'text-lg',
41
+ description: 'text-base',
42
+ },
43
+ lg: {
44
+ content: 'py-6 px-10 space-x-6',
45
+ inner: 'gap-2',
46
+ icon: 'text-lg',
47
+ close: 'text-base',
48
+ title: 'text-lg',
49
+ description: 'text-base',
50
+ },
51
+ },
52
+ },
53
+ defaultVariants: {
54
+ size: 'base',
55
+ },
56
+ },
57
+ {
58
+ slots: {
59
+ root: prefix,
60
+ content: `${prefix}-content`,
61
+ inner: `${prefix}-inner`,
62
+ title: `${prefix}-title`,
63
+ description: `${prefix}-description`,
64
+ icon: `${prefix}-icon`,
65
+ close: `${prefix}-close`,
66
+ },
67
+ },
68
+ )
69
+
70
+ export type ToastVariants = VariantProps<typeof tvToast>
@@ -0,0 +1,57 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-toggle-group'
5
+
6
+ export const tvToggleGroup = tv(
7
+ {
8
+ slots: {
9
+ root: ['w-fit', 'inline-flex', 'items-center', 'group/toggle-group', 'border', 'rounded'],
10
+ item: ['flex', 'items-center', 'justify-center', 'aspect-square'],
11
+ },
12
+ variants: {
13
+ size: {
14
+ xs: {
15
+ item: 'size-6 text-xs',
16
+ },
17
+ sm: {
18
+ item: 'size-7 text-sm',
19
+ },
20
+ base: {
21
+ item: 'size-8 text-base',
22
+ },
23
+ lg: {
24
+ item: 'size-9 text-lg',
25
+ },
26
+ },
27
+ orientation: {
28
+ horizontal: {
29
+ root: 'flex-row',
30
+ item: [
31
+ '[&:not([hidden])~:not([hidden])]:border-s',
32
+ '[&:not([hidden])~:not([hidden])]:border-e-0',
33
+ ],
34
+ },
35
+ vertical: {
36
+ root: 'flex-col',
37
+ item: [
38
+ '[&:not([hidden])~:not([hidden])]:border-t',
39
+ '[&:not([hidden])~:not([hidden])]:border-b-0',
40
+ ],
41
+ },
42
+ },
43
+ },
44
+ defaultVariants: {
45
+ size: 'base',
46
+ orientation: 'horizontal',
47
+ },
48
+ },
49
+ {
50
+ slots: {
51
+ root: prefix,
52
+ item: `${prefix}-item`,
53
+ },
54
+ },
55
+ )
56
+
57
+ export type ToggleGroupVariants = VariantProps<typeof tvToggleGroup>
@@ -0,0 +1,34 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-toggle'
5
+
6
+ export const tvToggle = tv({
7
+ base: [
8
+ 'inline-flex',
9
+ 'items-center',
10
+ 'justify-center',
11
+ 'rounded',
12
+ 'border',
13
+ 'transition-all',
14
+ 'disabled:pointer-events-none',
15
+ 'disabled:opacity-(--disabled-opacity)',
16
+ '[&_svg]:pointer-events-none',
17
+ '[&_svg]:shrink-0',
18
+ ],
19
+ variants: {
20
+ size: {
21
+ xs: 'h-6 text-xs gap-1.5 px-3',
22
+ sm: 'h-7 text-sm gap-2.5 px-4',
23
+ base: 'h-8 text-base gap-3 px-5',
24
+ lg: 'h-9 text-lg gap-3.5 px-6',
25
+ },
26
+ },
27
+ defaultVariants: {
28
+ size: 'base',
29
+ },
30
+ }, {
31
+ class: prefix,
32
+ })
33
+
34
+ export type ToggleVariants = VariantProps<typeof tvToggle>
@@ -0,0 +1,63 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-tooltip'
5
+
6
+ export const tvTooltip = 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
+ contentInner: 'px-1.5 py-0.5 text-xs',
30
+ },
31
+ sm: {
32
+ contentInner: 'px-2 py-1 text-sm',
33
+ },
34
+ base: {
35
+ contentInner: 'px-2.5 py-1.5 text-base',
36
+ },
37
+ lg: {
38
+ contentInner: 'px-3 py-2 text-lg',
39
+ },
40
+ },
41
+ bordered: {
42
+ true: {
43
+ content: 'border',
44
+ },
45
+ false: {
46
+ content: 'border-none',
47
+ },
48
+ },
49
+ },
50
+ defaultVariants: {
51
+ size: 'base',
52
+ bordered: true,
53
+ },
54
+ },
55
+ {
56
+ slots: {
57
+ content: `${prefix}-content`,
58
+ contentInner: `${prefix}-content-inner`,
59
+ },
60
+ },
61
+ )
62
+
63
+ export type TooltipVariants = VariantProps<typeof tvTooltip>
@@ -0,0 +1,165 @@
1
+ import type { VariantProps } from '../../utils'
2
+ import { tv } from '../../utils'
3
+
4
+ const prefix = 'rui-tree'
5
+
6
+ export const tvTree = tv(
7
+ {
8
+ slots: {
9
+ root: '',
10
+ tree: '',
11
+ },
12
+ },
13
+ {
14
+ slots: {
15
+ root: prefix,
16
+ tree: `${prefix}-tree`,
17
+ },
18
+ },
19
+ )
20
+
21
+ export type TreeVariants = VariantProps<typeof tvTree>
22
+
23
+ export const tvTreeBranch = tv(
24
+ {
25
+ slots: {
26
+ root: 'data-[disabled]:pointer-events-none',
27
+ control: 'flex items-center justify-between data-[disabled]:pointer-events-none',
28
+ title: 'flex items-center',
29
+ text: '',
30
+ icon: 'size-[1lh]',
31
+ indicator: [
32
+ 'data-[state=open]:rotate-90',
33
+ 'data-[state=closed]:rotate-0',
34
+ 'transition-transform',
35
+ ],
36
+ content: [
37
+ 'overflow-hidden',
38
+ 'data-[state=open]:animate-collapsible-down',
39
+ 'data-[state=closed]:animate-collapsible-up',
40
+ ],
41
+ indentGuide: '',
42
+ checkbox: '',
43
+ checkboxIndicator: '',
44
+ },
45
+
46
+ variants: {
47
+ size: {
48
+ xs: {
49
+ control: [
50
+ 'text-xs',
51
+ 'min-h-6',
52
+ 'pl-[calc((var(--depth)-1)*var(--indent,calc(var(--spacing)*3.5)))]',
53
+ ],
54
+ title: 'gap-2',
55
+ },
56
+ sm: {
57
+ control: [
58
+ 'text-sm',
59
+ 'min-h-8',
60
+ 'pl-[calc((var(--depth)-1)*var(--indent,calc(var(--spacing)*4)))]',
61
+ ],
62
+ title: 'gap-2.5',
63
+ },
64
+ base: {
65
+ control: [
66
+ 'text-base',
67
+ 'min-h-10',
68
+ 'pl-[calc((var(--depth)-1)*var(--indent,calc(var(--spacing)*4.5)))]',
69
+ ],
70
+ title: 'gap-3',
71
+ },
72
+ lg: {
73
+ control: [
74
+ 'text-lg',
75
+ 'min-h-12',
76
+ 'pl-[calc((var(--depth)-1)*var(--indent,calc(var(--spacing)*5)))]',
77
+ ],
78
+ title: 'gap-3.5',
79
+ },
80
+ },
81
+ },
82
+ defaultVariants: {
83
+ size: 'base',
84
+ },
85
+ },
86
+ {
87
+ slots: {
88
+ root: `${prefix}-branch`,
89
+ control: `${prefix}-branch-control`,
90
+ title: `${prefix}-branch-title`,
91
+ text: `${prefix}-branch-text`,
92
+ icon: `${prefix}-branch-icon`,
93
+ indicator: `${prefix}-branch-indicator`,
94
+ content: `${prefix}-branch-content`,
95
+ indentGuide: `${prefix}-branch-indent-guide`,
96
+ checkbox: `${prefix}-branch-checkbox`,
97
+ checkboxIndicator: `${prefix}-branch-checkbox-indicator`,
98
+ },
99
+ },
100
+ )
101
+ export type TreeBranchVariants = VariantProps<typeof tvTreeBranch>
102
+
103
+ export const tvTreeItem = tv(
104
+ {
105
+ slots: {
106
+ root: 'data-[disabled]:pointer-events-none',
107
+ title: 'flex items-center gap-2',
108
+ icon: 'size-[1lh]',
109
+ text: '',
110
+ checkbox: '',
111
+ checkboxIndicator: '',
112
+ },
113
+ variants: {
114
+ size: {
115
+ xs: {
116
+ title: [
117
+ 'gap-2',
118
+ 'min-h-6',
119
+ 'text-xs',
120
+ 'pl-[calc((var(--depth)-1)*var(--indent,calc(var(--spacing)*3.5)))]',
121
+ ],
122
+ },
123
+ sm: {
124
+ title: [
125
+ 'gap-2.5',
126
+ 'min-h-8',
127
+ 'text-sm',
128
+ 'pl-[calc((var(--depth)-1)*var(--indent,calc(var(--spacing)*4)))]',
129
+ ],
130
+ },
131
+ base: {
132
+ title: [
133
+ 'gap-3',
134
+ 'min-h-10',
135
+ 'text-base',
136
+ 'pl-[calc((var(--depth)-1)*var(--indent,calc(var(--spacing)*4.5)))]',
137
+ ],
138
+ },
139
+ lg: {
140
+ title: [
141
+ 'gap-3.5',
142
+ 'min-h-12',
143
+ 'text-lg',
144
+ 'pl-[calc((var(--depth)-1)*var(--indent,calc(var(--spacing)*5)))]',
145
+ ],
146
+ },
147
+ },
148
+ },
149
+ defaultVariants: {
150
+ size: 'base',
151
+ },
152
+ },
153
+ {
154
+ slots: {
155
+ root: `${prefix}-item`,
156
+ title: `${prefix}-item-title`,
157
+ icon: `${prefix}-item-icon`,
158
+ text: `${prefix}-item-text`,
159
+ checkbox: `${prefix}-item-checkbox`,
160
+ checkboxIndicator: `${prefix}-item-checkbox-indicator`,
161
+ },
162
+ },
163
+ )
164
+
165
+ export type TreeItemVariants = VariantProps<typeof tvTreeItem>
@@ -0,0 +1,3 @@
1
+ @import 'tailwindcss';
2
+
3
+ @config './tailwind.config.ts';
@@ -0,0 +1,2 @@
1
+ export * as crafts from './crafts'
2
+ export type * from './crafts'
@@ -0,0 +1,9 @@
1
+ import type { Config } from 'tailwindcss'
2
+
3
+ export default {
4
+ content: [
5
+ './crafts/**/*.{ts}',
6
+ '../../../vue/core/src/**/*.{vue,ts,tsx}',
7
+ '!../../../vue/core/src/**/examples/**/*.{vue,ts,tsx}',
8
+ ],
9
+ } satisfies Config
@@ -0,0 +1,20 @@
1
+ @layer components {
2
+ *:where([data-part='arrow']) {
3
+ --arrow-border: var(--color-h00);
4
+ --arrow-background: var(--color-hff);
5
+
6
+ &[data-theme-surface='dark'] {
7
+ --arrow-border: var(--color-h33);
8
+ --arrow-background: var(--color-h00);
9
+ }
10
+
11
+ &[data-theme-surface='razer'] {
12
+ --arrow-border: var(--color-h00);
13
+ --arrow-background: var(--color-rz-green);
14
+ }
15
+ }
16
+
17
+ *:where([data-part='arrow-tip']) {
18
+ @apply bg-(--arrow-background) data-theme-bordered:border-(--arrow-border);
19
+ }
20
+ }
@@ -0,0 +1,13 @@
1
+ @layer components {
2
+ .rui-badge {
3
+ &[data-variant="default"] {
4
+ @apply bg-rz-green text-h00 font-rob-bold
5
+ }
6
+ &[data-variant="secondary"] {
7
+ @apply bg-h00 text-rz-green
8
+ }
9
+ &[data-variant="dot"] {
10
+ @apply bg-rz-red
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,40 @@
1
+ @layer components {
2
+ .rui-btn {
3
+ /* --rui-ripple-color: var(--color-rz-green); */
4
+ &[data-variant="default"] {
5
+ --rui-ripple-color: var(--color-rz-green-border);
6
+ @apply bg-rz-green text-h00 border-rz-green-border
7
+ hover:bg-rz-green-light hover:border-rz-green-border-hover hover:ring-rz-green-border-hover
8
+ active:bg-rz-green-dark-active active:border-rz-green-border-active active:ring-rz-green-border-active;
9
+ }
10
+
11
+ &[data-variant="normal"] {
12
+ --rui-ripple-color: var(--color-h4f);
13
+ @apply bg-h70 text-hff border-h4f
14
+ hover:bg-h9b hover:border-h83 hover:ring-h83
15
+ active:bg-h4f active:border-h37 active:ring-h37;
16
+ }
17
+
18
+ &[data-variant="outline"] {
19
+ --rui-ripple-color: var(--color-hcc);
20
+ @apply bg-transparent text-hcc border-hcc
21
+ hover:border-hff hover:ring-hff
22
+ active:border-hbb active:ring-hbb;
23
+ }
24
+
25
+ &[data-variant="text"] {
26
+ --rui-ripple-color: var(--color-h8f);
27
+ @apply border-none bg-transparent text-hcc
28
+ hover:bg-h33 hover:text-hff
29
+ active:bg-h24 active:text-h8f;
30
+ }
31
+
32
+ &[data-variant="icon"] {
33
+ --rui-ripple-color: var(--color-h8f);
34
+ @apply bg-transparent text-hcc
35
+ hover:bg-h33 hover:text-hff
36
+ active:bg-h24 active:text-h8f;
37
+ }
38
+
39
+ }
40
+ }