@soave/ui 0.3.2 → 0.4.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 (214) 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/Button.vue.d.ts +35 -0
  15. package/dist/components/Button.vue.d.ts.map +1 -0
  16. package/dist/components/Card.vue.d.ts +29 -0
  17. package/dist/components/Card.vue.d.ts.map +1 -0
  18. package/dist/components/Checkbox.vue.d.ts +39 -0
  19. package/dist/components/Checkbox.vue.d.ts.map +1 -0
  20. package/dist/components/Dialog.vue.d.ts +46 -0
  21. package/dist/components/Dialog.vue.d.ts.map +1 -0
  22. package/dist/components/Input.vue.d.ts +24 -0
  23. package/dist/components/Input.vue.d.ts.map +1 -0
  24. package/dist/components/RadioGroup.vue.d.ts +32 -0
  25. package/dist/components/RadioGroup.vue.d.ts.map +1 -0
  26. package/dist/components/RadioItem.vue.d.ts +40 -0
  27. package/dist/components/RadioItem.vue.d.ts.map +1 -0
  28. package/dist/components/Select.vue.d.ts +50 -0
  29. package/dist/components/Select.vue.d.ts.map +1 -0
  30. package/dist/components/SelectContent.vue.d.ts +25 -0
  31. package/dist/components/SelectContent.vue.d.ts.map +1 -0
  32. package/dist/components/SelectItem.vue.d.ts +36 -0
  33. package/dist/components/SelectItem.vue.d.ts.map +1 -0
  34. package/dist/components/SelectTrigger.vue.d.ts +36 -0
  35. package/dist/components/SelectTrigger.vue.d.ts.map +1 -0
  36. package/dist/components/Switch.vue.d.ts +46 -0
  37. package/dist/components/Switch.vue.d.ts.map +1 -0
  38. package/dist/components/Textarea.vue.d.ts +41 -0
  39. package/dist/components/Textarea.vue.d.ts.map +1 -0
  40. package/dist/components/index.d.ts +14 -13
  41. package/dist/components/index.d.ts.map +1 -0
  42. package/dist/composables/index.d.ts +18 -17
  43. package/dist/composables/index.d.ts.map +1 -0
  44. package/dist/composables/useButton.d.ts +3 -2
  45. package/dist/composables/useButton.d.ts.map +1 -0
  46. package/dist/composables/useCard.d.ts +3 -2
  47. package/dist/composables/useCard.d.ts.map +1 -0
  48. package/dist/composables/useCheckbox.d.ts +3 -2
  49. package/dist/composables/useCheckbox.d.ts.map +1 -0
  50. package/dist/composables/useDialog.d.ts +2 -1
  51. package/dist/composables/useDialog.d.ts.map +1 -0
  52. package/dist/composables/useDropdown.d.ts +3 -2
  53. package/dist/composables/useDropdown.d.ts.map +1 -0
  54. package/dist/composables/useFileInput.d.ts +3 -2
  55. package/dist/composables/useFileInput.d.ts.map +1 -0
  56. package/dist/composables/useForm.d.ts +3 -2
  57. package/dist/composables/useForm.d.ts.map +1 -0
  58. package/dist/composables/useInput.d.ts +3 -2
  59. package/dist/composables/useInput.d.ts.map +1 -0
  60. package/dist/composables/usePopover.d.ts +3 -2
  61. package/dist/composables/usePopover.d.ts.map +1 -0
  62. package/dist/composables/useRadio.d.ts +3 -2
  63. package/dist/composables/useRadio.d.ts.map +1 -0
  64. package/dist/composables/useSelect.d.ts +3 -2
  65. package/dist/composables/useSelect.d.ts.map +1 -0
  66. package/dist/composables/useSwitch.d.ts +3 -2
  67. package/dist/composables/useSwitch.d.ts.map +1 -0
  68. package/dist/composables/useTextarea.d.ts +3 -2
  69. package/dist/composables/useTextarea.d.ts.map +1 -0
  70. package/dist/composables/useTheme.d.ts +3 -2
  71. package/dist/composables/useTheme.d.ts.map +1 -0
  72. package/dist/composables/useToast.d.ts +2 -1
  73. package/dist/composables/useToast.d.ts.map +1 -0
  74. package/dist/composables/useTooltip.d.ts +3 -2
  75. package/dist/composables/useTooltip.d.ts.map +1 -0
  76. package/dist/composables/useUIConfig.d.ts +5 -4
  77. package/dist/composables/useUIConfig.d.ts.map +1 -0
  78. package/dist/composables.d.ts +2 -0
  79. package/dist/composables.mjs +30 -0
  80. package/dist/composables.mjs.map +1 -0
  81. package/dist/constants/errors.d.ts +1 -0
  82. package/dist/constants/errors.d.ts.map +1 -0
  83. package/dist/constants/index.d.ts +3 -2
  84. package/dist/constants/index.d.ts.map +1 -0
  85. package/dist/constants/logs.d.ts +1 -0
  86. package/dist/constants/logs.d.ts.map +1 -0
  87. package/dist/index.d.ts +7 -6
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.mjs +760 -6
  90. package/dist/index.mjs.map +1 -0
  91. package/dist/{adapters/tailwind.mjs → tailwind-B-R7fPT1.js} +16 -7
  92. package/dist/tailwind-B-R7fPT1.js.map +1 -0
  93. package/dist/types/alert.d.ts +2 -1
  94. package/dist/types/alert.d.ts.map +1 -0
  95. package/dist/types/button.d.ts +2 -1
  96. package/dist/types/button.d.ts.map +1 -0
  97. package/dist/types/card.d.ts +2 -1
  98. package/dist/types/card.d.ts.map +1 -0
  99. package/dist/types/checkbox.d.ts +2 -1
  100. package/dist/types/checkbox.d.ts.map +1 -0
  101. package/dist/types/composables.d.ts +10 -1
  102. package/dist/types/composables.d.ts.map +1 -0
  103. package/dist/types/config.d.ts +6 -5
  104. package/dist/types/config.d.ts.map +1 -0
  105. package/dist/types/dialog.d.ts +2 -1
  106. package/dist/types/dialog.d.ts.map +1 -0
  107. package/dist/types/dropdown.d.ts +3 -2
  108. package/dist/types/dropdown.d.ts.map +1 -0
  109. package/dist/types/file-input.d.ts +2 -1
  110. package/dist/types/file-input.d.ts.map +1 -0
  111. package/dist/types/form.d.ts +2 -1
  112. package/dist/types/form.d.ts.map +1 -0
  113. package/dist/types/index.d.ts +22 -21
  114. package/dist/types/index.d.ts.map +1 -0
  115. package/dist/types/input.d.ts +2 -1
  116. package/dist/types/input.d.ts.map +1 -0
  117. package/dist/types/popover.d.ts +3 -2
  118. package/dist/types/popover.d.ts.map +1 -0
  119. package/dist/types/radio.d.ts +2 -1
  120. package/dist/types/radio.d.ts.map +1 -0
  121. package/dist/types/select.d.ts +2 -1
  122. package/dist/types/select.d.ts.map +1 -0
  123. package/dist/types/sheet.d.ts +2 -1
  124. package/dist/types/sheet.d.ts.map +1 -0
  125. package/dist/types/switch.d.ts +2 -1
  126. package/dist/types/switch.d.ts.map +1 -0
  127. package/dist/types/textarea.d.ts +2 -1
  128. package/dist/types/textarea.d.ts.map +1 -0
  129. package/dist/types/theme.d.ts +1 -0
  130. package/dist/types/theme.d.ts.map +1 -0
  131. package/dist/types/toast.d.ts +1 -0
  132. package/dist/types/toast.d.ts.map +1 -0
  133. package/dist/types/tooltip.d.ts +3 -2
  134. package/dist/types/tooltip.d.ts.map +1 -0
  135. package/dist/types/utils.d.ts +1 -0
  136. package/dist/types/utils.d.ts.map +1 -0
  137. package/dist/useTheme-C2uPqAtQ.js +1175 -0
  138. package/dist/useTheme-C2uPqAtQ.js.map +1 -0
  139. package/dist/utils/cn.d.ts +2 -1
  140. package/dist/utils/cn.d.ts.map +1 -0
  141. package/dist/utils/deepMerge.d.ts +2 -1
  142. package/dist/utils/deepMerge.d.ts.map +1 -0
  143. package/dist/utils/index.d.ts +3 -2
  144. package/dist/utils/index.d.ts.map +1 -0
  145. package/package.json +6 -4
  146. package/dist/adapters/headless.mjs +0 -7
  147. package/dist/adapters/index.mjs +0 -11
  148. package/dist/adapters/types.mjs +0 -10
  149. package/dist/build.config.d.ts +0 -2
  150. package/dist/build.config.mjs +0 -14
  151. package/dist/components/Button.vue +0 -41
  152. package/dist/components/Card.vue +0 -24
  153. package/dist/components/Checkbox.vue +0 -47
  154. package/dist/components/Dialog.vue +0 -105
  155. package/dist/components/Input.vue +0 -48
  156. package/dist/components/RadioGroup.vue +0 -45
  157. package/dist/components/RadioItem.vue +0 -65
  158. package/dist/components/Select.vue +0 -114
  159. package/dist/components/SelectContent.vue +0 -54
  160. package/dist/components/SelectItem.vue +0 -61
  161. package/dist/components/SelectTrigger.vue +0 -75
  162. package/dist/components/Switch.vue +0 -45
  163. package/dist/components/Textarea.vue +0 -55
  164. package/dist/components/index.mjs +0 -13
  165. package/dist/composables/index.mjs +0 -17
  166. package/dist/composables/useButton.mjs +0 -22
  167. package/dist/composables/useCard.mjs +0 -11
  168. package/dist/composables/useCheckbox.mjs +0 -18
  169. package/dist/composables/useDialog.mjs +0 -19
  170. package/dist/composables/useDropdown.mjs +0 -170
  171. package/dist/composables/useFileInput.mjs +0 -137
  172. package/dist/composables/useForm.mjs +0 -159
  173. package/dist/composables/useInput.mjs +0 -31
  174. package/dist/composables/usePopover.mjs +0 -113
  175. package/dist/composables/useRadio.mjs +0 -23
  176. package/dist/composables/useSelect.mjs +0 -42
  177. package/dist/composables/useSwitch.mjs +0 -17
  178. package/dist/composables/useTextarea.mjs +0 -29
  179. package/dist/composables/useTheme.mjs +0 -89
  180. package/dist/composables/useToast.mjs +0 -64
  181. package/dist/composables/useTooltip.mjs +0 -125
  182. package/dist/composables/useUIConfig.mjs +0 -53
  183. package/dist/constants/errors.mjs +0 -18
  184. package/dist/constants/index.mjs +0 -2
  185. package/dist/constants/logs.mjs +0 -17
  186. package/dist/env.d.ts +0 -11
  187. package/dist/styles/css-variables.css +0 -1
  188. package/dist/styles/index.d.ts +0 -1
  189. package/dist/styles/index.mjs +0 -1
  190. package/dist/types/alert.mjs +0 -0
  191. package/dist/types/button.mjs +0 -0
  192. package/dist/types/card.mjs +0 -0
  193. package/dist/types/checkbox.mjs +0 -0
  194. package/dist/types/composables.mjs +0 -0
  195. package/dist/types/config.mjs +0 -15
  196. package/dist/types/dialog.mjs +0 -1
  197. package/dist/types/dropdown.mjs +0 -1
  198. package/dist/types/file-input.mjs +0 -0
  199. package/dist/types/form.mjs +0 -0
  200. package/dist/types/index.mjs +0 -21
  201. package/dist/types/input.mjs +0 -0
  202. package/dist/types/popover.mjs +0 -1
  203. package/dist/types/radio.mjs +0 -1
  204. package/dist/types/select.mjs +0 -1
  205. package/dist/types/sheet.mjs +0 -1
  206. package/dist/types/switch.mjs +0 -0
  207. package/dist/types/textarea.mjs +0 -0
  208. package/dist/types/theme.mjs +0 -42
  209. package/dist/types/toast.mjs +0 -0
  210. package/dist/types/tooltip.mjs +0 -1
  211. package/dist/types/utils.mjs +0 -0
  212. package/dist/utils/cn.mjs +0 -5
  213. package/dist/utils/deepMerge.mjs +0 -18
  214. package/dist/utils/index.mjs +0 -2
