@enos5/enos-vue 1.0.7 → 1.0.9

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 (47) hide show
  1. package/README.md +23 -10
  2. package/dist/components/ActionCard.vue.d.ts +33 -0
  3. package/dist/components/ActionMessage.vue.d.ts +16 -0
  4. package/dist/components/ActionSection.vue.d.ts +14 -0
  5. package/dist/components/ApplicationLogo.vue.d.ts +3 -0
  6. package/dist/components/AuthenticationCard.vue.d.ts +15 -0
  7. package/dist/components/Badge.vue.d.ts +59 -0
  8. package/dist/components/Banner.vue.d.ts +3 -0
  9. package/dist/components/Button.vue.d.ts +40 -0
  10. package/dist/components/Card.vue.d.ts +95 -0
  11. package/dist/components/CardTabs.vue.d.ts +32 -0
  12. package/dist/components/Checkbox.vue.d.ts +28 -0
  13. package/dist/components/CheckboxInput.vue.d.ts +55 -0
  14. package/dist/components/CheckboxMultipleInput.vue.d.ts +37 -0
  15. package/dist/components/ConfirmationModal.vue.d.ts +59 -0
  16. package/dist/components/CustomSelect.vue.d.ts +190 -0
  17. package/dist/components/DateInput.vue.d.ts +48 -0
  18. package/dist/components/DialogModal.vue.d.ts +48 -0
  19. package/dist/components/Divider.vue.d.ts +10 -0
  20. package/dist/components/Dropdown.vue.d.ts +44 -0
  21. package/dist/components/DropdownLink.vue.d.ts +20 -0
  22. package/dist/components/FormSection.vue.d.ts +20 -0
  23. package/dist/components/ImageInput.vue.d.ts +55 -0
  24. package/dist/components/InputError.vue.d.ts +7 -0
  25. package/dist/components/InputGroup.vue.d.ts +282 -0
  26. package/dist/components/InputLabel.vue.d.ts +14 -0
  27. package/dist/components/LinkButton.vue.d.ts +68 -0
  28. package/dist/components/Modal.vue.d.ts +55 -0
  29. package/dist/components/NavLink.vue.d.ts +18 -0
  30. package/dist/components/NotationInput.vue.d.ts +37 -0
  31. package/dist/components/RadioInput.vue.d.ts +55 -0
  32. package/dist/components/RadioMultipleInput.vue.d.ts +46 -0
  33. package/dist/components/ResponsiveNavLink.vue.d.ts +24 -0
  34. package/dist/components/SectionBorder.vue.d.ts +3 -0
  35. package/dist/components/SectionTitle.vue.d.ts +17 -0
  36. package/dist/components/SelectInput.vue.d.ts +190 -0
  37. package/dist/components/SortControls.vue.d.ts +67 -0
  38. package/dist/components/TableList.vue.d.ts +126 -0
  39. package/dist/components/TableListForm.vue.d.ts +258 -0
  40. package/dist/components/TextArea.vue.d.ts +41 -0
  41. package/dist/components/TextInput.vue.d.ts +41 -0
  42. package/dist/components/ThSortable.vue.d.ts +39 -0
  43. package/dist/index.d.ts +42 -0
  44. package/dist/index.js +2629 -1751
  45. package/dist/index.js.map +1 -0
  46. package/dist/plugin.d.ts +5 -0
  47. package/package.json +10 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/CardTabs.vue","../src/components/Card.vue","../src/components/Divider.vue","../src/components/ActionCard.vue","../src/components/ActionMessage.vue","../src/components/SectionTitle.vue","../src/components/ActionSection.vue","../src/components/ApplicationLogo.vue","../src/components/AuthenticationCard.vue","../src/components/Badge.vue","../src/components/Banner.vue","../src/components/Button.vue","../src/components/Checkbox.vue","../src/components/CheckboxInput.vue","../src/components/TextInput.vue","../src/components/TextArea.vue","../src/components/CustomSelect.vue","../src/components/SelectInput.vue","../src/components/DateInput.vue","../src/components/ImageInput.vue","../src/components/NotationInput.vue","../src/components/RadioInput.vue","../src/components/RadioMultipleInput.vue","../src/components/InputGroup.vue","../src/components/CheckboxMultipleInput.vue","../src/components/Modal.vue","../src/components/ConfirmationModal.vue","../src/components/DialogModal.vue","../src/components/Dropdown.vue","../src/components/DropdownLink.vue","../src/components/FormSection.vue","../src/components/InputError.vue","../src/components/InputLabel.vue","../src/components/LinkButton.vue","../src/components/NavLink.vue","../src/components/ResponsiveNavLink.vue","../src/components/SectionBorder.vue","../src/components/SortControls.vue","../src/components/ThSortable.vue","../src/components/TableList.vue","../src/components/TableListForm.vue","../src/plugin.ts"],"sourcesContent":["<script setup>\nimport { computed, ref, watch } from \"vue\";\n\nconst props = defineProps({\n tabs: {\n type: Array,\n default: () => [],\n validator: (tabs) => tabs.every((tab) => (\n typeof tab === 'object'\n && tab !== null\n && typeof tab.value === 'string'\n && tab.value.length > 0\n && typeof tab.label === 'string'\n )),\n },\n activeTab: {\n type: String,\n default: \"\",\n },\n});\n\nconst emit = defineEmits([\n 'update:activeTab',\n 'tab-click',\n]);\n\nconst tabButtons = ref([]);\n\nconst availableTabValues = computed(() => props.tabs.map((tab) => tab.value));\nconst currentActiveTab = computed(() => (\n availableTabValues.value.includes(props.activeTab)\n ? props.activeTab\n : (availableTabValues.value[0] ?? '')\n));\n\nwatch(currentActiveTab, (value) => {\n if (value !== props.activeTab) {\n emit('update:activeTab', value);\n }\n}, { immediate: true });\n\nconst setTabButtonRef = (element, index) => {\n tabButtons.value[index] = element;\n};\n\nconst activateTab = (value) => {\n if (!value || value === props.activeTab) {\n return;\n }\n\n emit('update:activeTab', value);\n emit('tab-click', value);\n};\n\nconst focusTabAtIndex = (index) => {\n tabButtons.value[index]?.focus();\n};\n\nconst onTabKeydown = (event, index) => {\n if (props.tabs.length === 0) {\n return;\n }\n\n let targetIndex = index;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n targetIndex = (index + 1) % props.tabs.length;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n targetIndex = (index - 1 + props.tabs.length) % props.tabs.length;\n break;\n case 'Home':\n targetIndex = 0;\n break;\n case 'End':\n targetIndex = props.tabs.length - 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n activateTab(props.tabs[targetIndex].value);\n focusTabAtIndex(targetIndex);\n};\n</script>\n\n<template>\n <div class=\"border-b border-gray-200/80 bg-gray-50/80 p-2\">\n <div role=\"tablist\" class=\"flex rounded-lg bg-white shadow-sm ring-1 ring-gray-200/80 overflow-hidden\">\n <button\n v-for=\"(tab, index) in tabs\"\n :key=\"tab.value\"\n :ref=\"(element) => setTabButtonRef(element, index)\"\n type=\"button\"\n :style=\"{ width: `${100 / tabs.length}%` }\"\n role=\"tab\"\n :aria-selected=\"currentActiveTab === tab.value\"\n :tabindex=\"currentActiveTab === tab.value ? 0 : -1\"\n :class=\"[\n 'px-4 py-3 text-center text-sm font-semibold tracking-wide transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-inset',\n currentActiveTab === tab.value\n ? 'bg-blue-50 text-blue-700 shadow-[inset_0_-2px_0_0_rgb(37_99_235)]'\n : 'text-gray-700 hover:bg-gray-50',\n {\n 'border-r border-gray-200/80': index !== tabs.length - 1,\n }\n ]\"\n @click=\"activateTab(tab.value)\"\n @keydown=\"onTabKeydown($event, index)\"\n >\n {{ tab.label }}\n </button>\n </div>\n </div>\n</template>\n","<script setup>\nimport { ref, watch, computed } from 'vue';\nimport CardTabs from \"./CardTabs.vue\";\n\nconst props = defineProps({\n title: {\n type: String,\n default: \"\"\n },\n sticky: {\n type: Boolean,\n default: false,\n },\n paddingClass: {\n type: String,\n default: \"p-6 lg:p-8\"\n },\n cardClass: {\n type: String,\n default: \"\"\n },\n overflowClass: {\n type: String,\n default: \"overflow-visible\",\n },\n contentClass: {\n type: String,\n default: \"\"\n },\n tabs: {\n type: Array,\n default: () => [],\n validator: (tabs) => tabs.every((tab) => (\n typeof tab === 'object'\n && tab !== null\n && typeof tab.value === 'string'\n && tab.value.length > 0\n && typeof tab.label === 'string'\n )),\n },\n activeTab: {\n type: String,\n default: \"\",\n }\n});\n\ndefineEmits([\n 'update:activeTab',\n 'tab-click',\n]);\n\nconst previousActiveTab = ref('');\nconst slideDirection = ref('right');\n\nconst currentTabIndex = computed(() => {\n return props.tabs.findIndex(tab => tab.value === props.activeTab);\n});\n\nconst previousTabIndex = computed(() => {\n return props.tabs.findIndex(tab => tab.value === previousActiveTab.value);\n});\n\nwatch(currentTabIndex, (newIndex, oldIndex) => {\n if (oldIndex !== undefined && oldIndex !== -1 && newIndex !== -1 && newIndex !== oldIndex) {\n slideDirection.value = newIndex > oldIndex ? 'right' : 'left';\n previousActiveTab.value = props.activeTab;\n }\n});\n</script>\n\n<template>\n <div :class=\"['bg-white/90 backdrop-blur-sm border border-slate-200/70 rounded-2xl shadow-[0_12px_30px_rgba(15,23,42,0.06)]', overflowClass, { 'sticky top-6 self-start': sticky }, cardClass]\">\n <CardTabs\n v-if=\"tabs.length > 0\"\n :tabs=\"tabs\"\n :active-tab=\"activeTab\"\n @update:active-tab=\"$emit('update:activeTab', $event)\"\n @tab-click=\"$emit('tab-click', $event)\"\n />\n <div :class=\"paddingClass\">\n <div v-if=\"$slots.customTitle\" class=\"mb-4\">\n <slot name=\"customTitle\" />\n </div>\n <h3 v-else-if=\"title\" class=\"mb-4 text-xl font-semibold tracking-tight text-slate-900\">{{ title }}</h3>\n\n <!-- Animated Content Container -->\n <div :class=\"['relative', tabs.length > 0 ? 'overflow-hidden' : 'overflow-visible']\">\n <transition\n enter-active-class=\"transition-all duration-200 ease-in-out\"\n :enter-from-class=\"slideDirection === 'right' ? 'translate-x-full opacity-0' : '-translate-x-full opacity-0'\"\n enter-to-class=\"translate-x-0 opacity-100\"\n leave-active-class=\"transition-all duration-200 ease-in-out\"\n leave-from-class=\"translate-x-0 opacity-100\"\n :leave-to-class=\"slideDirection === 'right' ? '-translate-x-full opacity-0' : 'translate-x-full opacity-0'\"\n mode=\"out-in\"\n >\n <div\n :key=\"activeTab\"\n :class=\"[tabs.length > 0 ? 'p-2' : '', contentClass]\"\n >\n <slot />\n </div>\n </transition>\n </div>\n </div>\n </div>\n</template>\n","<script setup>\ndefineOptions({\n inheritAttrs: false,\n});\n</script>\n\n<template>\n <div class=\"border-t border-gray-200\" v-bind=\"$attrs\">\n <slot />\n </div>\n</template>\n","<script setup>\nimport { useSlots } from \"vue\";\nimport Card from \"./Card.vue\";\nimport Divider from \"./Divider.vue\";\n\ndefineProps({\n title: {\n type: String,\n default: \"\"\n },\n actionsClass: {\n type: String,\n default: \"space-y-3\"\n }\n});\n\nconst slots = useSlots();\n</script>\n\n<template>\n <Card :title=\"title\" :content-class=\"actionsClass\">\n <slot />\n <Divider v-if=\"slots.danger\" class=\"mt-6 pt-4\">\n <slot name=\"danger\" />\n </Divider>\n </Card>\n</template>\n","<script setup>\ndefineProps({\n on: Boolean,\n});\n</script>\n\n<template>\n <div>\n <transition leave-active-class=\"transition ease-in duration-1000\" leave-from-class=\"opacity-100\" leave-to-class=\"opacity-0\">\n <div v-show=\"on\" class=\"text-sm text-gray-600\">\n <slot />\n </div>\n </transition>\n </div>\n</template>\n","<template>\n <div class=\"md:col-span-1 flex justify-between\">\n <div class=\"px-4 sm:px-0\">\n <h3 class=\"text-xl font-semibold tracking-tight text-slate-900\">\n <slot name=\"title\" />\n </h3>\n\n <p class=\"mt-1 max-w-2xl text-sm text-slate-600\">\n <slot name=\"description\" />\n </p>\n </div>\n\n <div class=\"px-4 sm:px-0\">\n <slot name=\"aside\" />\n </div>\n </div>\n</template>\n","<script setup>\nimport SectionTitle from './SectionTitle.vue';\n</script>\n\n<template>\n <div class=\"md:grid md:grid-cols-3 md:gap-6\">\n <SectionTitle>\n <template #title>\n <slot name=\"title\" />\n </template>\n <template #description>\n <slot name=\"description\" />\n </template>\n </SectionTitle>\n\n <div class=\"mt-5 md:mt-0 md:col-span-2\">\n <div class=\"px-4 py-5 sm:p-6 bg-white shadow sm:rounded-lg\">\n <slot name=\"content\" />\n </div>\n </div>\n </div>\n</template>\n","<template>\n <svg viewBox=\"0 0 317 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M74.09 30.04V13h-4.14v21H82.1v-3.96h-8.01zM95.379 19v1.77c-1.08-1.35-2.7-2.19-4.89-2.19-3.99 0-7.29 3.45-7.29 7.92s3.3 7.92 7.29 7.92c2.19 0 3.81-.84 4.89-2.19V34h3.87V19h-3.87zm-4.17 11.73c-2.37 0-4.14-1.71-4.14-4.23 0-2.52 1.77-4.23 4.14-4.23 2.4 0 4.17 1.71 4.17 4.23 0 2.52-1.77 4.23-4.17 4.23zM106.628 21.58V19h-3.87v15h3.87v-7.17c0-3.15 2.55-4.05 4.56-3.81V18.7c-1.89 0-3.78.84-4.56 2.88zM124.295 19v1.77c-1.08-1.35-2.7-2.19-4.89-2.19-3.99 0-7.29 3.45-7.29 7.92s3.3 7.92 7.29 7.92c2.19 0 3.81-.84 4.89-2.19V34h3.87V19h-3.87zm-4.17 11.73c-2.37 0-4.14-1.71-4.14-4.23 0-2.52 1.77-4.23 4.14-4.23 2.4 0 4.17 1.71 4.17 4.23 0 2.52-1.77 4.23-4.17 4.23zM141.544 19l-3.66 10.5-3.63-10.5h-4.26l5.7 15h4.41l5.7-15h-4.26zM150.354 28.09h11.31c.09-.51.15-1.02.15-1.59 0-4.41-3.15-7.92-7.59-7.92-4.71 0-7.92 3.45-7.92 7.92s3.18 7.92 8.22 7.92c2.88 0 5.13-1.17 6.54-3.21l-3.12-1.8c-.66.87-1.86 1.5-3.36 1.5-2.04 0-3.69-.84-4.23-2.82zm-.06-3c.45-1.92 1.86-3.03 3.93-3.03 1.62 0 3.24.87 3.72 3.03h-7.65zM164.516 34h3.87V12.1h-3.87V34zM185.248 34.36c3.69 0 6.9-2.01 6.9-6.3V13h-2.1v15.06c0 3.03-2.07 4.26-4.8 4.26-2.19 0-3.93-.78-4.62-2.61l-1.77 1.05c1.05 2.43 3.57 3.6 6.39 3.6zM203.124 18.64c-4.65 0-7.83 3.45-7.83 7.86 0 4.53 3.24 7.86 7.98 7.86 3.03 0 5.34-1.41 6.6-3.45l-1.74-1.02c-.81 1.44-2.46 2.55-4.83 2.55-3.18 0-5.55-1.89-5.97-4.95h13.17c.03-.3.06-.63.06-.93 0-4.11-2.85-7.92-7.44-7.92zm0 1.92c2.58 0 4.98 1.71 5.4 5.01h-11.19c.39-2.94 2.64-5.01 5.79-5.01zM221.224 20.92V19h-4.32v-4.2l-1.98.6V19h-3.15v1.92h3.15v9.09c0 3.6 2.25 4.59 6.3 3.99v-1.74c-2.91.12-4.32.33-4.32-2.25v-9.09h4.32zM225.176 22.93c0-1.62 1.59-2.37 3.15-2.37 1.44 0 2.97.57 3.6 2.1l1.65-.96c-.87-1.86-2.79-3.06-5.25-3.06-3 0-5.13 1.89-5.13 4.29 0 5.52 8.76 3.39 8.76 7.11 0 1.77-1.68 2.4-3.45 2.4-2.01 0-3.57-.99-4.11-2.52l-1.68.99c.75 1.92 2.79 3.45 5.79 3.45 3.21 0 5.43-1.77 5.43-4.32 0-5.52-8.76-3.39-8.76-7.11zM244.603 20.92V19h-4.32v-4.2l-1.98.6V19h-3.15v1.92h3.15v9.09c0 3.6 2.25 4.59 6.3 3.99v-1.74c-2.91.12-4.32.33-4.32-2.25v-9.09h4.32zM249.883 21.49V19h-1.98v15h1.98v-8.34c0-3.72 2.34-4.98 4.74-4.98v-1.92c-1.92 0-3.69.63-4.74 2.73zM263.358 18.64c-4.65 0-7.83 3.45-7.83 7.86 0 4.53 3.24 7.86 7.98 7.86 3.03 0 5.34-1.41 6.6-3.45l-1.74-1.02c-.81 1.44-2.46 2.55-4.83 2.55-3.18 0-5.55-1.89-5.97-4.95h13.17c.03-.3.06-.63.06-.93 0-4.11-2.85-7.92-7.44-7.92zm0 1.92c2.58 0 4.98 1.71 5.4 5.01h-11.19c.39-2.94 2.64-5.01 5.79-5.01zM286.848 19v2.94c-1.26-2.01-3.39-3.3-6.06-3.3-4.23 0-7.74 3.42-7.74 7.86s3.51 7.86 7.74 7.86c2.67 0 4.8-1.29 6.06-3.3V34h1.98V19h-1.98zm-5.91 13.44c-3.33 0-5.91-2.61-5.91-5.94 0-3.33 2.58-5.94 5.91-5.94s5.91 2.61 5.91 5.94c0 3.33-2.58 5.94-5.91 5.94zM309.01 18.64c-1.92 0-3.75.87-4.86 2.73-.84-1.74-2.46-2.73-4.56-2.73-1.8 0-3.42.72-4.59 2.55V19h-1.98v15H295v-8.31c0-3.72 2.16-5.13 4.32-5.13 2.13 0 3.51 1.41 3.51 4.08V34h1.98v-8.31c0-3.72 1.86-5.13 4.17-5.13 2.13 0 3.66 1.41 3.66 4.08V34h1.98v-9.36c0-3.75-2.31-6-5.61-6z\" class=\"fill-black\" />\n <path d=\"M11.395 44.428C4.557 40.198 0 32.632 0 24 0 10.745 10.745 0 24 0a23.891 23.891 0 0113.997 4.502c-.2 17.907-11.097 33.245-26.602 39.926z\" fill=\"#6875F5\" />\n <path d=\"M14.134 45.885A23.914 23.914 0 0024 48c13.255 0 24-10.745 24-24 0-3.516-.756-6.856-2.115-9.866-4.659 15.143-16.608 27.092-31.75 31.751z\" fill=\"#6875F5\" />\n </svg>\n</template>\n","<template>\n <div class=\"min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100\">\n <div>\n <slot name=\"logo\" />\n </div>\n\n <div class=\"w-full sm:max-w-md mt-6 px-6 py-4 bg-white shadow-md overflow-hidden rounded-lg\">\n <slot />\n </div>\n </div>\n</template>\n","<script setup>\ndefineProps({\n type: {\n type: String,\n default: 'default',\n validator: (value) => ['default', 'dot'].includes(value)\n },\n color: {\n type: String,\n default: 'default',\n validator: (value) => [\n 'default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info', 'gray'\n ].includes(value)\n },\n size: {\n type: String,\n default: 'md',\n validator: (value) => ['xs', 'sm', 'md', 'lg'].includes(value)\n },\n rounded: {\n type: String,\n default: 'full',\n validator: (value) => ['none', 'sm', 'md', 'lg', 'full'].includes(value)\n }\n});\n\nconst colorClasses = {\n default: { bg: 'bg-slate-100', text: 'text-slate-700', dot: 'bg-slate-600' },\n primary: { bg: 'bg-blue-100', text: 'text-blue-700', dot: 'bg-blue-600' },\n secondary: { bg: 'bg-slate-100', text: 'text-slate-700', dot: 'bg-slate-600' },\n success: { bg: 'bg-emerald-100', text: 'text-emerald-700', dot: 'bg-emerald-600' },\n warning: { bg: 'bg-amber-100', text: 'text-amber-700', dot: 'bg-amber-600' },\n danger: { bg: 'bg-rose-100', text: 'text-rose-700', dot: 'bg-rose-600' },\n info: { bg: 'bg-cyan-100', text: 'text-cyan-700', dot: 'bg-cyan-600' },\n gray: { bg: 'bg-slate-100', text: 'text-slate-600', dot: 'bg-slate-600' }\n};\n\nconst sizeClasses = {\n xs: 'px-1.5 py-0.5 text-xs',\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-xs',\n lg: 'px-3 py-1 text-sm'\n};\n\nconst roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full'\n};\n</script>\n\n<template>\n <!-- Dot type with circular indicator -->\n <span v-if=\"type === 'dot'\" class=\"inline-flex items-center justify-center w-6 h-6 rounded-full\" :class=\"colorClasses[color].bg\">\n <span class=\"w-2 h-2 rounded-full\" :class=\"colorClasses[color].dot\"></span>\n <span class=\"sr-only\">\n <slot />\n </span>\n </span>\n \n <!-- Default type with colored background -->\n <span v-else\n class=\"inline-flex items-center font-medium\"\n :class=\"[\n colorClasses[color].bg,\n colorClasses[color].text,\n sizeClasses[size],\n roundedClasses[rounded]\n ]\"\n >\n <slot />\n </span>\n</template>\n","<script setup>\nimport { ref, watchEffect, onMounted } from 'vue';\nimport { usePage } from '@inertiajs/vue3';\nimport { useI18n } from 'vue-i18n';\nimport { CheckCircleIcon, ExclamationTriangleIcon, XMarkIcon } from '@heroicons/vue/24/outline';\n\nconst page = usePage();\nconst { t } = useI18n();\nconst show = ref(false);\nconst style = ref('success');\nconst message = ref('');\nconst isVisible = ref(false);\n\nlet autoHideTimer = null;\n\nconst hideToast = () => {\n isVisible.value = false;\n setTimeout(() => {\n show.value = false;\n }, 300);\n};\n\nconst showToast = () => {\n if (autoHideTimer) {\n clearTimeout(autoHideTimer);\n }\n\n show.value = true;\n setTimeout(() => {\n isVisible.value = true;\n }, 50);\n\n autoHideTimer = setTimeout(() => {\n hideToast();\n }, 5000);\n};\n\nwatchEffect(async () => {\n const newStyle = page.props.jetstream.flash?.bannerStyle || 'success';\n const newMessage = page.props.jetstream.flash?.banner || '';\n\n if (newMessage) {\n style.value = newStyle;\n message.value = newMessage;\n showToast();\n }\n});\n\nonMounted(() => {\n if (message.value) {\n showToast();\n }\n});\n</script>\n\n<template>\n <div v-if=\"show\" class=\"fixed bottom-4 right-4 z-50\">\n <div\n :class=\"[\n 'transform transition-all duration-300 ease-out shadow-lg rounded-lg p-4 min-w-[300px] max-w-md',\n isVisible ? 'translate-y-0 opacity-100' : 'translate-y-full opacity-0',\n style === 'success' ? 'bg-green-600' : 'bg-red-600'\n ]\"\n >\n <div class=\"flex items-center\">\n <div class=\"flex-shrink-0\">\n <div :class=\"[\n 'flex p-2 rounded-full',\n style === 'success' ? 'bg-green-700' : 'bg-red-700'\n ]\">\n <CheckCircleIcon v-if=\"style === 'success'\" class=\"w-5 h-5 text-white\" />\n <ExclamationTriangleIcon v-if=\"style === 'danger'\" class=\"w-5 h-5 text-white\" />\n </div>\n </div>\n\n <div class=\"ml-3 w-0 flex-1\">\n <p class=\"text-sm font-medium text-white\">\n {{ message }}\n </p>\n </div>\n\n <div class=\"ml-4 flex-shrink-0 flex\">\n <button\n type=\"button\"\n class=\"inline-flex text-white hover:bg-white/20 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-green-600 focus:ring-white rounded-md p-1.5 transition-colors\"\n :class=\"[\n style === 'success' ? 'hover:bg-green-700 focus:ring-offset-green-600' : 'hover:bg-red-700 focus:ring-offset-red-600'\n ]\"\n @click=\"hideToast\"\n >\n <span class=\"sr-only\">{{ t('Dismiss') }}</span>\n <XMarkIcon class=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script setup>\ndefineOptions({\n inheritAttrs: false,\n});\n\nimport { computed, useAttrs } from 'vue';\n\nconst attrs = useAttrs();\n\nconst props = defineProps({\n type: {\n type: String,\n default: 'submit',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n variant: {\n type: String,\n default: 'primary',\n },\n});\n\nconst variantClasses = {\n primary: 'bg-gradient-to-r from-blue-500 to-blue-600 text-white shadow-[0_6px_14px_rgba(37,99,235,0.14)] hover:from-blue-600 hover:to-blue-700 hover:shadow-[0_8px_18px_rgba(37,99,235,0.18)] focus:ring-blue-500 disabled:hover:from-blue-500 disabled:hover:to-blue-600',\n success: 'bg-gradient-to-r from-green-500 to-green-600 text-white shadow-[0_6px_14px_rgba(34,197,94,0.14)] hover:from-green-600 hover:to-green-700 hover:shadow-[0_8px_18px_rgba(34,197,94,0.18)] focus:ring-green-500 disabled:hover:from-green-500 disabled:hover:to-green-600',\n secondary: 'bg-gradient-to-r from-slate-700 to-slate-800 text-white shadow-[0_8px_18px_rgba(15,23,42,0.16)] hover:from-slate-800 hover:to-slate-900 hover:shadow-[0_10px_22px_rgba(15,23,42,0.22)] focus:ring-slate-500 disabled:hover:from-slate-700 disabled:hover:to-slate-800',\n tertiary: 'border border-slate-300 bg-white text-slate-700 shadow-sm hover:bg-slate-50 hover:border-slate-400 hover:shadow focus:ring-slate-500 disabled:hover:bg-white',\n warning: 'border border-amber-300 bg-amber-50 text-amber-800 shadow-sm hover:bg-amber-100 focus:ring-amber-500 disabled:hover:bg-amber-50',\n danger: 'border border-rose-300 bg-rose-50 text-rose-700 shadow-sm hover:bg-rose-100 focus:ring-rose-500 disabled:hover:bg-rose-50',\n};\n\nconst resolvedVariant = computed(() => {\n return variantClasses[props.variant] ? props.variant : 'primary';\n});\n\nconst buttonClasses = computed(() => [\n 'min-w-[40px] min-h-[35px] inline-flex items-center justify-center rounded-lg px-4 py-2 text-sm font-semibold tracking-tight transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-slate-50 disabled:cursor-not-allowed disabled:opacity-50',\n variantClasses[resolvedVariant.value],\n attrs.class,\n]);\n</script>\n\n<template>\n <button\n v-bind=\"attrs\"\n :type=\"type\"\n :disabled=\"disabled\"\n :class=\"buttonClasses\"\n >\n <slot />\n </button>\n</template>\n","<script setup>\nimport { computed } from 'vue';\n\nconst emit = defineEmits(['update:checked']);\n\nconst props = defineProps({\n checked: {\n type: [Array, Boolean],\n default: false,\n },\n value: {\n type: String,\n default: null,\n },\n});\n\nconst proxyChecked = computed({\n get() {\n return props.checked;\n },\n\n set(val) {\n emit('update:checked', val);\n },\n});\n</script>\n\n\n<template>\n <input\n v-model=\"proxyChecked\"\n type=\"checkbox\"\n :value=\"value\"\n class=\"rounded border-gray-300 text-indigo-600 shadow-sm focus:ring-indigo-500\"\n >\n</template>\n","<script setup>\nimport { computed, ref } from 'vue';\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst props = defineProps({\n modelValue: {\n type: [Boolean, String, Number, null],\n default: false,\n },\n value: {\n type: [Boolean, String, Number],\n default: true,\n },\n uncheckedValue: {\n type: [Boolean, String, Number, null],\n default: false,\n },\n label: {\n type: String,\n default: '',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n});\n\nconst isChecked = computed(() => props.modelValue === props.value);\nconst hasFocus = ref(false);\n\nconst handleFocus = () => {\n hasFocus.value = true;\n};\n\nconst handleBlur = () => {\n hasFocus.value = false;\n};\n\nconst onChange = (event) => {\n emit('update:modelValue', event.target.checked ? props.value : props.uncheckedValue);\n};\n</script>\n\n<template>\n <label\n class=\"inline-flex items-center gap-2 rounded-full border px-3 py-1 text-sm font-medium select-none transition-colors\"\n :class=\"[\n isChecked ? 'bg-indigo-600 text-white border-indigo-600' : 'text-gray-600 border-gray-200',\n disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer',\n hasFocus && !disabled ? 'ring-2 ring-indigo-500/80 ring-offset-2 ring-offset-white' : '',\n ]\"\n >\n <input\n type=\"checkbox\"\n class=\"sr-only\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n @change=\"onChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n >\n <span\n class=\"inline-flex h-4 w-4 items-center justify-center border text-[10px] font-bold leading-none\"\n :class=\"[\n isChecked ? 'border-current bg-white/15 text-current' : 'border-current/70 text-transparent',\n 'rounded',\n ]\"\n >\n ✓\n </span>\n <span>{{ label }}</span>\n </label>\n</template>\n","<script setup>\nimport { computed, onMounted, ref, useAttrs } from 'vue';\nimport { LockClosedIcon } from '@heroicons/vue/24/outline';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number, null],\n default: '',\n },\n disabled: {\n type: Boolean,\n default: false\n },\n disabledClass: {\n type: String,\n default: '!bg-slate-100'\n }\n});\n\nconst emit = defineEmits(['update:modelValue', 'blur']);\nconst attrs = useAttrs();\nconst input = ref(null);\nconst revealed = ref(false);\nconst DEFAULT_MAX_LENGTH = 254;\n\nconst baseType = computed(() => String(attrs.type ?? 'text'));\nconst isPasswordField = computed(() => baseType.value === 'password');\nconst inputType = computed(() => (isPasswordField.value && revealed.value) ? 'text' : baseType.value);\nconst normalizedValue = computed(() => props.modelValue ?? '');\n\nconst inputAttrs = computed(() => {\n const { class: _class, type: _type, ...rest } = attrs;\n if (rest.maxlength === undefined) {\n rest.maxlength = DEFAULT_MAX_LENGTH;\n }\n return rest;\n});\n\nconst inputClasses = computed(() => [\n 'w-full min-w-0 max-w-full rounded-lg border border-slate-300 bg-white text-slate-900 shadow-sm focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 placeholder:text-slate-400',\n attrs.class,\n isPasswordField.value ? 'pr-10 pl-10' : '',\n]);\n\nconst toggleVisibility = () => {\n revealed.value = !revealed.value;\n};\n\nconst handleWheel = (event) => {\n if (inputType.value !== 'number') {\n return;\n }\n\n event.preventDefault();\n\n const scrollTarget = document.scrollingElement ?? document.documentElement ?? document.body;\n if (scrollTarget) {\n scrollTarget.scrollTop += event.deltaY;\n }\n};\n\nonMounted(() => {\n if (input.value?.hasAttribute('autofocus')) {\n input.value.focus();\n }\n});\n\ndefineExpose({ focus: () => input.value?.focus() });\n</script>\n\n<template>\n <div class=\"relative flex items-center\">\n <div\n v-if=\"isPasswordField\"\n class=\"absolute inset-y-0 left-0 flex items-center pointer-events-none pl-3\"\n >\n <LockClosedIcon class=\"h-5 w-5 text-slate-400\" />\n </div>\n <input\n ref=\"input\"\n v-bind=\"inputAttrs\"\n :type=\"inputType\"\n :class=\"[inputClasses, (props.disabled ? props.disabledClass : null)]\"\n :value=\"normalizedValue\"\n :disabled=\"props.disabled\"\n @input=\"emit('update:modelValue', $event.target.value)\"\n @blur=\"emit('blur', $event)\"\n @wheel=\"handleWheel\"\n >\n\n <button\n v-if=\"isPasswordField\"\n type=\"button\"\n class=\"absolute inset-y-0 right-0 flex items-center pr-3 text-slate-400 hover:text-slate-600 focus:outline-none\"\n :aria-label=\"revealed ? 'Hide password' : 'Show password'\"\n @click=\"toggleVisibility\"\n >\n <svg v-if=\"revealed\" class=\"h-5 w-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13.875 18.825A10.05 10.05 0 0112 19c-5 0-9.27-3.11-11-7 1.01-2.27 2.78-4.1 5-5.32m3.08-1.3A9.96 9.96 0 0112 5c5 0 9.27 3.11 11 7a11.03 11.03 0 01-4.16 4.91M15 12a3 3 0 00-3-3m0 0a3 3 0 00-2.94 3.59M3 3l18 18\" />\n </svg>\n <svg v-else class=\"h-5 w-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M2.458 12C3.732 7.943 7.523 5 12 5s8.268 2.943 9.542 7c-1.274 4.057-5.065 7-9.542 7S3.732 16.057 2.458 12z\" />\n </svg>\n </button>\n </div>\n</template>\n","<script setup>\nimport { computed, nextTick, onMounted, ref, useAttrs, watch } from 'vue';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps({\n modelValue: String,\n disabled: {\n type: Boolean,\n default: false\n },\n disabledClass: {\n type: String,\n default: '!bg-gray-200'\n },\n autoResize: {\n type: Boolean,\n default: true,\n }\n});\n\nconst emit = defineEmits(['update:modelValue']);\nconst attrs = useAttrs();\nconst textarea = ref(null);\nconst DEFAULT_MAX_LENGTH = 1000;\n\nconst textareaAttrs = computed(() => {\n const { class: _class, ...rest } = attrs;\n if (rest.maxlength === undefined) {\n rest.maxlength = DEFAULT_MAX_LENGTH;\n }\n return rest;\n});\n\nconst textareaClasses = computed(() => [\n 'w-full min-w-0 max-w-full border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm',\n props.autoResize ? 'resize-none overflow-y-auto' : 'resize-y',\n attrs.class,\n]);\n\nconst resizeTextarea = () => {\n if (!props.autoResize || !textarea.value) {\n return;\n }\n\n textarea.value.style.height = 'auto';\n textarea.value.style.height = `${textarea.value.scrollHeight}px`;\n};\n\nconst updateValue = (event) => {\n emit('update:modelValue', event.target.value);\n resizeTextarea();\n};\n\nonMounted(() => {\n if (textarea.value?.hasAttribute('autofocus')) {\n textarea.value.focus();\n }\n\n nextTick(() => {\n resizeTextarea();\n });\n});\n\nwatch(() => props.modelValue, () => {\n nextTick(() => {\n resizeTextarea();\n });\n});\n\ndefineExpose({ focus: () => textarea.value?.focus() });\n</script>\n\n<template>\n <div>\n <textarea\n ref=\"textarea\"\n v-bind=\"textareaAttrs\"\n :class=\"[textareaClasses, (props.disabled ? props.disabledClass : '')]\"\n :value=\"props.modelValue\"\n :disabled=\"props.disabled\"\n @input=\"updateValue\"\n />\n </div>\n</template>\n","<script setup>\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, useAttrs, watch } from 'vue';\nimport { ChevronDownIcon } from '@heroicons/vue/24/outline';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number, Boolean, null],\n default: '',\n },\n modelModifiers: {\n type: Object,\n default: () => ({}),\n },\n options: {\n type: Array,\n default: () => ([]),\n },\n placeholder: {\n type: String,\n default: '',\n },\n placeholderDisabled: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n softDeleteAware: {\n type: Boolean,\n default: false,\n },\n labelKey: {\n type: String,\n default: 'name',\n },\n valueKey: {\n type: String,\n default: 'id',\n },\n deletedKey: {\n type: String,\n default: 'deleted_at',\n },\n optionLabel: {\n type: Function,\n default: null,\n },\n baseClass: {\n type: [String, Array, Object],\n default: 'block w-full rounded-md border border-gray-300 bg-white px-4 py-3 text-sm focus:border-indigo-500 focus:ring-2 focus:ring-indigo-500',\n },\n normalTextClass: {\n type: [String, Array, Object],\n default: 'text-gray-900',\n },\n deletedSelectedClass: {\n type: [String, Array, Object],\n default: 'text-red-600',\n },\n optionClass: {\n type: [String, Array, Object],\n default: 'text-[#111827]',\n },\n deletedOptionClass: {\n type: [String, Array, Object],\n default: 'text-[#dc2626]',\n },\n placeholderClass: {\n type: [String, Array, Object],\n default: 'text-[#111827]',\n },\n dropdownClass: {\n type: [String, Array, Object],\n default: 'bg-white border border-gray-300 rounded-lg shadow-lg max-h-60 overflow-auto z-50',\n },\n dropdownOptionClass: {\n type: [String, Array, Object],\n default: 'px-4 py-3 hover:bg-gray-100 cursor-pointer transition-colors',\n },\n dropdownSelectedClass: {\n type: [String, Array, Object],\n default: 'bg-blue-50 text-blue-600 font-medium',\n }\n});\n\nconst emit = defineEmits(['update:modelValue']);\nconst attrs = useAttrs();\n\nconst isOpen = ref(false);\nconst rootRef = ref(null);\nconst triggerRef = ref(null);\nconst dropdownMenuRef = ref(null);\nconst dropdownStyle = ref({});\n\nconst isObjectOption = (option) => typeof option === 'object' && option !== null;\n\nconst optionValue = (option) => {\n if (isObjectOption(option)) {\n return option[props.valueKey];\n }\n\n return option;\n};\n\nconst optionText = (option) => {\n if (props.optionLabel) {\n return props.optionLabel(option);\n }\n\n if (isObjectOption(option)) {\n return option[props.labelKey] ?? option[props.valueKey] ?? '';\n }\n\n return option;\n};\n\nconst optionDeleted = (option) => {\n if (!props.softDeleteAware || !isObjectOption(option)) {\n return false;\n }\n\n return Boolean(option[props.deletedKey]);\n};\n\nconst modelValueAsString = computed(() => String(props.modelValue ?? ''));\n\nconst selectedDeletedOption = computed(() => {\n if (!props.softDeleteAware || modelValueAsString.value === '') {\n return null;\n }\n\n return props.options.find((option) => (\n optionDeleted(option) && String(optionValue(option) ?? '') === modelValueAsString.value\n )) ?? null;\n});\n\nconst availableOptions = computed(() => {\n if (!props.softDeleteAware) {\n return props.options;\n }\n\n return props.options.filter((option) => !optionDeleted(option));\n});\n\nconst displayText = computed(() => {\n // Check for actual empty/null/undefined values (not empty string selections)\n if ((props.modelValue === null || props.modelValue === undefined) ||\n (props.modelValue === '' && !props.options.some(option => optionValue(option) === ''))) {\n return props.placeholder;\n }\n\n const selectedOption = props.options.find(option => {\n const optionVal = optionValue(option);\n return optionVal === props.modelValue || String(optionVal) === String(props.modelValue);\n });\n\n return selectedOption ? optionText(selectedOption) : props.modelValue;\n});\n\nconst normalizeEmittedValue = (value) => {\n if (props.modelModifiers.number) {\n if (value === '') {\n return '';\n }\n\n return Number(value);\n }\n\n return value;\n};\n\nconst toggleDropdown = () => {\n if (!props.disabled) {\n isOpen.value = !isOpen.value;\n }\n};\n\nconst selectOption = (option) => {\n const value = optionValue(option);\n emit('update:modelValue', normalizeEmittedValue(value));\n isOpen.value = false;\n};\n\nconst selectPlaceholder = () => {\n if (!props.placeholderDisabled) {\n emit('update:modelValue', normalizeEmittedValue(''));\n isOpen.value = false;\n }\n};\n\nconst updateDropdownPosition = () => {\n if (!triggerRef.value) {\n return;\n }\n\n const rect = triggerRef.value.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - rect.bottom - 8;\n const spaceAbove = rect.top - 8;\n const shouldOpenUpward = spaceBelow < 240 && spaceAbove > spaceBelow;\n const width = Math.min(rect.width, Math.max(viewportWidth - rect.left - 16, 160));\n const maxHeight = Math.max(Math.min(240, shouldOpenUpward ? spaceAbove : spaceBelow), 120);\n\n dropdownStyle.value = {\n position: 'fixed',\n left: `${Math.max(rect.left, 8)}px`,\n width: `${width}px`,\n maxHeight: `${maxHeight}px`,\n zIndex: '9999',\n ...(shouldOpenUpward\n ? { bottom: `${viewportHeight - rect.top + 1}px` }\n : { top: `${rect.bottom - 1}px` }),\n };\n};\n\nconst closeDropdown = (event) => {\n const clickedInsideTrigger = rootRef.value?.contains(event.target);\n const clickedInsideMenu = dropdownMenuRef.value?.contains(event.target);\n\n if (!clickedInsideTrigger && !clickedInsideMenu) {\n isOpen.value = false;\n }\n};\n\nonMounted(() => {\n document.addEventListener('click', closeDropdown);\n window.addEventListener('resize', updateDropdownPosition);\n window.addEventListener('scroll', updateDropdownPosition, true);\n});\n\nonBeforeUnmount(() => {\n document.removeEventListener('click', closeDropdown);\n window.removeEventListener('resize', updateDropdownPosition);\n window.removeEventListener('scroll', updateDropdownPosition, true);\n});\n\nwatch(isOpen, async (open) => {\n if (!open) {\n return;\n }\n\n await nextTick();\n updateDropdownPosition();\n});\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n class=\"relative\"\n @click=\"toggleDropdown\"\n >\n <div\n ref=\"triggerRef\"\n :class=\"[\n baseClass,\n selectedDeletedOption ? deletedSelectedClass : normalTextClass,\n 'flex items-center justify-between cursor-pointer',\n attrs.class\n ]\"\n v-bind=\"attrs\"\n tabindex=\"0\"\n >\n <span :class=\"{ 'text-gray-400': !modelValue && placeholder }\">\n {{ displayText }}\n </span>\n <ChevronDownIcon\n class=\"size-5 text-gray-400 transition-transform\"\n :class=\"{ 'rotate-180': isOpen }\"\n />\n </div>\n\n <!-- Dropdown Options -->\n <transition\n enter-active-class=\"transition-all duration-200 ease-out\"\n enter-from-class=\"opacity-0 transform scale-95 -translate-y-2\"\n enter-to-class=\"opacity-100 transform scale-100 translate-y-0\"\n leave-active-class=\"transition-all duration-150 ease-in\"\n leave-from-class=\"opacity-100 transform scale-100 translate-y-0\"\n leave-to-class=\"opacity-0 transform scale-95 -translate-y-2\"\n >\n <Teleport to=\"body\">\n <div\n v-if=\"isOpen\"\n ref=\"dropdownMenuRef\"\n :class=\"dropdownClass\"\n :style=\"dropdownStyle\"\n >\n <div\n v-if=\"placeholder\"\n :class=\"[\n dropdownOptionClass,\n placeholderClass,\n { 'text-gray-400': !modelValue }\n ]\"\n @click.stop=\"selectPlaceholder\"\n >\n {{ placeholder }}\n </div>\n\n <div\n v-if=\"selectedDeletedOption\"\n :class=\"[\n dropdownOptionClass,\n deletedOptionClass,\n dropdownSelectedClass\n ]\"\n >\n {{ optionText(selectedDeletedOption) }}\n </div>\n\n <div\n v-for=\"option in availableOptions\"\n :key=\"String(optionValue(option))\"\n :class=\"[\n dropdownOptionClass,\n optionClass,\n {\n [dropdownSelectedClass]: optionValue(option) === modelValue || String(optionValue(option)) === String(modelValue),\n 'rounded-b-lg': option === availableOptions[availableOptions.length - 1] && !placeholder,\n 'rounded-lg': !placeholder && availableOptions.length === 1\n }\n ]\"\n @click.stop=\"selectOption(option)\"\n >\n {{ optionText(option) }}\n </div>\n </div>\n </Teleport>\n </transition>\n </div>\n</template>\n","<script setup>\nimport CustomSelect from './CustomSelect.vue';\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number, Boolean, null],\n default: '',\n },\n modelModifiers: {\n type: Object,\n default: () => ({}),\n },\n options: {\n type: Array,\n default: () => ([]),\n },\n placeholder: {\n type: String,\n default: '',\n },\n placeholderDisabled: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n softDeleteAware: {\n type: Boolean,\n default: false,\n },\n labelKey: {\n type: String,\n default: 'name',\n },\n valueKey: {\n type: String,\n default: 'id',\n },\n deletedKey: {\n type: String,\n default: 'deleted_at',\n },\n optionLabel: {\n type: Function,\n default: null,\n },\n baseClass: {\n type: [String, Array, Object],\n default: 'block w-full rounded-lg border border-slate-300 bg-white px-4 py-3 text-sm text-slate-900 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20',\n },\n normalTextClass: {\n type: [String, Array, Object],\n default: 'text-slate-900',\n },\n deletedSelectedClass: {\n type: [String, Array, Object],\n default: 'text-red-600',\n },\n optionClass: {\n type: [String, Array, Object],\n default: 'text-slate-900',\n },\n deletedOptionClass: {\n type: [String, Array, Object],\n default: 'text-rose-700',\n },\n placeholderClass: {\n type: [String, Array, Object],\n default: 'text-slate-500',\n },\n dropdownClass: {\n type: [String, Array, Object],\n default: 'bg-white/95 border border-slate-200 rounded-xl shadow-xl max-h-60 overflow-auto z-50 backdrop-blur-sm',\n },\n dropdownOptionClass: {\n type: [String, Array, Object],\n default: 'px-4 py-3 hover:bg-slate-100 cursor-pointer transition-colors',\n },\n dropdownSelectedClass: {\n type: [String, Array, Object],\n default: 'bg-blue-50 text-blue-700 font-medium',\n }\n});\n\nconst emit = defineEmits(['update:modelValue']);\n</script>\n\n<template>\n <CustomSelect\n :model-value=\"modelValue\"\n :model-modifiers=\"modelModifiers\"\n :options=\"options\"\n :placeholder=\"placeholder\"\n :placeholder-disabled=\"placeholderDisabled\"\n :disabled=\"disabled\"\n :soft-delete-aware=\"softDeleteAware\"\n :label-key=\"labelKey\"\n :value-key=\"valueKey\"\n :deleted-key=\"deletedKey\"\n :option-label=\"optionLabel\"\n :base-class=\"baseClass\"\n :normal-text-class=\"normalTextClass\"\n :deleted-selected-class=\"deletedSelectedClass\"\n :option-class=\"optionClass\"\n :deleted-option-class=\"deletedOptionClass\"\n :placeholder-class=\"placeholderClass\"\n :dropdown-class=\"dropdownClass\"\n :dropdown-option-class=\"dropdownOptionClass\"\n :dropdown-selected-class=\"dropdownSelectedClass\"\n @update:model-value=\"emit('update:modelValue', $event)\"\n v-bind=\"$attrs\"\n />\n</template>\n","<script setup>\nimport { computed, onMounted, ref, useAttrs } from 'vue';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number, null],\n default: '',\n },\n withTimestamp: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n disabledClass: {\n type: String,\n default: '!bg-gray-200',\n },\n});\n\nconst emit = defineEmits(['update:modelValue']);\nconst attrs = useAttrs();\nconst input = ref(null);\n\nconst inputType = computed(() => (props.withTimestamp ? 'datetime-local' : 'date'));\nconst normalizedValue = computed(() => props.modelValue ?? '');\nconst cappedMax = computed(() => {\n const limit = props.withTimestamp ? '9999-12-31T23:59' : '9999-12-31';\n const incoming = attrs.max;\n if (typeof incoming !== 'string' || incoming === '') {\n return limit;\n }\n\n return incoming > limit ? limit : incoming;\n});\n\nconst inputAttrs = computed(() => {\n const { class: _class, type: _type, ...rest } = attrs;\n return rest;\n});\n\nconst inputClasses = computed(() => [\n 'w-full border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm',\n attrs.class,\n]);\n\nconst normalizeDateValue = (rawValue) => {\n if (typeof rawValue !== 'string') {\n return '';\n }\n\n return rawValue.replace(/^(\\d{4})\\d+/, '$1');\n};\n\nconst handleDateInput = (event) => {\n const target = event.target;\n if (!target) {\n return;\n }\n\n const rawValue = String(target.value ?? '');\n const normalized = normalizeDateValue(rawValue);\n\n if (normalized !== rawValue) {\n target.value = normalized;\n }\n\n emit('update:modelValue', normalized);\n};\n\nonMounted(() => {\n if (input.value?.hasAttribute('autofocus')) {\n input.value.focus();\n }\n});\n\ndefineExpose({ focus: () => input.value?.focus() });\n</script>\n\n<template>\n <input\n ref=\"input\"\n v-bind=\"inputAttrs\"\n :type=\"inputType\"\n :max=\"cappedMax\"\n :class=\"[inputClasses, (props.disabled ? props.disabledClass : null)]\"\n :value=\"normalizedValue\"\n :disabled=\"props.disabled\"\n @input=\"handleDateInput\"\n @change=\"handleDateInput\"\n >\n</template>\n","<script setup>\nimport { PhotoIcon } from '@heroicons/vue/24/outline';\n\nconst emit = defineEmits(['update:modelValue']);\nconst props = defineProps({\n currentImageUrl: {\n type: String,\n default: '',\n },\n accept: {\n type: String,\n default: 'image/*',\n },\n currentLabel: {\n type: String,\n default: 'Current logo',\n },\n currentSubtext: {\n type: String,\n default: 'Upload a new logo to replace this one',\n },\n attrs: {\n type: Object,\n default: () => ({}),\n },\n});\n\nconst handleFileChange = (event) => {\n const file = event.target.files?.[0] ?? null;\n emit('update:modelValue', file);\n};\n</script>\n\n<template>\n <div>\n <div class=\"relative\">\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <PhotoIcon class=\"size-5 text-gray-400\" />\n </div>\n <input\n v-bind=\"attrs\"\n type=\"file\"\n :accept=\"accept\"\n class=\"block w-full pl-10 pr-4 py-3 border border-gray-300 rounded-lg bg-white text-sm file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-medium file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all duration-200 cursor-pointer\"\n @change=\"handleFileChange\"\n />\n </div>\n\n <div\n v-if=\"props.currentImageUrl\"\n class=\"mt-4 p-4 bg-gray-50 rounded-lg border border-gray-200\"\n >\n <div class=\"flex items-center space-x-4\">\n <img :src=\"props.currentImageUrl\" alt=\"Current logo\" class=\"h-16 w-auto max-w-24 object-contain rounded-lg shadow-sm\">\n <div>\n <p class=\"text-sm font-medium text-gray-900\">{{ props.currentLabel }}</p>\n <p class=\"text-xs text-gray-500\">{{ props.currentSubtext }}</p>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script setup>\nimport { computed } from 'vue';\n\nconst emit = defineEmits(['update:modelValue']);\nconst props = defineProps({\n modelValue: {\n type: [String, Number, null],\n default: '',\n },\n options: {\n type: Array,\n default: () => [],\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n});\n\nconst normalizedOptions = computed(() => {\n return props.options\n .map((option) => (option === null || option === undefined) ? '' : String(option).trim())\n .filter((option) => option !== '');\n});\n\nconst isSelected = (option) => String(option) === String(props.modelValue ?? '');\nconst selectOption = (option) => emit('update:modelValue', option);\n</script>\n\n<template>\n <div class=\"flex h-12 overflow-hidden rounded-lg border border-gray-300 text-sm\">\n <button\n v-for=\"(option, idx) in normalizedOptions\"\n :key=\"`notation-${idx}-${option}`\"\n type=\"button\"\n class=\"flex-1 border-l border-gray-300 px-2 text-center font-semibold transition-colors duration-150 first:border-l-0\"\n :class=\"[\n idx === 0 ? 'rounded-l-lg' : '',\n idx === normalizedOptions.length - 1 ? 'rounded-r-lg' : '',\n isSelected(option)\n ? 'bg-indigo-600 text-white'\n : 'bg-white text-gray-700 hover:bg-gray-50',\n 'focus-visible:ring-2 ',\n ]\"\n :disabled=\"disabled\"\n @click=\"selectOption(option)\"\n >\n {{ option }}\n </button>\n </div>\n</template>\n","<script setup>\nimport { computed, ref } from 'vue';\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number, Boolean, null],\n default: null,\n },\n value: {\n type: [String, Number, Boolean],\n default: true,\n },\n label: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: undefined,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n});\n\nconst isChecked = computed(() => String(props.modelValue ?? '') === String(props.value));\nconst hasFocus = ref(false);\n\nconst handleFocus = () => {\n hasFocus.value = true;\n};\n\nconst handleBlur = () => {\n hasFocus.value = false;\n};\n\nconst onChange = () => emit('update:modelValue', props.value);\n</script>\n\n<template>\n <label\n class=\"inline-flex items-center rounded-full border px-3 py-1 text-sm font-medium select-none transition-colors\"\n :class=\"[\n isChecked ? 'bg-indigo-600 text-white border-indigo-600' : 'text-gray-600 border-gray-200',\n disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer',\n hasFocus && !disabled ? 'ring-2 ring-indigo-500/80 ring-offset-2 ring-offset-white' : '',\n ]\"\n >\n <input\n type=\"radio\"\n class=\"sr-only\"\n :name=\"name\"\n :value=\"value\"\n :checked=\"isChecked\"\n :disabled=\"disabled\"\n @change=\"onChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n >\n <span>{{ isChecked ? '✓' : '○' }} {{ label }}</span>\n </label>\n</template>\n","<script setup>\nimport { computed } from 'vue';\nimport InputGroup from './InputGroup.vue';\n\nconst emit = defineEmits(['update:modelValue']);\nconst props = defineProps({\n modelValue: {\n type: [String, Number, null],\n default: '',\n },\n options: {\n type: Array,\n default: () => [],\n },\n name: {\n type: String,\n default: undefined,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n});\n\nconst normalizedOptions = computed(() => {\n return props.options\n .map((option) => (option === null || option === undefined) ? '' : String(option).trim())\n .filter((option) => option !== '');\n});\n\nconst selectOption = (option) => emit('update:modelValue', option);\n</script>\n\n<template>\n <div class=\"flex flex-wrap gap-3\">\n <InputGroup\n v-for=\"option in normalizedOptions\"\n :key=\"`radio-${name ?? 'group'}-${option}`\"\n type=\"radio-input\"\n :model-value=\"props.modelValue\"\n :name=\"name\"\n :value=\"option\"\n :label=\"option\"\n :disabled=\"disabled\"\n @update:modelValue=\"selectOption\"\n />\n </div>\n</template>\n","<script setup>\nimport { computed, useAttrs } from 'vue';\nimport { ExclamationCircleIcon } from '@heroicons/vue/24/outline';\nimport TextInput from './TextInput.vue';\nimport TextArea from './TextArea.vue';\nimport SelectInput from './SelectInput.vue';\nimport DateInput from './DateInput.vue';\nimport ImageInput from './ImageInput.vue';\nimport NotationInput from './NotationInput.vue';\nimport CheckboxInput from './CheckboxInput.vue';\nimport RadioInput from './RadioInput.vue';\nimport CheckboxMultipleInput from './CheckboxMultipleInput.vue';\nimport RadioMultipleInput from './RadioMultipleInput.vue';\n\ndefineOptions({ inheritAttrs: false });\n\nconst props = defineProps({\n type: {\n type: String,\n required: true,\n },\n label: {\n type: String,\n default: '',\n },\n helperText: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: undefined,\n },\n errorMessage: {\n type: String,\n default: '',\n },\n modelValue: {\n type: [String, Number, Boolean, Array, null],\n default: '',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n disabledClass: {\n type: String,\n default: '!bg-gray-200',\n },\n modelModifiers: {\n type: Object,\n default: () => ({}),\n },\n withTimestamp: {\n type: Boolean,\n default: false,\n },\n options: {\n type: Array,\n default: () => ([]),\n },\n placeholder: {\n type: String,\n default: '',\n },\n placeholderDisabled: {\n type: Boolean,\n default: false,\n },\n softDeleteAware: {\n type: Boolean,\n default: false,\n },\n labelKey: {\n type: String,\n default: 'name',\n },\n valueKey: {\n type: String,\n default: 'id',\n },\n deletedKey: {\n type: String,\n default: 'deleted_at',\n },\n optionLabel: {\n type: Function,\n default: null,\n },\n baseClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n normalTextClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n deletedSelectedClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n optionClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n deletedOptionClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n placeholderClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n accept: {\n type: String,\n default: undefined,\n },\n currentImageUrl: {\n type: String,\n default: '',\n },\n currentLabel: {\n type: String,\n default: 'Current logo',\n },\n currentSubtext: {\n type: String,\n default: 'Upload a new logo to replace this one',\n },\n});\n\nconst emit = defineEmits(['update:modelValue', 'blur']);\nconst attrs = useAttrs();\n\nconst defaultFieldClass = 'block w-full rounded-lg border border-slate-300 bg-white px-4 py-3 text-sm text-slate-900 placeholder:text-slate-400 shadow-sm transition-all duration-200 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20';\nconst updateValue = (value) => emit('update:modelValue', value);\n\nconst hasError = computed(() => Boolean(props.errorMessage));\nconst showsInlineChoiceControl = computed(() => isCheckboxSingleType.value || isRadioSingleType.value);\n\nconst fieldId = computed(() => {\n const id = attrs.id;\n return typeof id === 'string' && id !== '' ? id : undefined;\n});\n\nconst textLikeTypes = [\n 'text',\n 'email',\n 'password',\n 'number',\n 'time',\n 'url',\n 'tel',\n 'search',\n 'month',\n 'week',\n 'color',\n];\n\nconst noComponentTypes = [];\nconst isImageType = computed(() => props.type === 'image');\nconst isNotationType = computed(() => props.type === 'notation');\nconst isCheckboxSingleType = computed(() => props.type === 'checkbox-input');\nconst isRadioSingleType = computed(() => props.type === 'radio-input');\nconst isCheckboxType = computed(() => props.type === 'checkbox');\nconst isRadioType = computed(() => props.type === 'radio');\nconst isDateType = computed(() => props.type === 'date' || props.type === 'datetime-local');\nconst isTextareaType = computed(() => props.type === 'textarea');\nconst isSelectType = computed(() => props.type === 'select');\nconst isTextLikeType = computed(() => textLikeTypes.includes(props.type));\nconst isNoComponentType = computed(() => noComponentTypes.includes(props.type));\n\nconst textInputBindings = computed(() => ({\n ...attrs,\n class: [defaultFieldClass, attrs.class],\n type: props.type,\n modelValue: props.modelValue,\n disabled: props.disabled,\n disabledClass: props.disabledClass,\n}));\n\nconst textAreaBindings = computed(() => ({\n ...attrs,\n class: [defaultFieldClass, attrs.class],\n modelValue: props.modelValue,\n disabled: props.disabled,\n disabledClass: props.disabledClass,\n}));\n\nconst dateBindings = computed(() => ({\n ...attrs,\n class: [defaultFieldClass, attrs.class],\n modelValue: props.modelValue,\n withTimestamp: props.type === 'datetime-local' || props.withTimestamp,\n disabled: props.disabled,\n disabledClass: props.disabledClass,\n}));\n\nconst selectBindings = computed(() => {\n const inputProps = {\n ...attrs,\n class: [defaultFieldClass, attrs.class],\n modelValue: props.modelValue,\n modelModifiers: props.modelModifiers,\n options: props.options,\n placeholder: props.placeholder,\n placeholderDisabled: props.placeholderDisabled,\n disabled: props.disabled,\n softDeleteAware: props.softDeleteAware,\n labelKey: props.labelKey,\n valueKey: props.valueKey,\n deletedKey: props.deletedKey,\n optionLabel: props.optionLabel,\n };\n\n if (props.baseClass !== undefined) inputProps.baseClass = props.baseClass;\n if (props.normalTextClass !== undefined) inputProps.normalTextClass = props.normalTextClass;\n if (props.deletedSelectedClass !== undefined) inputProps.deletedSelectedClass = props.deletedSelectedClass;\n if (props.optionClass !== undefined) inputProps.optionClass = props.optionClass;\n if (props.deletedOptionClass !== undefined) inputProps.deletedOptionClass = props.deletedOptionClass;\n if (props.placeholderClass !== undefined) inputProps.placeholderClass = props.placeholderClass;\n\n return inputProps;\n});\n\nconst notationBindings = computed(() => ({\n ...attrs,\n modelValue: props.modelValue,\n options: props.options,\n disabled: props.disabled,\n}));\n\nconst checkboxBindings = computed(() => ({\n ...attrs,\n modelValue: props.modelValue,\n options: props.options,\n disabled: props.disabled,\n}));\n\nconst radioBindings = computed(() => ({\n ...attrs,\n modelValue: props.modelValue,\n options: props.options,\n name: props.name ?? attrs.name,\n disabled: props.disabled,\n}));\n\nconst checkboxSingleBindings = computed(() => ({\n ...attrs,\n modelValue: props.modelValue,\n label: props.label || attrs.label || '',\n disabled: props.disabled,\n}));\n\nconst radioSingleBindings = computed(() => ({\n ...attrs,\n modelValue: props.modelValue,\n label: props.label || attrs.label || '',\n name: props.name ?? attrs.name,\n disabled: props.disabled,\n}));\n\nconst imageBindings = computed(() => {\n return {\n ...attrs,\n accept: props.accept ?? attrs.accept ?? 'image/*',\n modelValue: props.modelValue,\n currentImageUrl: props.currentImageUrl,\n currentLabel: props.currentLabel,\n currentSubtext: props.currentSubtext,\n };\n});\n</script>\n\n<template>\n <div>\n <label\n v-if=\"label && !showsInlineChoiceControl\"\n :for=\"fieldId\"\n class=\"text-base font-semibold text-gray-900 mb-1 block\"\n >\n {{ label }}\n </label>\n\n <span\n v-if=\"helperText && !showsInlineChoiceControl\"\n class=\"text-xs text-gray-500 mb-1 block break-all\"\n >\n {{ helperText }}\n </span>\n\n <TextArea\n v-if=\"isTextareaType\"\n v-bind=\"textAreaBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <SelectInput\n v-else-if=\"isSelectType\"\n v-bind=\"selectBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <DateInput\n v-else-if=\"isDateType\"\n v-bind=\"dateBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <TextInput\n v-else-if=\"isTextLikeType\"\n v-bind=\"textInputBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <ImageInput\n v-else-if=\"isImageType\"\n v-bind=\"imageBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <CheckboxInput\n v-else-if=\"isCheckboxSingleType\"\n v-bind=\"checkboxSingleBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <RadioInput\n v-else-if=\"isRadioSingleType\"\n v-bind=\"radioSingleBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <NotationInput\n v-else-if=\"isNotationType\"\n v-bind=\"notationBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <CheckboxMultipleInput\n v-else-if=\"isCheckboxType\"\n v-bind=\"checkboxBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <RadioMultipleInput\n v-else-if=\"isRadioType\"\n v-bind=\"radioBindings\"\n @update:modelValue=\"emit('update:modelValue', $event)\"\n @blur=\"emit('blur', $event)\"\n />\n\n <slot\n v-else-if=\"isNoComponentType\"\n name=\"unsupported-type\"\n :type=\"type\"\n :model-value=\"modelValue\"\n :update-value=\"updateValue\"\n :attrs=\"attrs\"\n />\n\n <slot\n v-else\n name=\"unsupported-type\"\n :type=\"type\"\n :model-value=\"modelValue\"\n :update-value=\"updateValue\"\n :attrs=\"attrs\"\n />\n\n <div\n v-if=\"hasError\"\n class=\"flex items-center mt-2 text-sm text-red-600\"\n >\n <ExclamationCircleIcon class=\"mr-1 h-4 w-4 flex-shrink-0\" />\n <span>{{ errorMessage }}</span>\n </div>\n </div>\n</template>\n","<script setup>\nimport { computed } from 'vue';\nimport InputGroup from './InputGroup.vue';\n\nconst emit = defineEmits(['update:modelValue']);\nconst props = defineProps({\n modelValue: {\n type: Array,\n default: () => [],\n },\n options: {\n type: Array,\n default: () => [],\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n});\n\nconst normalizedOptions = computed(() => {\n return props.options\n .map((option) => (option === null || option === undefined) ? '' : String(option).trim())\n .filter((option) => option !== '');\n});\n\nconst isChecked = (option) => {\n return Array.isArray(props.modelValue) && props.modelValue.includes(option);\n};\n\nconst updateSelection = (option, checked) => {\n const nextSelection = Array.isArray(props.modelValue) ? [...props.modelValue] : [];\n const index = nextSelection.indexOf(option);\n\n if (checked && index === -1) {\n nextSelection.push(option);\n } else if (!checked && index !== -1) {\n nextSelection.splice(index, 1);\n }\n\n emit('update:modelValue', nextSelection);\n};\n</script>\n\n<template>\n <div class=\"flex flex-wrap gap-3\">\n <InputGroup\n v-for=\"option in normalizedOptions\"\n :key=\"`checkbox-${option}`\"\n type=\"checkbox-input\"\n :model-value=\"isChecked(option)\"\n :value=\"true\"\n :unchecked-value=\"false\"\n :label=\"option\"\n :disabled=\"disabled\"\n @update:modelValue=\"(checked) => updateSelection(option, checked)\"\n />\n </div>\n</template>\n","<script setup>\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\n\nconst props = defineProps({\n show: {\n type: Boolean,\n default: false,\n },\n maxWidth: {\n type: String,\n default: '2xl',\n },\n closeable: {\n type: Boolean,\n default: true,\n },\n position: {\n type: String,\n default: 'center',\n validator: (value) => ['top', 'center', 'bottom'].includes(value),\n },\n});\n\nconst emit = defineEmits(['close']);\nconst dialog = ref();\nconst showSlot = ref(props.show);\n\nconst openModal = () => {\n document.body.style.overflow = 'hidden';\n showSlot.value = true;\n dialog.value?.showModal();\n};\n\nconst closeModal = () => {\n document.body.style.overflow = null;\n setTimeout(() => {\n dialog.value?.close();\n showSlot.value = false;\n }, 200);\n};\n\nwatch(() => props.show, () => {\n if (props.show) {\n openModal();\n } else {\n closeModal();\n }\n});\n\nonMounted(() => {\n if (props.show) {\n openModal();\n }\n});\n\nconst close = () => {\n if (props.closeable) {\n emit('close');\n }\n};\n\nconst closeOnEscape = (e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n\n if (props.show) {\n close();\n }\n }\n};\n\nonMounted(() => document.addEventListener('keydown', closeOnEscape));\n\nonUnmounted(() => {\n document.removeEventListener('keydown', closeOnEscape);\n document.body.style.overflow = null;\n});\n\nconst maxWidthClass = computed(() => {\n return {\n 'sm': 'sm:max-w-sm',\n 'md': 'sm:max-w-md',\n 'lg': 'sm:max-w-lg',\n 'xl': 'sm:max-w-xl',\n '2xl': 'sm:max-w-2xl',\n }[props.maxWidth];\n});\n\nconst positionClasses = computed(() => {\n switch (props.position) {\n case 'top':\n return 'flex-col items-center pt-16';\n case 'bottom':\n return 'flex-col items-center justify-end pb-16';\n default:\n return 'items-center justify-center';\n }\n});\n</script>\n\n<template>\n <dialog class=\"z-50 m-0 min-h-full min-w-full overflow-y-auto bg-transparent backdrop:bg-transparent\" ref=\"dialog\">\n <div class=\"fixed inset-0 overflow-y-auto px-4 py-6 sm:px-0 z-50 flex\" :class=\"positionClasses\">\n <transition\n enter-active-class=\"ease-out duration-300\"\n enter-from-class=\"opacity-0\"\n enter-to-class=\"opacity-100\"\n leave-active-class=\"ease-in duration-200\"\n leave-from-class=\"opacity-100\"\n leave-to-class=\"opacity-0\"\n >\n <div v-show=\"show\" class=\"fixed inset-0 z-40 transform transition-all\" @click=\"close\">\n <div class=\"absolute inset-0 bg-gray-500 opacity-75\" />\n </div>\n </transition>\n\n <transition\n enter-active-class=\"ease-out duration-300\"\n enter-from-class=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n enter-to-class=\"opacity-100 translate-y-0 sm:scale-100\"\n leave-active-class=\"ease-in duration-200\"\n leave-from-class=\"opacity-100 translate-y-0 sm:scale-100\"\n leave-to-class=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n >\n <div v-show=\"show\" class=\"relative z-50 mb-6 bg-white rounded-lg overflow-hidden shadow-xl transform transition-all sm:w-full sm:mx-auto\" :class=\"maxWidthClass\">\n <slot v-if=\"showSlot\"/>\n </div>\n </transition>\n </div>\n </dialog>\n</template>\n","<script setup>\nimport Modal from './Modal.vue';\nimport { ExclamationTriangleIcon } from '@heroicons/vue/24/outline';\n\nconst emit = defineEmits(['close']);\n\nconst props = defineProps({\n show: {\n type: Boolean,\n default: false,\n },\n maxWidth: {\n type: String,\n default: '2xl',\n },\n closeable: {\n type: Boolean,\n default: true,\n },\n position: {\n type: String,\n default: 'center',\n validator: (value) => ['top', 'center', 'bottom'].includes(value),\n },\n});\n\nconst close = () => {\n emit('close');\n};\n</script>\n\n<template>\n <Modal\n :show=\"show\"\n :max-width=\"maxWidth\"\n :closeable=\"closeable\"\n :position=\"position\"\n @close=\"close\"\n >\n <div class=\"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4\">\n <div class=\"sm:flex sm:items-start\">\n <div class=\"mx-auto shrink-0 flex items-center justify-center size-12 rounded-full bg-red-100 sm:mx-0 sm:size-10\">\n <ExclamationTriangleIcon class=\"size-6 text-red-600\" />\n </div>\n\n <div class=\"mt-3 text-center sm:mt-0 sm:ms-4 sm:text-start\">\n <h3 class=\"text-lg font-medium text-gray-900\">\n <slot name=\"title\" />\n </h3>\n\n <div class=\"mt-4 text-sm text-gray-600\">\n <slot name=\"content\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-col-reverse lg:flex-row lg:justify-end px-6 py-4 bg-gray-100 text-end gap-4 lg:gap-0\">\n <slot name=\"footer\" />\n </div>\n </Modal>\n</template>\n","<script setup>\nimport Modal from './Modal.vue';\n\nconst emit = defineEmits(['close']);\n\ndefineProps({\n show: {\n type: Boolean,\n default: false,\n },\n maxWidth: {\n type: String,\n default: '2xl',\n },\n closeable: {\n type: Boolean,\n default: true,\n },\n});\n\nconst close = () => {\n emit('close');\n};\n</script>\n\n<template>\n <Modal\n :show=\"show\"\n :max-width=\"maxWidth\"\n :closeable=\"closeable\"\n @close=\"close\"\n >\n <div class=\"px-6 py-4\">\n <div class=\"text-lg font-medium text-gray-900\">\n <slot name=\"title\" />\n </div>\n\n <div class=\"mt-4 text-sm text-gray-600\">\n <slot name=\"content\" />\n </div>\n </div>\n\n <div class=\"flex flex-row justify-end px-6 py-4 bg-gray-100 text-end\">\n <slot name=\"footer\" />\n </div>\n </Modal>\n</template>\n","<script setup>\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue';\n\nconst props = defineProps({\n align: {\n type: String,\n default: 'right',\n },\n width: {\n type: String,\n default: '48',\n },\n contentClasses: {\n type: Array,\n default: () => ['py-1', 'bg-white'],\n },\n});\n\nconst open = ref(false);\nconst triggerRef = ref(null);\nconst menuRef = ref(null);\nconst menuStyle = ref({\n position: 'fixed',\n left: '0px',\n top: '0px',\n visibility: 'hidden',\n});\nconst menuOriginClass = ref('ltr:origin-top-right rtl:origin-top-left');\nlet revealFrame = null;\n\nconst closeOnEscape = (e) => {\n if (open.value && e.key === 'Escape') {\n open.value = false;\n }\n};\n\nconst closeOnOutsideClick = (event) => {\n if (!open.value) {\n return;\n }\n\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return;\n }\n\n if (triggerRef.value?.contains(target) || menuRef.value?.contains(target)) {\n return;\n }\n\n open.value = false;\n};\n\nconst setOriginClass = (alignRight, openUpward) => {\n const horizontal = alignRight\n ? 'ltr:origin-top-right rtl:origin-top-left'\n : 'ltr:origin-top-left rtl:origin-top-right';\n\n menuOriginClass.value = `${horizontal} ${openUpward ? 'origin-bottom' : 'origin-top'}`;\n};\n\nconst widthClass = computed(() => {\n return {\n '48': 'w-48',\n }[props.width.toString()];\n});\n\nconst alignmentClasses = computed(() => {\n return menuOriginClass.value;\n});\n\nconst updateDropdownPosition = () => {\n if (!triggerRef.value || !menuRef.value) {\n return;\n }\n\n const rect = triggerRef.value.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const menuWidth = menuRef.value.offsetWidth;\n const menuHeight = menuRef.value.offsetHeight;\n const gap = 8;\n\n const spaceLeft = rect.left - gap;\n const spaceRight = viewportWidth - rect.right - gap;\n\n let alignRight = props.align === 'right';\n\n if (alignRight && rect.right + menuWidth > viewportWidth - gap && spaceLeft > spaceRight) {\n alignRight = false;\n } else if (!alignRight && rect.left + menuWidth > viewportWidth - gap && spaceRight > spaceLeft) {\n alignRight = true;\n }\n\n let left = alignRight ? rect.right - menuWidth : rect.left;\n left = Math.max(gap, Math.min(left, viewportWidth - menuWidth - gap));\n\n const spaceBelow = viewportHeight - rect.bottom - gap;\n const spaceAbove = rect.top - gap;\n const openUpward = spaceBelow < menuHeight && spaceAbove > spaceBelow;\n\n menuStyle.value = {\n position: 'fixed',\n left: `${left}px`,\n ...(openUpward\n ? { bottom: `${viewportHeight - rect.top + gap}px` }\n : { top: `${rect.bottom + gap}px` }),\n zIndex: '9999',\n maxHeight: `${Math.max(Math.min(openUpward ? spaceAbove : spaceBelow, 320), 160)}px`,\n };\n\n setOriginClass(alignRight, openUpward);\n};\n\nconst refreshPosition = async () => {\n if (!open.value) {\n return;\n }\n\n if (revealFrame !== null) {\n cancelAnimationFrame(revealFrame);\n revealFrame = null;\n }\n\n menuStyle.value = {\n ...menuStyle.value,\n visibility: 'hidden',\n };\n\n await nextTick();\n updateDropdownPosition();\n\n revealFrame = requestAnimationFrame(() => {\n if (!open.value) {\n return;\n }\n\n menuStyle.value = {\n ...menuStyle.value,\n visibility: 'visible',\n };\n });\n};\n\nconst handleViewportChange = () => {\n if (open.value) {\n updateDropdownPosition();\n }\n};\n\nwatch(open, (value) => {\n if (value) {\n refreshPosition();\n }\n});\n\nonMounted(() => {\n document.addEventListener('keydown', closeOnEscape);\n document.addEventListener('pointerdown', closeOnOutsideClick, true);\n window.addEventListener('resize', handleViewportChange);\n window.addEventListener('scroll', handleViewportChange, true);\n});\n\nonUnmounted(() => {\n if (revealFrame !== null) {\n cancelAnimationFrame(revealFrame);\n }\n\n document.removeEventListener('keydown', closeOnEscape);\n document.removeEventListener('pointerdown', closeOnOutsideClick, true);\n window.removeEventListener('resize', handleViewportChange);\n window.removeEventListener('scroll', handleViewportChange, true);\n});\n</script>\n\n<template>\n <div class=\"relative inline-block w-fit\">\n <div ref=\"triggerRef\" @click=\"open = ! open\">\n <slot name=\"trigger\" :open=\"open\" />\n </div>\n\n <Teleport to=\"body\">\n <transition\n enter-active-class=\"transition-opacity duration-150 ease-out\"\n enter-from-class=\"opacity-0\"\n enter-to-class=\"opacity-100\"\n leave-active-class=\"transition-opacity duration-100 ease-in\"\n leave-from-class=\"opacity-100\"\n leave-to-class=\"opacity-0\"\n >\n <div\n v-if=\"open\"\n ref=\"menuRef\"\n class=\"z-50 rounded-xl shadow-xl shadow-gray-900/10\"\n :class=\"[widthClass, alignmentClasses]\"\n :style=\"menuStyle\"\n @click=\"open = false\"\n >\n <div class=\"rounded-xl ring-1 ring-gray-200/60 backdrop-blur-sm bg-white/95\" :class=\"contentClasses\">\n <slot name=\"content\" />\n </div>\n </div>\n </transition>\n </Teleport>\n </div>\n</template>\n","<script setup>\nimport { Link } from '@inertiajs/vue3';\n\ndefineProps({\n href: String,\n as: String,\n});\n</script>\n\n<template>\n <div>\n <button v-if=\"as == 'button'\" type=\"submit\" class=\"block w-full px-4 py-2 text-start text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out\">\n <slot />\n </button>\n\n <a v-else-if=\"as =='a'\" :href=\"href\" class=\"block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out\">\n <slot />\n </a>\n\n <Link v-else :href=\"href\" class=\"block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out\">\n <slot />\n </Link>\n </div>\n</template>\n","<script setup>\nimport { computed, useSlots } from 'vue';\nimport SectionTitle from './SectionTitle.vue';\n\ndefineEmits(['submitted']);\n\nconst hasActions = computed(() => !! useSlots().actions);\n</script>\n\n<template>\n <div class=\"md:grid md:grid-cols-3 md:gap-6\">\n <SectionTitle>\n <template #title>\n <slot name=\"title\" />\n </template>\n <template #description>\n <slot name=\"description\" />\n </template>\n </SectionTitle>\n\n <div class=\"mt-5 md:mt-0 md:col-span-2 shadow sm:rounded-lg\">\n <form @submit.prevent=\"$emit('submitted')\">\n <div\n class=\"px-4 py-5 bg-white sm:p-6 \"\n :class=\"hasActions ? 'sm:rounded-tl-md sm:rounded-tr-md' : 'sm:rounded-md'\"\n >\n <div class=\"grid grid-cols-6 gap-6\">\n <slot name=\"form\" />\n </div>\n </div>\n\n <div v-if=\"hasActions\" class=\"flex items-center justify-start px-3 pb-6 bg-white text-end sm:rounded-bl-md sm:rounded-br-md\">\n <slot name=\"actions\" />\n </div>\n </form>\n </div>\n </div>\n</template>\n","<script setup>\ndefineProps({\n message: String,\n});\n</script>\n\n<template>\n <div v-show=\"message\">\n <p class=\"text-sm text-red-600\">\n {{ message }}\n </p>\n </div>\n</template>\n","<script setup>\ndefineProps({\n value: String,\n});\n</script>\n\n<template>\n <label class=\"block font-medium text-sm text-gray-700\">\n <span v-if=\"value\">{{ value }}</span>\n <span v-else><slot /></span>\n </label>\n</template>\n","<script setup>\ndefineOptions({\n inheritAttrs: false,\n});\n\nimport { Link } from '@inertiajs/vue3';\nimport { computed, useAttrs } from 'vue';\n\nconst attrs = useAttrs();\n\nconst props = defineProps({\n href: {\n type: String,\n required: true,\n },\n title: {\n type: String,\n default: null,\n },\n external: {\n type: Boolean,\n default: false,\n },\n target: {\n type: String,\n default: null,\n },\n rel: {\n type: String,\n default: null,\n },\n variant: {\n type: String,\n default: 'primary',\n },\n});\n\nconst variantClasses = {\n primary: 'bg-gradient-to-r from-blue-500 to-blue-600 text-white shadow-[0_6px_14px_rgba(37,99,235,0.14)] hover:from-blue-600 hover:to-blue-700 hover:shadow-[0_8px_18px_rgba(37,99,235,0.18)] focus:ring-blue-500',\n success: 'bg-gradient-to-r from-green-500 to-green-600 text-white shadow-[0_6px_14px_rgba(34,197,94,0.14)] hover:from-green-600 hover:to-green-700 hover:shadow-[0_8px_18px_rgba(34,197,94,0.18)] focus:ring-green-500',\n secondary: 'bg-gradient-to-r from-slate-700 to-slate-800 text-white shadow-[0_8px_18px_rgba(15,23,42,0.16)] hover:from-slate-800 hover:to-slate-900 hover:shadow-[0_10px_22px_rgba(15,23,42,0.22)] focus:ring-slate-500',\n tertiary: 'border border-slate-300 bg-white text-slate-700 shadow-sm hover:bg-slate-50 hover:border-slate-400 hover:shadow focus:ring-slate-500',\n warning: 'border border-amber-300 bg-amber-50 text-amber-800 shadow-sm hover:bg-amber-100 focus:ring-amber-500',\n danger: 'border border-rose-300 bg-rose-50 text-rose-700 shadow-sm hover:bg-rose-100 focus:ring-rose-500',\n};\n\nconst resolvedVariant = computed(() => {\n return variantClasses[props.variant] ? props.variant : 'primary';\n});\n\nconst linkClasses = computed(() => [\n 'min-w-[40px] min-h-[35px] inline-flex items-center justify-center rounded-lg px-4 py-2 text-sm font-semibold tracking-tight transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-slate-50',\n variantClasses[resolvedVariant.value],\n attrs.class,\n]);\n</script>\n\n<template>\n <Link\n v-if=\"!external\"\n v-bind=\"attrs\"\n :href=\"href\"\n :title=\"title\"\n :class=\"linkClasses\"\n >\n <slot />\n </Link>\n <a\n v-else\n v-bind=\"attrs\"\n :href=\"href\"\n :title=\"title\"\n :target=\"target\"\n :rel=\"rel\"\n :class=\"linkClasses\"\n >\n <slot />\n </a>\n</template>\n","<script setup>\nimport { computed } from 'vue';\nimport { Link } from '@inertiajs/vue3';\n\nconst props = defineProps({\n href: String,\n active: Boolean,\n});\n\nconst classes = computed(() => {\n return props.active\n ? 'inline-flex items-center px-1 pt-1 border-b-2 border-indigo-500 text-sm font-semibold leading-5 text-gray-900 focus:outline-none focus:border-indigo-700 transition-all duration-300 ease-out relative group'\n : 'inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-600 hover:text-gray-900 hover:border-gray-400 focus:outline-none focus:text-gray-900 focus:border-gray-400 transition-all duration-300 ease-out relative group';\n});\n</script>\n\n<template>\n <Link :href=\"href\" :class=\"classes\">\n <slot />\n </Link>\n</template>\n","<script setup>\nimport { computed } from 'vue';\nimport { Link } from '@inertiajs/vue3';\n\nconst props = defineProps({\n active: Boolean,\n href: String,\n as: String,\n});\n\nconst classes = computed(() => {\n return props.active\n ? 'block w-full ps-3 pe-4 py-2 border-l-4 border-indigo-400 text-start text-base font-medium text-indigo-700 bg-indigo-50 focus:outline-none focus:text-indigo-800 focus:bg-indigo-100 focus:border-indigo-700 transition duration-150 ease-in-out'\n : 'block w-full ps-3 pe-4 py-2 border-l-4 border-transparent text-start text-base font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-50 hover:border-gray-300 focus:outline-none focus:text-gray-800 focus:bg-gray-50 focus:border-gray-300 transition duration-150 ease-in-out';\n});\n</script>\n\n<template>\n <div>\n <button v-if=\"as == 'button'\" :class=\"classes\" class=\"w-full text-start\">\n <slot />\n </button>\n\n <a v-else-if=\"as == 'a'\" :class=\"classes\" class=\"w-full text-start\" :href=\"href\">\n <slot />\n </a>\n\n <Link v-else :href=\"href\" :class=\"classes\">\n <slot />\n </Link>\n </div>\n</template>\n","<script setup>\nimport Divider from \"./Divider.vue\";\n</script>\n\n<template>\n <div class=\"hidden sm:block\">\n <div class=\"py-8\">\n <Divider />\n </div>\n </div>\n</template>\n","<script setup>\nimport { computed } from 'vue';\nimport { ChevronDownIcon, ChevronUpIcon } from '@heroicons/vue/24/outline';\n\nconst props = defineProps({\n fields: {\n type: Array,\n required: true,\n validator: (value) => {\n return value.every(field =>\n typeof field === 'object' &&\n field.key &&\n field.label\n );\n }\n },\n currentSortField: {\n type: String,\n default: ''\n },\n currentDirection: {\n type: String,\n default: 'asc',\n validator: (value) => ['asc', 'desc'].includes(value)\n },\n count: {\n type: Number,\n default: 0\n },\n countLabel: {\n type: String,\n default: 'items'\n },\n sortByLabel: {\n type: String,\n default: 'Sort by'\n }\n});\n\nconst emit = defineEmits(['sort']);\n\nconst handleSort = (fieldKey) => {\n emit('sort', fieldKey);\n};\n</script>\n\n<template>\n <div class=\"bg-white/80 backdrop-blur-sm border border-gray-200/60 rounded-xl px-6 py-4\">\n <div class=\"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4\">\n <div class=\"flex items-center gap-3\">\n <label class=\"text-sm font-medium text-gray-700\">{{ sortByLabel }}:</label>\n <div class=\"flex flex-wrap items-center gap-2\">\n <button\n v-for=\"field in fields\"\n :key=\"field.key\"\n @click=\"handleSort(field.key)\"\n :class=\"[\n 'px-3 py-1.5 text-sm font-medium rounded-lg transition-all duration-200',\n currentSortField === field.key\n ? 'bg-blue-500 text-white shadow-sm'\n : 'bg-gray-100 text-gray-700 hover:bg-gray-200'\n ]\"\n >\n {{ field.label }}\n <ChevronUpIcon\n v-if=\"currentSortField === field.key && currentDirection === 'asc'\"\n class=\"w-3 h-3 ml-1 inline\"\n />\n <ChevronDownIcon\n v-if=\"currentSortField === field.key && currentDirection === 'desc'\"\n class=\"w-3 h-3 ml-1 inline\"\n />\n </button>\n </div>\n </div>\n <div class=\"text-xs text-gray-500\">\n {{ count }} {{ countLabel }}\n </div>\n </div>\n </div>\n</template>\n","<script setup>\nimport { computed } from 'vue';\nimport { ChevronDownIcon, ChevronUpIcon } from '@heroicons/vue/24/outline';\n\nconst props = defineProps({\n field: {\n type: String,\n required: true\n },\n currentSortField: {\n type: String,\n default: ''\n },\n currentDirection: {\n type: String,\n default: 'asc'\n }\n});\n\nconst isCurrentSort = computed(() => {\n return props.field === props.currentSortField;\n});\n\nconst sortIconClass = computed(() => {\n if (!isCurrentSort.value) {\n return 'text-gray-400';\n }\n\n return 'text-blue-600';\n});\n</script>\n\n<template>\n <th\n class=\"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider cursor-pointer hover:bg-gray-100 transition-colors duration-150\"\n @click=\"$emit('sort', field)\"\n >\n <div class=\"flex items-center space-x-1\">\n <span><slot></slot></span>\n <div class=\"flex flex-col\">\n <ChevronUpIcon\n v-if=\"isCurrentSort && currentDirection === 'asc'\"\n :class=\"sortIconClass\"\n class=\"w-3 h-3\"\n />\n <ChevronDownIcon\n v-if=\"isCurrentSort && currentDirection === 'desc'\"\n :class=\"sortIconClass\"\n class=\"w-3 h-3\"\n />\n </div>\n </div>\n </th>\n</template>\n","<script setup>\nimport { computed, useSlots } from 'vue';\nimport ThSortable from \"./ThSortable.vue\";\nimport LinkButton from \"./LinkButton.vue\";\n\nconst slots = useSlots();\n\nconst props = defineProps({\n data: {\n type: Array,\n required: true\n },\n columns: {\n type: Array,\n required: true\n },\n sortField: {\n type: String,\n default: ''\n },\n sortDirection: {\n type: String,\n default: 'asc'\n },\n emptyState: {\n type: Object,\n default: () => ({\n icon: 'UsersIcon',\n title: 'No data found',\n description: 'No items to display.',\n actionText: null,\n actionUrl: null\n })\n },\n rowClasses: {\n type: Function,\n default: (item, index) => [\n 'transition-colors duration-150',\n item.deleted_at\n ? 'bg-rose-50 hover:bg-rose-100'\n : 'odd:bg-white even:bg-slate-50 hover:bg-slate-100'\n ]\n },\n maxTextLength: {\n type: Number,\n default: 40\n },\n isCard: {\n type: Boolean,\n default: true\n },\n actionsLabel: {\n type: String,\n default: 'Actions'\n },\n deletedLabel: {\n type: String,\n default: 'Deleted'\n }\n});\n\nconst emit = defineEmits(['sort']);\n\nconst hasActionsSlot = computed(() => !!slots.actions);\nconst hasData = computed(() => props.data && props.data.length > 0);\n\nconst sortBy = (field) => {\n emit('sort', field);\n};\n\nconst truncateText = (value) => {\n const stringValue = String(value ?? '');\n const maxLength = Number(props.maxTextLength);\n\n if (!Number.isFinite(maxLength) || maxLength <= 0 || stringValue.length <= maxLength) {\n return stringValue;\n }\n\n return `${stringValue.slice(0, maxLength)}...`;\n};\n\nconst getCellContent = (item, column) => {\n if (column.slot) {\n return null; // Will be handled by slot\n }\n \n if (column.render) {\n return column.render(item);\n }\n \n // Handle nested properties\n const value = column.key.split('.').reduce((obj, key) => obj?.[key], item);\n \n // Return \"-\" for empty values (null, undefined, empty string)\n if (value === null || value === undefined || value === '') {\n return '-';\n }\n \n return truncateText(value);\n};\n\nconst isDeleted = (item) => {\n return item.deleted_at || item.deleted;\n};\n\nconst getColumnClass = (column) => {\n // If custom class is provided, use it entirely\n if (column.class) {\n return column.class;\n }\n \n // Default behavior\n let classes = 'px-6 py-4 text-sm truncate';\n \n // Add font-medium if not secondary text\n if (!column.isSecondary) {\n classes += ' font-medium';\n }\n \n // Add gray color for secondary text\n if (column.isSecondary) {\n classes += ' text-slate-600';\n }\n \n return classes;\n};\n\nconst getHeaderClass = (column) => {\n if (column.sortable) {\n return ''; // ThSortable handles its own classes\n }\n return 'px-6 py-3 text-left text-[11px] font-semibold tracking-[0.12em] text-slate-600 uppercase';\n};\n</script>\n\n<template>\n <div :class=\"['bg-white/90 backdrop-blur-sm', isCard ? 'border border-slate-200/70 rounded-2xl shadow-[0_12px_30px_rgba(15,23,42,0.06)] animate-fadeIn mx-4 md:mx-0' : '']\">\n <div :class=\"['overflow-x-auto', isCard ? 'rounded-xl' : '']\">\n <table class=\"min-w-full divide-y divide-slate-200/80\">\n <thead class=\"bg-slate-50/80\">\n <tr>\n <!-- Regular columns -->\n <template v-for=\"column in columns\" :key=\"column.key\">\n <ThSortable\n v-if=\"column.sortable\"\n :field=\"column.key\"\n :current-sort-field=\"sortField\"\n :current-direction=\"sortDirection\"\n @sort=\"sortBy\"\n >\n {{ column.label }}\n </ThSortable>\n <th\n v-else\n :class=\"[getHeaderClass(column), { 'text-right': column.align === 'right' }]\"\n >\n {{ column.label }}\n </th>\n </template>\n \n <!-- Actions column -->\n <th v-if=\"$slots.actions\" class=\"px-6 py-3 text-right text-[11px] font-semibold tracking-[0.12em] text-slate-600 uppercase\">\n {{ actionsLabel }}\n </th>\n </tr>\n </thead>\n <tbody class=\"bg-white divide-y divide-slate-200/80\">\n <tr\n v-for=\"(item, index) in data\"\n :key=\"item.id\"\n :class=\"rowClasses(item, index)\"\n >\n <!-- Regular columns -->\n <template v-for=\"column in columns\" :key=\"column.key\">\n <td :class=\"getColumnClass(column)\">\n <!-- Default name slot with deleted badge -->\n <template v-if=\"column.key === 'name' && !column.slot\">\n <div class=\"flex items-center\">\n <div class=\"text-sm font-medium text-slate-900 truncate\" :title=\"getCellContent(item, column)\">\n {{ getCellContent(item, column) }}\n </div>\n <span v-if=\"isDeleted(item)\" class=\"ml-2 inline-flex items-center rounded-full bg-rose-100 px-2 py-1 text-xs font-medium text-rose-700\">\n {{ deletedLabel }}\n </span>\n </div>\n </template>\n <!-- Slot for custom content -->\n <slot \n v-else-if=\"column.slot\" \n :name=\"column.slot\" \n :item=\"item\" \n :column=\"column\"\n :index=\"index\"\n />\n <!-- Custom render function -->\n <div v-else-if=\"column.render\" v-html=\"column.render(item)\"></div>\n <!-- Regular content -->\n <div v-else>\n {{ getCellContent(item, column) }}\n </div>\n </td>\n </template>\n \n <!-- Actions column -->\n <td v-if=\"$slots.actions\" class=\"px-6 py-4 whitespace-nowrap text-right text-sm font-medium\">\n <slot name=\"actions\" :item=\"item\" :index=\"index\" />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n \n <!-- Empty State -->\n <div v-if=\"!hasData\" class=\"text-center py-12\">\n <div class=\"inline-flex items-center justify-center w-16 h-16 rounded-full bg-slate-100 mb-4\">\n <component :is=\"emptyState.icon\" class=\"w-8 h-8 text-slate-400\" />\n </div>\n <h3 class=\"mb-2 text-lg font-semibold text-slate-900\">{{ emptyState.title }}</h3>\n <p class=\"mb-4 text-slate-600\">{{ emptyState.description }}</p>\n <LinkButton v-if=\"emptyState.actionText && emptyState.actionUrl\" :href=\"emptyState.actionUrl\" variant=\"primary\">\n {{ emptyState.actionText }}\n </LinkButton>\n </div>\n </div>\n</template>\n","<script setup>\nimport { computed, ref, useSlots, watch } from 'vue';\nimport { CheckIcon, MagnifyingGlassIcon, PencilSquareIcon } from '@heroicons/vue/24/outline';\nimport Button from './Button.vue';\nimport InputGroup from './InputGroup.vue';\nimport LinkButton from './LinkButton.vue';\nimport ThSortable from './ThSortable.vue';\n\nconst slots = useSlots();\n\nconst props = defineProps({\n data: {\n type: Array,\n required: true,\n },\n columns: {\n type: Array,\n required: true,\n },\n sortField: {\n type: String,\n default: '',\n },\n sortDirection: {\n type: String,\n default: 'asc',\n },\n emptyState: {\n type: Object,\n default: () => ({\n icon: 'UsersIcon',\n title: 'No data found',\n description: 'No items to display.',\n actionText: null,\n actionUrl: null,\n }),\n },\n rowClasses: {\n type: Function,\n default: (item) => [\n 'transition-colors duration-150',\n item.deleted_at\n ? 'bg-red-50 hover:bg-red-100'\n : 'odd:bg-white even:bg-gray-50 hover:bg-gray-100',\n ],\n },\n getErrorMessage: {\n type: Function,\n default: () => null,\n },\n search: {\n type: Boolean,\n default: true,\n },\n searchPlaceholder: {\n type: String,\n default: 'Search...',\n },\n rowKey: {\n type: [String, Function],\n default: 'id',\n },\n isDeletedFn: {\n type: Function,\n default: (item) => Boolean(item?.deleted_at || item?.deleted),\n },\n mutateRows: {\n type: Boolean,\n default: true,\n },\n isCard: {\n type: Boolean,\n default: true,\n },\n actionsLabel: {\n type: String,\n default: 'Actions',\n },\n deletedLabel: {\n type: String,\n default: 'Deleted',\n },\n maxTextLength: {\n type: Number,\n default: 40,\n },\n rowEditing: {\n type: Boolean,\n default: true,\n },\n editingRowKey: {\n type: [String, Number, null],\n default: undefined,\n },\n canEditRow: {\n type: Function,\n default: () => true,\n },\n editLabel: {\n type: String,\n default: 'Edit row',\n },\n cancelLabel: {\n type: String,\n default: 'Done editing',\n },\n});\n\nconst emit = defineEmits(['sort', 'update', 'update:editingRowKey', 'edit-start', 'edit-cancel']);\n\nconst localSortField = ref(props.sortField);\nconst localSortDirection = ref(props.sortDirection);\nconst searchQuery = ref('');\nconst internalEditingRowKey = ref(null);\nconst editingDraft = ref({});\nconst resolvedEditingRowKey = computed(() => {\n return props.editingRowKey !== undefined ? props.editingRowKey : internalEditingRowKey.value;\n});\n\nwatch(() => props.sortField, (value) => {\n localSortField.value = value;\n});\n\nwatch(() => props.sortDirection, (value) => {\n localSortDirection.value = value;\n});\n\nwatch(() => props.rowEditing, (value) => {\n if (!value) {\n resetEditState();\n }\n});\n\nwatch(resolvedEditingRowKey, (nextKey, previousKey) => {\n if (nextKey === previousKey) {\n return;\n }\n\n if (nextKey === null || nextKey === undefined || nextKey === '') {\n editingDraft.value = {};\n return;\n }\n\n const activeItem = props.data.find((item, index) => getRowKey(item, index) === nextKey);\n editingDraft.value = activeItem ? cloneValue(activeItem) : {};\n});\n\nwatch(\n () => props.data,\n () => {\n if (resolvedEditingRowKey.value === null || resolvedEditingRowKey.value === undefined) {\n return;\n }\n\n const activeItem = props.data.find((item, index) => getRowKey(item, index) === resolvedEditingRowKey.value);\n if (!activeItem) {\n resetEditState();\n }\n },\n { deep: true },\n);\n\nconst sortedData = computed(() => {\n let filteredData = props.data;\n\n if (props.search && searchQuery.value.trim()) {\n const query = searchQuery.value.toLowerCase().trim();\n filteredData = props.data.filter((item) => {\n return props.columns.some((column) => {\n if (!column.searchable) {\n return false;\n }\n\n const value = getNestedValue(item, column.key);\n if (value === null || value === undefined || value === '') {\n return false;\n }\n\n return String(value).toLowerCase().includes(query);\n });\n });\n }\n\n if (!localSortField.value) {\n return filteredData;\n }\n\n return [...filteredData].sort((a, b) => {\n const aValue = getNestedValue(a, localSortField.value);\n const bValue = getNestedValue(b, localSortField.value);\n\n if (aValue === null || aValue === undefined || aValue === '') return 1;\n if (bValue === null || bValue === undefined || bValue === '') return -1;\n\n let comparison = 0;\n if (aValue < bValue) comparison = -1;\n if (aValue > bValue) comparison = 1;\n\n return localSortDirection.value === 'desc' ? -comparison : comparison;\n });\n});\n\nconst hasActionsSlot = computed(() => Boolean(slots.actions));\nconst hasActionsColumn = computed(() => hasActionsSlot.value || props.rowEditing);\nconst hasData = computed(() => sortedData.value && sortedData.value.length > 0);\n\nconst sortBy = (field) => {\n if (localSortField.value === field) {\n localSortDirection.value = localSortDirection.value === 'asc' ? 'desc' : 'asc';\n } else {\n localSortField.value = field;\n localSortDirection.value = 'asc';\n }\n\n emit('sort', { field, direction: localSortDirection.value });\n};\n\nconst cloneValue = (value) => {\n if (Array.isArray(value)) {\n return value.map((entry) => cloneValue(entry));\n }\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, cloneValue(entry)]),\n );\n }\n\n return value;\n};\n\nconst truncateText = (value) => {\n const stringValue = String(value ?? '');\n const maxLength = Number(props.maxTextLength);\n\n if (!Number.isFinite(maxLength) || maxLength <= 0 || stringValue.length <= maxLength) {\n return stringValue;\n }\n\n return `${stringValue.slice(0, maxLength)}...`;\n};\n\nconst getNestedValue = (obj, path) => {\n if (!path || typeof path !== 'string') {\n return obj;\n }\n\n return path.split('.').reduce((current, key) => current?.[key], obj);\n};\n\nconst setNestedValue = (obj, path, value) => {\n if (!path || typeof path !== 'string' || obj == null) {\n return;\n }\n\n const keys = path.split('.');\n const lastKey = keys.pop();\n let current = obj;\n\n for (const key of keys) {\n if (current[key] === undefined || current[key] === null || typeof current[key] !== 'object') {\n current[key] = {};\n }\n\n current = current[key];\n }\n\n if (lastKey !== undefined) {\n current[lastKey] = value;\n }\n};\n\nconst getDataIndex = (item) => {\n if (item?.id) {\n return props.data.findIndex((row) => row?.id === item.id);\n }\n\n return props.data.findIndex((row) => row === item);\n};\n\nconst getRowKey = (item, index) => {\n if (typeof props.rowKey === 'function') {\n const customKey = props.rowKey(item, index);\n return customKey ?? `row-${index}`;\n }\n\n const resolved = getNestedValue(item, props.rowKey);\n return resolved ?? `row-${index}`;\n};\n\nconst getEditSlotName = (column) => `${column.slot}-edit`;\n\nconst isDeleted = (item) => props.isDeletedFn(item);\n\nconst setEditingRowKey = (value) => {\n if (props.editingRowKey === undefined) {\n internalEditingRowKey.value = value;\n }\n\n emit('update:editingRowKey', value);\n};\n\nconst isEditingRow = (item, index) => {\n return props.rowEditing && resolvedEditingRowKey.value !== null && resolvedEditingRowKey.value === getRowKey(item, index);\n};\n\nconst isRowEditDisabled = (item, index) => {\n if (!props.rowEditing) {\n return true;\n }\n\n if (!props.canEditRow(item, index) || isDeleted(item)) {\n return true;\n }\n\n return resolvedEditingRowKey.value !== null && !isEditingRow(item, index);\n};\n\nconst resetEditState = () => {\n setEditingRowKey(null);\n};\n\nconst startEdit = (item, index) => {\n if (isRowEditDisabled(item, index)) {\n return;\n }\n\n const rowKey = getRowKey(item, index);\n setEditingRowKey(rowKey);\n emit('edit-start', {\n item,\n index: getDataIndex(item),\n rowKey,\n });\n};\n\nconst cancelEdit = (item, index) => {\n emit('edit-cancel', {\n item,\n index: getDataIndex(item),\n rowKey: getRowKey(item, index),\n });\n resetEditState();\n};\n\nconst updateDraft = (field, value, item, eventName = undefined) => {\n setNestedValue(editingDraft.value, field, value);\n\n if (props.mutateRows) {\n setNestedValue(item, field, cloneValue(value));\n }\n\n emit('update', {\n item,\n draft: editingDraft.value,\n field,\n value,\n index: getDataIndex(item),\n rowKey: resolvedEditingRowKey.value,\n event: eventName,\n });\n};\n\nconst getCellContent = (item, column) => {\n if (column.slot) {\n return null;\n }\n\n if (column.render) {\n return column.render(item);\n }\n\n const value = getNestedValue(item, column.key);\n if (value === null || value === undefined || value === '') {\n return '-';\n }\n\n return truncateText(value);\n};\n\nconst getColumnClass = (column, item, index) => {\n if (column.class) {\n return column.class;\n }\n\n const isEditing = isEditingRow(item, index) && (column.input || slots[getEditSlotName(column)]);\n let classes = isEditing\n ? 'px-6 py-3 text-sm align-top'\n : 'px-6 py-4 text-sm truncate';\n\n if (!column.isSecondary) {\n classes += ' font-medium';\n }\n\n if (column.isSecondary) {\n classes += ' text-gray-600';\n }\n\n return classes;\n};\n\nconst getHeaderClass = (column) => {\n if (column.sortable) {\n return '';\n }\n\n return 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider';\n};\n\nconst getInputType = (column) => column.inputType || 'text';\n\nconst getInputClass = (column) => {\n let classes = 'block w-full min-w-[12rem] sm:min-w-[10rem] max-w-xs rounded-md border border-gray-200 bg-gray-50 px-3 py-2 text-sm text-gray-900 shadow-none placeholder-gray-400 transition-colors duration-200 focus:border-blue-500 focus:bg-white focus:outline-none focus:ring-2 focus:ring-blue-500/20';\n\n if (column.inputClass) {\n classes += ` ${column.inputClass}`;\n }\n\n if (column.isSecondary) {\n classes += ' text-gray-600';\n }\n\n return classes;\n};\n\nconst getInputPlaceholder = (column) => column.placeholder || column.label || '';\n\nconst getInputValue = (item, column, index) => {\n if (isEditingRow(item, index)) {\n return getNestedValue(editingDraft.value, column.key) ?? '';\n }\n\n return getNestedValue(item, column.key) ?? '';\n};\n\nconst getColumnError = (item, column) => {\n const arrayIndex = getDataIndex(item);\n\n if (arrayIndex === -1) {\n return null;\n }\n\n return props.getErrorMessage(arrayIndex, column.key);\n};\n\nconst getSlotBindings = (item, column, index) => ({\n item,\n column,\n index,\n isEditing: isEditingRow(item, index),\n draft: editingDraft.value,\n rowKey: getRowKey(item, index),\n updateDraft: (field, value) => updateDraft(field, value, item),\n startEdit: () => startEdit(item, index),\n cancelEdit: () => cancelEdit(item, index),\n});\n\nconst resolveColumnDisabled = (column, item, index) => {\n const disabled = typeof column.disabled === 'function'\n ? column.disabled(item, index)\n : column.disabled;\n\n return Boolean(disabled || isDeleted(item));\n};\n</script>\n\n<template>\n <div :class=\"['bg-white', isCard ? 'mx-4 md:mx-0 border border-gray-200/60 rounded-xl shadow-[0_1px_3px_rgba(0,0,0,0.1)] animate-fadeIn' : '']\">\n <div\n v-if=\"search\"\n :class=\"[\n 'px-6 py-4',\n isCard ? 'border-b border-gray-200 bg-gray-50/80 rounded-t-xl' : 'mb-4 bg-white/80 backdrop-blur-sm'\n ]\"\n >\n <div class=\"relative max-w-sm\">\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <MagnifyingGlassIcon class=\"h-4 w-4 text-gray-400\" />\n </div>\n <input\n v-model=\"searchQuery\"\n type=\"text\"\n :placeholder=\"searchPlaceholder\"\n class=\"block w-full rounded-md border border-gray-200 bg-white pl-9 pr-3 py-2 text-sm text-gray-900 placeholder-gray-500 transition-colors duration-200 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20\"\n />\n </div>\n </div>\n\n <div v-if=\"hasData\" :class=\"['overflow-x-auto', isCard ? 'rounded-xl' : '']\">\n <table class=\"min-w-full divide-y divide-gray-200\">\n <thead class=\"bg-gray-50\">\n <tr>\n <template v-for=\"column in columns\" :key=\"column.key\">\n <ThSortable\n v-if=\"column.sortable\"\n :field=\"column.key\"\n :current-sort-field=\"localSortField\"\n :current-direction=\"localSortDirection\"\n @sort=\"sortBy\"\n >\n {{ column.label }}\n </ThSortable>\n <th\n v-else\n :class=\"[getHeaderClass(column), { 'text-right': column.align === 'right' }]\"\n >\n {{ column.label }}\n </th>\n </template>\n\n <th\n v-if=\"hasActionsColumn\"\n class=\"px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider\"\n >\n {{ actionsLabel }}\n </th>\n </tr>\n </thead>\n\n <tbody class=\"bg-white divide-y divide-gray-200\">\n <tr\n v-for=\"(item, index) in sortedData\"\n :key=\"getRowKey(item, index)\"\n :class=\"rowClasses(item, index)\"\n >\n <template v-for=\"column in columns\" :key=\"column.key\">\n <td :class=\"[getColumnClass(column, item, index), { 'text-right': column.align === 'right' }]\">\n <template v-if=\"isEditingRow(item, index) && column.slot && slots[getEditSlotName(column)]\">\n <slot\n :name=\"getEditSlotName(column)\"\n v-bind=\"getSlotBindings(item, column, index)\"\n />\n </template>\n\n <InputGroup\n v-else-if=\"isEditingRow(item, index) && column.input\"\n :type=\"getInputType(column)\"\n :class=\"getInputClass(column)\"\n :placeholder=\"getInputPlaceholder(column)\"\n :model-value=\"getInputValue(item, column, index)\"\n :disabled=\"resolveColumnDisabled(column, item, index)\"\n :maxlength=\"column.maxlength\"\n :error-message=\"getColumnError(item, column)\"\n :helper-text=\"''\"\n @update:model-value=\"value => updateDraft(column.key, value, item)\"\n @blur=\"event => updateDraft(column.key, event?.target?.value ?? getInputValue(item, column, index), item, 'blur')\"\n />\n\n <template v-else-if=\"column.key === 'name' && !column.slot\">\n <div class=\"flex items-center\">\n <div class=\"text-sm font-medium truncate\" :title=\"getCellContent(item, column)\">\n {{ getCellContent(item, column) }}\n </div>\n <span\n v-if=\"isDeleted(item)\"\n class=\"ml-2 inline-flex items-center rounded-full bg-red-100 px-2 py-1 text-xs font-medium text-red-800\"\n >\n {{ deletedLabel }}\n </span>\n </div>\n </template>\n\n <slot\n v-else-if=\"column.slot\"\n :name=\"column.slot\"\n v-bind=\"getSlotBindings(item, column, index)\"\n />\n\n <div v-else-if=\"column.render\" v-html=\"column.render(item)\"></div>\n\n <div v-else>\n {{ getCellContent(item, column) }}\n </div>\n </td>\n </template>\n\n <td\n v-if=\"hasActionsColumn\"\n class=\"px-6 py-4 whitespace-nowrap text-right text-sm font-medium\"\n >\n <div class=\"flex items-center justify-end gap-2\">\n <slot\n v-if=\"hasActionsSlot\"\n name=\"actions\"\n v-bind=\"getSlotBindings(item, null, index)\"\n />\n\n <template v-if=\"rowEditing && isEditingRow(item, index)\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n :title=\"cancelLabel\"\n :aria-label=\"cancelLabel\"\n @click=\"cancelEdit(item, index)\"\n >\n <CheckIcon class=\"size-4\" />\n </Button>\n </template>\n\n <Button\n v-else-if=\"rowEditing\"\n type=\"button\"\n variant=\"warning\"\n :disabled=\"isRowEditDisabled(item, index)\"\n :title=\"editLabel\"\n :aria-label=\"editLabel\"\n @click=\"startEdit(item, index)\"\n >\n <PencilSquareIcon class=\"size-4\" />\n </Button>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div v-else class=\"py-12 text-center\">\n <div class=\"mb-4 inline-flex h-16 w-16 items-center justify-center rounded-full bg-gray-100\">\n <component :is=\"emptyState.icon\" class=\"h-8 w-8 text-gray-400\" />\n </div>\n <h3 class=\"mb-2 text-lg font-medium text-gray-900\">{{ emptyState.title }}</h3>\n <p class=\"mb-4 text-gray-500\">{{ emptyState.description }}</p>\n <LinkButton v-if=\"emptyState.actionText && emptyState.actionUrl\" :href=\"emptyState.actionUrl\" variant=\"primary\">\n {{ emptyState.actionText }}\n </LinkButton>\n </div>\n </div>\n</template>\n","import type { App } from 'vue'\nimport * as components from './index'\n\nexport default {\n install(app: App) {\n for (const [name, component] of Object.entries(components)) {\n if (name === 'EnosVue') {\n continue\n }\n\n app.component(name, component)\n }\n },\n}\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_Fragment","_renderList","_normalizeStyle","_normalizeClass","_toDisplayString","_hoisted_3","_createBlock","CardTabs","$emit","$slots","_renderSlot","_createVNode","_Transition","_mergeProps","$attrs","Card","_unref","Divider","_withDirectives","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","DEFAULT_MAX_LENGTH","_Teleport","_withModifiers","CustomSelect","_hoisted_8","InputGroup","TextArea","SelectInput","DateInput","TextInput","ImageInput","CheckboxInput","RadioInput","NotationInput","CheckboxMultipleInput","RadioMultipleInput","Modal","ThSortable","_createTextVNode","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_resolveDynamicComponent","_hoisted_13","_hoisted_14","LinkButton","Button"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { App } from 'vue';
2
+ declare const _default: {
3
+ install(app: App): void;
4
+ };
5
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enos5/enos-vue",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -8,11 +8,16 @@
8
8
  ],
9
9
  "main": "./dist/index.js",
10
10
  "module": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
11
12
  "exports": {
12
- ".": "./dist/index.js"
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js"
16
+ }
13
17
  },
14
18
  "scripts": {
15
- "build": "vite build",
19
+ "build": "vite build && npm run build:types",
20
+ "build:types": "vue-tsc --declaration --emitDeclarationOnly --outDir dist --project tsconfig.build.json",
16
21
  "docs:dev": "vite --config vite.docs.config.ts",
17
22
  "docs:build": "vite build --config vite.docs.config.ts",
18
23
  "docs:preview": "vite preview --config vite.docs.config.ts --host 0.0.0.0 --port 4173"
@@ -32,6 +37,7 @@
32
37
  "typescript": "^5.0.0",
33
38
  "vite": "^7.0.0",
34
39
  "vue": "^3.4.0",
35
- "vue-i18n": "^11.1.2"
40
+ "vue-i18n": "^11.1.2",
41
+ "vue-tsc": "^3.2.6"
36
42
  }
37
43
  }