@proj-airi/ui 0.6.1 → 0.7.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/package.json +5 -10
  2. package/src/components/Animations/TransitionHorizontal.vue +36 -0
  3. package/src/components/Animations/index.ts +1 -0
  4. package/src/components/Form/Combobox/Combobox.vue +128 -0
  5. package/src/components/Form/Combobox/index.ts +1 -0
  6. package/src/components/Form/Field/FieldCheckbox.vue +6 -2
  7. package/src/components/Form/Field/FieldInput.vue +7 -3
  8. package/src/components/Form/Field/FieldKeyValues.vue +6 -2
  9. package/src/components/Form/Field/FieldRange.vue +13 -6
  10. package/src/components/Form/Field/FieldSelect.vue +54 -0
  11. package/src/components/Form/Field/FieldValues.vue +6 -2
  12. package/src/components/Form/Field/index.ts +1 -0
  13. package/src/components/Form/Input/BasicInputFile.vue +43 -0
  14. package/src/components/Form/Input/Input.vue +1 -1
  15. package/src/components/Form/Input/index.ts +1 -0
  16. package/src/components/Form/Range/ColorHueRange.vue +8 -8
  17. package/src/components/Form/Range/Range.vue +47 -20
  18. package/src/components/Form/Range/RoundRange.vue +277 -0
  19. package/src/components/Form/Range/index.ts +1 -0
  20. package/src/components/Form/Select/Option.vue +29 -0
  21. package/src/components/Form/Select/Select.vue +15 -86
  22. package/src/components/Form/Select/index.ts +1 -0
  23. package/src/components/Form/Textarea/Basic.vue +8 -0
  24. package/src/components/Form/index.ts +1 -0
  25. package/dist/Animations-DeJoVt_I.mjs +0 -153
  26. package/dist/Form-BXVt-kFc.css +0 -336
  27. package/dist/Form-Cy7H3Deq.mjs +0 -1237
  28. package/dist/components/animations.mjs +0 -4
  29. package/dist/components/form.mjs +0 -4
  30. package/dist/export-helper-WDd986Km.mjs +0 -9
  31. package/dist/index.mjs +0 -5
  32. package/tsdown.config.ts +0 -29
  33. package/uno.config.ts +0 -8
