@soave/ui 0.3.1 → 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 -36
  152. package/dist/components/Card.vue +0 -23
  153. package/dist/components/Checkbox.vue +0 -44
  154. package/dist/components/Dialog.vue +0 -99
  155. package/dist/components/Input.vue +0 -48
  156. package/dist/components/RadioGroup.vue +0 -35
  157. package/dist/components/RadioItem.vue +0 -55
  158. package/dist/components/Select.vue +0 -95
  159. package/dist/components/SelectContent.vue +0 -40
  160. package/dist/components/SelectItem.vue +0 -44
  161. package/dist/components/SelectTrigger.vue +0 -61
  162. package/dist/components/Switch.vue +0 -43
  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
package/dist/index.mjs CHANGED
@@ -1,6 +1,760 @@
1
- export * from "./composables/index.mjs";
2
- export * from "./components/index.mjs";
3
- export * from "./types/index.mjs";
4
- export * from "./utils/index.mjs";
5
- export * from "./constants/index.mjs";
6
- export * from "./adapters/index.mjs";
1
+ import { u as useButton, a as useInput, m as useTextarea, b as useCard, j as useCheckbox, l as useSwitch, c as useDialog, n as useSelectTrigger, o as useSelectContent, p as useSelectItem, k as useRadioItem } from "./useTheme-C2uPqAtQ.js";
2
+ import { C, D, A, F, I, R, S, i, U, z, y, t, w, q, d, v, h, x, r, s, f, g, e } from "./useTheme-C2uPqAtQ.js";
3
+ import { defineComponent, toRef, createElementBlock, openBlock, mergeProps, unref, renderSlot, mergeModels, useModel, computed, withKeys, withModifiers, createElementVNode, ref, watch, provide, onMounted, onUnmounted, createBlock, Teleport, createCommentVNode, inject } from "vue";
4
+ import { c, t as t2 } from "./tailwind-B-R7fPT1.js";
5
+ import { ADAPTER_REGISTRY, cssVariablesAdapter, getAdapter, getRegisteredAdapters, headlessAdapter, registerAdapter } from "./adapters.mjs";
6
+ const FORM_LOGS = {
7
+ FIELD_VALIDATED: (field) => `フィールド "${field}" のバリデーションが完了しました`,
8
+ FORM_SUBMITTED: "フォームが送信されました",
9
+ FORM_RESET: "フォームがリセットされました",
10
+ VALIDATION_STARTED: "バリデーションを開始します"
11
+ };
12
+ const COMPONENT_LOGS = {
13
+ DIALOG_OPENED: "ダイアログが開かれました",
14
+ DIALOG_CLOSED: "ダイアログが閉じられました",
15
+ BUTTON_CLICKED: "ボタンがクリックされました",
16
+ INPUT_FOCUSED: "入力フィールドにフォーカスが当たりました",
17
+ INPUT_BLURRED: "入力フィールドからフォーカスが外れました"
18
+ };
19
+ const CONFIG_LOGS = {
20
+ PROVIDER_INITIALIZED: "UIProviderが初期化されました",
21
+ CONFIG_UPDATED: "UI設定が更新されました"
22
+ };
23
+ const _hoisted_1$9 = ["disabled", "type"];
24
+ const _sfc_main$c = /* @__PURE__ */ defineComponent({
25
+ __name: "Button",
26
+ props: {
27
+ variant: { default: "primary" },
28
+ size: { default: "md" },
29
+ disabled: { type: Boolean, default: false },
30
+ loading: { type: Boolean, default: false },
31
+ type: { default: "button" }
32
+ },
33
+ emits: ["click"],
34
+ setup(__props, { emit: __emit }) {
35
+ const props = __props;
36
+ const emit = __emit;
37
+ const composable = useButton(toRef(() => props));
38
+ const handleClick = (event) => {
39
+ if (!composable.state.value.disabled && !composable.state.value.loading) {
40
+ emit("click", event);
41
+ }
42
+ };
43
+ return (_ctx, _cache) => {
44
+ return openBlock(), createElementBlock("button", mergeProps({
45
+ disabled: unref(composable).state.value.disabled || unref(composable).state.value.loading,
46
+ type: unref(composable).state.value.type
47
+ }, unref(composable).aria_attributes.value, { onClick: handleClick }), [
48
+ renderSlot(_ctx.$slots, "default")
49
+ ], 16, _hoisted_1$9);
50
+ };
51
+ }
52
+ });
53
+ const _hoisted_1$8 = ["type", "value", "disabled", "readonly", "placeholder", "id"];
54
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
55
+ __name: "Input",
56
+ props: {
57
+ type: { default: "text" },
58
+ size: { default: "md" },
59
+ placeholder: {},
60
+ disabled: { type: Boolean, default: false },
61
+ readonly: { type: Boolean, default: false },
62
+ error: {},
63
+ error_id: {},
64
+ id: {},
65
+ modelValue: {}
66
+ },
67
+ emits: ["update:modelValue"],
68
+ setup(__props, { emit: __emit }) {
69
+ const props = __props;
70
+ const emit = __emit;
71
+ const composable = useInput(toRef(() => props));
72
+ const handleInput = (event) => {
73
+ const target = event.target;
74
+ emit("update:modelValue", target.value);
75
+ };
76
+ return (_ctx, _cache) => {
77
+ return openBlock(), createElementBlock("input", mergeProps({
78
+ type: unref(composable).state.value.type,
79
+ value: __props.modelValue,
80
+ disabled: unref(composable).state.value.disabled,
81
+ readonly: unref(composable).state.value.readonly,
82
+ placeholder: __props.placeholder,
83
+ id: __props.id
84
+ }, unref(composable).aria_attributes.value, {
85
+ onInput: handleInput,
86
+ onFocus: _cache[0] || (_cache[0] = //@ts-ignore
87
+ (...args) => unref(composable).handleFocus && unref(composable).handleFocus(...args)),
88
+ onBlur: _cache[1] || (_cache[1] = //@ts-ignore
89
+ (...args) => unref(composable).handleBlur && unref(composable).handleBlur(...args))
90
+ }), null, 16, _hoisted_1$8);
91
+ };
92
+ }
93
+ });
94
+ const _hoisted_1$7 = ["value", "disabled", "readonly", "placeholder", "rows", "id"];
95
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
96
+ __name: "Textarea",
97
+ props: {
98
+ size: { default: "md" },
99
+ placeholder: {},
100
+ disabled: { type: Boolean, default: false },
101
+ readonly: { type: Boolean, default: false },
102
+ error: {},
103
+ error_id: {},
104
+ rows: { default: 3 },
105
+ resize: { default: "vertical" },
106
+ modelValue: {},
107
+ id: {}
108
+ },
109
+ emits: ["update:modelValue"],
110
+ setup(__props, { expose: __expose, emit: __emit }) {
111
+ const props = __props;
112
+ const emit = __emit;
113
+ const composable = useTextarea(toRef(() => props));
114
+ const handleInput = (event) => {
115
+ const target = event.target;
116
+ emit("update:modelValue", target.value);
117
+ };
118
+ __expose({
119
+ state: composable.state,
120
+ is_focused: composable.is_focused
121
+ });
122
+ return (_ctx, _cache) => {
123
+ return openBlock(), createElementBlock("textarea", mergeProps({
124
+ value: __props.modelValue,
125
+ disabled: unref(composable).state.value.disabled,
126
+ readonly: unref(composable).state.value.readonly,
127
+ placeholder: __props.placeholder,
128
+ rows: __props.rows,
129
+ id: __props.id
130
+ }, unref(composable).aria_attributes.value, {
131
+ onInput: handleInput,
132
+ onFocus: _cache[0] || (_cache[0] = //@ts-ignore
133
+ (...args) => unref(composable).handleFocus && unref(composable).handleFocus(...args)),
134
+ onBlur: _cache[1] || (_cache[1] = //@ts-ignore
135
+ (...args) => unref(composable).handleBlur && unref(composable).handleBlur(...args))
136
+ }), null, 16, _hoisted_1$7);
137
+ };
138
+ }
139
+ });
140
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
141
+ __name: "Card",
142
+ props: {
143
+ padding: { default: "md" }
144
+ },
145
+ setup(__props, { expose: __expose }) {
146
+ const props = __props;
147
+ const composable = useCard(toRef(() => props));
148
+ __expose({
149
+ state: composable.state
150
+ });
151
+ return (_ctx, _cache) => {
152
+ return openBlock(), createElementBlock("div", null, [
153
+ renderSlot(_ctx.$slots, "default")
154
+ ]);
155
+ };
156
+ }
157
+ });
158
+ const _hoisted_1$6 = ["disabled", "data-state", "onKeydown"];
159
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
160
+ __name: "Checkbox",
161
+ props: /* @__PURE__ */ mergeModels({
162
+ size: { default: "md" },
163
+ disabled: { type: Boolean, default: false },
164
+ indeterminate: { type: Boolean, default: false }
165
+ }, {
166
+ "modelValue": { type: Boolean, ...{ default: false } },
167
+ "modelModifiers": {}
168
+ }),
169
+ emits: /* @__PURE__ */ mergeModels(["change"], ["update:modelValue"]),
170
+ setup(__props, { emit: __emit }) {
171
+ const props = __props;
172
+ const model = useModel(__props, "modelValue");
173
+ const emit = __emit;
174
+ const composable = useCheckbox(toRef(() => props), model);
175
+ const dataState = computed(() => {
176
+ if (composable.state.value.indeterminate) return "indeterminate";
177
+ return model.value ? "checked" : "unchecked";
178
+ });
179
+ const handleClick = () => {
180
+ if (!composable.state.value.disabled) {
181
+ model.value = !model.value;
182
+ emit("change", model.value);
183
+ }
184
+ };
185
+ return (_ctx, _cache) => {
186
+ return openBlock(), createElementBlock("button", mergeProps({
187
+ type: "button",
188
+ disabled: unref(composable).state.value.disabled,
189
+ "data-state": dataState.value
190
+ }, unref(composable).aria_attributes.value, {
191
+ onClick: handleClick,
192
+ onKeydown: withKeys(withModifiers(handleClick, ["prevent"]), ["space"])
193
+ }), [
194
+ renderSlot(_ctx.$slots, "default", {
195
+ checked: model.value,
196
+ indeterminate: unref(composable).state.value.indeterminate
197
+ })
198
+ ], 16, _hoisted_1$6);
199
+ };
200
+ }
201
+ });
202
+ const _hoisted_1$5 = ["disabled", "data-state"];
203
+ const _hoisted_2 = ["data-state"];
204
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
205
+ __name: "Switch",
206
+ props: /* @__PURE__ */ mergeModels({
207
+ size: { default: "md" },
208
+ disabled: { type: Boolean, default: false }
209
+ }, {
210
+ "modelValue": { type: Boolean, ...{ default: false } },
211
+ "modelModifiers": {}
212
+ }),
213
+ emits: /* @__PURE__ */ mergeModels(["change"], ["update:modelValue"]),
214
+ setup(__props, { expose: __expose, emit: __emit }) {
215
+ const props = __props;
216
+ const model = useModel(__props, "modelValue");
217
+ const emit = __emit;
218
+ const composable = useSwitch(toRef(() => props), model);
219
+ const handleClick = () => {
220
+ if (!composable.state.value.disabled) {
221
+ model.value = !model.value;
222
+ emit("change", model.value);
223
+ }
224
+ };
225
+ __expose({
226
+ state: composable.state
227
+ });
228
+ return (_ctx, _cache) => {
229
+ return openBlock(), createElementBlock("button", mergeProps({
230
+ type: "button",
231
+ disabled: unref(composable).state.value.disabled,
232
+ "data-state": model.value ? "checked" : "unchecked"
233
+ }, unref(composable).aria_attributes.value, { onClick: handleClick }), [
234
+ renderSlot(_ctx.$slots, "default", { checked: model.value }, () => [
235
+ createElementVNode("span", {
236
+ "data-state": model.value ? "checked" : "unchecked"
237
+ }, null, 8, _hoisted_2)
238
+ ])
239
+ ], 16, _hoisted_1$5);
240
+ };
241
+ }
242
+ });
243
+ const _hoisted_1$4 = ["aria-labelledby", "aria-describedby"];
244
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
245
+ __name: "Dialog",
246
+ props: /* @__PURE__ */ mergeModels({
247
+ closeOnOverlay: { type: Boolean, default: true },
248
+ closeOnEscape: { type: Boolean, default: true },
249
+ titleId: {},
250
+ descriptionId: {}
251
+ }, {
252
+ "open": { type: Boolean, ...{ default: false } },
253
+ "openModifiers": {}
254
+ }),
255
+ emits: ["update:open"],
256
+ setup(__props, { expose: __expose }) {
257
+ const DIALOG_KEY2 = Symbol("dialog");
258
+ const props = __props;
259
+ const model = useModel(__props, "open");
260
+ const content_ref = ref(null);
261
+ const dialog = useDialog();
262
+ const { is_open, open, close, toggle } = dialog;
263
+ watch(model, (value) => {
264
+ if (value) {
265
+ open();
266
+ } else {
267
+ close();
268
+ }
269
+ }, { immediate: true });
270
+ watch(is_open, (value) => {
271
+ model.value = value;
272
+ });
273
+ const handleOverlayClick = () => {
274
+ if (props.closeOnOverlay) {
275
+ close();
276
+ }
277
+ };
278
+ const handleKeyDown = (event) => {
279
+ if (event.key === "Escape" && props.closeOnEscape && is_open.value) {
280
+ close();
281
+ }
282
+ };
283
+ const context = {
284
+ is_open,
285
+ close,
286
+ titleId: props.titleId,
287
+ descriptionId: props.descriptionId
288
+ };
289
+ provide(DIALOG_KEY2, context);
290
+ onMounted(() => {
291
+ document.addEventListener("keydown", handleKeyDown);
292
+ });
293
+ onUnmounted(() => {
294
+ document.removeEventListener("keydown", handleKeyDown);
295
+ });
296
+ __expose({
297
+ is_open,
298
+ open,
299
+ close,
300
+ toggle
301
+ });
302
+ return (_ctx, _cache) => {
303
+ return openBlock(), createBlock(Teleport, { to: "body" }, [
304
+ unref(is_open) ? (openBlock(), createElementBlock("div", {
305
+ key: 0,
306
+ role: "dialog",
307
+ "aria-modal": "true",
308
+ "aria-labelledby": __props.titleId,
309
+ "aria-describedby": __props.descriptionId
310
+ }, [
311
+ createElementVNode("div", {
312
+ onClick: handleOverlayClick,
313
+ onKeydown: _cache[0] || (_cache[0] = withKeys(
314
+ //@ts-ignore
315
+ (...args) => unref(close) && unref(close)(...args),
316
+ ["escape"]
317
+ ))
318
+ }, null, 32),
319
+ createElementVNode("div", {
320
+ ref_key: "content_ref",
321
+ ref: content_ref,
322
+ tabindex: "-1",
323
+ onKeydown: _cache[1] || (_cache[1] = withKeys(
324
+ //@ts-ignore
325
+ (...args) => unref(close) && unref(close)(...args),
326
+ ["escape"]
327
+ ))
328
+ }, [
329
+ renderSlot(_ctx.$slots, "default", { close: unref(close) })
330
+ ], 544)
331
+ ], 8, _hoisted_1$4)) : createCommentVNode("", true)
332
+ ]);
333
+ };
334
+ }
335
+ });
336
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
337
+ __name: "Select",
338
+ props: /* @__PURE__ */ mergeModels({
339
+ size: { default: "md" },
340
+ disabled: { type: Boolean, default: false },
341
+ placeholder: { default: "" }
342
+ }, {
343
+ "modelValue": { default: "" },
344
+ "modelModifiers": {}
345
+ }),
346
+ emits: ["update:modelValue"],
347
+ setup(__props, { expose: __expose }) {
348
+ const SELECT_KEY = Symbol("select");
349
+ const props = __props;
350
+ const model = useModel(__props, "modelValue");
351
+ const root_ref = ref(null);
352
+ const trigger_ref = ref(null);
353
+ const is_open = ref(false);
354
+ const open = () => {
355
+ if (!props.disabled) {
356
+ is_open.value = true;
357
+ }
358
+ };
359
+ const close = () => {
360
+ is_open.value = false;
361
+ };
362
+ const toggle = () => {
363
+ if (is_open.value) {
364
+ close();
365
+ } else {
366
+ open();
367
+ }
368
+ };
369
+ const updateValue = (value) => {
370
+ model.value = value;
371
+ close();
372
+ };
373
+ const setTriggerRef = (element) => {
374
+ trigger_ref.value = element;
375
+ };
376
+ const handleClickOutside = (event) => {
377
+ if (!is_open.value) return;
378
+ const target = event.target;
379
+ if (root_ref.value && !root_ref.value.contains(target)) {
380
+ close();
381
+ }
382
+ };
383
+ const context = {
384
+ model_value: model,
385
+ is_open,
386
+ disabled: computed(() => props.disabled),
387
+ size: computed(() => props.size ?? "md"),
388
+ placeholder: computed(() => props.placeholder ?? ""),
389
+ trigger_ref,
390
+ updateValue,
391
+ open,
392
+ close,
393
+ toggle,
394
+ setTriggerRef
395
+ };
396
+ provide(SELECT_KEY, context);
397
+ onMounted(() => {
398
+ document.addEventListener("mousedown", handleClickOutside);
399
+ });
400
+ onUnmounted(() => {
401
+ document.removeEventListener("mousedown", handleClickOutside);
402
+ });
403
+ __expose({
404
+ is_open,
405
+ open,
406
+ close,
407
+ toggle
408
+ });
409
+ return (_ctx, _cache) => {
410
+ return openBlock(), createElementBlock("div", {
411
+ ref_key: "root_ref",
412
+ ref: root_ref
413
+ }, [
414
+ renderSlot(_ctx.$slots, "default", {
415
+ is_open: context.is_open.value,
416
+ selected_value: model.value,
417
+ open: context.open,
418
+ close: context.close,
419
+ toggle: context.toggle
420
+ })
421
+ ], 512);
422
+ };
423
+ }
424
+ });
425
+ const _hoisted_1$3 = ["disabled", "aria-expanded"];
426
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
427
+ __name: "SelectTrigger",
428
+ setup(__props, { expose: __expose }) {
429
+ const SELECT_KEY = Symbol("select");
430
+ const trigger_element = ref(null);
431
+ const context = inject(SELECT_KEY, null);
432
+ if (!context) {
433
+ throw new Error("SelectTrigger must be used within Select");
434
+ }
435
+ const composable = useSelectTrigger();
436
+ const handleClick = () => {
437
+ if (!composable.state.value.disabled) {
438
+ context.toggle();
439
+ }
440
+ };
441
+ const handleKeyDown = (event) => {
442
+ if (composable.state.value.disabled) return;
443
+ switch (event.key) {
444
+ case "Enter":
445
+ case " ":
446
+ case "ArrowDown":
447
+ event.preventDefault();
448
+ context.open();
449
+ break;
450
+ case "ArrowUp":
451
+ event.preventDefault();
452
+ context.open();
453
+ break;
454
+ }
455
+ };
456
+ onMounted(() => {
457
+ context.setTriggerRef(trigger_element.value);
458
+ });
459
+ __expose({
460
+ state: composable.state
461
+ });
462
+ return (_ctx, _cache) => {
463
+ return openBlock(), createElementBlock("button", {
464
+ ref_key: "trigger_element",
465
+ ref: trigger_element,
466
+ type: "button",
467
+ disabled: unref(composable).state.value.disabled,
468
+ "aria-expanded": unref(composable).state.value.is_open,
469
+ "aria-haspopup": "listbox",
470
+ onClick: handleClick,
471
+ onKeydown: handleKeyDown
472
+ }, [
473
+ renderSlot(_ctx.$slots, "default", {
474
+ is_open: unref(composable).state.value.is_open,
475
+ disabled: unref(composable).state.value.disabled
476
+ })
477
+ ], 40, _hoisted_1$3);
478
+ };
479
+ }
480
+ });
481
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
482
+ __name: "SelectContent",
483
+ setup(__props, { expose: __expose }) {
484
+ const SELECT_KEY = Symbol("select");
485
+ const context = inject(SELECT_KEY, null);
486
+ if (!context) {
487
+ throw new Error("SelectContent must be used within Select");
488
+ }
489
+ const composable = useSelectContent();
490
+ const handleKeyDown = (event) => {
491
+ var _a;
492
+ switch (event.key) {
493
+ case "Escape":
494
+ event.preventDefault();
495
+ context.close();
496
+ (_a = context.trigger_ref.value) == null ? void 0 : _a.focus();
497
+ break;
498
+ }
499
+ };
500
+ __expose({
501
+ state: composable.state
502
+ });
503
+ return (_ctx, _cache) => {
504
+ return unref(composable).state.value.is_open ? (openBlock(), createElementBlock("div", {
505
+ key: 0,
506
+ role: "listbox",
507
+ tabindex: "-1",
508
+ onKeydown: handleKeyDown
509
+ }, [
510
+ renderSlot(_ctx.$slots, "default")
511
+ ], 32)) : createCommentVNode("", true);
512
+ };
513
+ }
514
+ });
515
+ const _hoisted_1$2 = ["aria-selected", "aria-disabled", "data-state", "data-disabled", "onKeydown"];
516
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
517
+ __name: "SelectItem",
518
+ props: {
519
+ value: {},
520
+ disabled: { type: Boolean, default: false }
521
+ },
522
+ setup(__props, { expose: __expose }) {
523
+ const SELECT_KEY = Symbol("select");
524
+ const props = __props;
525
+ const context = inject(SELECT_KEY, null);
526
+ if (!context) {
527
+ throw new Error("SelectItem must be used within Select");
528
+ }
529
+ const composable = useSelectItem(toRef(() => ({ value: props.value, disabled: props.disabled })));
530
+ const handleClick = () => {
531
+ if (!composable.state.value.disabled) {
532
+ context.updateValue(props.value);
533
+ }
534
+ };
535
+ __expose({
536
+ state: composable.state
537
+ });
538
+ return (_ctx, _cache) => {
539
+ return openBlock(), createElementBlock("div", {
540
+ role: "option",
541
+ "aria-selected": unref(composable).state.value.selected,
542
+ "aria-disabled": unref(composable).state.value.disabled,
543
+ "data-state": unref(composable).state.value.selected ? "selected" : void 0,
544
+ "data-disabled": unref(composable).state.value.disabled ? "" : void 0,
545
+ onClick: handleClick,
546
+ onKeydown: [
547
+ withKeys(handleClick, ["enter"]),
548
+ withKeys(withModifiers(handleClick, ["prevent"]), ["space"])
549
+ ]
550
+ }, [
551
+ renderSlot(_ctx.$slots, "default", {
552
+ selected: unref(composable).state.value.selected,
553
+ disabled: unref(composable).state.value.disabled
554
+ })
555
+ ], 40, _hoisted_1$2);
556
+ };
557
+ }
558
+ });
559
+ const _hoisted_1$1 = ["aria-orientation"];
560
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
561
+ __name: "RadioGroup",
562
+ props: /* @__PURE__ */ mergeModels({
563
+ disabled: { type: Boolean, default: false },
564
+ orientation: { default: "vertical" }
565
+ }, {
566
+ "modelValue": { default: "" },
567
+ "modelModifiers": {}
568
+ }),
569
+ emits: ["update:modelValue"],
570
+ setup(__props) {
571
+ const RADIO_GROUP_KEY = Symbol("radio-group");
572
+ const props = __props;
573
+ const model = useModel(__props, "modelValue");
574
+ const updateValue = (value) => {
575
+ if (!props.disabled) {
576
+ model.value = value;
577
+ }
578
+ };
579
+ const context = {
580
+ model_value: model,
581
+ disabled: computed(() => props.disabled),
582
+ updateValue
583
+ };
584
+ provide(RADIO_GROUP_KEY, context);
585
+ return (_ctx, _cache) => {
586
+ return openBlock(), createElementBlock("div", {
587
+ role: "radiogroup",
588
+ "aria-orientation": __props.orientation
589
+ }, [
590
+ renderSlot(_ctx.$slots, "default")
591
+ ], 8, _hoisted_1$1);
592
+ };
593
+ }
594
+ });
595
+ const _hoisted_1 = ["disabled", "data-state"];
596
+ const _sfc_main = /* @__PURE__ */ defineComponent({
597
+ __name: "RadioItem",
598
+ props: {
599
+ value: {},
600
+ size: { default: "md" },
601
+ disabled: { type: Boolean, default: false }
602
+ },
603
+ setup(__props, { expose: __expose }) {
604
+ const RADIO_GROUP_KEY = Symbol("radio-group");
605
+ const props = __props;
606
+ const context = inject(RADIO_GROUP_KEY, null);
607
+ if (!context) {
608
+ throw new Error("RadioItem must be used within RadioGroup");
609
+ }
610
+ const composable = useRadioItem(toRef(() => props));
611
+ const handleClick = () => {
612
+ if (!composable.state.value.disabled) {
613
+ context.updateValue(props.value);
614
+ }
615
+ };
616
+ const handleKeyDown = (event) => {
617
+ if (composable.state.value.disabled) return;
618
+ switch (event.key) {
619
+ case "Enter":
620
+ case " ":
621
+ event.preventDefault();
622
+ context.updateValue(props.value);
623
+ break;
624
+ }
625
+ };
626
+ __expose({
627
+ state: composable.state
628
+ });
629
+ return (_ctx, _cache) => {
630
+ return openBlock(), createElementBlock("button", mergeProps({
631
+ type: "button",
632
+ disabled: unref(composable).state.value.disabled,
633
+ "data-state": unref(composable).state.value.checked ? "checked" : "unchecked"
634
+ }, unref(composable).aria_attributes.value, {
635
+ onClick: handleClick,
636
+ onKeydown: handleKeyDown
637
+ }), [
638
+ renderSlot(_ctx.$slots, "default", {
639
+ checked: unref(composable).state.value.checked,
640
+ disabled: unref(composable).state.value.disabled
641
+ })
642
+ ], 16, _hoisted_1);
643
+ };
644
+ }
645
+ });
646
+ const DIALOG_KEY = Symbol("dialog");
647
+ const TOOLTIP_CONTEXT_KEY = Symbol("tooltip-context");
648
+ const POPOVER_CONTEXT_KEY = Symbol("popover-context");
649
+ const DROPDOWN_CONTEXT_KEY = Symbol("dropdown-context");
650
+ const SHEET_CONTEXT_KEY = Symbol("sheet-context");
651
+ const DEFAULT_LIGHT_COLORS = {
652
+ background: "0 0% 100%",
653
+ foreground: "222.2 84% 4.9%",
654
+ card: "0 0% 100%",
655
+ card_foreground: "222.2 84% 4.9%",
656
+ popover: "0 0% 100%",
657
+ popover_foreground: "222.2 84% 4.9%",
658
+ primary: "222.2 47.4% 11.2%",
659
+ primary_foreground: "210 40% 98%",
660
+ secondary: "210 40% 96.1%",
661
+ secondary_foreground: "222.2 47.4% 11.2%",
662
+ muted: "210 40% 96.1%",
663
+ muted_foreground: "215.4 16.3% 46.9%",
664
+ accent: "210 40% 96.1%",
665
+ accent_foreground: "222.2 47.4% 11.2%",
666
+ destructive: "0 84.2% 60.2%",
667
+ destructive_foreground: "210 40% 98%",
668
+ border: "214.3 31.8% 91.4%",
669
+ input: "214.3 31.8% 91.4%",
670
+ ring: "222.2 84% 4.9%"
671
+ };
672
+ const DEFAULT_DARK_COLORS = {
673
+ background: "222.2 84% 4.9%",
674
+ foreground: "210 40% 98%",
675
+ card: "222.2 84% 4.9%",
676
+ card_foreground: "210 40% 98%",
677
+ popover: "222.2 84% 4.9%",
678
+ popover_foreground: "210 40% 98%",
679
+ primary: "210 40% 98%",
680
+ primary_foreground: "222.2 47.4% 11.2%",
681
+ secondary: "217.2 32.6% 17.5%",
682
+ secondary_foreground: "210 40% 98%",
683
+ muted: "217.2 32.6% 17.5%",
684
+ muted_foreground: "215 20.2% 65.1%",
685
+ accent: "217.2 32.6% 17.5%",
686
+ accent_foreground: "210 40% 98%",
687
+ destructive: "0 62.8% 30.6%",
688
+ destructive_foreground: "210 40% 98%",
689
+ border: "217.2 32.6% 17.5%",
690
+ input: "217.2 32.6% 17.5%",
691
+ ring: "212.7 26.8% 83.9%"
692
+ };
693
+ export {
694
+ ADAPTER_REGISTRY,
695
+ _sfc_main$c as Button,
696
+ C as COMPONENT_ERRORS,
697
+ COMPONENT_LOGS,
698
+ CONFIG_LOGS,
699
+ _sfc_main$9 as Card,
700
+ _sfc_main$8 as Checkbox,
701
+ DEFAULT_DARK_COLORS,
702
+ DEFAULT_LIGHT_COLORS,
703
+ D as DEFAULT_UI_CONFIG,
704
+ A as DIALOG_ERRORS,
705
+ DIALOG_KEY,
706
+ DROPDOWN_CONTEXT_KEY,
707
+ _sfc_main$6 as Dialog,
708
+ F as FORM_ERRORS,
709
+ FORM_LOGS,
710
+ I as INPUT_ERRORS,
711
+ _sfc_main$b as Input,
712
+ POPOVER_CONTEXT_KEY,
713
+ R as RADIO_GROUP_KEY,
714
+ _sfc_main$1 as RadioGroup,
715
+ _sfc_main as RadioItem,
716
+ S as SELECT_KEY,
717
+ SHEET_CONTEXT_KEY,
718
+ _sfc_main$5 as Select,
719
+ _sfc_main$3 as SelectContent,
720
+ _sfc_main$2 as SelectItem,
721
+ _sfc_main$4 as SelectTrigger,
722
+ _sfc_main$7 as Switch,
723
+ TOOLTIP_CONTEXT_KEY,
724
+ _sfc_main$a as Textarea,
725
+ i as UI_CONFIG_KEY,
726
+ U as UI_PROVIDER_KEY,
727
+ c as cn,
728
+ cssVariablesAdapter,
729
+ z as deepMerge,
730
+ y as generateThemeCSS,
731
+ getAdapter,
732
+ getRegisteredAdapters,
733
+ headlessAdapter,
734
+ registerAdapter,
735
+ t2 as tailwindAdapter,
736
+ t as toast,
737
+ useButton,
738
+ useCard,
739
+ useCheckbox,
740
+ useDialog,
741
+ w as useDropdown,
742
+ q as useFileInput,
743
+ d as useForm,
744
+ useInput,
745
+ v as usePopover,
746
+ useRadioItem,
747
+ useSelectContent,
748
+ useSelectItem,
749
+ useSelectTrigger,
750
+ h as useStyleAdapter,
751
+ useSwitch,
752
+ useTextarea,
753
+ x as useTheme,
754
+ r as useToast,
755
+ s as useTooltip,
756
+ f as useUI,
757
+ g as useUIConfig,
758
+ e as useUIProvider
759
+ };
760
+ //# sourceMappingURL=index.mjs.map