@soave/ui 0.3.2 → 0.5.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 (310) hide show
  1. package/dist/adapters/css-variables.d.ts +2 -1
  2. package/dist/adapters/css-variables.d.ts.map +1 -0
  3. package/dist/adapters/headless.d.ts +2 -1
  4. package/dist/adapters/headless.d.ts.map +1 -0
  5. package/dist/adapters/index.d.ts +6 -5
  6. package/dist/adapters/index.d.ts.map +1 -0
  7. package/dist/adapters/tailwind.d.ts +2 -1
  8. package/dist/adapters/tailwind.d.ts.map +1 -0
  9. package/dist/adapters/types.d.ts +2 -1
  10. package/dist/adapters/types.d.ts.map +1 -0
  11. package/dist/adapters.d.ts +2 -0
  12. package/dist/{adapters/css-variables.mjs → adapters.mjs} +33 -2
  13. package/dist/adapters.mjs.map +1 -0
  14. package/dist/components/Alert.vue.d.ts +23 -0
  15. package/dist/components/Alert.vue.d.ts.map +1 -0
  16. package/dist/components/AlertDescription.vue.d.ts +18 -0
  17. package/dist/components/AlertDescription.vue.d.ts.map +1 -0
  18. package/dist/components/AlertTitle.vue.d.ts +18 -0
  19. package/dist/components/AlertTitle.vue.d.ts.map +1 -0
  20. package/dist/components/Button.vue.d.ts +35 -0
  21. package/dist/components/Button.vue.d.ts.map +1 -0
  22. package/dist/components/Card.vue.d.ts +29 -0
  23. package/dist/components/Card.vue.d.ts.map +1 -0
  24. package/dist/components/CardContent.vue.d.ts +18 -0
  25. package/dist/components/CardContent.vue.d.ts.map +1 -0
  26. package/dist/components/CardDescription.vue.d.ts +18 -0
  27. package/dist/components/CardDescription.vue.d.ts.map +1 -0
  28. package/dist/components/CardFooter.vue.d.ts +18 -0
  29. package/dist/components/CardFooter.vue.d.ts.map +1 -0
  30. package/dist/components/CardHeader.vue.d.ts +18 -0
  31. package/dist/components/CardHeader.vue.d.ts.map +1 -0
  32. package/dist/components/CardTitle.vue.d.ts +18 -0
  33. package/dist/components/CardTitle.vue.d.ts.map +1 -0
  34. package/dist/components/Checkbox.vue.d.ts +39 -0
  35. package/dist/components/Checkbox.vue.d.ts.map +1 -0
  36. package/dist/components/Dialog.vue.d.ts +46 -0
  37. package/dist/components/Dialog.vue.d.ts.map +1 -0
  38. package/dist/components/DialogContent.vue.d.ts +24 -0
  39. package/dist/components/DialogContent.vue.d.ts.map +1 -0
  40. package/dist/components/DialogDescription.vue.d.ts +21 -0
  41. package/dist/components/DialogDescription.vue.d.ts.map +1 -0
  42. package/dist/components/DialogFooter.vue.d.ts +18 -0
  43. package/dist/components/DialogFooter.vue.d.ts.map +1 -0
  44. package/dist/components/DialogHeader.vue.d.ts +18 -0
  45. package/dist/components/DialogHeader.vue.d.ts.map +1 -0
  46. package/dist/components/DialogOverlay.vue.d.ts +7 -0
  47. package/dist/components/DialogOverlay.vue.d.ts.map +1 -0
  48. package/dist/components/DialogTitle.vue.d.ts +21 -0
  49. package/dist/components/DialogTitle.vue.d.ts.map +1 -0
  50. package/dist/components/DialogTrigger.vue.d.ts +20 -0
  51. package/dist/components/DialogTrigger.vue.d.ts.map +1 -0
  52. package/dist/components/DropdownMenu.vue.d.ts +33 -0
  53. package/dist/components/DropdownMenu.vue.d.ts.map +1 -0
  54. package/dist/components/DropdownMenuContent.vue.d.ts +25 -0
  55. package/dist/components/DropdownMenuContent.vue.d.ts.map +1 -0
  56. package/dist/components/DropdownMenuItem.vue.d.ts +29 -0
  57. package/dist/components/DropdownMenuItem.vue.d.ts.map +1 -0
  58. package/dist/components/DropdownMenuLabel.vue.d.ts +18 -0
  59. package/dist/components/DropdownMenuLabel.vue.d.ts.map +1 -0
  60. package/dist/components/DropdownMenuSeparator.vue.d.ts +3 -0
  61. package/dist/components/DropdownMenuSeparator.vue.d.ts.map +1 -0
  62. package/dist/components/DropdownMenuTrigger.vue.d.ts +24 -0
  63. package/dist/components/DropdownMenuTrigger.vue.d.ts.map +1 -0
  64. package/dist/components/FileInput.vue.d.ts +81 -0
  65. package/dist/components/FileInput.vue.d.ts.map +1 -0
  66. package/dist/components/FormError.vue.d.ts +21 -0
  67. package/dist/components/FormError.vue.d.ts.map +1 -0
  68. package/dist/components/FormField.vue.d.ts +26 -0
  69. package/dist/components/FormField.vue.d.ts.map +1 -0
  70. package/dist/components/FormInput.vue.d.ts +19 -0
  71. package/dist/components/FormInput.vue.d.ts.map +1 -0
  72. package/dist/components/FormLabel.vue.d.ts +21 -0
  73. package/dist/components/FormLabel.vue.d.ts.map +1 -0
  74. package/dist/components/FormTextarea.vue.d.ts +19 -0
  75. package/dist/components/FormTextarea.vue.d.ts.map +1 -0
  76. package/dist/components/Input.vue.d.ts +24 -0
  77. package/dist/components/Input.vue.d.ts.map +1 -0
  78. package/dist/components/Popover.vue.d.ts +38 -0
  79. package/dist/components/Popover.vue.d.ts.map +1 -0
  80. package/dist/components/PopoverContent.vue.d.ts +25 -0
  81. package/dist/components/PopoverContent.vue.d.ts.map +1 -0
  82. package/dist/components/PopoverTrigger.vue.d.ts +24 -0
  83. package/dist/components/PopoverTrigger.vue.d.ts.map +1 -0
  84. package/dist/components/RadioGroup.vue.d.ts +32 -0
  85. package/dist/components/RadioGroup.vue.d.ts.map +1 -0
  86. package/dist/components/RadioItem.vue.d.ts +40 -0
  87. package/dist/components/RadioItem.vue.d.ts.map +1 -0
  88. package/dist/components/Select.vue.d.ts +50 -0
  89. package/dist/components/Select.vue.d.ts.map +1 -0
  90. package/dist/components/SelectContent.vue.d.ts +25 -0
  91. package/dist/components/SelectContent.vue.d.ts.map +1 -0
  92. package/dist/components/SelectItem.vue.d.ts +36 -0
  93. package/dist/components/SelectItem.vue.d.ts.map +1 -0
  94. package/dist/components/SelectTrigger.vue.d.ts +36 -0
  95. package/dist/components/SelectTrigger.vue.d.ts.map +1 -0
  96. package/dist/components/SelectValue.vue.d.ts +24 -0
  97. package/dist/components/SelectValue.vue.d.ts.map +1 -0
  98. package/dist/components/Sheet.vue.d.ts +42 -0
  99. package/dist/components/Sheet.vue.d.ts.map +1 -0
  100. package/dist/components/SheetClose.vue.d.ts +20 -0
  101. package/dist/components/SheetClose.vue.d.ts.map +1 -0
  102. package/dist/components/SheetContent.vue.d.ts +18 -0
  103. package/dist/components/SheetContent.vue.d.ts.map +1 -0
  104. package/dist/components/SheetDescription.vue.d.ts +18 -0
  105. package/dist/components/SheetDescription.vue.d.ts.map +1 -0
  106. package/dist/components/SheetFooter.vue.d.ts +18 -0
  107. package/dist/components/SheetFooter.vue.d.ts.map +1 -0
  108. package/dist/components/SheetHeader.vue.d.ts +18 -0
  109. package/dist/components/SheetHeader.vue.d.ts.map +1 -0
  110. package/dist/components/SheetOverlay.vue.d.ts +3 -0
  111. package/dist/components/SheetOverlay.vue.d.ts.map +1 -0
  112. package/dist/components/SheetTitle.vue.d.ts +18 -0
  113. package/dist/components/SheetTitle.vue.d.ts.map +1 -0
  114. package/dist/components/SheetTrigger.vue.d.ts +20 -0
  115. package/dist/components/SheetTrigger.vue.d.ts.map +1 -0
  116. package/dist/components/Switch.vue.d.ts +46 -0
  117. package/dist/components/Switch.vue.d.ts.map +1 -0
  118. package/dist/components/Textarea.vue.d.ts +41 -0
  119. package/dist/components/Textarea.vue.d.ts.map +1 -0
  120. package/dist/components/Toast.vue.d.ts +35 -0
  121. package/dist/components/Toast.vue.d.ts.map +1 -0
  122. package/dist/components/ToastClose.vue.d.ts +22 -0
  123. package/dist/components/ToastClose.vue.d.ts.map +1 -0
  124. package/dist/components/ToastDescription.vue.d.ts +18 -0
  125. package/dist/components/ToastDescription.vue.d.ts.map +1 -0
  126. package/dist/components/ToastTitle.vue.d.ts +18 -0
  127. package/dist/components/ToastTitle.vue.d.ts.map +1 -0
  128. package/dist/components/Toaster.vue.d.ts +58 -0
  129. package/dist/components/Toaster.vue.d.ts.map +1 -0
  130. package/dist/components/Tooltip.vue.d.ts +34 -0
  131. package/dist/components/Tooltip.vue.d.ts.map +1 -0
  132. package/dist/components/TooltipContent.vue.d.ts +23 -0
  133. package/dist/components/TooltipContent.vue.d.ts.map +1 -0
  134. package/dist/components/TooltipTrigger.vue.d.ts +22 -0
  135. package/dist/components/TooltipTrigger.vue.d.ts.map +1 -0
  136. package/dist/components/index.d.ts +62 -13
  137. package/dist/components/index.d.ts.map +1 -0
  138. package/dist/composables/index.d.ts +18 -17
  139. package/dist/composables/index.d.ts.map +1 -0
  140. package/dist/composables/useButton.d.ts +3 -2
  141. package/dist/composables/useButton.d.ts.map +1 -0
  142. package/dist/composables/useCard.d.ts +3 -2
  143. package/dist/composables/useCard.d.ts.map +1 -0
  144. package/dist/composables/useCheckbox.d.ts +3 -2
  145. package/dist/composables/useCheckbox.d.ts.map +1 -0
  146. package/dist/composables/useDialog.d.ts +2 -1
  147. package/dist/composables/useDialog.d.ts.map +1 -0
  148. package/dist/composables/useDropdown.d.ts +3 -2
  149. package/dist/composables/useDropdown.d.ts.map +1 -0
  150. package/dist/composables/useFileInput.d.ts +3 -2
  151. package/dist/composables/useFileInput.d.ts.map +1 -0
  152. package/dist/composables/useForm.d.ts +3 -2
  153. package/dist/composables/useForm.d.ts.map +1 -0
  154. package/dist/composables/useInput.d.ts +3 -2
  155. package/dist/composables/useInput.d.ts.map +1 -0
  156. package/dist/composables/usePopover.d.ts +3 -2
  157. package/dist/composables/usePopover.d.ts.map +1 -0
  158. package/dist/composables/useRadio.d.ts +3 -2
  159. package/dist/composables/useRadio.d.ts.map +1 -0
  160. package/dist/composables/useSelect.d.ts +3 -2
  161. package/dist/composables/useSelect.d.ts.map +1 -0
  162. package/dist/composables/useSwitch.d.ts +3 -2
  163. package/dist/composables/useSwitch.d.ts.map +1 -0
  164. package/dist/composables/useTextarea.d.ts +3 -2
  165. package/dist/composables/useTextarea.d.ts.map +1 -0
  166. package/dist/composables/useTheme.d.ts +3 -2
  167. package/dist/composables/useTheme.d.ts.map +1 -0
  168. package/dist/composables/useToast.d.ts +2 -1
  169. package/dist/composables/useToast.d.ts.map +1 -0
  170. package/dist/composables/useTooltip.d.ts +3 -2
  171. package/dist/composables/useTooltip.d.ts.map +1 -0
  172. package/dist/composables/useUIConfig.d.ts +5 -4
  173. package/dist/composables/useUIConfig.d.ts.map +1 -0
  174. package/dist/composables.d.ts +2 -0
  175. package/dist/composables.mjs +30 -0
  176. package/dist/composables.mjs.map +1 -0
  177. package/dist/constants/errors.d.ts +1 -0
  178. package/dist/constants/errors.d.ts.map +1 -0
  179. package/dist/constants/index.d.ts +3 -2
  180. package/dist/constants/index.d.ts.map +1 -0
  181. package/dist/constants/logs.d.ts +1 -0
  182. package/dist/constants/logs.d.ts.map +1 -0
  183. package/dist/index.d.ts +7 -6
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.mjs +2109 -6
  186. package/dist/index.mjs.map +1 -0
  187. package/dist/{adapters/tailwind.mjs → tailwind-B-R7fPT1.js} +16 -7
  188. package/dist/tailwind-B-R7fPT1.js.map +1 -0
  189. package/dist/types/alert.d.ts +2 -1
  190. package/dist/types/alert.d.ts.map +1 -0
  191. package/dist/types/button.d.ts +2 -1
  192. package/dist/types/button.d.ts.map +1 -0
  193. package/dist/types/card.d.ts +2 -1
  194. package/dist/types/card.d.ts.map +1 -0
  195. package/dist/types/checkbox.d.ts +2 -1
  196. package/dist/types/checkbox.d.ts.map +1 -0
  197. package/dist/types/composables.d.ts +10 -1
  198. package/dist/types/composables.d.ts.map +1 -0
  199. package/dist/types/config.d.ts +6 -5
  200. package/dist/types/config.d.ts.map +1 -0
  201. package/dist/types/dialog.d.ts +2 -1
  202. package/dist/types/dialog.d.ts.map +1 -0
  203. package/dist/types/dropdown.d.ts +3 -2
  204. package/dist/types/dropdown.d.ts.map +1 -0
  205. package/dist/types/file-input.d.ts +2 -1
  206. package/dist/types/file-input.d.ts.map +1 -0
  207. package/dist/types/form.d.ts +2 -1
  208. package/dist/types/form.d.ts.map +1 -0
  209. package/dist/types/index.d.ts +22 -21
  210. package/dist/types/index.d.ts.map +1 -0
  211. package/dist/types/input.d.ts +2 -1
  212. package/dist/types/input.d.ts.map +1 -0
  213. package/dist/types/popover.d.ts +3 -2
  214. package/dist/types/popover.d.ts.map +1 -0
  215. package/dist/types/radio.d.ts +2 -1
  216. package/dist/types/radio.d.ts.map +1 -0
  217. package/dist/types/select.d.ts +2 -1
  218. package/dist/types/select.d.ts.map +1 -0
  219. package/dist/types/sheet.d.ts +2 -1
  220. package/dist/types/sheet.d.ts.map +1 -0
  221. package/dist/types/switch.d.ts +2 -1
  222. package/dist/types/switch.d.ts.map +1 -0
  223. package/dist/types/textarea.d.ts +2 -1
  224. package/dist/types/textarea.d.ts.map +1 -0
  225. package/dist/types/theme.d.ts +1 -0
  226. package/dist/types/theme.d.ts.map +1 -0
  227. package/dist/types/toast.d.ts +1 -0
  228. package/dist/types/toast.d.ts.map +1 -0
  229. package/dist/types/tooltip.d.ts +3 -2
  230. package/dist/types/tooltip.d.ts.map +1 -0
  231. package/dist/types/utils.d.ts +1 -0
  232. package/dist/types/utils.d.ts.map +1 -0
  233. package/dist/useTheme-C2uPqAtQ.js +1175 -0
  234. package/dist/useTheme-C2uPqAtQ.js.map +1 -0
  235. package/dist/utils/cn.d.ts +2 -1
  236. package/dist/utils/cn.d.ts.map +1 -0
  237. package/dist/utils/deepMerge.d.ts +2 -1
  238. package/dist/utils/deepMerge.d.ts.map +1 -0
  239. package/dist/utils/index.d.ts +3 -2
  240. package/dist/utils/index.d.ts.map +1 -0
  241. package/package.json +6 -4
  242. package/dist/adapters/headless.mjs +0 -7
  243. package/dist/adapters/index.mjs +0 -11
  244. package/dist/adapters/types.mjs +0 -10
  245. package/dist/build.config.d.ts +0 -2
  246. package/dist/build.config.mjs +0 -14
  247. package/dist/components/Button.vue +0 -41
  248. package/dist/components/Card.vue +0 -24
  249. package/dist/components/Checkbox.vue +0 -47
  250. package/dist/components/Dialog.vue +0 -105
  251. package/dist/components/Input.vue +0 -48
  252. package/dist/components/RadioGroup.vue +0 -45
  253. package/dist/components/RadioItem.vue +0 -65
  254. package/dist/components/Select.vue +0 -114
  255. package/dist/components/SelectContent.vue +0 -54
  256. package/dist/components/SelectItem.vue +0 -61
  257. package/dist/components/SelectTrigger.vue +0 -75
  258. package/dist/components/Switch.vue +0 -45
  259. package/dist/components/Textarea.vue +0 -55
  260. package/dist/components/index.mjs +0 -13
  261. package/dist/composables/index.mjs +0 -17
  262. package/dist/composables/useButton.mjs +0 -22
  263. package/dist/composables/useCard.mjs +0 -11
  264. package/dist/composables/useCheckbox.mjs +0 -18
  265. package/dist/composables/useDialog.mjs +0 -19
  266. package/dist/composables/useDropdown.mjs +0 -170
  267. package/dist/composables/useFileInput.mjs +0 -137
  268. package/dist/composables/useForm.mjs +0 -159
  269. package/dist/composables/useInput.mjs +0 -31
  270. package/dist/composables/usePopover.mjs +0 -113
  271. package/dist/composables/useRadio.mjs +0 -23
  272. package/dist/composables/useSelect.mjs +0 -42
  273. package/dist/composables/useSwitch.mjs +0 -17
  274. package/dist/composables/useTextarea.mjs +0 -29
  275. package/dist/composables/useTheme.mjs +0 -89
  276. package/dist/composables/useToast.mjs +0 -64
  277. package/dist/composables/useTooltip.mjs +0 -125
  278. package/dist/composables/useUIConfig.mjs +0 -53
  279. package/dist/constants/errors.mjs +0 -18
  280. package/dist/constants/index.mjs +0 -2
  281. package/dist/constants/logs.mjs +0 -17
  282. package/dist/env.d.ts +0 -11
  283. package/dist/styles/css-variables.css +0 -1
  284. package/dist/styles/index.d.ts +0 -1
  285. package/dist/styles/index.mjs +0 -1
  286. package/dist/types/alert.mjs +0 -0
  287. package/dist/types/button.mjs +0 -0
  288. package/dist/types/card.mjs +0 -0
  289. package/dist/types/checkbox.mjs +0 -0
  290. package/dist/types/composables.mjs +0 -0
  291. package/dist/types/config.mjs +0 -15
  292. package/dist/types/dialog.mjs +0 -1
  293. package/dist/types/dropdown.mjs +0 -1
  294. package/dist/types/file-input.mjs +0 -0
  295. package/dist/types/form.mjs +0 -0
  296. package/dist/types/index.mjs +0 -21
  297. package/dist/types/input.mjs +0 -0
  298. package/dist/types/popover.mjs +0 -1
  299. package/dist/types/radio.mjs +0 -1
  300. package/dist/types/select.mjs +0 -1
  301. package/dist/types/sheet.mjs +0 -1
  302. package/dist/types/switch.mjs +0 -0
  303. package/dist/types/textarea.mjs +0 -0
  304. package/dist/types/theme.mjs +0 -42
  305. package/dist/types/toast.mjs +0 -0
  306. package/dist/types/tooltip.mjs +0 -1
  307. package/dist/types/utils.mjs +0 -0
  308. package/dist/utils/cn.mjs +0 -5
  309. package/dist/utils/deepMerge.mjs +0 -18
  310. package/dist/utils/index.mjs +0 -2