@@ -1,1237 +0,0 @@
1
- import { export_helper_default } from "./export-helper-WDd986Km.mjs";
2
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, normalizeClass, normalizeStyle, onMounted, openBlock, ref, renderList, renderSlot, resolveDirective, toDisplayString, useModel, vModelDynamic, vModelRadio, vModelText, watch, withCtx, withDirectives } from "vue";
3
- import { SwitchRoot, SwitchThumb } from "reka-ui";
4
- import { useDebounce } from "@vueuse/core";
5
- import { Dropdown } from "floating-vue";
6
-
7
- //#region src/components/Form/Checkbox/Checkbox.vue?vue&type=script&setup=true&lang.ts
8
- var Checkbox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
9
- __name: "Checkbox",
10
- props: {
11
- "modelValue": {
12
- type: Boolean,
13
- required: true
14
- },
15
- "modelModifiers": {}
16
- },
17
- emits: ["update:modelValue"],
18
- setup(__props, { expose: __expose }) {
19
- __expose();
20
- const modelValue = useModel(__props, "modelValue");
21
- const __returned__ = {
22
- modelValue,
23
- get SwitchRoot() {
24
- return SwitchRoot;
25
- },
26
- get SwitchThumb() {
27
- return SwitchThumb;
28
- }
29
- };
30
- Object.defineProperty(__returned__, "__isScriptSetup", {
31
- enumerable: false,
32
- value: true
33
- });
34
- return __returned__;
35
- }
36
- });
37
-
38
- //#endregion
39
- //#region src/components/Form/Checkbox/Checkbox.vue
40
- function _sfc_render$14(_ctx, _cache, $props, $setup, $data, $options) {
41
- return openBlock(), createBlock($setup["SwitchRoot"], {
42
- modelValue: $setup.modelValue,
43
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.modelValue = $event),
44
- transition: "background duration-250 ease-in-out",
45
- outline: "focus-within:none",
46
- flex: "~",
47
- border: "neutral-300 dark:neutral-700 data-[state=checked]:primary-200 data-[state=unchecked]:neutral-300 focus-within:neutral-800",
48
- bg: "data-[state=checked]:primary-400 data-[state=unchecked]:neutral-300 data-[state=checked]:dark:primary-400/80 dark:data-[state=unchecked]:neutral-800",
49
- relative: "",
50
- "h-7": "",
51
- w: "12.5",
52
- "rounded-full": "",
53
- shadow: "sm focus-within:shadow-neutral-800 focus-within:[0_0_0_1px] "
54
- }, {
55
- default: withCtx(() => [createVNode($setup["SwitchThumb"], {
56
- "my-auto": "",
57
- "size-6": "",
58
- flex: "",
59
- "items-center": "",
60
- "justify-center": "",
61
- "translate-x": "0.5 data-[state=checked]:full",
62
- "rounded-full": "",
63
- "bg-white": "",
64
- "text-xs": "",
65
- "shadow-xl": "",
66
- transition: "transform duration-250 ease-in-out",
67
- "will-change-transform": ""
68
- })]),
69
- _: 1
70
- }, 8, ["modelValue"]);
71
- }
72
- var Checkbox_default = /* @__PURE__ */ export_helper_default(Checkbox_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$14], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Checkbox/Checkbox.vue"]]);
73
-
74
- //#endregion
75
- //#region src/components/Form/Field/FieldCheckbox.vue?vue&type=script&setup=true&lang.ts
76
- var FieldCheckbox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
77
- __name: "FieldCheckbox",
78
- props: /* @__PURE__ */ mergeModels({
79
- label: {
80
- type: String,
81
- required: false
82
- },
83
- description: {
84
- type: String,
85
- required: false
86
- }
87
- }, {
88
- "modelValue": {
89
- type: Boolean,
90
- required: true
91
- },
92
- "modelModifiers": {}
93
- }),
94
- emits: ["update:modelValue"],
95
- setup(__props, { expose: __expose }) {
96
- __expose();
97
- const props = __props;
98
- const modelValue = useModel(__props, "modelValue");
99
- const __returned__ = {
100
- props,
101
- modelValue,
102
- Checkbox: Checkbox_default
103
- };
104
- Object.defineProperty(__returned__, "__isScriptSetup", {
105
- enumerable: false,
106
- value: true
107
- });
108
- return __returned__;
109
- }
110
- });
111
-
112
- //#endregion
113
- //#region src/components/Form/Field/FieldCheckbox.vue
114
- const _hoisted_1$11 = { flex: "~ col gap-4" };
115
- const _hoisted_2$7 = {
116
- flex: "~ row",
117
- "items-center": "",
118
- "gap-2": ""
119
- };
120
- const _hoisted_3$7 = { flex: "1" };
121
- const _hoisted_4$5 = { class: "flex items-center gap-1 text-sm font-medium" };
122
- const _hoisted_5$4 = { class: "text-xs text-neutral-500 dark:text-neutral-400" };
123
- function _sfc_render$13(_ctx, _cache, $props, $setup, $data, $options) {
124
- return openBlock(), createElementBlock("label", _hoisted_1$11, [createElementVNode("div", _hoisted_2$7, [createElementVNode("div", _hoisted_3$7, [createElementVNode("div", _hoisted_4$5, toDisplayString($setup.props.label), 1), createElementVNode("div", _hoisted_5$4, toDisplayString($setup.props.description), 1)]), createVNode($setup["Checkbox"], {
125
- modelValue: $setup.modelValue,
126
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.modelValue = $event)
127
- }, null, 8, ["modelValue"])])]);
128
- }
129
- var FieldCheckbox_default = /* @__PURE__ */ export_helper_default(FieldCheckbox_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$13], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Field/FieldCheckbox.vue"]]);
130
-
131
- //#endregion
132
- //#region src/components/Form/Input/Input.vue?vue&type=script&setup=true&lang.ts
133
- var Input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
134
- __name: "Input",
135
- props: /* @__PURE__ */ mergeModels({ type: {
136
- type: String,
137
- required: false
138
- } }, {
139
- "modelValue": {
140
- type: String,
141
- required: true
142
- },
143
- "modelModifiers": {}
144
- }),
145
- emits: ["update:modelValue"],
146
- setup(__props, { expose: __expose }) {
147
- __expose();
148
- const props = __props;
149
- const modelValue = useModel(__props, "modelValue");
150
- const __returned__ = {
151
- props,
152
- modelValue
153
- };
154
- Object.defineProperty(__returned__, "__isScriptSetup", {
155
- enumerable: false,
156
- value: true
157
- });
158
- return __returned__;
159
- }
160
- });
161
-
162
- //#endregion
163
- //#region src/components/Form/Input/Input.vue
164
- const _hoisted_1$10 = ["type"];
165
- function _sfc_render$12(_ctx, _cache, $props, $setup, $data, $options) {
166
- return withDirectives((openBlock(), createElementBlock("input", {
167
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.modelValue = $event),
168
- type: $setup.props.type || "text",
169
- border: "focus:primary-300 dark:focus:primary-400/50 2 solid neutral-100 dark:neutral-900",
170
- transition: "all duration-200 ease-in-out",
171
- text: "disabled:neutral-400 dark:disabled:neutral-600",
172
- cursor: "disabled:not-allowed",
173
- "w-full": "",
174
- "rounded-lg": "",
175
- "px-2": "",
176
- "py-1": "",
177
- "text-nowrap": "",
178
- "text-sm": "",
179
- "outline-none": "",
180
- shadow: "sm",
181
- bg: "neutral-50 dark:neutral-950 focus:neutral-50 dark:focus:neutral-900"
182
- }, null, 8, _hoisted_1$10)), [[vModelDynamic, $setup.modelValue]]);
183
- }
184
- var Input_default = /* @__PURE__ */ export_helper_default(Input_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$12], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Input/Input.vue"]]);
185
-
186
- //#endregion
187
- //#region src/components/Form/Field/FieldInput.vue?vue&type=script&setup=true&lang.ts
188
- var FieldInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
189
- __name: "FieldInput",
190
- props: /* @__PURE__ */ mergeModels({
191
- label: {
192
- type: String,
193
- required: false
194
- },
195
- description: {
196
- type: String,
197
- required: false
198
- },
199
- placeholder: {
200
- type: String,
201
- required: false
202
- },
203
- required: {
204
- type: Boolean,
205
- required: false
206
- },
207
- type: {
208
- type: String,
209
- required: false
210
- },
211
- inputClass: {
212
- type: String,
213
- required: false
214
- },
215
- singleLine: {
216
- type: Boolean,
217
- required: false,
218
- default: true
219
- }
220
- }, {
221
- "modelValue": {
222
- type: String,
223
- required: true
224
- },
225
- "modelModifiers": {}
226
- }),
227
- emits: ["update:modelValue"],
228
- setup(__props, { expose: __expose }) {
229
- __expose();
230
- const props = __props;
231
- const modelValue = useModel(__props, "modelValue");
232
- const __returned__ = {
233
- props,
234
- modelValue,
235
- Input: Input_default
236
- };
237
- Object.defineProperty(__returned__, "__isScriptSetup", {
238
- enumerable: false,
239
- value: true
240
- });
241
- return __returned__;
242
- }
243
- });
244
-
245
- //#endregion
246
- //#region src/components/Form/Field/FieldInput.vue
247
- const _hoisted_1$9 = { "max-w-full": "" };
248
- const _hoisted_2$6 = { flex: "~ col gap-4" };
249
- const _hoisted_3$6 = { class: "flex items-center gap-1 text-sm font-medium" };
250
- const _hoisted_4$4 = {
251
- key: 0,
252
- class: "text-red-500"
253
- };
254
- const _hoisted_5$3 = {
255
- class: "text-xs text-neutral-500 dark:text-neutral-400",
256
- "text-nowrap": ""
257
- };
258
- const _hoisted_6$3 = ["type", "placeholder"];
259
- function _sfc_render$11(_ctx, _cache, $props, $setup, $data, $options) {
260
- return openBlock(), createElementBlock("div", _hoisted_1$9, [createElementVNode("label", _hoisted_2$6, [createElementVNode("div", null, [createElementVNode("div", _hoisted_3$6, [createTextVNode(toDisplayString($setup.props.label) + " ", 1), $setup.props.required !== false ? (openBlock(), createElementBlock("span", _hoisted_4$4, "*")) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_5$3, toDisplayString($setup.props.description), 1)]), $props.singleLine ? (openBlock(), createBlock($setup["Input"], {
261
- key: 0,
262
- modelValue: $setup.modelValue,
263
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.modelValue = $event),
264
- type: $setup.props.type,
265
- placeholder: $setup.props.placeholder,
266
- class: normalizeClass($setup.props.inputClass)
267
- }, null, 8, [
268
- "modelValue",
269
- "type",
270
- "placeholder",
271
- "class"
272
- ])) : withDirectives((openBlock(), createElementBlock("textarea", {
273
- key: 1,
274
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $setup.modelValue = $event),
275
- type: $setup.props.type,
276
- placeholder: $setup.props.placeholder,
277
- class: normalizeClass($setup.props.inputClass),
278
- border: "focus:primary-300 dark:focus:primary-400/50 2 solid neutral-100 dark:neutral-900",
279
- transition: "all duration-200 ease-in-out",
280
- text: "disabled:neutral-400 dark:disabled:neutral-600",
281
- cursor: "disabled:not-allowed",
282
- "w-full": "",
283
- "rounded-lg": "",
284
- "px-2": "",
285
- "py-1": "",
286
- "text-sm": "",
287
- "outline-none": "",
288
- shadow: "sm",
289
- bg: "neutral-50 dark:neutral-950 focus:neutral-50 dark:focus:neutral-900"
290
- }, null, 10, _hoisted_6$3)), [[vModelText, $setup.modelValue]])])]);
291
- }
292
- var FieldInput_default = /* @__PURE__ */ export_helper_default(FieldInput_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$11], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Field/FieldInput.vue"]]);
293
-
294
- //#endregion
295
- //#region src/components/Form/Input/InputKeyValue.vue?vue&type=script&setup=true&lang.ts
296
- var InputKeyValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
297
- __name: "InputKeyValue",
298
- props: /* @__PURE__ */ mergeModels({
299
- name: {
300
- type: String,
301
- required: false
302
- },
303
- keyPlaceholder: {
304
- type: String,
305
- required: false
306
- },
307
- valuePlaceholder: {
308
- type: String,
309
- required: false
310
- }
311
- }, {
312
- "propertyKey": {
313
- type: String,
314
- required: true
315
- },
316
- "propertyKeyModifiers": {},
317
- "propertyValue": {
318
- type: String,
319
- required: true
320
- },
321
- "propertyValueModifiers": {}
322
- }),
323
- emits: ["update:propertyKey", "update:propertyValue"],
324
- setup(__props, { expose: __expose }) {
325
- __expose();
326
- const props = __props;
327
- const key = useModel(__props, "propertyKey");
328
- const value = useModel(__props, "propertyValue");
329
- const __returned__ = {
330
- props,
331
- key,
332
- value,
333
- Input: Input_default
334
- };
335
- Object.defineProperty(__returned__, "__isScriptSetup", {
336
- enumerable: false,
337
- value: true
338
- });
339
- return __returned__;
340
- }
341
- });
342
-
343
- //#endregion
344
- //#region src/components/Form/Input/InputKeyValue.vue
345
- const _hoisted_1$8 = { flex: "~ gap-2" };
346
- function _sfc_render$10(_ctx, _cache, $props, $setup, $data, $options) {
347
- return openBlock(), createElementBlock("div", _hoisted_1$8, [createVNode($setup["Input"], {
348
- modelValue: $setup.key,
349
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.key = $event),
350
- placeholder: $setup.props.keyPlaceholder,
351
- class: "w-1/2"
352
- }, null, 8, ["modelValue", "placeholder"]), createVNode($setup["Input"], {
353
- modelValue: $setup.value,
354
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $setup.value = $event),
355
- placeholder: $setup.props.valuePlaceholder,
356
- class: "w-1/2"
357
- }, null, 8, ["modelValue", "placeholder"])]);
358
- }
359
- var InputKeyValue_default = /* @__PURE__ */ export_helper_default(InputKeyValue_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$10], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Input/InputKeyValue.vue"]]);
360
-
361
- //#endregion
362
- //#region src/components/Form/Field/FieldKeyValues.vue?vue&type=script&setup=true&lang.ts
363
- var FieldKeyValues_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
364
- __name: "FieldKeyValues",
365
- props: /* @__PURE__ */ mergeModels({
366
- label: {
367
- type: String,
368
- required: false
369
- },
370
- description: {
371
- type: String,
372
- required: false
373
- },
374
- name: {
375
- type: String,
376
- required: false
377
- },
378
- keyPlaceholder: {
379
- type: String,
380
- required: false
381
- },
382
- valuePlaceholder: {
383
- type: String,
384
- required: false
385
- },
386
- required: {
387
- type: Boolean,
388
- required: false
389
- },
390
- inputClass: {
391
- type: String,
392
- required: false
393
- }
394
- }, {
395
- "modelValue": {
396
- type: Array,
397
- required: true
398
- },
399
- "modelModifiers": {}
400
- }),
401
- emits: /* @__PURE__ */ mergeModels(["remove", "add"], ["update:modelValue"]),
402
- setup(__props, { expose: __expose, emit: __emit }) {
403
- __expose();
404
- const props = __props;
405
- const emit = __emit;
406
- const keyValues = useModel(__props, "modelValue");
407
- const inputKey = ref("");
408
- const inputValue = ref("");
409
- watch([inputKey, inputValue], () => {
410
- emit("add", inputKey.value, inputValue.value);
411
- });
412
- const __returned__ = {
413
- props,
414
- emit,
415
- keyValues,
416
- inputKey,
417
- inputValue,
418
- InputKeyValue: InputKeyValue_default
419
- };
420
- Object.defineProperty(__returned__, "__isScriptSetup", {
421
- enumerable: false,
422
- value: true
423
- });
424
- return __returned__;
425
- }
426
- });
427
-
428
- //#endregion
429
- //#region src/components/Form/Field/FieldKeyValues.vue
430
- const _hoisted_1$7 = { "max-w-full": "" };
431
- const _hoisted_2$5 = { flex: "~ col gap-2" };
432
- const _hoisted_3$5 = { class: "flex items-center gap-1 text-sm font-medium" };
433
- const _hoisted_4$3 = {
434
- key: 0,
435
- class: "text-red-500"
436
- };
437
- const _hoisted_5$2 = {
438
- class: "text-xs text-neutral-500 dark:text-neutral-400",
439
- "text-nowrap": ""
440
- };
441
- const _hoisted_6$2 = { flex: "~ col gap-2" };
442
- const _hoisted_7$2 = ["onClick"];
443
- function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
444
- const _directive_auto_animate = resolveDirective("auto-animate");
445
- return openBlock(), createElementBlock("div", _hoisted_1$7, [createElementVNode("label", _hoisted_2$5, [createElementVNode("div", null, [createElementVNode("div", _hoisted_3$5, [createTextVNode(toDisplayString($setup.props.label) + " ", 1), $setup.props.required !== false ? (openBlock(), createElementBlock("span", _hoisted_4$3, "*")) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_5$2, toDisplayString($setup.props.description), 1)]), withDirectives((openBlock(), createElementBlock("div", _hoisted_6$2, [(openBlock(true), createElementBlock(Fragment, null, renderList($setup.keyValues, (keyValue, index) => {
446
- return openBlock(), createElementBlock("div", {
447
- key: index,
448
- "w-full": "",
449
- flex: "",
450
- "items-center": "",
451
- "gap-2": ""
452
- }, [createVNode($setup["InputKeyValue"], {
453
- "property-key": keyValue.key,
454
- "onUpdate:propertyKey": ($event) => keyValue.key = $event,
455
- "property-value": keyValue.value,
456
- "onUpdate:propertyValue": ($event) => keyValue.value = $event,
457
- "key-placeholder": $setup.props.keyPlaceholder,
458
- "value-placeholder": $setup.props.valuePlaceholder,
459
- "w-full": ""
460
- }, null, 8, [
461
- "property-key",
462
- "onUpdate:propertyKey",
463
- "property-value",
464
- "onUpdate:propertyValue",
465
- "key-placeholder",
466
- "value-placeholder"
467
- ]), createElementVNode("button", { onClick: ($event) => $setup.emit("remove", index) }, [..._cache[0] || (_cache[0] = [createElementVNode("div", {
468
- "i-solar:minus-circle-line-duotone": "",
469
- size: "6"
470
- }, null, -1)])], 8, _hoisted_7$2)]);
471
- }), 128))])), [[_directive_auto_animate]])])]);
472
- }
473
- var FieldKeyValues_default = /* @__PURE__ */ export_helper_default(FieldKeyValues_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$9], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Field/FieldKeyValues.vue"]]);
474
-
475
- //#endregion
476
- //#region src/components/Form/Range/Range.vue?vue&type=script&setup=true&lang.ts
477
- var Range_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
478
- __name: "Range",
479
- props: /* @__PURE__ */ mergeModels({
480
- min: {
481
- type: Number,
482
- required: false,
483
- default: 0
484
- },
485
- max: {
486
- type: Number,
487
- required: false,
488
- default: 100
489
- },
490
- step: {
491
- type: Number,
492
- required: false,
493
- default: 1
494
- },
495
- disabled: {
496
- type: Boolean,
497
- required: false,
498
- default: false
499
- },
500
- thumbColor: {
501
- type: String,
502
- required: false,
503
- default: "#9090906e"
504
- },
505
- trackColor: {
506
- type: String,
507
- required: false,
508
- default: "gray"
509
- },
510
- trackValueColor: {
511
- type: String,
512
- required: false,
513
- default: "red"
514
- }
515
- }, {
516
- "modelValue": {
517
- type: Number,
518
- required: true
519
- },
520
- "modelModifiers": {}
521
- }),
522
- emits: ["update:modelValue"],
523
- setup(__props, { expose: __expose }) {
524
- __expose();
525
- const props = __props;
526
- const modelValue = useModel(__props, "modelValue");
527
- const scaledMin = computed(() => props.min * 1e4);
528
- const scaledMax = computed(() => props.max * 1e4);
529
- const scaledStep = computed(() => props.step * 1e4);
530
- const sliderRef = ref();
531
- const sliderValue = computed({
532
- get: () => modelValue.value * 1e4,
533
- set: (value) => {
534
- modelValue.value = value / 1e4;
535
- updateTrackColor();
536
- }
537
- });
538
- onMounted(() => {
539
- updateTrackColor();
540
- });
541
- function updateTrackColor() {
542
- if (!sliderRef.value) return;
543
- sliderRef.value.style.setProperty("--value", sliderRef.value.value);
544
- sliderRef.value.style.setProperty("--min", !sliderRef.value.min ? props.min.toString() : sliderRef.value.min);
545
- sliderRef.value.style.setProperty("--max", !sliderRef.value.max ? props.max.toString() : sliderRef.value.max);
546
- }
547
- function handleInput(e) {
548
- const target = e.target;
549
- target.style.setProperty("--value", target.value);
550
- }
551
- const __returned__ = {
552
- props,
553
- modelValue,
554
- scaledMin,
555
- scaledMax,
556
- scaledStep,
557
- sliderRef,
558
- sliderValue,
559
- updateTrackColor,
560
- handleInput
561
- };
562
- Object.defineProperty(__returned__, "__isScriptSetup", {
563
- enumerable: false,
564
- value: true
565
- });
566
- return __returned__;
567
- }
568
- });
569
-
570
- //#endregion
571
- //#region src/components/Form/Range/Range.vue
572
- const _hoisted_1$6 = [
573
- "min",
574
- "max",
575
- "step"
576
- ];
577
- function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
578
- return withDirectives((openBlock(), createElementBlock("input", {
579
- ref: "sliderRef",
580
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.sliderValue = $event),
581
- type: "range",
582
- min: $setup.scaledMin,
583
- max: $setup.scaledMax,
584
- step: $setup.scaledStep,
585
- class: "slider-progress form_input-range",
586
- onInput: $setup.handleInput
587
- }, null, 40, _hoisted_1$6)), [[
588
- vModelText,
589
- $setup.sliderValue,
590
- void 0,
591
- { number: true }
592
- ]]);
593
- }
594
- var Range_default = /* @__PURE__ */ export_helper_default(Range_vue_vue_type_script_setup_true_lang_default, [
595
- ["render", _sfc_render$8],
596
- ["__scopeId", "data-v-251c0c52"],
597
- ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Range/Range.vue"]
598
- ]);
599
-
600
- //#endregion
601
- //#region src/components/Form/Field/FieldRange.vue?vue&type=script&setup=true&lang.ts
602
- var FieldRange_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
603
- __name: "FieldRange",
604
- props: /* @__PURE__ */ mergeModels({
605
- min: {
606
- type: Number,
607
- required: false
608
- },
609
- max: {
610
- type: Number,
611
- required: false
612
- },
613
- step: {
614
- type: Number,
615
- required: false
616
- },
617
- label: {
618
- type: String,
619
- required: false
620
- },
621
- description: {
622
- type: String,
623
- required: false
624
- },
625
- formatValue: {
626
- type: Function,
627
- required: false
628
- }
629
- }, {
630
- "modelValue": {
631
- type: Number,
632
- required: true
633
- },
634
- "modelModifiers": {}
635
- }),
636
- emits: ["update:modelValue"],
637
- setup(__props, { expose: __expose }) {
638
- __expose();
639
- const props = __props;
640
- const modelValue = useModel(__props, "modelValue");
641
- const __returned__ = {
642
- props,
643
- modelValue,
644
- Range: Range_default
645
- };
646
- Object.defineProperty(__returned__, "__isScriptSetup", {
647
- enumerable: false,
648
- value: true
649
- });
650
- return __returned__;
651
- }
652
- });
653
-
654
- //#endregion
655
- //#region src/components/Form/Field/FieldRange.vue
656
- const _hoisted_1$5 = { flex: "~ col gap-4" };
657
- const _hoisted_2$4 = {
658
- flex: "~ row",
659
- "items-center": "",
660
- "gap-2": ""
661
- };
662
- const _hoisted_3$4 = { flex: "1" };
663
- const _hoisted_4$2 = { class: "flex items-center gap-1 text-sm font-medium" };
664
- const _hoisted_5$1 = { class: "text-xs text-neutral-500 dark:text-neutral-400" };
665
- const _hoisted_6$1 = { "font-mono": "" };
666
- const _hoisted_7$1 = {
667
- flex: "~ row",
668
- "items-center": "",
669
- "gap-2": ""
670
- };
671
- function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
672
- return openBlock(), createElementBlock("label", _hoisted_1$5, [createElementVNode("div", _hoisted_2$4, [createElementVNode("div", _hoisted_3$4, [createElementVNode("div", _hoisted_4$2, toDisplayString($props.label), 1), createElementVNode("div", _hoisted_5$1, toDisplayString($props.description), 1)]), createElementVNode("span", _hoisted_6$1, toDisplayString($setup.props.formatValue?.($setup.modelValue) || $setup.modelValue), 1)]), createElementVNode("div", _hoisted_7$1, [createVNode($setup["Range"], {
673
- modelValue: $setup.modelValue,
674
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.modelValue = $event),
675
- min: $props.min || 0,
676
- max: $props.max || 1,
677
- step: $props.step || .01,
678
- "w-full": ""
679
- }, null, 8, [
680
- "modelValue",
681
- "min",
682
- "max",
683
- "step"
684
- ])])]);
685
- }
686
- var FieldRange_default = /* @__PURE__ */ export_helper_default(FieldRange_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$7], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Field/FieldRange.vue"]]);
687
-
688
- //#endregion
689
- //#region src/components/Form/Field/FieldValues.vue?vue&type=script&setup=true&lang.ts
690
- var FieldValues_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
691
- __name: "FieldValues",
692
- props: /* @__PURE__ */ mergeModels({
693
- label: {
694
- type: String,
695
- required: false
696
- },
697
- description: {
698
- type: String,
699
- required: false
700
- },
701
- name: {
702
- type: String,
703
- required: false
704
- },
705
- valuePlaceholder: {
706
- type: String,
707
- required: false
708
- },
709
- required: {
710
- type: Boolean,
711
- required: false
712
- },
713
- inputClass: {
714
- type: String,
715
- required: false
716
- }
717
- }, {
718
- "modelValue": {
719
- type: Array,
720
- required: true
721
- },
722
- "modelModifiers": {}
723
- }),
724
- emits: /* @__PURE__ */ mergeModels(["remove", "add"], ["update:modelValue"]),
725
- setup(__props, { expose: __expose, emit: __emit }) {
726
- __expose();
727
- const props = __props;
728
- const emit = __emit;
729
- const items = useModel(__props, "modelValue");
730
- function addItem() {
731
- items.value.push("");
732
- emit("add");
733
- }
734
- function removeItem(index) {
735
- items.value.splice(index, 1);
736
- emit("remove", index);
737
- }
738
- const __returned__ = {
739
- props,
740
- emit,
741
- items,
742
- addItem,
743
- removeItem,
744
- Input: Input_default
745
- };
746
- Object.defineProperty(__returned__, "__isScriptSetup", {
747
- enumerable: false,
748
- value: true
749
- });
750
- return __returned__;
751
- }
752
- });
753
-
754
- //#endregion
755
- //#region src/components/Form/Field/FieldValues.vue
756
- const _hoisted_1$4 = { class: "max-w-full" };
757
- const _hoisted_2$3 = { class: "flex flex-col gap-2" };
758
- const _hoisted_3$3 = { class: "flex items-center gap-1 text-sm font-medium" };
759
- const _hoisted_4$1 = {
760
- key: 0,
761
- class: "text-red-500"
762
- };
763
- const _hoisted_5 = { class: "text-nowrap text-xs text-neutral-500 dark:text-neutral-400" };
764
- const _hoisted_6 = { class: "~ col gap-2" };
765
- const _hoisted_7 = ["onClick"];
766
- function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
767
- const _directive_auto_animate = resolveDirective("auto-animate");
768
- return openBlock(), createElementBlock("div", _hoisted_1$4, [createElementVNode("label", _hoisted_2$3, [createElementVNode("div", null, [createElementVNode("div", _hoisted_3$3, [createTextVNode(toDisplayString($setup.props.label) + " ", 1), $setup.props.required !== false ? (openBlock(), createElementBlock("span", _hoisted_4$1, "*")) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_5, toDisplayString($setup.props.description), 1)]), withDirectives((openBlock(), createElementBlock("div", _hoisted_6, [(openBlock(true), createElementBlock(Fragment, null, renderList($setup.items, (_, index) => {
769
- return openBlock(), createElementBlock("div", {
770
- key: index,
771
- class: "w-full flex items-center gap-2"
772
- }, [createVNode($setup["Input"], {
773
- modelValue: $setup.items[index],
774
- "onUpdate:modelValue": ($event) => $setup.items[index] = $event,
775
- placeholder: $setup.props.valuePlaceholder,
776
- class: "w-90%"
777
- }, null, 8, [
778
- "modelValue",
779
- "onUpdate:modelValue",
780
- "placeholder"
781
- ]), createElementVNode("button", {
782
- "i-solar:minus-circle-line-duotone": "",
783
- size: "6",
784
- class: "min-w-20px w-10% flex text-red-500",
785
- onClick: ($event) => $setup.removeItem(index)
786
- }, null, 8, _hoisted_7)]);
787
- }), 128)), createElementVNode("div", {
788
- "i-solar:add-circle-line-duotone": "",
789
- size: "6",
790
- class: "mt-2 w-4/5 text-blue-500",
791
- onClick: $setup.addItem
792
- })])), [[_directive_auto_animate]])])]);
793
- }
794
- var FieldValues_default = /* @__PURE__ */ export_helper_default(FieldValues_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$6], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Field/FieldValues.vue"]]);
795
-
796
- //#endregion
797
- //#region src/components/Form/Input/InputFile.vue?vue&type=script&setup=true&lang.ts
798
- var InputFile_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
799
- __name: "InputFile",
800
- props: /* @__PURE__ */ mergeModels({
801
- accept: {
802
- type: String,
803
- required: false
804
- },
805
- multiple: {
806
- type: Boolean,
807
- required: false
808
- }
809
- }, {
810
- "modelValue": {
811
- type: Array,
812
- required: false,
813
- default: () => []
814
- },
815
- "modelModifiers": {}
816
- }),
817
- emits: ["update:modelValue"],
818
- setup(__props, { expose: __expose }) {
819
- __expose();
820
- const files = useModel(__props, "modelValue");
821
- const firstFile = ref();
822
- const isDragging = ref(false);
823
- const isDraggingDebounced = useDebounce(isDragging, 150);
824
- function handleFileChange(e) {
825
- const input = e.target;
826
- if (input.files && input.files.length > 0) firstFile.value = input.files[0];
827
- files.value = Array.from(input.files || []);
828
- isDragging.value = false;
829
- }
830
- const __returned__ = {
831
- files,
832
- firstFile,
833
- isDragging,
834
- isDraggingDebounced,
835
- handleFileChange
836
- };
837
- Object.defineProperty(__returned__, "__isScriptSetup", {
838
- enumerable: false,
839
- value: true
840
- });
841
- return __returned__;
842
- }
843
- });
844
-
845
- //#endregion
846
- //#region src/components/Form/Input/InputFile.vue
847
- const _hoisted_1$3 = ["accept", "multiple"];
848
- const _hoisted_2$2 = {
849
- key: 0,
850
- text: "center",
851
- "text-sm": ""
852
- };
853
- const _hoisted_3$2 = {
854
- key: 1,
855
- text: "center",
856
- "text-sm": ""
857
- };
858
- function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
859
- return openBlock(), createElementBlock("label", {
860
- relative: "",
861
- class: normalizeClass(["min-h-[120px] flex flex-col cursor-pointer items-center justify-center rounded-xl p-6", [$setup.isDraggingDebounced ? "border-primary-400 dark:border-primary-600 hover:border-primary-300 dark:hover:border-primary-700" : "border-neutral-200 dark:border-neutral-700 hover:border-primary-300 dark:hover:border-primary-700", $setup.isDraggingDebounced ? "bg-primary-50/5 dark:bg-primary-900/5" : "bg-white/60 dark:bg-black/30 hover:bg-white/80 dark:hover:bg-black/40"]]),
862
- border: "dashed 2",
863
- transition: "all duration-300",
864
- "cursor-pointer": "",
865
- "opacity-95": "",
866
- hover: "scale-100 opacity-100 shadow-md dark:shadow-lg",
867
- onDragover: _cache[0] || (_cache[0] = ($event) => $setup.isDragging = true),
868
- onDragleave: _cache[1] || (_cache[1] = ($event) => $setup.isDragging = false)
869
- }, [createElementVNode("input", {
870
- type: "file",
871
- accept: $props.accept,
872
- multiple: $props.multiple,
873
- "cursor-pointer": "",
874
- class: "absolute inset-0 h-full w-full opacity-0",
875
- onChange: $setup.handleFileChange
876
- }, null, 40, _hoisted_1$3), renderSlot(_ctx.$slots, "default", {
877
- isDragging: $setup.isDraggingDebounced,
878
- firstFile: $setup.firstFile,
879
- files: $setup.files
880
- }, () => [createElementVNode("div", { class: normalizeClass(["flex flex-col items-center", [$setup.isDraggingDebounced ? "text-primary-500 dark:text-primary-400" : "text-neutral-400 dark:text-neutral-500"]]) }, [
881
- _cache[2] || (_cache[2] = createElementVNode("div", {
882
- "i-solar:upload-square-line-duotone": "",
883
- "mb-2": "",
884
- "text-5xl": ""
885
- }, null, -1)),
886
- _cache[3] || (_cache[3] = createElementVNode("p", {
887
- "font-medium": "",
888
- text: "center lg"
889
- }, " Upload ", -1)),
890
- $setup.isDraggingDebounced ? (openBlock(), createElementBlock("p", _hoisted_2$2, " Release to upload ")) : (openBlock(), createElementBlock("p", _hoisted_3$2, " Click or drag and drop a file here "))
891
- ], 2)])], 34);
892
- }
893
- var InputFile_default = /* @__PURE__ */ export_helper_default(InputFile_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$5], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Input/InputFile.vue"]]);
894
-
895
- //#endregion
896
- //#region src/components/Form/Radio/Radio.vue?vue&type=script&setup=true&lang.ts
897
- var Radio_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
898
- __name: "Radio",
899
- props: /* @__PURE__ */ mergeModels({
900
- id: {
901
- type: String,
902
- required: true
903
- },
904
- name: {
905
- type: String,
906
- required: true
907
- },
908
- value: {
909
- type: String,
910
- required: true
911
- },
912
- title: {
913
- type: String,
914
- required: true
915
- },
916
- deprecated: {
917
- type: Boolean,
918
- required: false,
919
- default: false
920
- }
921
- }, {
922
- "modelValue": {
923
- type: String,
924
- required: true
925
- },
926
- "modelModifiers": {}
927
- }),
928
- emits: ["update:modelValue"],
929
- setup(__props, { expose: __expose }) {
930
- __expose();
931
- const modelValue = useModel(__props, "modelValue");
932
- const __returned__ = { modelValue };
933
- Object.defineProperty(__returned__, "__isScriptSetup", {
934
- enumerable: false,
935
- value: true
936
- });
937
- return __returned__;
938
- }
939
- });
940
-
941
- //#endregion
942
- //#region src/components/Form/Radio/Radio.vue
943
- const _hoisted_1$2 = [
944
- "checked",
945
- "name",
946
- "value"
947
- ];
948
- const _hoisted_2$1 = { class: "relative mr-3 mt-0.5 flex-shrink-0" };
949
- const _hoisted_3$1 = { class: "w-full flex flex-col gap-2" };
950
- const _hoisted_4 = { class: "flex items-center" };
951
- function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
952
- return openBlock(), createElementBlock("label", {
953
- key: $props.id,
954
- class: normalizeClass(["form_radio relative flex cursor-pointer items-start rounded-xl p-3 pr-[20px]", [
955
- $setup.modelValue === $props.value ? "bg-primary-50 dark:bg-primary-900/20 border-primary-100 dark:border-primary-900 hover:border-primary-500/30 dark:hover:border-primary-400/30" : "bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-900 hover:border-primary-500/30 dark:hover:border-primary-400/30",
956
- $setup.modelValue === $props.value ? "form_radio-active" : "",
957
- $props.deprecated ? "opacity-60" : ""
958
- ]]),
959
- transition: "all duration-200 ease-in-out",
960
- border: "2 solid"
961
- }, [
962
- withDirectives(createElementVNode("input", {
963
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.modelValue = $event),
964
- checked: $setup.modelValue === $props.value,
965
- type: "radio",
966
- name: $props.name,
967
- value: $props.value,
968
- class: "absolute opacity-0"
969
- }, null, 8, _hoisted_1$2), [[vModelRadio, $setup.modelValue]]),
970
- createElementVNode("div", _hoisted_2$1, [createElementVNode("div", { class: normalizeClass(["size-5 border-2 rounded-full transition-colors duration-200", [$setup.modelValue === $props.value ? "border-primary-500 dark:border-primary-400" : "border-neutral-300 dark:border-neutral-600"]]) }, [createElementVNode("div", { class: normalizeClass(["absolute left-1/2 top-1/2 size-3 rounded-full transition-opacity duration-200 -translate-x-1/2 -translate-y-1/2", [$setup.modelValue === $props.value ? "opacity-100 bg-primary-500 dark:bg-primary-400" : "opacity-0"]]) }, null, 2)], 2)]),
971
- createElementVNode("div", _hoisted_3$1, [createElementVNode("div", _hoisted_4, [createElementVNode("span", { class: normalizeClass(["line-clamp-1 font-medium", [$setup.modelValue === $props.value ? "text-neutral-700 dark:text-neutral-300" : "text-neutral-700 dark:text-neutral-400"]]) }, toDisplayString($props.title), 3)])])
972
- ], 2);
973
- }
974
- var Radio_default = /* @__PURE__ */ export_helper_default(Radio_vue_vue_type_script_setup_true_lang_default, [
975
- ["render", _sfc_render$4],
976
- ["__scopeId", "data-v-fc242fb2"],
977
- ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Radio/Radio.vue"]
978
- ]);
979
-
980
- //#endregion
981
- //#region src/components/Form/Range/ColorHueRange.vue?vue&type=script&setup=true&lang.ts
982
- var ColorHueRange_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
983
- __name: "ColorHueRange",
984
- props: /* @__PURE__ */ mergeModels({
985
- disabled: {
986
- type: Boolean,
987
- required: false
988
- },
989
- class: {
990
- type: String,
991
- required: false
992
- }
993
- }, {
994
- "colorValue": {
995
- type: String,
996
- type: String,
997
- default: ""
998
- },
999
- "colorValueModifiers": {}
1000
- }),
1001
- emits: ["update:colorValue"],
1002
- setup(__props, { expose: __expose }) {
1003
- __expose();
1004
- const props = __props;
1005
- const colorValue = useModel(__props, "colorValue");
1006
- const __returned__ = {
1007
- props,
1008
- colorValue
1009
- };
1010
- Object.defineProperty(__returned__, "__isScriptSetup", {
1011
- enumerable: false,
1012
- value: true
1013
- });
1014
- return __returned__;
1015
- }
1016
- });
1017
-
1018
- //#endregion
1019
- //#region src/components/Form/Range/ColorHueRange.vue
1020
- const _hoisted_1$1 = ["disabled"];
1021
- function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
1022
- return withDirectives((openBlock(), createElementBlock("input", {
1023
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.colorValue = $event),
1024
- type: "range",
1025
- min: "0",
1026
- max: "360",
1027
- step: "0.01",
1028
- class: normalizeClass(["color-hue-range", [$setup.props.disabled ? "opacity-25 cursor-not-allowed" : "cursor-pointer", $setup.props.class || ""]]),
1029
- transition: "all ease-in-out duration-250",
1030
- disabled: $setup.props.disabled
1031
- }, null, 10, _hoisted_1$1)), [[vModelText, $setup.colorValue]]);
1032
- }
1033
- var ColorHueRange_default = /* @__PURE__ */ export_helper_default(ColorHueRange_vue_vue_type_script_setup_true_lang_default, [
1034
- ["render", _sfc_render$3],
1035
- ["__scopeId", "data-v-ab824765"],
1036
- ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Range/ColorHueRange.vue"]
1037
- ]);
1038
-
1039
- //#endregion
1040
- //#region src/components/Form/Select/Select.vue?vue&type=script&setup=true&lang.ts
1041
- var Select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1042
- __name: "Select",
1043
- props: /* @__PURE__ */ mergeModels({
1044
- options: {
1045
- type: Array,
1046
- required: true
1047
- },
1048
- placeholder: {
1049
- type: String,
1050
- required: false
1051
- },
1052
- disabled: {
1053
- type: Boolean,
1054
- required: false
1055
- },
1056
- title: {
1057
- type: String,
1058
- required: false
1059
- }
1060
- }, {
1061
- "modelValue": {
1062
- type: [String, Number],
1063
- required: true
1064
- },
1065
- "modelModifiers": {}
1066
- }),
1067
- emits: ["update:modelValue"],
1068
- setup(__props, { expose: __expose }) {
1069
- __expose();
1070
- const props = __props;
1071
- const modelValue = useModel(__props, "modelValue");
1072
- const selectedLabel = computed(() => {
1073
- const selected = props.options.find((opt) => opt.value === modelValue.value);
1074
- return selected ? selected.label : props.placeholder;
1075
- });
1076
- function selectOption(value) {
1077
- modelValue.value = value;
1078
- }
1079
- const __returned__ = {
1080
- props,
1081
- modelValue,
1082
- selectedLabel,
1083
- selectOption,
1084
- get VDropdown() {
1085
- return Dropdown;
1086
- }
1087
- };
1088
- Object.defineProperty(__returned__, "__isScriptSetup", {
1089
- enumerable: false,
1090
- value: true
1091
- });
1092
- return __returned__;
1093
- }
1094
- });
1095
-
1096
- //#endregion
1097
- //#region src/components/Form/Select/Select.vue
1098
- const _hoisted_1 = { class: "flex-1 truncate" };
1099
- const _hoisted_2 = { class: "min-w-[160px] flex flex-col gap-0.5 border border-neutral-200 rounded-lg bg-white p-1 shadow-lg dark:border-neutral-800 dark:bg-neutral-900" };
1100
- const _hoisted_3 = ["onClick"];
1101
- function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
1102
- return openBlock(), createBlock($setup["VDropdown"], {
1103
- "auto-size": "",
1104
- "auto-boundary-max-size": ""
1105
- }, {
1106
- popper: withCtx(({ hide }) => [createElementVNode("div", _hoisted_2, [(openBlock(true), createElementBlock(Fragment, null, renderList($setup.props.options, (option) => {
1107
- return openBlock(), createElementBlock("div", mergeProps({ ref_for: true }, {
1108
- ..._ctx.$attrs,
1109
- class: null,
1110
- style: null
1111
- }, {
1112
- key: option.value,
1113
- class: ["cursor-pointer rounded px-2 py-1.5 text-sm text-neutral-700 hover:bg-neutral-100 dark:text-neutral-200 dark:hover:bg-neutral-800", { "bg-neutral-100 dark:bg-neutral-800": $setup.modelValue === option.value }],
1114
- onClick: ($event) => {
1115
- $setup.selectOption(option.value);
1116
- hide();
1117
- }
1118
- }), toDisplayString(option.label), 17, _hoisted_3);
1119
- }), 128))])]),
1120
- default: withCtx(() => [createElementVNode("div", { class: normalizeClass(["min-w-[160px] flex cursor-pointer items-center justify-between gap-2 border rounded-lg bg-white p-2.5 text-xs text-neutral-700 shadow-sm outline-none transition-colors disabled:cursor-not-allowed dark:border-neutral-800 dark:bg-neutral-900 disabled:bg-neutral-100 hover:bg-neutral-50 dark:text-neutral-200 disabled:text-neutral-400 focus:ring-2 focus:ring-black/10 dark:disabled:bg-neutral-800 dark:hover:bg-neutral-800 dark:disabled:text-neutral-600", { "pointer-events-none": $setup.props.disabled }]) }, [createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "default", { label: $setup.selectedLabel }, () => [createTextVNode(toDisplayString($setup.selectedLabel), 1)])]), _cache[0] || (_cache[0] = createElementVNode("div", {
1121
- "i-solar:alt-arrow-down-bold-duotone": "",
1122
- class: "h-3.5 w-3.5 text-neutral-500 dark:text-neutral-400"
1123
- }, null, -1))], 2)]),
1124
- _: 3
1125
- });
1126
- }
1127
- var Select_default = /* @__PURE__ */ export_helper_default(Select_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$2], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Select/Select.vue"]]);
1128
-
1129
- //#endregion
1130
- //#region src/components/Form/Textarea/Basic.vue?vue&type=script&setup=true&lang.ts
1131
- var Basic_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1132
- __name: "Basic",
1133
- props: {
1134
- "modelValue": {
1135
- type: String,
1136
- default: ""
1137
- },
1138
- "modelModifiers": {}
1139
- },
1140
- emits: /* @__PURE__ */ mergeModels(["submit"], ["update:modelValue"]),
1141
- setup(__props, { expose: __expose, emit: __emit }) {
1142
- __expose();
1143
- const events = __emit;
1144
- const input = useModel(__props, "modelValue");
1145
- const textareaRef = ref();
1146
- const textareaHeight = ref("auto");
1147
- function onKeyDown(e) {
1148
- if (e.code === "Enter" && !e.shiftKey) {
1149
- e.preventDefault();
1150
- events("submit", input.value);
1151
- }
1152
- }
1153
- watch(input, () => {
1154
- textareaHeight.value = "auto";
1155
- requestAnimationFrame(() => {
1156
- if (!textareaRef.value) return;
1157
- textareaHeight.value = `${textareaRef.value.scrollHeight}px`;
1158
- });
1159
- }, { immediate: true });
1160
- const __returned__ = {
1161
- events,
1162
- input,
1163
- textareaRef,
1164
- textareaHeight,
1165
- onKeyDown
1166
- };
1167
- Object.defineProperty(__returned__, "__isScriptSetup", {
1168
- enumerable: false,
1169
- value: true
1170
- });
1171
- return __returned__;
1172
- }
1173
- });
1174
-
1175
- //#endregion
1176
- //#region src/components/Form/Textarea/Basic.vue
1177
- function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
1178
- return withDirectives((openBlock(), createElementBlock("textarea", {
1179
- ref: "textareaRef",
1180
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.input = $event),
1181
- style: normalizeStyle({ height: $setup.textareaHeight }),
1182
- onKeydown: $setup.onKeyDown
1183
- }, null, 36)), [[vModelText, $setup.input]]);
1184
- }
1185
- var Basic_default = /* @__PURE__ */ export_helper_default(Basic_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render$1], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Textarea/Basic.vue"]]);
1186
-
1187
- //#endregion
1188
- //#region src/components/Form/Textarea/Textarea.vue?vue&type=script&setup=true&lang.ts
1189
- var Textarea_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1190
- __name: "Textarea",
1191
- props: {
1192
- "modelValue": {
1193
- type: String,
1194
- default: ""
1195
- },
1196
- "modelModifiers": {}
1197
- },
1198
- emits: ["update:modelValue"],
1199
- setup(__props, { expose: __expose }) {
1200
- __expose();
1201
- const modelValue = useModel(__props, "modelValue");
1202
- const __returned__ = {
1203
- modelValue,
1204
- BasicTextarea: Basic_default
1205
- };
1206
- Object.defineProperty(__returned__, "__isScriptSetup", {
1207
- enumerable: false,
1208
- value: true
1209
- });
1210
- return __returned__;
1211
- }
1212
- });
1213
-
1214
- //#endregion
1215
- //#region src/components/Form/Textarea/Textarea.vue
1216
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
1217
- return openBlock(), createBlock($setup["BasicTextarea"], {
1218
- modelValue: $setup.modelValue,
1219
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.modelValue = $event),
1220
- border: "focus:primary-300 dark:focus:primary-400/50 2 solid neutral-100 dark:neutral-900",
1221
- transition: "all duration-200 ease-in-out",
1222
- text: "disabled:neutral-400 dark:disabled:neutral-600",
1223
- cursor: "disabled:not-allowed",
1224
- "w-full": "",
1225
- "rounded-lg": "",
1226
- "px-2": "",
1227
- "py-1": "",
1228
- "text-sm": "",
1229
- "outline-none": "",
1230
- shadow: "sm",
1231
- bg: "neutral-50 dark:neutral-950 focus:neutral-50 dark:focus:neutral-900"
1232
- }, null, 8, ["modelValue"]);
1233
- }
1234
- var Textarea_default = /* @__PURE__ */ export_helper_default(Textarea_vue_vue_type_script_setup_true_lang_default, [["render", _sfc_render], ["__file", "/home/runner/work/airi/airi/packages/ui/src/components/Form/Textarea/Textarea.vue"]]);
1235
-
1236
- //#endregion
1237
- export { Basic_default, Checkbox_default, ColorHueRange_default, FieldCheckbox_default, FieldInput_default, FieldKeyValues_default, FieldRange_default, FieldValues_default, InputFile_default, InputKeyValue_default, Input_default, Radio_default, Range_default, Select_default, Textarea_default };