@@ -1,65 +0,0 @@
1
- <template>
2
- <button
3
- type="button"
4
- :disabled="composable.state.value.disabled"
5
- :data-state="composable.state.value.checked ? 'checked' : 'unchecked'"
6
- v-bind="composable.aria_attributes.value"
7
- @click="handleClick"
8
- @keydown="handleKeyDown"
9
- >
10
- <slot :checked="composable.state.value.checked" :disabled="composable.state.value.disabled" />
11
- </button>
12
- </template>
13
-
14
- <script setup lang="ts">
15
- import { inject, toRef } from "vue"
16
- import type { Ref, ComputedRef, InjectionKey } from "vue"
17
- import { useRadioItem } from "../../composables/useRadio"
18
-
19
- interface RadioGroupContext {
20
- model_value: Ref<string>
21
- disabled: ComputedRef<boolean>
22
- updateValue: (value: string) => void
23
- }
24
-
25
- const RADIO_GROUP_KEY: InjectionKey<RadioGroupContext> = Symbol("radio-group")
26
-
27
- const props = withDefaults(defineProps<{
28
- value: string
29
- size?: "sm" | "md" | "lg"
30
- disabled?: boolean
31
- }>(), {
32
- size: "md",
33
- disabled: false
34
- })
35
-
36
- const context = inject<RadioGroupContext | null>(RADIO_GROUP_KEY, null)
37
-
38
- if (!context) {
39
- throw new Error("RadioItem must be used within RadioGroup")
40
- }
41
-
42
- const composable = useRadioItem(toRef(() => props))
43
-
44
- const handleClick = () => {
45
- if (!composable.state.value.disabled) {
46
- context.updateValue(props.value)
47
- }
48
- }
49
-
50
- const handleKeyDown = (event: KeyboardEvent) => {
51
- if (composable.state.value.disabled) return
52
-
53
- switch (event.key) {
54
- case "Enter":
55
- case " ":
56
- event.preventDefault()
57
- context.updateValue(props.value)
58
- break
59
- }
60
- }
61
-
62
- defineExpose({
63
- state: composable.state
64
- })
65
- </script>
@@ -1,114 +0,0 @@
1
- <template>
2
- <div ref="root_ref">
3
- <slot
4
- :is_open="context.is_open.value"
5
- :selected_value="model"
6
- :open="context.open"
7
- :close="context.close"
8
- :toggle="context.toggle"
9
- />
10
- </div>
11
- </template>
12
-
13
- <script setup lang="ts">
14
- import { ref, provide, watch, onMounted, onUnmounted, computed } from "vue"
15
- import type { Ref, ComputedRef, InjectionKey } from "vue"
16
-
17
- interface SelectContext {
18
- model_value: Ref<string>
19
- is_open: Ref<boolean>
20
- disabled: ComputedRef<boolean>
21
- size: ComputedRef<"sm" | "md" | "lg">
22
- placeholder: ComputedRef<string>
23
- trigger_ref: Ref<HTMLElement | null>
24
- updateValue: (value: string) => void
25
- open: () => void
26
- close: () => void
27
- toggle: () => void
28
- setTriggerRef: (element: HTMLElement | null) => void
29
- }
30
-
31
- const SELECT_KEY: InjectionKey<SelectContext> = Symbol("select")
32
-
33
- const props = withDefaults(defineProps<{
34
- size?: "sm" | "md" | "lg"
35
- disabled?: boolean
36
- placeholder?: string
37
- }>(), {
38
- size: "md",
39
- disabled: false,
40
- placeholder: ""
41
- })
42
-
43
- const model = defineModel<string>({ default: "" })
44
-
45
- const root_ref = ref<HTMLElement | null>(null)
46
- const trigger_ref = ref<HTMLElement | null>(null)
47
- const is_open = ref(false)
48
-
49
- const open = () => {
50
- if (!props.disabled) {
51
- is_open.value = true
52
- }
53
- }
54
-
55
- const close = () => {
56
- is_open.value = false
57
- }
58
-
59
- const toggle = () => {
60
- if (is_open.value) {
61
- close()
62
- } else {
63
- open()
64
- }
65
- }
66
-
67
- const updateValue = (value: string) => {
68
- model.value = value
69
- close()
70
- }
71
-
72
- const setTriggerRef = (element: HTMLElement | null) => {
73
- trigger_ref.value = element
74
- }
75
-
76
- const handleClickOutside = (event: MouseEvent) => {
77
- if (!is_open.value) return
78
- const target = event.target as Node
79
- if (root_ref.value && !root_ref.value.contains(target)) {
80
- close()
81
- }
82
- }
83
-
84
- const context: SelectContext = {
85
- model_value: model,
86
- is_open,
87
- disabled: computed(() => props.disabled),
88
- size: computed(() => props.size ?? "md"),
89
- placeholder: computed(() => props.placeholder ?? ""),
90
- trigger_ref,
91
- updateValue,
92
- open,
93
- close,
94
- toggle,
95
- setTriggerRef
96
- }
97
-
98
- provide(SELECT_KEY, context)
99
-
100
- onMounted(() => {
101
- document.addEventListener("mousedown", handleClickOutside)
102
- })
103
-
104
- onUnmounted(() => {
105
- document.removeEventListener("mousedown", handleClickOutside)
106
- })
107
-
108
- defineExpose({
109
- is_open,
110
- open,
111
- close,
112
- toggle
113
- })
114
- </script>
@@ -1,54 +0,0 @@
1
- <template>
2
- <div
3
- v-if="composable.state.value.is_open"
4
- role="listbox"
5
- tabindex="-1"
6
- @keydown="handleKeyDown"
7
- >
8
- <slot />
9
- </div>
10
- </template>
11
-
12
- <script setup lang="ts">
13
- import { inject } from "vue"
14
- import type { Ref, ComputedRef, InjectionKey } from "vue"
15
- import { useSelectContent } from "../../composables/useSelect"
16
-
17
- interface SelectContext {
18
- model_value: Ref<string>
19
- is_open: Ref<boolean>
20
- disabled: ComputedRef<boolean>
21
- size: ComputedRef<"sm" | "md" | "lg">
22
- placeholder: ComputedRef<string>
23
- trigger_ref: Ref<HTMLElement | null>
24
- updateValue: (value: string) => void
25
- open: () => void
26
- close: () => void
27
- toggle: () => void
28
- setTriggerRef: (element: HTMLElement | null) => void
29
- }
30
-
31
- const SELECT_KEY: InjectionKey<SelectContext> = Symbol("select")
32
-
33
- const context = inject<SelectContext | null>(SELECT_KEY, null)
34
-
35
- if (!context) {
36
- throw new Error("SelectContent must be used within Select")
37
- }
38
-
39
- const composable = useSelectContent()
40
-
41
- const handleKeyDown = (event: KeyboardEvent) => {
42
- switch (event.key) {
43
- case "Escape":
44
- event.preventDefault()
45
- context.close()
46
- context.trigger_ref.value?.focus()
47
- break
48
- }
49
- }
50
-
51
- defineExpose({
52
- state: composable.state
53
- })
54
- </script>
@@ -1,61 +0,0 @@
1
- <template>
2
- <div
3
- role="option"
4
- :aria-selected="composable.state.value.selected"
5
- :aria-disabled="composable.state.value.disabled"
6
- :data-state="composable.state.value.selected ? 'selected' : undefined"
7
- :data-disabled="composable.state.value.disabled ? '' : undefined"
8
- @click="handleClick"
9
- @keydown.enter="handleClick"
10
- @keydown.space.prevent="handleClick"
11
- >
12
- <slot :selected="composable.state.value.selected" :disabled="composable.state.value.disabled" />
13
- </div>
14
- </template>
15
-
16
- <script setup lang="ts">
17
- import { inject, toRef } from "vue"
18
- import type { Ref, ComputedRef, InjectionKey } from "vue"
19
- import { useSelectItem } from "../../composables/useSelect"
20
-
21
- interface SelectContext {
22
- model_value: Ref<string>
23
- is_open: Ref<boolean>
24
- disabled: ComputedRef<boolean>
25
- size: ComputedRef<"sm" | "md" | "lg">
26
- placeholder: ComputedRef<string>
27
- trigger_ref: Ref<HTMLElement | null>
28
- updateValue: (value: string) => void
29
- open: () => void
30
- close: () => void
31
- toggle: () => void
32
- setTriggerRef: (element: HTMLElement | null) => void
33
- }
34
-
35
- const SELECT_KEY: InjectionKey<SelectContext> = Symbol("select")
36
-
37
- const props = withDefaults(defineProps<{
38
- value: string
39
- disabled?: boolean
40
- }>(), {
41
- disabled: false
42
- })
43
-
44
- const context = inject<SelectContext | null>(SELECT_KEY, null)
45
-
46
- if (!context) {
47
- throw new Error("SelectItem must be used within Select")
48
- }
49
-
50
- const composable = useSelectItem(toRef(() => ({ value: props.value, disabled: props.disabled })))
51
-
52
- const handleClick = () => {
53
- if (!composable.state.value.disabled) {
54
- context.updateValue(props.value)
55
- }
56
- }
57
-
58
- defineExpose({
59
- state: composable.state
60
- })
61
- </script>
@@ -1,75 +0,0 @@
1
- <template>
2
- <button
3
- ref="trigger_element"
4
- type="button"
5
- :disabled="composable.state.value.disabled"
6
- :aria-expanded="composable.state.value.is_open"
7
- aria-haspopup="listbox"
8
- @click="handleClick"
9
- @keydown="handleKeyDown"
10
- >
11
- <slot :is_open="composable.state.value.is_open" :disabled="composable.state.value.disabled" />
12
- </button>
13
- </template>
14
-
15
- <script setup lang="ts">
16
- import { ref, inject, onMounted } from "vue"
17
- import type { Ref, ComputedRef, InjectionKey } from "vue"
18
- import { useSelectTrigger } from "../../composables/useSelect"
19
-
20
- interface SelectContext {
21
- model_value: Ref<string>
22
- is_open: Ref<boolean>
23
- disabled: ComputedRef<boolean>
24
- size: ComputedRef<"sm" | "md" | "lg">
25
- placeholder: ComputedRef<string>
26
- trigger_ref: Ref<HTMLElement | null>
27
- updateValue: (value: string) => void
28
- open: () => void
29
- close: () => void
30
- toggle: () => void
31
- setTriggerRef: (element: HTMLElement | null) => void
32
- }
33
-
34
- const SELECT_KEY: InjectionKey<SelectContext> = Symbol("select")
35
-
36
- const trigger_element = ref<HTMLElement | null>(null)
37
- const context = inject<SelectContext | null>(SELECT_KEY, null)
38
-
39
- if (!context) {
40
- throw new Error("SelectTrigger must be used within Select")
41
- }
42
-
43
- const composable = useSelectTrigger()
44
-
45
- const handleClick = () => {
46
- if (!composable.state.value.disabled) {
47
- context.toggle()
48
- }
49
- }
50
-
51
- const handleKeyDown = (event: KeyboardEvent) => {
52
- if (composable.state.value.disabled) return
53
-
54
- switch (event.key) {
55
- case "Enter":
56
- case " ":
57
- case "ArrowDown":
58
- event.preventDefault()
59
- context.open()
60
- break
61
- case "ArrowUp":
62
- event.preventDefault()
63
- context.open()
64
- break
65
- }
66
- }
67
-
68
- onMounted(() => {
69
- context.setTriggerRef(trigger_element.value)
70
- })
71
-
72
- defineExpose({
73
- state: composable.state
74
- })
75
- </script>
@@ -1,45 +0,0 @@
1
- <template>
2
- <button
3
- type="button"
4
- :disabled="composable.state.value.disabled"
5
- :data-state="model ? 'checked' : 'unchecked'"
6
- v-bind="composable.aria_attributes.value"
7
- @click="handleClick"
8
- >
9
- <slot :checked="model">
10
- <span :data-state="model ? 'checked' : 'unchecked'" />
11
- </slot>
12
- </button>
13
- </template>
14
-
15
- <script setup lang="ts">
16
- import { toRef } from "vue"
17
- import { useSwitch } from "../../composables/useSwitch"
18
-
19
- const props = withDefaults(defineProps<{
20
- size?: "sm" | "md" | "lg"
21
- disabled?: boolean
22
- }>(), {
23
- size: "md",
24
- disabled: false
25
- })
26
-
27
- const model = defineModel<boolean>({ default: false })
28
-
29
- const emit = defineEmits<{
30
- change: [checked: boolean]
31
- }>()
32
-
33
- const composable = useSwitch(toRef(() => props), model)
34
-
35
- const handleClick = () => {
36
- if (!composable.state.value.disabled) {
37
- model.value = !model.value
38
- emit("change", model.value)
39
- }
40
- }
41
-
42
- defineExpose({
43
- state: composable.state
44
- })
45
- </script>
@@ -1,55 +0,0 @@
1
- <template>
2
- <textarea
3
- :value="modelValue"
4
- :disabled="composable.state.value.disabled"
5
- :readonly="composable.state.value.readonly"
6
- :placeholder="placeholder"
7
- :rows="rows"
8
- :id="id"
9
- v-bind="composable.aria_attributes.value"
10
- @input="handleInput"
11
- @focus="composable.handleFocus"
12
- @blur="composable.handleBlur"
13
- />
14
- </template>
15
-
16
- <script setup lang="ts">
17
- import { toRef } from "vue"
18
- import { useTextarea } from "../../composables/useTextarea"
19
- import type { TextareaSize, TextareaResize } from "../../types/textarea"
20
-
21
- const props = withDefaults(defineProps<{
22
- size?: TextareaSize
23
- placeholder?: string
24
- disabled?: boolean
25
- readonly?: boolean
26
- error?: string
27
- error_id?: string
28
- rows?: number
29
- resize?: TextareaResize
30
- modelValue?: string
31
- id?: string
32
- }>(), {
33
- size: "md",
34
- disabled: false,
35
- readonly: false,
36
- rows: 3,
37
- resize: "vertical"
38
- })
39
-
40
- const emit = defineEmits<{
41
- "update:modelValue": [value: string]
42
- }>()
43
-
44
- const composable = useTextarea(toRef(() => props))
45
-
46
- const handleInput = (event: Event) => {
47
- const target = event.target as HTMLTextAreaElement
48
- emit("update:modelValue", target.value)
49
- }
50
-
51
- defineExpose({
52
- state: composable.state,
53
- is_focused: composable.is_focused
54
- })
55
- </script>
@@ -1,13 +0,0 @@
1
- export { default as Button } from "./Button.vue";
2
- export { default as Input } from "./Input.vue";
3
- export { default as Textarea } from "./Textarea.vue";
4
- export { default as Card } from "./Card.vue";
5
- export { default as Checkbox } from "./Checkbox.vue";
6
- export { default as Switch } from "./Switch.vue";
7
- export { default as Dialog } from "./Dialog.vue";
8
- export { default as Select } from "./Select.vue";
9
- export { default as SelectTrigger } from "./SelectTrigger.vue";
10
- export { default as SelectContent } from "./SelectContent.vue";
11
- export { default as SelectItem } from "./SelectItem.vue";
12
- export { default as RadioGroup } from "./RadioGroup.vue";
13
- export { default as RadioItem } from "./RadioItem.vue";
@@ -1,17 +0,0 @@
1
- export { useButton } from "./useButton.mjs";
2
- export { useInput } from "./useInput.mjs";
3
- export { useCard } from "./useCard.mjs";
4
- export { useDialog } from "./useDialog.mjs";
5
- export { useForm } from "./useForm.mjs";
6
- export { useUIProvider, useUI, useUIConfig, useStyleAdapter, UI_PROVIDER_KEY, UI_CONFIG_KEY } from "./useUIConfig.mjs";
7
- export { useCheckbox } from "./useCheckbox.mjs";
8
- export { useRadioItem } from "./useRadio.mjs";
9
- export { useSwitch } from "./useSwitch.mjs";
10
- export { useTextarea } from "./useTextarea.mjs";
11
- export { useSelectTrigger, useSelectContent, useSelectItem } from "./useSelect.mjs";
12
- export { useFileInput } from "./useFileInput.mjs";
13
- export { useToast, toast } from "./useToast.mjs";
14
- export { useTooltip } from "./useTooltip.mjs";
15
- export { usePopover } from "./usePopover.mjs";
16
- export { useDropdown } from "./useDropdown.mjs";
17
- export { useTheme, generateThemeCSS } from "./useTheme.mjs";
@@ -1,22 +0,0 @@
1
- import { computed, readonly } from "vue";
2
- import { useUI } from "./useUIConfig.mjs";
3
- export const useButton = (props) => {
4
- const ui_config = useUI("button");
5
- const state = computed(() => ({
6
- variant: props.value.variant ?? ui_config.default_variant,
7
- size: props.value.size ?? ui_config.default_size,
8
- disabled: props.value.disabled ?? false,
9
- loading: props.value.loading ?? false,
10
- type: props.value.type ?? "button"
11
- }));
12
- const aria_attributes = computed(() => ({
13
- "aria-disabled": state.value.disabled || void 0,
14
- "aria-busy": state.value.loading || void 0,
15
- role: "button",
16
- type: state.value.type
17
- }));
18
- return {
19
- state: readonly(state),
20
- aria_attributes: readonly(aria_attributes)
21
- };
22
- };
@@ -1,11 +0,0 @@
1
- import { computed, readonly } from "vue";
2
- import { useUI } from "./useUIConfig.mjs";
3
- export const useCard = (props) => {
4
- const ui_config = useUI("card");
5
- const state = computed(() => ({
6
- padding: props.value.padding ?? ui_config.default_padding
7
- }));
8
- return {
9
- state: readonly(state)
10
- };
11
- };
@@ -1,18 +0,0 @@
1
- import { computed, readonly } from "vue";
2
- export const useCheckbox = (props, checked) => {
3
- const state = computed(() => ({
4
- size: props.value.size ?? "md",
5
- disabled: props.value.disabled ?? false,
6
- indeterminate: props.value.indeterminate ?? false,
7
- checked: checked.value
8
- }));
9
- const aria_attributes = computed(() => ({
10
- role: "checkbox",
11
- "aria-checked": state.value.indeterminate ? "mixed" : state.value.checked,
12
- "aria-disabled": state.value.disabled || void 0
13
- }));
14
- return {
15
- state: readonly(state),
16
- aria_attributes: readonly(aria_attributes)
17
- };
18
- };
@@ -1,19 +0,0 @@
1
- import { ref, readonly } from "vue";
2
- export const useDialog = () => {
3
- const is_open = ref(false);
4
- const open = () => {
5
- is_open.value = true;
6
- };
7
- const close = () => {
8
- is_open.value = false;
9
- };
10
- const toggle = () => {
11
- is_open.value = !is_open.value;
12
- };
13
- return {
14
- is_open: readonly(is_open),
15
- open,
16
- close,
17
- toggle
18
- };
19
- };