ui-thing 0.1.9 → 0.1.11
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.
- package/CHANGELOG.md +32 -4
- package/dist/index.js +238 -136
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/comps.ts +38 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,46 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## v0.1.
|
|
3
|
+
## v0.1.11
|
|
4
4
|
|
|
5
|
-
[compare changes](https://github.com/BayBreezy/ui-thing-cli/compare/v0.1.
|
|
5
|
+
[compare changes](https://github.com/BayBreezy/ui-thing-cli/compare/v0.1.10...v0.1.11)
|
|
6
6
|
|
|
7
7
|
### 🏡 Chore
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
- Bump deps ([557e58c](https://github.com/BayBreezy/ui-thing-cli/commit/557e58c))
|
|
9
|
+
- Update component array ([7e94f02](https://github.com/BayBreezy/ui-thing-cli/commit/7e94f02))
|
|
11
10
|
|
|
12
11
|
### ❤️ Contributors
|
|
13
12
|
|
|
14
13
|
- Behon Baker <behon.baker@yahoo.com>
|
|
15
14
|
|
|
15
|
+
## v0.1.10
|
|
16
|
+
|
|
17
|
+
[compare changes](https://github.com/BayBreezy/ui-thing-cli/compare/v0.1.9...v0.1.10)
|
|
18
|
+
|
|
19
|
+
### 🚀 Enhancements
|
|
20
|
+
|
|
21
|
+
- Add currency-input component ([bc0f75b](https://github.com/BayBreezy/ui-thing-cli/commit/bc0f75b))
|
|
22
|
+
|
|
23
|
+
### 🏡 Chore
|
|
24
|
+
|
|
25
|
+
- Bump deps ([6e6dcf6](https://github.com/BayBreezy/ui-thing-cli/commit/6e6dcf6))
|
|
26
|
+
|
|
27
|
+
### ❤️ Contributors
|
|
28
|
+
|
|
29
|
+
- BayBreezy <behon.baker@yahoo.com>
|
|
30
|
+
|
|
31
|
+
## v0.1.9
|
|
32
|
+
|
|
33
|
+
[compare changes](https://github.com/BayBreezy/ui-thing-cli/compare/v0.1.8...v0.1.9)
|
|
34
|
+
|
|
35
|
+
### 🏡 Chore
|
|
36
|
+
|
|
37
|
+
- **form-elements:** Use nuxt's `useId` composable instead of the one from radix-vue ([17a952e](https://github.com/BayBreezy/ui-thing-cli/commit/17a952e))
|
|
38
|
+
- Bump deps ([557e58c](https://github.com/BayBreezy/ui-thing-cli/commit/557e58c))
|
|
39
|
+
|
|
40
|
+
### ❤️ Contributors
|
|
41
|
+
|
|
42
|
+
- Behon Baker <behon.baker@yahoo.com>
|
|
43
|
+
|
|
16
44
|
## v0.1.8
|
|
17
45
|
|
|
18
46
|
[compare changes](https://github.com/BayBreezy/ui-thing-cli/compare/v0.1.7...v0.1.8)
|
package/dist/index.js
CHANGED
|
@@ -2329,6 +2329,39 @@ export const buttonStyles = tv({
|
|
|
2329
2329
|
|
|
2330
2330
|
const props = defineProps<ContextMenuTriggerProps>();
|
|
2331
2331
|
</script>
|
|
2332
|
+
`}],utils:[],composables:[],plugins:[]},{name:"Currency Input",value:"currency-input",deps:["vue-currency-input"],files:[{fileName:"CurrencyInput.vue",dirPath:"components/UI",fileContent:`<template>\r
|
|
2333
|
+
<input ref="inputRef" type="text" :class="styles({ class: props.class })" v-bind="props" />\r
|
|
2334
|
+
</template>\r
|
|
2335
|
+
\r
|
|
2336
|
+
<script lang="ts" setup>\r
|
|
2337
|
+
import { defu } from "defu";\r
|
|
2338
|
+
import { useCurrencyInput } from "vue-currency-input";\r
|
|
2339
|
+
import type { CurrencyInputOptions } from "vue-currency-input";\r
|
|
2340
|
+
\r
|
|
2341
|
+
const props = defineProps<{\r
|
|
2342
|
+
class?: any;\r
|
|
2343
|
+
id?: string;\r
|
|
2344
|
+
name?: string;\r
|
|
2345
|
+
placeholder?: string;\r
|
|
2346
|
+
disabled?: boolean;\r
|
|
2347
|
+
required?: boolean;\r
|
|
2348
|
+
modelValue?: any;\r
|
|
2349
|
+
options?: CurrencyInputOptions;\r
|
|
2350
|
+
}>();\r
|
|
2351
|
+
\r
|
|
2352
|
+
const { inputRef } = useCurrencyInput(\r
|
|
2353
|
+
defu({}, props.options, {\r
|
|
2354
|
+
currency: "USD",\r
|
|
2355
|
+
locale: "en-US",\r
|
|
2356
|
+
hideCurrencySymbolOnFocus: false,\r
|
|
2357
|
+
hideGroupingSeparatorOnFocus: false,\r
|
|
2358
|
+
})\r
|
|
2359
|
+
);\r
|
|
2360
|
+
\r
|
|
2361
|
+
const styles = tv({\r
|
|
2362
|
+
base: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-[16px] ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground file:hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 sm:text-sm",\r
|
|
2363
|
+
});\r
|
|
2364
|
+
</script>\r
|
|
2332
2365
|
`}],utils:[],composables:[],plugins:[]},{name:"DataTables.net",value:"datatable",deps:["datatables.net-buttons-dt","datatables.net-responsive-dt","datatables.net-searchbuilder-dt","datatables.net-select-dt","datatables.net-vue3","jszip"],plugins:[{fileName:"datatables.client.ts",dirPath:"plugins",fileContent:`import DataTablesCore from "datatables.net";
|
|
2333
2366
|
import DataTable from "datatables.net-vue3";
|
|
2334
2367
|
import JSZip from "jszip";
|
|
@@ -3414,57 +3447,57 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
3414
3447
|
}\r
|
|
3415
3448
|
}\r
|
|
3416
3449
|
</style>\r
|
|
3417
|
-
`}],utils:[],composables:[]},{name:"Date Field",value:"date-field",devDeps:["@internationalized/date"],files:[{fileName:"DateField.vue",dirPath:"components/UI",fileContent:`<template
|
|
3418
|
-
<DateFieldRoot
|
|
3419
|
-
v-slot="{ segments, modelValue, isInvalid }"
|
|
3420
|
-
:class="styles({ class: props.class })"
|
|
3421
|
-
v-bind="props"
|
|
3422
|
-
v-model="localModel"
|
|
3423
|
-
|
|
3424
|
-
<template v-for="item in segments" :key="item.part"
|
|
3425
|
-
<DateFieldInput
|
|
3426
|
-
v-if="item.part === 'literal'"
|
|
3427
|
-
:part="item.part"
|
|
3428
|
-
class="flex items-center justify-center text-muted-foreground"
|
|
3429
|
-
|
|
3430
|
-
<Icon :name="separatorIcon" class="text-muted-foreground" v-if="separatorIcon"
|
|
3431
|
-
<span class="mx-1 text-muted-foreground" v-else-if="separator">{{ separator }}</span
|
|
3432
|
-
</DateFieldInput
|
|
3433
|
-
<DateFieldInput
|
|
3434
|
-
v-else
|
|
3435
|
-
:part="item.part"
|
|
3436
|
-
class="flex cursor-text items-center rounded px-1 transition focus:outline-none focus:ring-1 focus:ring-ring aria-[valuetext=Empty]:text-muted-foreground"
|
|
3437
|
-
|
|
3438
|
-
{{ item.value }}
|
|
3439
|
-
</DateFieldInput
|
|
3440
|
-
</template
|
|
3441
|
-
</DateFieldRoot
|
|
3442
|
-
</template
|
|
3443
|
-
|
|
3444
|
-
<script lang="ts" setup
|
|
3445
|
-
import { type DateValue } from "@internationalized/date"
|
|
3446
|
-
import { DateFieldInput, DateFieldRoot } from "radix-vue"
|
|
3447
|
-
import type { DateFieldRootEmits, DateFieldRootProps } from "radix-vue"
|
|
3448
|
-
|
|
3449
|
-
const props = withDefaults(
|
|
3450
|
-
defineProps
|
|
3451
|
-
DateFieldRootProps & {
|
|
3452
|
-
class?: any
|
|
3453
|
-
separator?: string
|
|
3454
|
-
separatorIcon?: string
|
|
3455
|
-
}
|
|
3456
|
-
>()
|
|
3457
|
-
{
|
|
3458
|
-
separator: "/"
|
|
3459
|
-
}
|
|
3460
|
-
)
|
|
3461
|
-
const emits = defineEmits<DateFieldRootEmits>()
|
|
3462
|
-
const localModel = defineModel<DateValue>()
|
|
3463
|
-
|
|
3464
|
-
const styles = tv({
|
|
3465
|
-
base: "
|
|
3466
|
-
})
|
|
3467
|
-
</script
|
|
3450
|
+
`}],utils:[],composables:[]},{name:"Date Field",value:"date-field",devDeps:["@internationalized/date"],files:[{fileName:"DateField.vue",dirPath:"components/UI",fileContent:`<template>\r
|
|
3451
|
+
<DateFieldRoot\r
|
|
3452
|
+
v-slot="{ segments, modelValue, isInvalid }"\r
|
|
3453
|
+
:class="styles({ class: props.class })"\r
|
|
3454
|
+
v-bind="props"\r
|
|
3455
|
+
v-model="localModel"\r
|
|
3456
|
+
>\r
|
|
3457
|
+
<template v-for="item in segments" :key="item.part">\r
|
|
3458
|
+
<DateFieldInput\r
|
|
3459
|
+
v-if="item.part === 'literal'"\r
|
|
3460
|
+
:part="item.part"\r
|
|
3461
|
+
class="flex items-center justify-center text-muted-foreground"\r
|
|
3462
|
+
>\r
|
|
3463
|
+
<Icon :name="separatorIcon" class="text-muted-foreground" v-if="separatorIcon" />\r
|
|
3464
|
+
<span class="mx-1 text-muted-foreground" v-else-if="separator">{{ separator }}</span>\r
|
|
3465
|
+
</DateFieldInput>\r
|
|
3466
|
+
<DateFieldInput\r
|
|
3467
|
+
v-else\r
|
|
3468
|
+
:part="item.part"\r
|
|
3469
|
+
class="flex cursor-text items-center rounded px-1 transition focus:outline-none focus:ring-1 focus:ring-ring aria-[valuetext=Empty]:text-muted-foreground"\r
|
|
3470
|
+
>\r
|
|
3471
|
+
{{ item.value }}\r
|
|
3472
|
+
</DateFieldInput>\r
|
|
3473
|
+
</template>\r
|
|
3474
|
+
</DateFieldRoot>\r
|
|
3475
|
+
</template>\r
|
|
3476
|
+
\r
|
|
3477
|
+
<script lang="ts" setup>\r
|
|
3478
|
+
import { type DateValue } from "@internationalized/date";\r
|
|
3479
|
+
import { DateFieldInput, DateFieldRoot } from "radix-vue";\r
|
|
3480
|
+
import type { DateFieldRootEmits, DateFieldRootProps } from "radix-vue";\r
|
|
3481
|
+
\r
|
|
3482
|
+
const props = withDefaults(\r
|
|
3483
|
+
defineProps<\r
|
|
3484
|
+
DateFieldRootProps & {\r
|
|
3485
|
+
class?: any;\r
|
|
3486
|
+
separator?: string;\r
|
|
3487
|
+
separatorIcon?: string;\r
|
|
3488
|
+
}\r
|
|
3489
|
+
>(),\r
|
|
3490
|
+
{\r
|
|
3491
|
+
separator: "/",\r
|
|
3492
|
+
}\r
|
|
3493
|
+
);\r
|
|
3494
|
+
const emits = defineEmits<DateFieldRootEmits>();\r
|
|
3495
|
+
const localModel = defineModel<DateValue>();\r
|
|
3496
|
+
\r
|
|
3497
|
+
const styles = tv({\r
|
|
3498
|
+
base: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-[16px] ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground file:hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[disabled]:cursor-not-allowed data-[invalid]:border-destructive data-[disabled]:opacity-50 sm:text-sm",\r
|
|
3499
|
+
});\r
|
|
3500
|
+
</script>\r
|
|
3468
3501
|
`}],utils:[],composables:[],plugins:[]},{name:"Datepicker",value:"datepicker",devDeps:["@samk-dev/nuxt-vcalendar"],nuxtModules:["@samk-dev/nuxt-vcalendar"],instructions:["You can customize the datepicker by adding options to your nuxt.config.js file"],files:[{fileName:"Datepicker.vue",dirPath:"components/UI",fileContent:`<template>
|
|
3469
3502
|
<ClientOnly>
|
|
3470
3503
|
<VDatePicker
|
|
@@ -4891,33 +4924,33 @@ export function useFormField() {
|
|
|
4891
4924
|
defineOptions({ inheritAttrs: false });
|
|
4892
4925
|
const props = defineProps<HoverCardTriggerProps>();
|
|
4893
4926
|
</script>
|
|
4894
|
-
`}],utils:[],composables:[],plugins:[]},{name:"Input",value:"input",devDeps:["@vueuse/core"],files:[{fileName:"Input.vue",dirPath:"components/UI",fileContent:`<template
|
|
4895
|
-
<input :class="styles({ class: props.class })" v-bind="props" v-model="localModel"
|
|
4896
|
-
</template
|
|
4897
|
-
|
|
4898
|
-
<script lang="ts" setup
|
|
4899
|
-
const props = withDefaults(
|
|
4900
|
-
defineProps<{
|
|
4901
|
-
class?: any
|
|
4902
|
-
id?: string
|
|
4903
|
-
name?: string
|
|
4904
|
-
placeholder?: string
|
|
4905
|
-
disabled?: boolean
|
|
4906
|
-
required?: boolean
|
|
4907
|
-
type?: string
|
|
4908
|
-
modelValue?: any
|
|
4909
|
-
}>()
|
|
4910
|
-
{ type: "text" }
|
|
4911
|
-
)
|
|
4912
|
-
const emits = defineEmits<{
|
|
4913
|
-
"update:modelValue": [value: any]
|
|
4914
|
-
}>()
|
|
4915
|
-
const localModel = useVModel(props, "modelValue", emits)
|
|
4916
|
-
|
|
4917
|
-
const styles = tv({
|
|
4918
|
-
base: "
|
|
4919
|
-
})
|
|
4920
|
-
</script
|
|
4927
|
+
`}],utils:[],composables:[],plugins:[]},{name:"Input",value:"input",devDeps:["@vueuse/core"],files:[{fileName:"Input.vue",dirPath:"components/UI",fileContent:`<template>\r
|
|
4928
|
+
<input :class="styles({ class: props.class })" v-bind="props" v-model="localModel" />\r
|
|
4929
|
+
</template>\r
|
|
4930
|
+
\r
|
|
4931
|
+
<script lang="ts" setup>\r
|
|
4932
|
+
const props = withDefaults(\r
|
|
4933
|
+
defineProps<{\r
|
|
4934
|
+
class?: any;\r
|
|
4935
|
+
id?: string;\r
|
|
4936
|
+
name?: string;\r
|
|
4937
|
+
placeholder?: string;\r
|
|
4938
|
+
disabled?: boolean;\r
|
|
4939
|
+
required?: boolean;\r
|
|
4940
|
+
type?: string;\r
|
|
4941
|
+
modelValue?: any;\r
|
|
4942
|
+
}>(),\r
|
|
4943
|
+
{ type: "text" }\r
|
|
4944
|
+
);\r
|
|
4945
|
+
const emits = defineEmits<{\r
|
|
4946
|
+
"update:modelValue": [value: any];\r
|
|
4947
|
+
}>();\r
|
|
4948
|
+
const localModel = useVModel(props, "modelValue", emits);\r
|
|
4949
|
+
\r
|
|
4950
|
+
const styles = tv({\r
|
|
4951
|
+
base: "h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-[16px] ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground file:hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 sm:text-sm",\r
|
|
4952
|
+
});\r
|
|
4953
|
+
</script>\r
|
|
4921
4954
|
`}],utils:[],composables:[],plugins:[]},{name:"Keyboard Key",value:"kbd",files:[{fileName:"Kbd.vue",dirPath:"components/UI",fileContent:`<template>
|
|
4922
4955
|
<Primitive
|
|
4923
4956
|
:class="styles({ size, class: props.class })"
|
|
@@ -5591,64 +5624,64 @@ export function useFormField() {
|
|
|
5591
5624
|
base: "flex cursor-pointer select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[highlighted]:bg-accent data-[state=open]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:text-accent-foreground",
|
|
5592
5625
|
});
|
|
5593
5626
|
</script>
|
|
5594
|
-
`}],utils:[],composables:[],plugins:[]},{name:"Native Select",value:"native-select",devDeps:["@vueuse/core"],files:[{fileName:"NativeSelect.vue",dirPath:"components/UI",fileContent:`<template
|
|
5595
|
-
<div class="relative"
|
|
5596
|
-
<select
|
|
5597
|
-
ref="select"
|
|
5598
|
-
:multiple="multiple"
|
|
5599
|
-
:name="name"
|
|
5600
|
-
:size="size"
|
|
5601
|
-
:id="id"
|
|
5602
|
-
:placeholder="placeholder"
|
|
5603
|
-
:disabled="disabled"
|
|
5604
|
-
:required="required"
|
|
5605
|
-
v-model="localModel"
|
|
5606
|
-
:class="styles({ class: props.class })"
|
|
5607
|
-
|
|
5608
|
-
<slot></slot
|
|
5609
|
-
</select
|
|
5610
|
-
<span class="pointer-events-none absolute inset-y-0 right-3 flex items-center justify-center"
|
|
5611
|
-
<slot name="trailingIcon"
|
|
5612
|
-
<Icon
|
|
5613
|
-
:name="trailingIcon || 'lucide:chevrons-up-down'"
|
|
5614
|
-
class="h-4 w-4 text-muted-foreground"
|
|
5615
|
-
|
|
5616
|
-
</slot
|
|
5617
|
-
</span
|
|
5618
|
-
</div
|
|
5619
|
-
</template
|
|
5620
|
-
|
|
5621
|
-
<script lang="ts" setup
|
|
5622
|
-
const props = defineProps<{
|
|
5623
|
-
class?: any
|
|
5624
|
-
id?: string
|
|
5625
|
-
name?: string
|
|
5626
|
-
placeholder?: string
|
|
5627
|
-
disabled?: boolean
|
|
5628
|
-
required?: boolean
|
|
5629
|
-
modelValue?: any
|
|
5630
|
-
multiple?: boolean
|
|
5631
|
-
size?: number
|
|
5632
|
-
autofocus?: boolean
|
|
5633
|
-
trailingIcon?: string
|
|
5634
|
-
}>()
|
|
5635
|
-
const styles = tv({
|
|
5636
|
-
base: "
|
|
5637
|
-
})
|
|
5638
|
-
|
|
5639
|
-
const select = ref<HTMLSelectElement | null>(null)
|
|
5640
|
-
const emits = defineEmits<{
|
|
5641
|
-
"update:modelValue": [value: any]
|
|
5642
|
-
}>()
|
|
5643
|
-
|
|
5644
|
-
const localModel = useVModel(props, "modelValue", emits)
|
|
5645
|
-
|
|
5646
|
-
onMounted(() => {
|
|
5647
|
-
if (props.autofocus) {
|
|
5648
|
-
select.value?.focus()
|
|
5649
|
-
}
|
|
5650
|
-
})
|
|
5651
|
-
</script
|
|
5627
|
+
`}],utils:[],composables:[],plugins:[]},{name:"Native Select",value:"native-select",devDeps:["@vueuse/core"],files:[{fileName:"NativeSelect.vue",dirPath:"components/UI",fileContent:`<template>\r
|
|
5628
|
+
<div class="relative">\r
|
|
5629
|
+
<select\r
|
|
5630
|
+
ref="select"\r
|
|
5631
|
+
:multiple="multiple"\r
|
|
5632
|
+
:name="name"\r
|
|
5633
|
+
:size="size"\r
|
|
5634
|
+
:id="id"\r
|
|
5635
|
+
:placeholder="placeholder"\r
|
|
5636
|
+
:disabled="disabled"\r
|
|
5637
|
+
:required="required"\r
|
|
5638
|
+
v-model="localModel"\r
|
|
5639
|
+
:class="styles({ class: props.class })"\r
|
|
5640
|
+
>\r
|
|
5641
|
+
<slot></slot>\r
|
|
5642
|
+
</select>\r
|
|
5643
|
+
<span class="pointer-events-none absolute inset-y-0 right-3 flex items-center justify-center">\r
|
|
5644
|
+
<slot name="trailingIcon">\r
|
|
5645
|
+
<Icon\r
|
|
5646
|
+
:name="trailingIcon || 'lucide:chevrons-up-down'"\r
|
|
5647
|
+
class="h-4 w-4 text-muted-foreground"\r
|
|
5648
|
+
/>\r
|
|
5649
|
+
</slot>\r
|
|
5650
|
+
</span>\r
|
|
5651
|
+
</div>\r
|
|
5652
|
+
</template>\r
|
|
5653
|
+
\r
|
|
5654
|
+
<script lang="ts" setup>\r
|
|
5655
|
+
const props = defineProps<{\r
|
|
5656
|
+
class?: any;\r
|
|
5657
|
+
id?: string;\r
|
|
5658
|
+
name?: string;\r
|
|
5659
|
+
placeholder?: string;\r
|
|
5660
|
+
disabled?: boolean;\r
|
|
5661
|
+
required?: boolean;\r
|
|
5662
|
+
modelValue?: any;\r
|
|
5663
|
+
multiple?: boolean;\r
|
|
5664
|
+
size?: number;\r
|
|
5665
|
+
autofocus?: boolean;\r
|
|
5666
|
+
trailingIcon?: string;\r
|
|
5667
|
+
}>();\r
|
|
5668
|
+
const styles = tv({\r
|
|
5669
|
+
base: "h-10 w-full appearance-none rounded-md border border-input bg-background px-3 py-2 pr-10 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 sm:text-sm",\r
|
|
5670
|
+
});\r
|
|
5671
|
+
\r
|
|
5672
|
+
const select = ref<HTMLSelectElement | null>(null);\r
|
|
5673
|
+
const emits = defineEmits<{\r
|
|
5674
|
+
"update:modelValue": [value: any];\r
|
|
5675
|
+
}>();\r
|
|
5676
|
+
\r
|
|
5677
|
+
const localModel = useVModel(props, "modelValue", emits);\r
|
|
5678
|
+
\r
|
|
5679
|
+
onMounted(() => {\r
|
|
5680
|
+
if (props.autofocus) {\r
|
|
5681
|
+
select.value?.focus();\r
|
|
5682
|
+
}\r
|
|
5683
|
+
});\r
|
|
5684
|
+
</script>\r
|
|
5652
5685
|
`}],utils:[],composables:[],plugins:[]},{name:"Navbar",value:"navbar",files:[{fileName:"Navbar.vue",dirPath:"components/UI",fileContent:`<template>
|
|
5653
5686
|
<Primitive :class="styles({ sticky, class: props.class })" v-bind="reactiveOmit(props, 'class')">
|
|
5654
5687
|
<slot> </slot>
|
|
@@ -8917,6 +8950,75 @@ export { toast, useToast };
|
|
|
8917
8950
|
}
|
|
8918
8951
|
);
|
|
8919
8952
|
</script>
|
|
8953
|
+
`}],utils:[],composables:[],plugins:[]},{name:"VeeCurrencyInput",value:"vee-currency-input",deps:["@vee-validate/nuxt","@morev/vue-transitions"],askValidator:!0,nuxtModules:["@vee-validate/nuxt","@morev/vue-transitions/nuxt"],components:["currency-input","label"],files:[{fileName:"Vee/CurrencyInput.vue",dirPath:"components/UI",fileContent:`<template>\r
|
|
8954
|
+
<div class="w-full">\r
|
|
8955
|
+
<UiLabel\r
|
|
8956
|
+
:for="inputId"\r
|
|
8957
|
+
v-if="label"\r
|
|
8958
|
+
:hint="labelHint"\r
|
|
8959
|
+
:class="[disabled && 'text-muted-foreground', errorMessage && 'text-destructive', 'mb-2']"\r
|
|
8960
|
+
>{{ label }}</UiLabel\r
|
|
8961
|
+
>\r
|
|
8962
|
+
<div class="relative">\r
|
|
8963
|
+
<slot name="icon">\r
|
|
8964
|
+
<span v-if="hasIcon" class="absolute inset-y-0 left-3 flex items-center justify-center">\r
|
|
8965
|
+
<Icon :name="icon" v-if="icon" class="h-4 w-4 text-muted-foreground/70" />\r
|
|
8966
|
+
</span>\r
|
|
8967
|
+
</slot>\r
|
|
8968
|
+
<UiCurrencyInput\r
|
|
8969
|
+
type="text"\r
|
|
8970
|
+
v-model="value"\r
|
|
8971
|
+
:id="inputId"\r
|
|
8972
|
+
:name="name"\r
|
|
8973
|
+
:disabled="disabled"\r
|
|
8974
|
+
v-bind="$attrs"\r
|
|
8975
|
+
:class="[hasIcon && 'pl-9']"\r
|
|
8976
|
+
:placeholder="placeholder"\r
|
|
8977
|
+
:options="options"\r
|
|
8978
|
+
/>\r
|
|
8979
|
+
</div>\r
|
|
8980
|
+
<TransitionSlide group tag="div">\r
|
|
8981
|
+
<p key="hint" class="mt-1.5 text-sm text-muted-foreground" v-if="hint && !errorMessage">\r
|
|
8982
|
+
{{ hint }}\r
|
|
8983
|
+
</p>\r
|
|
8984
|
+
\r
|
|
8985
|
+
<p key="errorMessage" class="mt-1.5 text-sm text-destructive" v-if="errorMessage">\r
|
|
8986
|
+
{{ errorMessage }}\r
|
|
8987
|
+
</p>\r
|
|
8988
|
+
</TransitionSlide>\r
|
|
8989
|
+
</div>\r
|
|
8990
|
+
</template>\r
|
|
8991
|
+
\r
|
|
8992
|
+
<script lang="ts" setup>\r
|
|
8993
|
+
import type { CurrencyInputOptions } from "vue-currency-input";\r
|
|
8994
|
+
\r
|
|
8995
|
+
const props = defineProps<{\r
|
|
8996
|
+
label?: string;\r
|
|
8997
|
+
labelHint?: string;\r
|
|
8998
|
+
icon?: string;\r
|
|
8999
|
+
hint?: string;\r
|
|
9000
|
+
disabled?: boolean;\r
|
|
9001
|
+
modelValue?: string;\r
|
|
9002
|
+
name?: string;\r
|
|
9003
|
+
id?: string;\r
|
|
9004
|
+
rules?: any;\r
|
|
9005
|
+
validateOnMount?: boolean;\r
|
|
9006
|
+
type?: string;\r
|
|
9007
|
+
placeholder?: string;\r
|
|
9008
|
+
options?: CurrencyInputOptions;\r
|
|
9009
|
+
}>();\r
|
|
9010
|
+
\r
|
|
9011
|
+
const inputId = useId();\r
|
|
9012
|
+
\r
|
|
9013
|
+
const hasIcon = computed(() => Boolean(props.icon) || Boolean(useSlots().icon));\r
|
|
9014
|
+
\r
|
|
9015
|
+
const { errorMessage, value } = useField(() => props.name || inputId, props.rules, {\r
|
|
9016
|
+
initialValue: props.modelValue,\r
|
|
9017
|
+
label: props.label,\r
|
|
9018
|
+
validateOnMount: props.validateOnMount,\r
|
|
9019
|
+
syncVModel: true,\r
|
|
9020
|
+
});\r
|
|
9021
|
+
</script>\r
|
|
8920
9022
|
`}],utils:[],composables:[],plugins:[]},{name:"VeeDatepicker",value:"vee-datepicker",deps:["@vee-validate/nuxt","@morev/vue-transitions"],askValidator:!0,nuxtModules:["@vee-validate/nuxt","@morev/vue-transitions/nuxt"],components:["datepicker","label","input"],files:[{fileName:"Vee/Datepicker.vue",dirPath:"components/UI",fileContent:`<template>
|
|
8921
9023
|
<div class="w-full">
|
|
8922
9024
|
<UiLabel
|