@@ -1,29 +0,0 @@
1
- import { computed, ref, readonly } from "vue";
2
- export const useTextarea = (props) => {
3
- const is_focused = ref(false);
4
- const state = computed(() => ({
5
- size: props.value.size ?? "md",
6
- disabled: props.value.disabled ?? false,
7
- readonly: props.value.readonly ?? false,
8
- has_error: !!props.value.error,
9
- resize: props.value.resize ?? "vertical"
10
- }));
11
- const aria_attributes = computed(() => ({
12
- "aria-invalid": state.value.has_error || void 0,
13
- "aria-describedby": props.value.error_id,
14
- "aria-readonly": state.value.readonly || void 0
15
- }));
16
- const handleFocus = () => {
17
- is_focused.value = true;
18
- };
19
- const handleBlur = () => {
20
- is_focused.value = false;
21
- };
22
- return {
23
- state: readonly(state),
24
- is_focused,
25
- aria_attributes: readonly(aria_attributes),
26
- handleFocus,
27
- handleBlur
28
- };
29
- };
@@ -1,89 +0,0 @@
1
- import { ref, computed, watch, onMounted, onUnmounted } from "vue";
2
- const DEFAULT_OPTIONS = {
3
- default_mode: "system",
4
- storage_key: "soave-ui-theme",
5
- attribute: "data-theme"
6
- };
7
- export function useTheme(options = {}) {
8
- const merged_options = { ...DEFAULT_OPTIONS, ...options };
9
- const mode = ref(merged_options.default_mode);
10
- let media_query = null;
11
- const getSystemTheme = () => {
12
- if (typeof window === "undefined") return "light";
13
- return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
14
- };
15
- const resolved_mode = computed(() => {
16
- if (mode.value === "system") {
17
- return getSystemTheme();
18
- }
19
- return mode.value;
20
- });
21
- const applyTheme = (theme) => {
22
- if (typeof document === "undefined") return;
23
- const root = document.documentElement;
24
- root.setAttribute(merged_options.attribute, theme);
25
- if (theme === "dark") {
26
- root.classList.add("dark");
27
- } else {
28
- root.classList.remove("dark");
29
- }
30
- };
31
- const setMode = (new_mode) => {
32
- mode.value = new_mode;
33
- if (typeof localStorage !== "undefined") {
34
- localStorage.setItem(merged_options.storage_key, new_mode);
35
- }
36
- applyTheme(resolved_mode.value);
37
- };
38
- const toggleMode = () => {
39
- const next_mode = resolved_mode.value === "light" ? "dark" : "light";
40
- setMode(next_mode);
41
- };
42
- const handleSystemThemeChange = (event) => {
43
- if (mode.value === "system") {
44
- applyTheme(event.matches ? "dark" : "light");
45
- }
46
- };
47
- onMounted(() => {
48
- if (typeof localStorage !== "undefined") {
49
- const stored = localStorage.getItem(merged_options.storage_key);
50
- if (stored && ["light", "dark", "system"].includes(stored)) {
51
- mode.value = stored;
52
- }
53
- }
54
- if (typeof window !== "undefined") {
55
- media_query = window.matchMedia("(prefers-color-scheme: dark)");
56
- media_query.addEventListener("change", handleSystemThemeChange);
57
- }
58
- applyTheme(resolved_mode.value);
59
- });
60
- onUnmounted(() => {
61
- if (media_query) {
62
- media_query.removeEventListener("change", handleSystemThemeChange);
63
- }
64
- });
65
- watch(mode, () => {
66
- applyTheme(resolved_mode.value);
67
- });
68
- return {
69
- mode,
70
- resolved_mode,
71
- setMode,
72
- toggleMode
73
- };
74
- }
75
- export function generateThemeCSS(light, dark) {
76
- const formatColor = (key, value) => {
77
- const css_key = key.replace(/_/g, "-");
78
- return ` --${css_key}: ${value};`;
79
- };
80
- const lightCSS = Object.entries(light).map(([key, value]) => formatColor(key, value)).join("\n");
81
- const darkCSS = Object.entries(dark).map(([key, value]) => formatColor(key, value)).join("\n");
82
- return `:root {
83
- ${lightCSS}
84
- }
85
-
86
- .dark {
87
- ${darkCSS}
88
- }`;
89
- }
@@ -1,64 +0,0 @@
1
- import { ref } from "vue";
2
- const toasts = ref([]);
3
- let toast_counter = 0;
4
- const generateId = () => {
5
- toast_counter++;
6
- return `toast-${toast_counter}-${Date.now()}`;
7
- };
8
- export function useToast() {
9
- const add = (props) => {
10
- const id = props.id ?? generateId();
11
- const toast2 = {
12
- id,
13
- title: props.title,
14
- description: props.description,
15
- variant: props.variant ?? "default",
16
- duration: props.duration ?? 5e3,
17
- dismissible: props.dismissible ?? true,
18
- action: props.action,
19
- created_at: Date.now()
20
- };
21
- toasts.value = [...toasts.value, toast2];
22
- if (toast2.duration > 0) {
23
- setTimeout(() => {
24
- dismiss(id);
25
- }, toast2.duration);
26
- }
27
- return id;
28
- };
29
- const dismiss = (id) => {
30
- toasts.value = toasts.value.filter((t) => t.id !== id);
31
- };
32
- const dismissAll = () => {
33
- toasts.value = [];
34
- };
35
- const update = (id, props) => {
36
- toasts.value = toasts.value.map((toast2) => {
37
- if (toast2.id === id) {
38
- return {
39
- ...toast2,
40
- ...props,
41
- id: toast2.id,
42
- created_at: toast2.created_at
43
- };
44
- }
45
- return toast2;
46
- });
47
- };
48
- return {
49
- toasts: [...toasts.value],
50
- add,
51
- dismiss,
52
- dismissAll,
53
- update
54
- };
55
- }
56
- export const toast = {
57
- default: (props) => useToast().add({ ...props, variant: "default" }),
58
- success: (props) => useToast().add({ ...props, variant: "success" }),
59
- error: (props) => useToast().add({ ...props, variant: "error" }),
60
- warning: (props) => useToast().add({ ...props, variant: "warning" }),
61
- info: (props) => useToast().add({ ...props, variant: "info" }),
62
- dismiss: (id) => useToast().dismiss(id),
63
- dismissAll: () => useToast().dismissAll()
64
- };
@@ -1,125 +0,0 @@
1
- import { ref, computed, onUnmounted } from "vue";
2
- let tooltip_counter = 0;
3
- export function useTooltip(props) {
4
- const is_open = ref(false);
5
- const trigger_ref = ref(null);
6
- const content_ref = ref(null);
7
- const tooltip_id = `tooltip-${++tooltip_counter}`;
8
- let show_timeout = null;
9
- let hide_timeout = null;
10
- const clearTimeouts = () => {
11
- if (show_timeout) {
12
- clearTimeout(show_timeout);
13
- show_timeout = null;
14
- }
15
- if (hide_timeout) {
16
- clearTimeout(hide_timeout);
17
- hide_timeout = null;
18
- }
19
- };
20
- const show = () => {
21
- if (props.value.disabled) return;
22
- clearTimeouts();
23
- is_open.value = true;
24
- };
25
- const hide = () => {
26
- clearTimeouts();
27
- is_open.value = false;
28
- };
29
- const handleMouseEnter = () => {
30
- if (props.value.disabled) return;
31
- clearTimeouts();
32
- const delay = props.value.delay_duration ?? 200;
33
- show_timeout = setTimeout(() => {
34
- is_open.value = true;
35
- }, delay);
36
- };
37
- const handleMouseLeave = () => {
38
- clearTimeouts();
39
- const skip_delay = props.value.skip_delay_duration ?? 100;
40
- hide_timeout = setTimeout(() => {
41
- is_open.value = false;
42
- }, skip_delay);
43
- };
44
- const handleFocus = () => {
45
- if (props.value.disabled) return;
46
- show();
47
- };
48
- const handleBlur = () => {
49
- hide();
50
- };
51
- const position_styles = computed(() => {
52
- if (!trigger_ref.value || !is_open.value) {
53
- return {};
54
- }
55
- const side = props.value.side ?? "top";
56
- const align = props.value.align ?? "center";
57
- const offset = 8;
58
- const styles = {
59
- position: "absolute",
60
- zIndex: "50"
61
- };
62
- switch (side) {
63
- case "top":
64
- styles.bottom = "100%";
65
- styles.marginBottom = `${offset}px`;
66
- break;
67
- case "bottom":
68
- styles.top = "100%";
69
- styles.marginTop = `${offset}px`;
70
- break;
71
- case "left":
72
- styles.right = "100%";
73
- styles.marginRight = `${offset}px`;
74
- break;
75
- case "right":
76
- styles.left = "100%";
77
- styles.marginLeft = `${offset}px`;
78
- break;
79
- }
80
- if (side === "top" || side === "bottom") {
81
- switch (align) {
82
- case "start":
83
- styles.left = "0";
84
- break;
85
- case "center":
86
- styles.left = "50%";
87
- styles.transform = "translateX(-50%)";
88
- break;
89
- case "end":
90
- styles.right = "0";
91
- break;
92
- }
93
- } else {
94
- switch (align) {
95
- case "start":
96
- styles.top = "0";
97
- break;
98
- case "center":
99
- styles.top = "50%";
100
- styles.transform = "translateY(-50%)";
101
- break;
102
- case "end":
103
- styles.bottom = "0";
104
- break;
105
- }
106
- }
107
- return styles;
108
- });
109
- onUnmounted(() => {
110
- clearTimeouts();
111
- });
112
- return {
113
- is_open,
114
- trigger_ref,
115
- content_ref,
116
- tooltip_id,
117
- position_styles,
118
- show,
119
- hide,
120
- handleMouseEnter,
121
- handleMouseLeave,
122
- handleFocus,
123
- handleBlur
124
- };
125
- }
@@ -1,53 +0,0 @@
1
- import { inject, provide, reactive, readonly } from "vue";
2
- import { DEFAULT_UI_CONFIG } from "../types/config.mjs";
3
- import { tailwindAdapter } from "../adapters/tailwind.mjs";
4
- import { deepMerge } from "../utils/deepMerge.mjs";
5
- import { COMPONENT_ERRORS } from "../constants/errors.mjs";
6
- import { CONFIG_LOGS } from "../constants/logs.mjs";
7
- export const UI_PROVIDER_KEY = Symbol("ui-provider");
8
- export const UI_CONFIG_KEY = Symbol("ui-config");
9
- export const useUIProvider = (config = {}, adapter = tailwindAdapter) => {
10
- const merged_config = reactive(
11
- deepMerge(DEFAULT_UI_CONFIG, config)
12
- );
13
- const context = {
14
- config: merged_config,
15
- adapter
16
- };
17
- provide(UI_PROVIDER_KEY, context);
18
- provide(UI_CONFIG_KEY, merged_config);
19
- if (import.meta.env.DEV) {
20
- console.debug(CONFIG_LOGS.PROVIDER_INITIALIZED, context);
21
- }
22
- return context;
23
- };
24
- export function useUI(component) {
25
- const context = inject(UI_PROVIDER_KEY, null);
26
- if (!context) {
27
- if (import.meta.env.DEV) {
28
- console.warn(COMPONENT_ERRORS.PROVIDER_NOT_FOUND);
29
- }
30
- return readonly(DEFAULT_UI_CONFIG[component]);
31
- }
32
- return readonly(context.config[component]);
33
- }
34
- export const useUIConfig = () => {
35
- const context = inject(UI_PROVIDER_KEY, null);
36
- if (!context) {
37
- if (import.meta.env.DEV) {
38
- console.warn(COMPONENT_ERRORS.PROVIDER_NOT_FOUND);
39
- }
40
- return readonly(DEFAULT_UI_CONFIG);
41
- }
42
- return readonly(context.config);
43
- };
44
- export const useStyleAdapter = () => {
45
- const context = inject(UI_PROVIDER_KEY, null);
46
- if (!context) {
47
- if (import.meta.env.DEV) {
48
- console.warn(COMPONENT_ERRORS.PROVIDER_NOT_FOUND);
49
- }
50
- return tailwindAdapter;
51
- }
52
- return context.adapter;
53
- };
@@ -1,18 +0,0 @@
1
- export const FORM_ERRORS = {
2
- FIELD_NOT_FOUND: "\u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u30B9\u30AD\u30FC\u30DE\u306B\u5B58\u5728\u3057\u307E\u305B\u3093",
3
- VALIDATION_FAILED: "\u30D0\u30EA\u30C7\u30FC\u30B7\u30E7\u30F3\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
4
- SUBMIT_FAILED: "\u30D5\u30A9\u30FC\u30E0\u306E\u9001\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
5
- SCHEMA_INVALID: "\u7121\u52B9\u306A\u30B9\u30AD\u30FC\u30DE\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"
6
- };
7
- export const COMPONENT_ERRORS = {
8
- INVALID_VARIANT: "\u7121\u52B9\u306Avariant\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F",
9
- INVALID_SIZE: "\u7121\u52B9\u306Asize\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F",
10
- PROVIDER_NOT_FOUND: "UIProvider\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092UIProvider\u3067\u30E9\u30C3\u30D7\u3057\u3066\u304F\u3060\u3055\u3044"
11
- };
12
- export const DIALOG_ERRORS = {
13
- ALREADY_OPEN: "\u30C0\u30A4\u30A2\u30ED\u30B0\u306F\u65E2\u306B\u958B\u3044\u3066\u3044\u307E\u3059",
14
- ALREADY_CLOSED: "\u30C0\u30A4\u30A2\u30ED\u30B0\u306F\u65E2\u306B\u9589\u3058\u3066\u3044\u307E\u3059"
15
- };
16
- export const INPUT_ERRORS = {
17
- INVALID_TYPE: "\u7121\u52B9\u306Ainput\u30BF\u30A4\u30D7\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"
18
- };
@@ -1,2 +0,0 @@
1
- export * from "./errors.mjs";
2
- export * from "./logs.mjs";
@@ -1,17 +0,0 @@
1
- export const FORM_LOGS = {
2
- FIELD_VALIDATED: (field) => `\u30D5\u30A3\u30FC\u30EB\u30C9 "${field}" \u306E\u30D0\u30EA\u30C7\u30FC\u30B7\u30E7\u30F3\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F`,
3
- FORM_SUBMITTED: "\u30D5\u30A9\u30FC\u30E0\u304C\u9001\u4FE1\u3055\u308C\u307E\u3057\u305F",
4
- FORM_RESET: "\u30D5\u30A9\u30FC\u30E0\u304C\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u307E\u3057\u305F",
5
- VALIDATION_STARTED: "\u30D0\u30EA\u30C7\u30FC\u30B7\u30E7\u30F3\u3092\u958B\u59CB\u3057\u307E\u3059"
6
- };
7
- export const COMPONENT_LOGS = {
8
- DIALOG_OPENED: "\u30C0\u30A4\u30A2\u30ED\u30B0\u304C\u958B\u304B\u308C\u307E\u3057\u305F",
9
- DIALOG_CLOSED: "\u30C0\u30A4\u30A2\u30ED\u30B0\u304C\u9589\u3058\u3089\u308C\u307E\u3057\u305F",
10
- BUTTON_CLICKED: "\u30DC\u30BF\u30F3\u304C\u30AF\u30EA\u30C3\u30AF\u3055\u308C\u307E\u3057\u305F",
11
- INPUT_FOCUSED: "\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u5F53\u305F\u308A\u307E\u3057\u305F",
12
- INPUT_BLURRED: "\u5165\u529B\u30D5\u30A3\u30FC\u30EB\u30C9\u304B\u3089\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u5916\u308C\u307E\u3057\u305F"
13
- };
14
- export const CONFIG_LOGS = {
15
- PROVIDER_INITIALIZED: "UIProvider\u304C\u521D\u671F\u5316\u3055\u308C\u307E\u3057\u305F",
16
- CONFIG_UPDATED: "UI\u8A2D\u5B9A\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F"
17
- };
package/dist/env.d.ts DELETED
@@ -1,11 +0,0 @@
1
- /// <reference types="vite/client" />
2
-
3
- interface ImportMetaEnv {
4
- readonly DEV: boolean
5
- readonly PROD: boolean
6
- readonly MODE: string
7
- }
8
-
9
- interface ImportMeta {
10
- readonly env: ImportMetaEnv
11
- }
@@ -1 +0,0 @@
1
- :root{--color-primary:#0080ff;--color-primary-foreground:#fff;--color-primary-hover:#0073e6;--color-primary-active:#06c;--color-secondary:#f5f5f5;--color-secondary-foreground:#000;--color-secondary-hover:#e6e6e6;--color-accent:#141414;--color-accent-foreground:#fff;--color-destructive:#ef4343;--color-destructive-foreground:#fff;--color-ghost-hover:#f1f5f9;--color-input:#f1f5f9;--color-input-border:#dbe6f0;--color-input-error:#ef4343;--color-card:#fff;--color-card-border:#dbe6f0;--color-card-foreground:#000;--color-background:#fff;--color-foreground:#000;--color-muted:#f1f5f9;--color-muted-foreground:#4573a1;--color-popover:#fff;--color-popover-foreground:#000;--color-alert-info:#e6f2ff;--color-alert-info-border:#9cf;--color-alert-info-foreground:#004d99;--color-alert-success:#e6ffe6;--color-alert-success-border:#9f9;--color-alert-success-foreground:green;--color-alert-warning:#fff7e6;--color-alert-warning-border:#fd9;--color-alert-warning-foreground:#805500;--size-xs:0.75rem;--size-sm:0.875rem;--size-md:1rem;--size-lg:1.125rem;--size-xl:1.25rem;--space-0-5:0.125rem;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-11:2.75rem;--space-12:3rem;--space-16:4rem;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.625rem;--radius-full:9999px;--border-width-1:1px;--border-width-2:2px;--font-family-base:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-family-mono:"Courier New",monospace;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.2;--line-height-normal:1.5;--line-height-relaxed:1.75;--transition-fast:150ms cubic-bezier(0.16,1,0.3,1);--transition-normal:250ms cubic-bezier(0.16,1,0.3,1);--transition-slow:350ms cubic-bezier(0.16,1,0.3,1);--shadow-xs:0 1px 2px rgba(0,0,0,.05);--shadow-sm:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.06);--shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--z-dropdown:50;--z-sticky:100;--z-fixed:200;--z-modal-backdrop:300;--z-modal:400;--z-popover:500;--z-tooltip:600}.button{align-items:center;border:none;border-radius:var(--radius-md);cursor:pointer;display:inline-flex;font-family:var(--font-family-base);font-size:var(--size-sm);font-weight:var(--font-weight-medium);gap:var(--space-2);justify-content:center;transition:all var(--transition-normal);white-space:nowrap}.button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.button--primary{background-color:var(--color-primary);border:var(--border-width-1) solid var(--color-primary);color:var(--color-primary-foreground)}.button--primary:hover:not(:disabled){background-color:var(--color-primary-hover);border-color:var(--color-primary-hover)}.button--primary:active:not(:disabled){background-color:var(--color-primary-active)}.button--secondary{background-color:var(--color-secondary);border:var(--border-width-1) solid var(--color-input-border);color:var(--color-secondary-foreground)}.button--secondary:hover:not(:disabled){background-color:var(--color-secondary-hover)}.button--outline{background-color:transparent;border:var(--border-width-1) solid var(--color-input-border);color:var(--color-foreground)}.button--outline:hover:not(:disabled){background-color:var(--color-ghost-hover)}.button--ghost{background-color:transparent;border:none;color:var(--color-foreground)}.button--ghost:hover:not(:disabled){background-color:var(--color-ghost-hover)}.button--destructive{background-color:var(--color-destructive);border:var(--border-width-1) solid var(--color-destructive);color:var(--color-destructive-foreground)}.button--destructive:hover:not(:disabled){background-color:#ed2c2c}.button--sm{font-size:var(--size-sm);height:var(--space-8);padding:var(--space-2) var(--space-3)}.button--md{height:var(--space-10);padding:var(--space-2) var(--space-4)}.button--lg{font-size:var(--size-lg);height:var(--space-11);padding:var(--space-3) var(--space-8)}.button--disabled{cursor:not-allowed;opacity:.5;pointer-events:none}.button--loading{cursor:wait}.input{background-color:var(--color-background);border:var(--border-width-1) solid var(--color-input-border);border-radius:var(--radius-md);display:flex;font-family:var(--font-family-base);font-size:var(--size-sm);padding:var(--space-2) var(--space-3);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);width:100%}.input::-moz-placeholder{color:var(--color-muted-foreground)}.input::placeholder{color:var(--color-muted-foreground)}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(0,128,255,.1);outline:none}.input--sm{font-size:var(--size-sm);height:var(--space-8);padding:var(--space-1) var(--space-2)}.input--md{height:var(--space-10);padding:var(--space-2) var(--space-3)}.input--lg{font-size:var(--size-lg);height:var(--space-11);padding:var(--space-3) var(--space-4)}.input--error{border-color:var(--color-input-error)}.input--error:focus{box-shadow:0 0 0 3px rgba(239,67,67,.1)}.input--disabled{cursor:not-allowed;opacity:.7}.input--disabled,.input--readonly{background-color:var(--color-muted)}.textarea{background-color:var(--color-background);border:var(--border-width-1) solid var(--color-input-border);border-radius:var(--radius-md);display:flex;font-family:var(--font-family-base);font-size:var(--size-sm);padding:var(--space-2) var(--space-3);resize:vertical;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);width:100%}.textarea::-moz-placeholder{color:var(--color-muted-foreground)}.textarea::placeholder{color:var(--color-muted-foreground)}.textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(0,128,255,.1);outline:none}.textarea--sm{font-size:var(--size-sm);min-height:80px}.textarea--md{min-height:100px}.textarea--lg{font-size:var(--size-lg);min-height:120px}.textarea--error{border-color:var(--color-input-error)}.textarea--disabled{cursor:not-allowed;opacity:.7}.textarea--disabled,.textarea--readonly{background-color:var(--color-muted)}.card{background-color:var(--color-card);border:var(--border-width-1) solid var(--color-card-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);color:var(--color-card-foreground)}.card--padding-sm{padding:var(--space-4)}.card--padding-md{padding:var(--space-6)}.card--padding-lg{padding:var(--space-8)}.checkbox{align-items:center;background-color:var(--color-background);border:var(--border-width-1) solid var(--color-primary);border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;height:1rem;justify-content:center;transition:all var(--transition-fast);width:1rem}.checkbox:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.checkbox--checked,.checkbox--indeterminate{background-color:var(--color-primary);color:var(--color-primary-foreground)}.checkbox--disabled{cursor:not-allowed;opacity:.5}.radio{align-items:center;background-color:var(--color-background);border:var(--border-width-1) solid var(--color-primary);border-radius:var(--radius-full);cursor:pointer;display:inline-flex;height:1rem;justify-content:center;transition:all var(--transition-fast);width:1rem}.radio:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.radio--checked:after{background-color:var(--color-primary);border-radius:var(--radius-full);content:"";display:block;height:.5rem;width:.5rem}.radio--disabled{cursor:not-allowed;opacity:.5}.switch{align-items:center;background-color:var(--color-input-border);border-radius:var(--radius-full);cursor:pointer;display:inline-flex;height:1.5rem;padding:2px;transition:all var(--transition-fast);width:2.75rem}.switch:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.switch--checked{background-color:var(--color-primary)}.switch--disabled{cursor:not-allowed;opacity:.5}.select{align-items:center;background-color:var(--color-background);border:var(--border-width-1) solid var(--color-input-border);border-radius:var(--radius-md);cursor:pointer;display:flex;font-size:var(--size-sm);justify-content:space-between;padding:var(--space-2) var(--space-3);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);width:100%}.select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(0,128,255,.1);outline:none}.select--sm{font-size:var(--size-sm);height:var(--space-8)}.select--md{height:var(--space-10)}.select--lg{font-size:var(--size-lg);height:var(--space-11)}.select--disabled{cursor:not-allowed;opacity:.5}.select__content{background-color:var(--color-popover);border:var(--border-width-1) solid var(--color-card-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);max-height:24rem;min-width:8rem;overflow:auto;position:absolute;z-index:var(--z-dropdown)}.select__item{align-items:center;cursor:pointer;display:flex;font-size:var(--size-sm);padding:var(--space-2) var(--space-3);transition:background-color var(--transition-fast);width:100%}.select__item:hover{background-color:var(--color-ghost-hover)}.dialog{background-color:var(--color-background);border:var(--border-width-1) solid var(--color-card-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);left:50%;max-width:32rem;padding:var(--space-6);position:fixed;top:50%;transform:translate(-50%,-50%);width:100%;z-index:var(--z-modal)}.dialog__overlay{background-color:rgba(0,0,0,.8);inset:0;position:fixed;z-index:var(--z-modal-backdrop)}.sheet{background-color:var(--color-background);box-shadow:var(--shadow-lg);padding:var(--space-6);position:fixed;transition:transform var(--transition-slow);z-index:var(--z-modal)}.sheet--top{border-bottom:var(--border-width-1) solid var(--color-card-border);inset:0 0 auto 0}.sheet--bottom{border-top:var(--border-width-1) solid var(--color-card-border);inset:auto 0 0 0}.sheet--left{border-right:var(--border-width-1) solid var(--color-card-border);inset:0 auto 0 0}.sheet--left,.sheet--right{height:100%;max-width:24rem;width:75%}.sheet--right{border-left:var(--border-width-1) solid var(--color-card-border);inset:0 0 0 auto}.sheet__overlay{background-color:rgba(0,0,0,.8);inset:0;position:fixed;z-index:var(--z-modal-backdrop)}.alert{border:var(--border-width-1) solid var(--color-card-border);border-radius:var(--radius-lg);padding:var(--space-4);position:relative;width:100%}.alert--default{background-color:var(--color-background);color:var(--color-foreground)}.alert--info{background-color:var(--color-alert-info);border-color:var(--color-alert-info-border);color:var(--color-alert-info-foreground)}.alert--success{background-color:var(--color-alert-success);border-color:var(--color-alert-success-border);color:var(--color-alert-success-foreground)}.alert--warning{background-color:var(--color-alert-warning);border-color:var(--color-alert-warning-border);color:var(--color-alert-warning-foreground)}.alert--destructive{background-color:rgba(239,67,67,.1);border-color:rgba(239,67,67,.5);color:var(--color-destructive)}.toast{align-items:center;border:var(--border-width-1) solid var(--color-card-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);display:flex;gap:var(--space-4);justify-content:space-between;overflow:hidden;padding:var(--space-6);padding-right:var(--space-8);width:100%}.toast--default{background-color:var(--color-background);color:var(--color-foreground)}.toast--success{background-color:var(--color-alert-success);border-color:var(--color-alert-success-border);color:var(--color-alert-success-foreground)}.toast--error{background-color:rgba(239,67,67,.1);border-color:var(--color-destructive);color:var(--color-destructive)}.toast--warning{background-color:var(--color-alert-warning);border-color:var(--color-alert-warning-border);color:var(--color-alert-warning-foreground)}.toast--info{background-color:var(--color-alert-info);border-color:var(--color-alert-info-border);color:var(--color-alert-info-foreground)}.tooltip{font-size:var(--size-sm);overflow:hidden;padding:var(--space-1) var(--space-3);z-index:var(--z-tooltip)}.popover,.tooltip{background-color:var(--color-popover);border:var(--border-width-1) solid var(--color-card-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);color:var(--color-popover-foreground)}.popover{padding:var(--space-4);width:18rem;z-index:var(--z-popover)}.dropdown{background-color:var(--color-popover);border:var(--border-width-1) solid var(--color-card-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);color:var(--color-popover-foreground);min-width:8rem;overflow:hidden;padding:var(--space-1);z-index:var(--z-dropdown)}.dropdown__item{align-items:center;border-radius:var(--radius-sm);cursor:pointer;display:flex;font-size:var(--size-sm);padding:var(--space-2);transition:background-color var(--transition-fast)}.dropdown__item:hover{background-color:var(--color-ghost-hover)}.label{font-size:var(--size-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight)}@media (prefers-color-scheme:dark){:root{--color-primary:#39f;--color-primary-foreground:#000;--color-secondary:#25292c;--color-secondary-foreground:#fff;--color-card:#171a1c;--color-card-border:#2e3338;--color-card-foreground:#fff;--color-background:#131416;--color-foreground:#fff;--color-muted:#25292c;--color-muted-foreground:#9099a2;--color-input:#25292c;--color-input-border:#3a4045;--color-popover:#1c1f21;--color-popover-foreground:#fff;--color-ghost-hover:#2e3338;--color-alert-info:#00264d;--color-alert-info-border:#06c;--color-alert-info-foreground:#9cf;--color-alert-success:#004d00;--color-alert-success-border:#00b300;--color-alert-success-foreground:#9f9;--color-alert-warning:#4d3300;--color-alert-warning-border:#e69900;--color-alert-warning-foreground:#fd9}}[data-theme=dark]{--color-primary:#39f;--color-primary-foreground:#000;--color-secondary:#25292c;--color-secondary-foreground:#fff;--color-card:#171a1c;--color-card-border:#2e3338;--color-card-foreground:#fff;--color-background:#131416;--color-foreground:#fff;--color-muted:#25292c;--color-muted-foreground:#9099a2;--color-input:#25292c;--color-input-border:#3a4045;--color-popover:#1c1f21;--color-popover-foreground:#fff;--color-ghost-hover:#2e3338;--color-alert-info:#00264d;--color-alert-info-border:#06c;--color-alert-info-foreground:#9cf;--color-alert-success:#004d00;--color-alert-success-border:#00b300;--color-alert-success-foreground:#9f9;--color-alert-warning:#4d3300;--color-alert-warning-border:#e69900;--color-alert-warning-foreground:#fd9}[data-theme=light]{--color-primary:#0080ff;--color-primary-foreground:#fff;--color-secondary:#f5f5f5;--color-secondary-foreground:#000;--color-card:#fff;--color-card-border:#dbe6f0;--color-card-foreground:#000;--color-background:#fff;--color-foreground:#000;--color-muted:#f1f5f9;--color-muted-foreground:#4573a1;--color-input:#f1f5f9;--color-input-border:#dbe6f0;--color-popover:#fff;--color-popover-foreground:#000;--color-ghost-hover:#f1f5f9;--color-alert-info:#e6f2ff;--color-alert-info-border:#9cf;--color-alert-info-foreground:#004d99;--color-alert-success:#e6ffe6;--color-alert-success-border:#9f9;--color-alert-success-foreground:green;--color-alert-warning:#fff7e6;--color-alert-warning-border:#fd9;--color-alert-warning-foreground:#805500}
@@ -1 +0,0 @@
1
- export declare const CSS_VARIABLES_PATH = "./css-variables.css";
@@ -1 +0,0 @@
1
- export const CSS_VARIABLES_PATH = "./css-variables.css";
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,15 +0,0 @@
1
- export const DEFAULT_UI_CONFIG = {
2
- button: {
3
- default_variant: "primary",
4
- default_size: "md"
5
- },
6
- input: {
7
- default_size: "md"
8
- },
9
- card: {
10
- default_padding: "md"
11
- },
12
- alert: {
13
- default_variant: "default"
14
- }
15
- };
@@ -1 +0,0 @@
1
- export const DIALOG_KEY = Symbol("dialog");
@@ -1 +0,0 @@
1
- export const DROPDOWN_CONTEXT_KEY = Symbol("dropdown-context");
File without changes
File without changes
@@ -1,21 +0,0 @@
1
- export * from "./utils.mjs";
2
- export * from "./button.mjs";
3
- export * from "./input.mjs";
4
- export * from "./card.mjs";
5
- export * from "./dialog.mjs";
6
- export * from "./form.mjs";
7
- export * from "./alert.mjs";
8
- export * from "./config.mjs";
9
- export * from "./checkbox.mjs";
10
- export * from "./radio.mjs";
11
- export * from "./switch.mjs";
12
- export * from "./textarea.mjs";
13
- export * from "./select.mjs";
14
- export * from "./file-input.mjs";
15
- export * from "./toast.mjs";
16
- export * from "./tooltip.mjs";
17
- export * from "./popover.mjs";
18
- export * from "./dropdown.mjs";
19
- export * from "./sheet.mjs";
20
- export * from "./theme.mjs";
21
- export * from "./composables.mjs";
File without changes
@@ -1 +0,0 @@
1
- export const POPOVER_CONTEXT_KEY = Symbol("popover-context");
@@ -1 +0,0 @@
1
- export const RADIO_GROUP_KEY = Symbol("radio-group");
@@ -1 +0,0 @@
1
- export const SELECT_KEY = Symbol("select");
@@ -1 +0,0 @@
1
- export const SHEET_CONTEXT_KEY = Symbol("sheet-context");
File without changes
File without changes
@@ -1,42 +0,0 @@
1
- export const DEFAULT_LIGHT_COLORS = {
2
- background: "0 0% 100%",
3
- foreground: "222.2 84% 4.9%",
4
- card: "0 0% 100%",
5
- card_foreground: "222.2 84% 4.9%",
6
- popover: "0 0% 100%",
7
- popover_foreground: "222.2 84% 4.9%",
8
- primary: "222.2 47.4% 11.2%",
9
- primary_foreground: "210 40% 98%",
10
- secondary: "210 40% 96.1%",
11
- secondary_foreground: "222.2 47.4% 11.2%",
12
- muted: "210 40% 96.1%",
13
- muted_foreground: "215.4 16.3% 46.9%",
14
- accent: "210 40% 96.1%",
15
- accent_foreground: "222.2 47.4% 11.2%",
16
- destructive: "0 84.2% 60.2%",
17
- destructive_foreground: "210 40% 98%",
18
- border: "214.3 31.8% 91.4%",
19
- input: "214.3 31.8% 91.4%",
20
- ring: "222.2 84% 4.9%"
21
- };
22
- export const DEFAULT_DARK_COLORS = {
23
- background: "222.2 84% 4.9%",
24
- foreground: "210 40% 98%",
25
- card: "222.2 84% 4.9%",
26
- card_foreground: "210 40% 98%",
27
- popover: "222.2 84% 4.9%",
28
- popover_foreground: "210 40% 98%",
29
- primary: "210 40% 98%",
30
- primary_foreground: "222.2 47.4% 11.2%",
31
- secondary: "217.2 32.6% 17.5%",
32
- secondary_foreground: "210 40% 98%",
33
- muted: "217.2 32.6% 17.5%",
34
- muted_foreground: "215 20.2% 65.1%",
35
- accent: "217.2 32.6% 17.5%",
36
- accent_foreground: "210 40% 98%",
37
- destructive: "0 62.8% 30.6%",
38
- destructive_foreground: "210 40% 98%",
39
- border: "217.2 32.6% 17.5%",
40
- input: "217.2 32.6% 17.5%",
41
- ring: "212.7 26.8% 83.9%"
42
- };
File without changes
@@ -1 +0,0 @@
1
- export const TOOLTIP_CONTEXT_KEY = Symbol("tooltip-context");
File without changes
package/dist/utils/cn.mjs DELETED
@@ -1,5 +0,0 @@
1
- import { clsx } from "clsx";
2
- import { twMerge } from "tailwind-merge";
3
- export const cn = (...inputs) => {
4
- return twMerge(clsx(inputs));
5
- };
@@ -1,18 +0,0 @@
1
- export const deepMerge = (target, source) => {
2
- const output = { ...target };
3
- for (const key in source) {
4
- if (Object.prototype.hasOwnProperty.call(source, key)) {
5
- const source_value = source[key];
6
- const target_value = target[key];
7
- if (source_value !== null && typeof source_value === "object" && !Array.isArray(source_value) && target_value !== null && typeof target_value === "object" && !Array.isArray(target_value)) {
8
- output[key] = deepMerge(
9
- target_value,
10
- source_value
11
- );
12
- } else if (source_value !== void 0) {
13
- output[key] = source_value;
14
- }
15
- }
16
- }
17
- return output;
18
- };
@@ -1,2 +0,0 @@
1
- export { cn } from "./cn.mjs";
2
- export { deepMerge } from "./deepMerge.mjs";