cisse-vue-ui 0.2.6 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-CPV2dtkO.cjs → CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs} +2 -2
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs.map +1 -0
- package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-D0eSGYea.js → CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js} +2 -2
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js.map +1 -0
- package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-CrVvFwXA.js → EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js} +15 -13
- package/dist/EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js.map +1 -0
- package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-mlqLBP5W.cjs → EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs} +15 -13
- package/dist/EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs.map +1 -0
- package/dist/components/core/TableComponent.vue.d.ts +18 -2
- package/dist/components/core/index.cjs +1 -1
- package/dist/components/core/index.js +1 -1
- package/dist/components/feedback/index.cjs +1 -1
- package/dist/components/feedback/index.js +1 -1
- package/dist/components/index.cjs +2 -2
- package/dist/components/index.js +2 -2
- package/dist/{index-DUVvDjHF.js → index-BEUu6KNI.js} +3 -3
- package/dist/index-BEUu6KNI.js.map +1 -0
- package/dist/{index-C-qIi_nO.cjs → index-DHo9Tbn4.cjs} +3 -3
- package/dist/index-DHo9Tbn4.cjs.map +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.js +3 -3
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-CPV2dtkO.cjs.map +0 -1
- package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-D0eSGYea.js.map +0 -1
- package/dist/EmptyState.vue_vue_type_script_setup_true_lang-CrVvFwXA.js.map +0 -1
- package/dist/EmptyState.vue_vue_type_script_setup_true_lang-mlqLBP5W.cjs.map +0 -1
- package/dist/index-C-qIi_nO.cjs.map +0 -1
- package/dist/index-DUVvDjHF.js.map +0 -1
|
@@ -119,23 +119,25 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
119
119
|
});
|
|
120
120
|
const _hoisted_1$4 = {
|
|
121
121
|
key: 0,
|
|
122
|
-
class: "flex items-center justify-between border-t border-gray-200 px-6 py-4 dark:border-gray-700"
|
|
122
|
+
class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 border-t border-gray-200 px-4 sm:px-6 py-4 dark:border-gray-700"
|
|
123
123
|
};
|
|
124
|
-
const _hoisted_2$3 = { class: "flex items-center gap-4" };
|
|
125
|
-
const _hoisted_3$3 = { class: "text-sm text-gray-700 dark:text-gray-300" };
|
|
124
|
+
const _hoisted_2$3 = { class: "flex flex-col sm:flex-row sm:items-center gap-3 sm:gap-4" };
|
|
125
|
+
const _hoisted_3$3 = { class: "text-sm text-gray-700 dark:text-gray-300 text-center sm:text-left" };
|
|
126
126
|
const _hoisted_4$2 = {
|
|
127
127
|
key: 0,
|
|
128
|
-
class: "flex items-center gap-2"
|
|
128
|
+
class: "flex items-center justify-center sm:justify-start gap-2"
|
|
129
129
|
};
|
|
130
130
|
const _hoisted_5 = {
|
|
131
|
-
class: "text-sm text-gray-600 dark:text-gray-400",
|
|
131
|
+
class: "text-sm text-gray-600 dark:text-gray-400 hidden sm:inline",
|
|
132
132
|
for: "page-size"
|
|
133
133
|
};
|
|
134
134
|
const _hoisted_6 = ["value"];
|
|
135
135
|
const _hoisted_7 = ["value"];
|
|
136
|
-
const _hoisted_8 = { class: "flex gap-2" };
|
|
136
|
+
const _hoisted_8 = { class: "flex justify-center sm:justify-end gap-2" };
|
|
137
137
|
const _hoisted_9 = ["disabled"];
|
|
138
|
-
const _hoisted_10 =
|
|
138
|
+
const _hoisted_10 = { class: "hidden sm:inline" };
|
|
139
|
+
const _hoisted_11 = ["disabled"];
|
|
140
|
+
const _hoisted_12 = { class: "hidden sm:inline" };
|
|
139
141
|
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
140
142
|
__name: "PaginationControls",
|
|
141
143
|
props: {
|
|
@@ -187,26 +189,26 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
187
189
|
createElementVNode("div", _hoisted_8, [
|
|
188
190
|
createElementVNode("button", {
|
|
189
191
|
disabled: __props.currentPage === 1 || __props.loading,
|
|
190
|
-
class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
|
|
192
|
+
class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
|
|
191
193
|
onClick: _cache[0] || (_cache[0] = ($event) => changePage(__props.currentPage - 1))
|
|
192
194
|
}, [
|
|
193
195
|
createVNode(unref(Icon), {
|
|
194
196
|
class: "h-4 w-4",
|
|
195
197
|
icon: "lucide:chevron-left"
|
|
196
198
|
}),
|
|
197
|
-
|
|
199
|
+
createElementVNode("span", _hoisted_10, toDisplayString(__props.previousLabel), 1)
|
|
198
200
|
], 8, _hoisted_9),
|
|
199
201
|
createElementVNode("button", {
|
|
200
202
|
disabled: __props.currentPage === __props.totalPages || __props.loading,
|
|
201
|
-
class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
|
|
203
|
+
class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
|
|
202
204
|
onClick: _cache[1] || (_cache[1] = ($event) => changePage(__props.currentPage + 1))
|
|
203
205
|
}, [
|
|
204
|
-
|
|
206
|
+
createElementVNode("span", _hoisted_12, toDisplayString(__props.nextLabel), 1),
|
|
205
207
|
createVNode(unref(Icon), {
|
|
206
208
|
class: "h-4 w-4",
|
|
207
209
|
icon: "lucide:chevron-right"
|
|
208
210
|
})
|
|
209
|
-
], 8,
|
|
211
|
+
], 8, _hoisted_11)
|
|
210
212
|
])
|
|
211
213
|
])) : createCommentVNode("", true);
|
|
212
214
|
};
|
|
@@ -467,4 +469,4 @@ export {
|
|
|
467
469
|
_sfc_main$1 as e,
|
|
468
470
|
_sfc_main as f
|
|
469
471
|
};
|
|
470
|
-
//# sourceMappingURL=EmptyState.vue_vue_type_script_setup_true_lang-
|
|
472
|
+
//# sourceMappingURL=EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js","sources":["../src/components/feedback/LoadingSpinner.vue","../src/components/feedback/Modal.vue","../src/components/feedback/PaginationControls.vue","../src/components/feedback/NotificationComponent.vue","../src/components/feedback/NotificationList.vue","../src/components/feedback/Alert.vue","../src/components/feedback/EmptyState.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { SpinnerSize } from '@/types'\n\nconst { text, size = 'md' } = defineProps<{\n text?: string\n size?: SpinnerSize\n}>()\n\nconst sizeClasses: Record<SpinnerSize, string> = {\n sm: 'h-8 w-8',\n md: 'h-12 w-12',\n lg: 'h-16 w-16',\n}\n</script>\n\n<template>\n <div class=\"flex items-center justify-center py-12\">\n <div class=\"text-center\">\n <div\n :class=\"sizeClasses[size]\"\n class=\"border-primary inline-block animate-spin rounded-full border-4 border-solid border-r-transparent\"\n ></div>\n <p v-if=\"text\" class=\"mt-4 text-gray-600 dark:text-gray-400\">{{ text }}</p>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\nimport { onMounted, onUnmounted } from 'vue'\nimport type { ModalSize } from '@/types'\n\nconst {\n title = '',\n size = 'default',\n closeOnBackdrop = true,\n closeOnEscape = true,\n closeButtonLabel = 'Close',\n} = defineProps<{\n title?: string\n size?: ModalSize\n closeOnBackdrop?: boolean\n closeOnEscape?: boolean\n closeButtonLabel?: string\n}>()\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst sizeClasses: Record<ModalSize, string> = {\n sm: 'max-w-md',\n default: 'max-w-3xl',\n lg: 'max-w-5xl',\n xl: 'max-w-7xl',\n full: 'max-w-full mx-4',\n}\n\nconst handleBackdropClick = () => {\n if (closeOnBackdrop) {\n emit('close')\n }\n}\n\nconst handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closeOnEscape) {\n emit('close')\n }\n}\n\nonMounted(() => {\n document.addEventListener('keydown', handleEscape)\n document.body.style.overflow = 'hidden'\n})\n\nonUnmounted(() => {\n document.removeEventListener('keydown', handleEscape)\n document.body.style.overflow = ''\n})\n</script>\n\n<template>\n <div\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\"\n @click.self=\"handleBackdropClick\"\n >\n <div\n :class=\"sizeClasses[size]\"\n class=\"flex max-h-[90vh] w-full flex-col rounded-lg bg-white shadow-xl dark:bg-gray-900\"\n >\n <!-- Header -->\n <div\n v-if=\"title || $slots.header || $slots.title\"\n class=\"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-gray-700\"\n >\n <h3 class=\"text-xl font-semibold text-gray-900 dark:text-gray-100\">\n <slot name=\"header\">\n <slot name=\"title\">\n {{ title }}\n </slot>\n </slot>\n </h3>\n <button\n class=\"rounded-lg p-1.5 text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-800 dark:hover:text-gray-100\"\n type=\"button\"\n @click=\"emit('close')\"\n >\n <Icon class=\"h-5 w-5\" icon=\"lucide:x\" />\n <span class=\"sr-only\">{{ closeButtonLabel }}</span>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"flex-1 overflow-y-auto px-6 py-4\">\n <slot />\n </div>\n\n <!-- Footer -->\n <div\n v-if=\"$slots.footer\"\n class=\"flex items-center justify-end gap-3 border-t border-gray-200 px-6 py-4 dark:border-gray-700\"\n >\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\n\nconst {\n currentPage,\n totalPages,\n loading = false,\n pageSize = 10,\n pageSizeOptions = [10, 20, 50, 100],\n showPageSize = true,\n pageLabel = 'Page',\n ofLabel = 'of',\n itemsPerPageLabel = 'Items per page:',\n previousLabel = 'Previous',\n nextLabel = 'Next',\n} = defineProps<{\n currentPage: number\n totalPages: number\n loading?: boolean\n pageSize?: number\n pageSizeOptions?: number[]\n showPageSize?: boolean\n pageLabel?: string\n ofLabel?: string\n itemsPerPageLabel?: string\n previousLabel?: string\n nextLabel?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:page': [page: number]\n 'update:pageSize': [size: number]\n}>()\n\nconst changePage = (page: number) => {\n if (page >= 1 && page <= totalPages && !loading) {\n emit('update:page', page)\n }\n}\n\nconst changePageSize = (event: Event) => {\n const target = event.target as HTMLSelectElement\n emit('update:pageSize', Number(target.value))\n}\n</script>\n\n<template>\n <div\n v-if=\"totalPages > 1\"\n class=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 border-t border-gray-200 px-4 sm:px-6 py-4 dark:border-gray-700\"\n >\n <!-- Info and page size -->\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-3 sm:gap-4\">\n <div class=\"text-sm text-gray-700 dark:text-gray-300 text-center sm:text-left\">\n {{ pageLabel }} {{ currentPage }} {{ ofLabel }} {{ totalPages }}\n </div>\n <div v-if=\"showPageSize\" class=\"flex items-center justify-center sm:justify-start gap-2\">\n <label class=\"text-sm text-gray-600 dark:text-gray-400 hidden sm:inline\" for=\"page-size\">\n {{ itemsPerPageLabel }}\n </label>\n <select\n id=\"page-size\"\n :value=\"pageSize\"\n class=\"focus:border-primary focus:ring-primary rounded border border-gray-300 bg-white px-2 py-1 text-sm text-gray-900 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100\"\n @change=\"changePageSize\"\n >\n <option v-for=\"size in pageSizeOptions\" :key=\"size\" :value=\"size\">\n {{ size }}\n </option>\n </select>\n </div>\n </div>\n\n <!-- Navigation buttons -->\n <div class=\"flex justify-center sm:justify-end gap-2\">\n <button\n :disabled=\"currentPage === 1 || loading\"\n class=\"focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n @click=\"changePage(currentPage - 1)\"\n >\n <Icon class=\"h-4 w-4\" icon=\"lucide:chevron-left\" />\n <span class=\"hidden sm:inline\">{{ previousLabel }}</span>\n </button>\n <button\n :disabled=\"currentPage === totalPages || loading\"\n class=\"focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n @click=\"changePage(currentPage + 1)\"\n >\n <span class=\"hidden sm:inline\">{{ nextLabel }}</span>\n <Icon class=\"h-4 w-4\" icon=\"lucide:chevron-right\" />\n </button>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { Notification } from '@/types'\nimport { computed, onMounted } from 'vue'\nimport { Icon } from '@iconify/vue'\n\nconst props = defineProps<{\n notification: Notification\n autoDismiss?: boolean\n duration?: number\n}>()\n\nconst emit = defineEmits<{\n dismiss: [id: string]\n}>()\n\nconst iconName = computed(() => {\n switch (props.notification.type) {\n case 'success':\n return 'lucide:check-circle'\n case 'info':\n return 'lucide:info'\n case 'warning':\n return 'lucide:alert-triangle'\n case 'error':\n return 'lucide:x-circle'\n default:\n return 'lucide:bell'\n }\n})\n\nconst iconColor = computed(() => {\n switch (props.notification.type) {\n case 'success':\n return 'text-green-600 dark:text-green-400'\n case 'info':\n return 'text-blue-600 dark:text-blue-400'\n case 'warning':\n return 'text-yellow-600 dark:text-yellow-400'\n case 'error':\n return 'text-red-600 dark:text-red-400'\n default:\n return 'text-gray-600 dark:text-gray-400'\n }\n})\n\nconst bgColor = computed(() => {\n switch (props.notification.type) {\n case 'success':\n return 'bg-green-50 dark:bg-green-950'\n case 'info':\n return 'bg-blue-50 dark:bg-blue-950'\n case 'warning':\n return 'bg-yellow-50 dark:bg-yellow-950'\n case 'error':\n return 'bg-red-50 dark:bg-red-950'\n default:\n return 'bg-gray-50 dark:bg-gray-950'\n }\n})\n\nconst handleDismiss = () => {\n if (props.notification.id) {\n emit('dismiss', props.notification.id)\n }\n}\n\nonMounted(() => {\n const duration = props.notification.duration ?? props.duration ?? 5000\n if (props.autoDismiss !== false && duration > 0) {\n setTimeout(() => {\n handleDismiss()\n }, duration)\n }\n})\n</script>\n\n<template>\n <div\n class=\"flex max-w-md items-start space-x-3 rounded-lg border border-gray-200 bg-white p-4 shadow-lg dark:border-gray-800 dark:bg-black\"\n >\n <div :class=\"[bgColor, 'flex items-center justify-center rounded-full p-2']\">\n <Icon :class=\"iconColor\" :icon=\"iconName\" class=\"h-5 w-5\" />\n </div>\n\n <div class=\"flex min-w-0 flex-1 flex-col\">\n <h4 v-if=\"notification.title\" class=\"text-sm font-semibold text-gray-900 dark:text-gray-100\">\n {{ notification.title }}\n </h4>\n <p v-if=\"notification.message\" class=\"mt-1 text-sm text-gray-600 dark:text-gray-400\">\n {{ notification.message }}\n </p>\n </div>\n\n <button\n class=\"shrink-0 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-600 dark:hover:text-gray-400\"\n @click=\"handleDismiss\"\n >\n <Icon class=\"h-4 w-4\" icon=\"lucide:x\" />\n </button>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { Notification } from '@/types'\nimport NotificationComponent from './NotificationComponent.vue'\n\ndefineProps<{\n notifications: Notification[]\n autoDismiss?: boolean\n duration?: number\n}>()\n\nconst emit = defineEmits<{\n dismiss: [id: string]\n}>()\n</script>\n\n<template>\n <div class=\"fixed top-5 right-5 z-50 flex flex-col gap-3\">\n <NotificationComponent\n v-for=\"notification in notifications\"\n :key=\"notification.id\"\n :notification=\"notification\"\n :auto-dismiss=\"autoDismiss\"\n :duration=\"duration\"\n @dismiss=\"emit('dismiss', $event)\"\n />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nconst props = withDefaults(\n defineProps<{\n /** Alert variant */\n variant?: AlertVariant\n /** Title text */\n title?: string\n /** Show close button */\n dismissible?: boolean\n /** Custom icon */\n icon?: string\n }>(),\n {\n variant: 'info',\n },\n)\n\nconst emit = defineEmits<{\n dismiss: []\n}>()\n\nconst variantStyles: Record<AlertVariant, { bg: string; border: string; icon: string; iconColor: string }> = {\n info: {\n bg: 'bg-blue-50 dark:bg-blue-900/20',\n border: 'border-blue-200 dark:border-blue-800',\n icon: 'lucide:info',\n iconColor: 'text-blue-500',\n },\n success: {\n bg: 'bg-green-50 dark:bg-green-900/20',\n border: 'border-green-200 dark:border-green-800',\n icon: 'lucide:check-circle',\n iconColor: 'text-green-500',\n },\n warning: {\n bg: 'bg-yellow-50 dark:bg-yellow-900/20',\n border: 'border-yellow-200 dark:border-yellow-800',\n icon: 'lucide:alert-triangle',\n iconColor: 'text-yellow-500',\n },\n error: {\n bg: 'bg-red-50 dark:bg-red-900/20',\n border: 'border-red-200 dark:border-red-800',\n icon: 'lucide:alert-circle',\n iconColor: 'text-red-500',\n },\n}\n\nconst styles = variantStyles[props.variant]\n</script>\n\n<template>\n <div\n :class=\"[\n 'flex gap-3 rounded-lg border p-4',\n styles.bg,\n styles.border,\n ]\"\n role=\"alert\"\n >\n <Icon\n :icon=\"icon || styles.icon\"\n :class=\"['size-5 shrink-0', styles.iconColor]\"\n />\n <div class=\"flex-1\">\n <h4\n v-if=\"title\"\n class=\"mb-1 font-medium text-gray-900 dark:text-white\"\n >\n {{ title }}\n </h4>\n <div class=\"text-sm text-gray-700 dark:text-gray-300\">\n <slot />\n </div>\n </div>\n <button\n v-if=\"dismissible\"\n type=\"button\"\n class=\"shrink-0 rounded p-1 text-gray-400 hover:bg-gray-200 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300\"\n @click=\"emit('dismiss')\"\n >\n <Icon icon=\"lucide:x\" class=\"size-4\" />\n </button>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\n\nwithDefaults(\n defineProps<{\n /** Message to display */\n message?: string\n /** Icon name (iconify format) */\n icon?: string\n /** Title text */\n title?: string\n }>(),\n {\n message: 'No results found',\n icon: 'lucide:inbox',\n },\n)\n</script>\n\n<template>\n <div class=\"py-12 text-center\">\n <Icon\n v-if=\"icon\"\n :icon=\"icon\"\n class=\"mx-auto mb-4 size-12 text-gray-400 dark:text-gray-500\"\n />\n <h3 v-if=\"title\" class=\"mb-2 text-lg font-medium text-gray-900 dark:text-white\">\n {{ title }}\n </h3>\n <p class=\"text-gray-500 dark:text-gray-400\">\n <slot>{{ message }}</slot>\n </p>\n <div v-if=\"$slots.action\" class=\"mt-4\">\n <slot name=\"action\" />\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_normalizeClass","_hoisted_3","_toDisplayString","$slots","_renderSlot","_createVNode","_unref","_hoisted_4","_hoisted_5","_Fragment","_renderList","_createBlock","NotificationComponent"],"mappings":"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"}
|
|
@@ -120,23 +120,25 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
|
120
120
|
});
|
|
121
121
|
const _hoisted_1$4 = {
|
|
122
122
|
key: 0,
|
|
123
|
-
class: "flex items-center justify-between border-t border-gray-200 px-6 py-4 dark:border-gray-700"
|
|
123
|
+
class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 border-t border-gray-200 px-4 sm:px-6 py-4 dark:border-gray-700"
|
|
124
124
|
};
|
|
125
|
-
const _hoisted_2$3 = { class: "flex items-center gap-4" };
|
|
126
|
-
const _hoisted_3$3 = { class: "text-sm text-gray-700 dark:text-gray-300" };
|
|
125
|
+
const _hoisted_2$3 = { class: "flex flex-col sm:flex-row sm:items-center gap-3 sm:gap-4" };
|
|
126
|
+
const _hoisted_3$3 = { class: "text-sm text-gray-700 dark:text-gray-300 text-center sm:text-left" };
|
|
127
127
|
const _hoisted_4$2 = {
|
|
128
128
|
key: 0,
|
|
129
|
-
class: "flex items-center gap-2"
|
|
129
|
+
class: "flex items-center justify-center sm:justify-start gap-2"
|
|
130
130
|
};
|
|
131
131
|
const _hoisted_5 = {
|
|
132
|
-
class: "text-sm text-gray-600 dark:text-gray-400",
|
|
132
|
+
class: "text-sm text-gray-600 dark:text-gray-400 hidden sm:inline",
|
|
133
133
|
for: "page-size"
|
|
134
134
|
};
|
|
135
135
|
const _hoisted_6 = ["value"];
|
|
136
136
|
const _hoisted_7 = ["value"];
|
|
137
|
-
const _hoisted_8 = { class: "flex gap-2" };
|
|
137
|
+
const _hoisted_8 = { class: "flex justify-center sm:justify-end gap-2" };
|
|
138
138
|
const _hoisted_9 = ["disabled"];
|
|
139
|
-
const _hoisted_10 =
|
|
139
|
+
const _hoisted_10 = { class: "hidden sm:inline" };
|
|
140
|
+
const _hoisted_11 = ["disabled"];
|
|
141
|
+
const _hoisted_12 = { class: "hidden sm:inline" };
|
|
140
142
|
const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
141
143
|
__name: "PaginationControls",
|
|
142
144
|
props: {
|
|
@@ -188,26 +190,26 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
|
188
190
|
vue.createElementVNode("div", _hoisted_8, [
|
|
189
191
|
vue.createElementVNode("button", {
|
|
190
192
|
disabled: __props.currentPage === 1 || __props.loading,
|
|
191
|
-
class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
|
|
193
|
+
class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
|
|
192
194
|
onClick: _cache[0] || (_cache[0] = ($event) => changePage(__props.currentPage - 1))
|
|
193
195
|
}, [
|
|
194
196
|
vue.createVNode(vue.unref(vue$1.Icon), {
|
|
195
197
|
class: "h-4 w-4",
|
|
196
198
|
icon: "lucide:chevron-left"
|
|
197
199
|
}),
|
|
198
|
-
vue.
|
|
200
|
+
vue.createElementVNode("span", _hoisted_10, vue.toDisplayString(__props.previousLabel), 1)
|
|
199
201
|
], 8, _hoisted_9),
|
|
200
202
|
vue.createElementVNode("button", {
|
|
201
203
|
disabled: __props.currentPage === __props.totalPages || __props.loading,
|
|
202
|
-
class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
|
|
204
|
+
class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
|
|
203
205
|
onClick: _cache[1] || (_cache[1] = ($event) => changePage(__props.currentPage + 1))
|
|
204
206
|
}, [
|
|
205
|
-
vue.
|
|
207
|
+
vue.createElementVNode("span", _hoisted_12, vue.toDisplayString(__props.nextLabel), 1),
|
|
206
208
|
vue.createVNode(vue.unref(vue$1.Icon), {
|
|
207
209
|
class: "h-4 w-4",
|
|
208
210
|
icon: "lucide:chevron-right"
|
|
209
211
|
})
|
|
210
|
-
], 8,
|
|
212
|
+
], 8, _hoisted_11)
|
|
211
213
|
])
|
|
212
214
|
])) : vue.createCommentVNode("", true);
|
|
213
215
|
};
|
|
@@ -466,4 +468,4 @@ exports._sfc_main$3 = _sfc_main$3;
|
|
|
466
468
|
exports._sfc_main$4 = _sfc_main$2;
|
|
467
469
|
exports._sfc_main$5 = _sfc_main$1;
|
|
468
470
|
exports._sfc_main$6 = _sfc_main;
|
|
469
|
-
//# sourceMappingURL=EmptyState.vue_vue_type_script_setup_true_lang-
|
|
471
|
+
//# sourceMappingURL=EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs","sources":["../src/components/feedback/LoadingSpinner.vue","../src/components/feedback/Modal.vue","../src/components/feedback/PaginationControls.vue","../src/components/feedback/NotificationComponent.vue","../src/components/feedback/NotificationList.vue","../src/components/feedback/Alert.vue","../src/components/feedback/EmptyState.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { SpinnerSize } from '@/types'\n\nconst { text, size = 'md' } = defineProps<{\n text?: string\n size?: SpinnerSize\n}>()\n\nconst sizeClasses: Record<SpinnerSize, string> = {\n sm: 'h-8 w-8',\n md: 'h-12 w-12',\n lg: 'h-16 w-16',\n}\n</script>\n\n<template>\n <div class=\"flex items-center justify-center py-12\">\n <div class=\"text-center\">\n <div\n :class=\"sizeClasses[size]\"\n class=\"border-primary inline-block animate-spin rounded-full border-4 border-solid border-r-transparent\"\n ></div>\n <p v-if=\"text\" class=\"mt-4 text-gray-600 dark:text-gray-400\">{{ text }}</p>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\nimport { onMounted, onUnmounted } from 'vue'\nimport type { ModalSize } from '@/types'\n\nconst {\n title = '',\n size = 'default',\n closeOnBackdrop = true,\n closeOnEscape = true,\n closeButtonLabel = 'Close',\n} = defineProps<{\n title?: string\n size?: ModalSize\n closeOnBackdrop?: boolean\n closeOnEscape?: boolean\n closeButtonLabel?: string\n}>()\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst sizeClasses: Record<ModalSize, string> = {\n sm: 'max-w-md',\n default: 'max-w-3xl',\n lg: 'max-w-5xl',\n xl: 'max-w-7xl',\n full: 'max-w-full mx-4',\n}\n\nconst handleBackdropClick = () => {\n if (closeOnBackdrop) {\n emit('close')\n }\n}\n\nconst handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closeOnEscape) {\n emit('close')\n }\n}\n\nonMounted(() => {\n document.addEventListener('keydown', handleEscape)\n document.body.style.overflow = 'hidden'\n})\n\nonUnmounted(() => {\n document.removeEventListener('keydown', handleEscape)\n document.body.style.overflow = ''\n})\n</script>\n\n<template>\n <div\n class=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\"\n @click.self=\"handleBackdropClick\"\n >\n <div\n :class=\"sizeClasses[size]\"\n class=\"flex max-h-[90vh] w-full flex-col rounded-lg bg-white shadow-xl dark:bg-gray-900\"\n >\n <!-- Header -->\n <div\n v-if=\"title || $slots.header || $slots.title\"\n class=\"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-gray-700\"\n >\n <h3 class=\"text-xl font-semibold text-gray-900 dark:text-gray-100\">\n <slot name=\"header\">\n <slot name=\"title\">\n {{ title }}\n </slot>\n </slot>\n </h3>\n <button\n class=\"rounded-lg p-1.5 text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-800 dark:hover:text-gray-100\"\n type=\"button\"\n @click=\"emit('close')\"\n >\n <Icon class=\"h-5 w-5\" icon=\"lucide:x\" />\n <span class=\"sr-only\">{{ closeButtonLabel }}</span>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"flex-1 overflow-y-auto px-6 py-4\">\n <slot />\n </div>\n\n <!-- Footer -->\n <div\n v-if=\"$slots.footer\"\n class=\"flex items-center justify-end gap-3 border-t border-gray-200 px-6 py-4 dark:border-gray-700\"\n >\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\n\nconst {\n currentPage,\n totalPages,\n loading = false,\n pageSize = 10,\n pageSizeOptions = [10, 20, 50, 100],\n showPageSize = true,\n pageLabel = 'Page',\n ofLabel = 'of',\n itemsPerPageLabel = 'Items per page:',\n previousLabel = 'Previous',\n nextLabel = 'Next',\n} = defineProps<{\n currentPage: number\n totalPages: number\n loading?: boolean\n pageSize?: number\n pageSizeOptions?: number[]\n showPageSize?: boolean\n pageLabel?: string\n ofLabel?: string\n itemsPerPageLabel?: string\n previousLabel?: string\n nextLabel?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:page': [page: number]\n 'update:pageSize': [size: number]\n}>()\n\nconst changePage = (page: number) => {\n if (page >= 1 && page <= totalPages && !loading) {\n emit('update:page', page)\n }\n}\n\nconst changePageSize = (event: Event) => {\n const target = event.target as HTMLSelectElement\n emit('update:pageSize', Number(target.value))\n}\n</script>\n\n<template>\n <div\n v-if=\"totalPages > 1\"\n class=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 border-t border-gray-200 px-4 sm:px-6 py-4 dark:border-gray-700\"\n >\n <!-- Info and page size -->\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-3 sm:gap-4\">\n <div class=\"text-sm text-gray-700 dark:text-gray-300 text-center sm:text-left\">\n {{ pageLabel }} {{ currentPage }} {{ ofLabel }} {{ totalPages }}\n </div>\n <div v-if=\"showPageSize\" class=\"flex items-center justify-center sm:justify-start gap-2\">\n <label class=\"text-sm text-gray-600 dark:text-gray-400 hidden sm:inline\" for=\"page-size\">\n {{ itemsPerPageLabel }}\n </label>\n <select\n id=\"page-size\"\n :value=\"pageSize\"\n class=\"focus:border-primary focus:ring-primary rounded border border-gray-300 bg-white px-2 py-1 text-sm text-gray-900 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100\"\n @change=\"changePageSize\"\n >\n <option v-for=\"size in pageSizeOptions\" :key=\"size\" :value=\"size\">\n {{ size }}\n </option>\n </select>\n </div>\n </div>\n\n <!-- Navigation buttons -->\n <div class=\"flex justify-center sm:justify-end gap-2\">\n <button\n :disabled=\"currentPage === 1 || loading\"\n class=\"focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n @click=\"changePage(currentPage - 1)\"\n >\n <Icon class=\"h-4 w-4\" icon=\"lucide:chevron-left\" />\n <span class=\"hidden sm:inline\">{{ previousLabel }}</span>\n </button>\n <button\n :disabled=\"currentPage === totalPages || loading\"\n class=\"focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700\"\n @click=\"changePage(currentPage + 1)\"\n >\n <span class=\"hidden sm:inline\">{{ nextLabel }}</span>\n <Icon class=\"h-4 w-4\" icon=\"lucide:chevron-right\" />\n </button>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { Notification } from '@/types'\nimport { computed, onMounted } from 'vue'\nimport { Icon } from '@iconify/vue'\n\nconst props = defineProps<{\n notification: Notification\n autoDismiss?: boolean\n duration?: number\n}>()\n\nconst emit = defineEmits<{\n dismiss: [id: string]\n}>()\n\nconst iconName = computed(() => {\n switch (props.notification.type) {\n case 'success':\n return 'lucide:check-circle'\n case 'info':\n return 'lucide:info'\n case 'warning':\n return 'lucide:alert-triangle'\n case 'error':\n return 'lucide:x-circle'\n default:\n return 'lucide:bell'\n }\n})\n\nconst iconColor = computed(() => {\n switch (props.notification.type) {\n case 'success':\n return 'text-green-600 dark:text-green-400'\n case 'info':\n return 'text-blue-600 dark:text-blue-400'\n case 'warning':\n return 'text-yellow-600 dark:text-yellow-400'\n case 'error':\n return 'text-red-600 dark:text-red-400'\n default:\n return 'text-gray-600 dark:text-gray-400'\n }\n})\n\nconst bgColor = computed(() => {\n switch (props.notification.type) {\n case 'success':\n return 'bg-green-50 dark:bg-green-950'\n case 'info':\n return 'bg-blue-50 dark:bg-blue-950'\n case 'warning':\n return 'bg-yellow-50 dark:bg-yellow-950'\n case 'error':\n return 'bg-red-50 dark:bg-red-950'\n default:\n return 'bg-gray-50 dark:bg-gray-950'\n }\n})\n\nconst handleDismiss = () => {\n if (props.notification.id) {\n emit('dismiss', props.notification.id)\n }\n}\n\nonMounted(() => {\n const duration = props.notification.duration ?? props.duration ?? 5000\n if (props.autoDismiss !== false && duration > 0) {\n setTimeout(() => {\n handleDismiss()\n }, duration)\n }\n})\n</script>\n\n<template>\n <div\n class=\"flex max-w-md items-start space-x-3 rounded-lg border border-gray-200 bg-white p-4 shadow-lg dark:border-gray-800 dark:bg-black\"\n >\n <div :class=\"[bgColor, 'flex items-center justify-center rounded-full p-2']\">\n <Icon :class=\"iconColor\" :icon=\"iconName\" class=\"h-5 w-5\" />\n </div>\n\n <div class=\"flex min-w-0 flex-1 flex-col\">\n <h4 v-if=\"notification.title\" class=\"text-sm font-semibold text-gray-900 dark:text-gray-100\">\n {{ notification.title }}\n </h4>\n <p v-if=\"notification.message\" class=\"mt-1 text-sm text-gray-600 dark:text-gray-400\">\n {{ notification.message }}\n </p>\n </div>\n\n <button\n class=\"shrink-0 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-600 dark:hover:text-gray-400\"\n @click=\"handleDismiss\"\n >\n <Icon class=\"h-4 w-4\" icon=\"lucide:x\" />\n </button>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport type { Notification } from '@/types'\nimport NotificationComponent from './NotificationComponent.vue'\n\ndefineProps<{\n notifications: Notification[]\n autoDismiss?: boolean\n duration?: number\n}>()\n\nconst emit = defineEmits<{\n dismiss: [id: string]\n}>()\n</script>\n\n<template>\n <div class=\"fixed top-5 right-5 z-50 flex flex-col gap-3\">\n <NotificationComponent\n v-for=\"notification in notifications\"\n :key=\"notification.id\"\n :notification=\"notification\"\n :auto-dismiss=\"autoDismiss\"\n :duration=\"duration\"\n @dismiss=\"emit('dismiss', $event)\"\n />\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nconst props = withDefaults(\n defineProps<{\n /** Alert variant */\n variant?: AlertVariant\n /** Title text */\n title?: string\n /** Show close button */\n dismissible?: boolean\n /** Custom icon */\n icon?: string\n }>(),\n {\n variant: 'info',\n },\n)\n\nconst emit = defineEmits<{\n dismiss: []\n}>()\n\nconst variantStyles: Record<AlertVariant, { bg: string; border: string; icon: string; iconColor: string }> = {\n info: {\n bg: 'bg-blue-50 dark:bg-blue-900/20',\n border: 'border-blue-200 dark:border-blue-800',\n icon: 'lucide:info',\n iconColor: 'text-blue-500',\n },\n success: {\n bg: 'bg-green-50 dark:bg-green-900/20',\n border: 'border-green-200 dark:border-green-800',\n icon: 'lucide:check-circle',\n iconColor: 'text-green-500',\n },\n warning: {\n bg: 'bg-yellow-50 dark:bg-yellow-900/20',\n border: 'border-yellow-200 dark:border-yellow-800',\n icon: 'lucide:alert-triangle',\n iconColor: 'text-yellow-500',\n },\n error: {\n bg: 'bg-red-50 dark:bg-red-900/20',\n border: 'border-red-200 dark:border-red-800',\n icon: 'lucide:alert-circle',\n iconColor: 'text-red-500',\n },\n}\n\nconst styles = variantStyles[props.variant]\n</script>\n\n<template>\n <div\n :class=\"[\n 'flex gap-3 rounded-lg border p-4',\n styles.bg,\n styles.border,\n ]\"\n role=\"alert\"\n >\n <Icon\n :icon=\"icon || styles.icon\"\n :class=\"['size-5 shrink-0', styles.iconColor]\"\n />\n <div class=\"flex-1\">\n <h4\n v-if=\"title\"\n class=\"mb-1 font-medium text-gray-900 dark:text-white\"\n >\n {{ title }}\n </h4>\n <div class=\"text-sm text-gray-700 dark:text-gray-300\">\n <slot />\n </div>\n </div>\n <button\n v-if=\"dismissible\"\n type=\"button\"\n class=\"shrink-0 rounded p-1 text-gray-400 hover:bg-gray-200 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300\"\n @click=\"emit('dismiss')\"\n >\n <Icon icon=\"lucide:x\" class=\"size-4\" />\n </button>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { Icon } from '@iconify/vue'\n\nwithDefaults(\n defineProps<{\n /** Message to display */\n message?: string\n /** Icon name (iconify format) */\n icon?: string\n /** Title text */\n title?: string\n }>(),\n {\n message: 'No results found',\n icon: 'lucide:inbox',\n },\n)\n</script>\n\n<template>\n <div class=\"py-12 text-center\">\n <Icon\n v-if=\"icon\"\n :icon=\"icon\"\n class=\"mx-auto mb-4 size-12 text-gray-400 dark:text-gray-500\"\n />\n <h3 v-if=\"title\" class=\"mb-2 text-lg font-medium text-gray-900 dark:text-white\">\n {{ title }}\n </h3>\n <p class=\"text-gray-500 dark:text-gray-400\">\n <slot>{{ message }}</slot>\n </p>\n <div v-if=\"$slots.action\" class=\"mt-4\">\n <slot name=\"action\" />\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_normalizeClass","_hoisted_3","_toDisplayString","onMounted","onUnmounted","$slots","_renderSlot","_createVNode","_unref","Icon","_hoisted_4","_hoisted_5","_Fragment","_renderList","computed","_createBlock","NotificationComponent"],"mappings":"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"}
|
|
@@ -17,7 +17,23 @@ type __VLS_Props = {
|
|
|
17
17
|
/** Key field for unique identification (default: 'id') */
|
|
18
18
|
keyField?: string;
|
|
19
19
|
};
|
|
20
|
-
declare function __VLS_template():
|
|
20
|
+
declare function __VLS_template(): {
|
|
21
|
+
attrs: Partial<{}>;
|
|
22
|
+
slots: Partial<Record<string, (_: {
|
|
23
|
+
property: Property;
|
|
24
|
+
}) => any>> & Partial<Record<string, (_: {
|
|
25
|
+
item: ItemType;
|
|
26
|
+
property: Property;
|
|
27
|
+
value: unknown;
|
|
28
|
+
}) => any>> & {
|
|
29
|
+
action?(_: {
|
|
30
|
+
item: ItemType;
|
|
31
|
+
}): any;
|
|
32
|
+
empty?(_: {}): any;
|
|
33
|
+
};
|
|
34
|
+
refs: {};
|
|
35
|
+
rootEl: HTMLDivElement;
|
|
36
|
+
};
|
|
21
37
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
22
38
|
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
23
39
|
select: (id: string) => any;
|
|
@@ -28,7 +44,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}
|
|
|
28
44
|
}>, {
|
|
29
45
|
selectable: boolean;
|
|
30
46
|
keyField: string;
|
|
31
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {},
|
|
47
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
32
48
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
33
49
|
export default _default;
|
|
34
50
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const CollapsibleCard_vue_vue_type_script_setup_true_lang = require("../../CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
const CollapsibleCard_vue_vue_type_script_setup_true_lang = require("../../CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs");
|
|
4
4
|
const Dropdown_vue_vue_type_script_setup_true_lang = require("../../Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs");
|
|
5
5
|
const BadgeType_vue_vue_type_script_setup_true_lang = require("../../BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
|
|
6
6
|
exports.AutocompleteComponent = CollapsibleCard_vue_vue_type_script_setup_true_lang._sfc_main$4;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d, g, f, _, k, b, c, j, i, e, a, h } from "../../CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
import { d, g, f, _, k, b, c, j, i, e, a, h } from "../../CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js";
|
|
2
2
|
import { a as a2, _ as _2 } from "../../Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js";
|
|
3
3
|
import { _ as _3 } from "../../BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js";
|
|
4
4
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const EmptyState_vue_vue_type_script_setup_true_lang = require("../../EmptyState.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
const EmptyState_vue_vue_type_script_setup_true_lang = require("../../EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs");
|
|
4
4
|
exports.Alert = EmptyState_vue_vue_type_script_setup_true_lang._sfc_main$5;
|
|
5
5
|
exports.EmptyState = EmptyState_vue_vue_type_script_setup_true_lang._sfc_main$6;
|
|
6
6
|
exports.LoadingSpinner = EmptyState_vue_vue_type_script_setup_true_lang._sfc_main;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const CollapsibleCard_vue_vue_type_script_setup_true_lang = require("../CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
const CollapsibleCard_vue_vue_type_script_setup_true_lang = require("../CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs");
|
|
4
4
|
const Dropdown_vue_vue_type_script_setup_true_lang = require("../Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs");
|
|
5
5
|
const BadgeType_vue_vue_type_script_setup_true_lang = require("../BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
|
|
6
6
|
const Switch_vue_vue_type_script_setup_true_lang = require("../Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs");
|
|
7
7
|
const Checkbox_vue_vue_type_script_setup_true_lang = require("../Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs");
|
|
8
|
-
const EmptyState_vue_vue_type_script_setup_true_lang = require("../EmptyState.vue_vue_type_script_setup_true_lang-
|
|
8
|
+
const EmptyState_vue_vue_type_script_setup_true_lang = require("../EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs");
|
|
9
9
|
const PageLayout_vue_vue_type_script_setup_true_lang = require("../PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs");
|
|
10
10
|
exports.AutocompleteComponent = CollapsibleCard_vue_vue_type_script_setup_true_lang._sfc_main$4;
|
|
11
11
|
exports.Avatar = CollapsibleCard_vue_vue_type_script_setup_true_lang._sfc_main$7;
|
package/dist/components/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { d, g, f, _, k, b, c, j, i, e, a, h } from "../CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
import { d, g, f, _, k, b, c, j, i, e, a, h } from "../CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js";
|
|
2
2
|
import { a as a2, _ as _2 } from "../Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js";
|
|
3
3
|
import { e as e2, d as d2, c as c2, b as b2, _ as _3, a as a3 } from "../BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js";
|
|
4
4
|
import { d as d3, a as a4, b as b3, _ as _4, c as c3, e as e3, f as f2 } from "../Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js";
|
|
5
5
|
import { _ as _5 } from "../Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js";
|
|
6
|
-
import { e as e4, f as f3, _ as _6, a as a5, c as c4, d as d4, b as b4 } from "../EmptyState.vue_vue_type_script_setup_true_lang-
|
|
6
|
+
import { e as e4, f as f3, _ as _6, a as a5, c as c4, d as d4, b as b4 } from "../EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js";
|
|
7
7
|
import { _ as _7, a as a6 } from "../PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js";
|
|
8
8
|
export {
|
|
9
9
|
e4 as Alert,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { d as _sfc_main$1, g as _sfc_main$2, f as _sfc_main$6, _ as _sfc_main$7, k as _sfc_main$9, b as _sfc_main$k, c as _sfc_main$r, j as _sfc_main$u, i as _sfc_main$w, e as _sfc_main$x, a as _sfc_main$y, h as _sfc_main$z } from "./CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
import { d as _sfc_main$1, g as _sfc_main$2, f as _sfc_main$6, _ as _sfc_main$7, k as _sfc_main$9, b as _sfc_main$k, c as _sfc_main$r, j as _sfc_main$u, i as _sfc_main$w, e as _sfc_main$x, a as _sfc_main$y, h as _sfc_main$z } from "./CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js";
|
|
2
2
|
import { a as _sfc_main$b, _ as _sfc_main$j } from "./Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js";
|
|
3
3
|
import { e as _sfc_main$3, d as _sfc_main$5, c as _sfc_main$a, b as _sfc_main$o, _ as _sfc_main$t, a as _sfc_main$A } from "./BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js";
|
|
4
4
|
import { d as _sfc_main$d, a as _sfc_main$e, b as _sfc_main$f, _ as _sfc_main$g, c as _sfc_main$h, e as _sfc_main$s, f as _sfc_main$v } from "./Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js";
|
|
5
5
|
import { _ as _sfc_main$8 } from "./Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js";
|
|
6
|
-
import { e as _sfc_main, f as _sfc_main$c, _ as _sfc_main$i, a as _sfc_main$l, c as _sfc_main$m, d as _sfc_main$n, b as _sfc_main$q } from "./EmptyState.vue_vue_type_script_setup_true_lang-
|
|
6
|
+
import { e as _sfc_main, f as _sfc_main$c, _ as _sfc_main$i, a as _sfc_main$l, c as _sfc_main$m, d as _sfc_main$n, b as _sfc_main$q } from "./EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js";
|
|
7
7
|
import { _ as _sfc_main$4, a as _sfc_main$p } from "./PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js";
|
|
8
8
|
const components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
9
9
|
__proto__: null,
|
|
@@ -48,4 +48,4 @@ const components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
|
|
|
48
48
|
export {
|
|
49
49
|
components as c
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=index-
|
|
51
|
+
//# sourceMappingURL=index-BEUu6KNI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BEUu6KNI.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const CollapsibleCard_vue_vue_type_script_setup_true_lang = require("./CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
2
|
+
const CollapsibleCard_vue_vue_type_script_setup_true_lang = require("./CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs");
|
|
3
3
|
const Dropdown_vue_vue_type_script_setup_true_lang = require("./Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs");
|
|
4
4
|
const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
|
|
5
5
|
const Switch_vue_vue_type_script_setup_true_lang = require("./Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs");
|
|
6
6
|
const Checkbox_vue_vue_type_script_setup_true_lang = require("./Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs");
|
|
7
|
-
const EmptyState_vue_vue_type_script_setup_true_lang = require("./EmptyState.vue_vue_type_script_setup_true_lang-
|
|
7
|
+
const EmptyState_vue_vue_type_script_setup_true_lang = require("./EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs");
|
|
8
8
|
const PageLayout_vue_vue_type_script_setup_true_lang = require("./PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs");
|
|
9
9
|
const components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10
10
|
__proto__: null,
|
|
@@ -47,4 +47,4 @@ const components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
|
|
|
47
47
|
TextType: BadgeType_vue_vue_type_script_setup_true_lang._sfc_main$1
|
|
48
48
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
49
49
|
exports.components = components;
|
|
50
|
-
//# sourceMappingURL=index-
|
|
50
|
+
//# sourceMappingURL=index-DHo9Tbn4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DHo9Tbn4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const CollapsibleCard_vue_vue_type_script_setup_true_lang = require("./CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
const CollapsibleCard_vue_vue_type_script_setup_true_lang = require("./CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs");
|
|
4
4
|
const Dropdown_vue_vue_type_script_setup_true_lang = require("./Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs");
|
|
5
5
|
const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
|
|
6
6
|
const Switch_vue_vue_type_script_setup_true_lang = require("./Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs");
|
|
7
7
|
const Checkbox_vue_vue_type_script_setup_true_lang = require("./Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs");
|
|
8
|
-
const EmptyState_vue_vue_type_script_setup_true_lang = require("./EmptyState.vue_vue_type_script_setup_true_lang-
|
|
8
|
+
const EmptyState_vue_vue_type_script_setup_true_lang = require("./EmptyState.vue_vue_type_script_setup_true_lang-DzDK0MZi.cjs");
|
|
9
9
|
const PageLayout_vue_vue_type_script_setup_true_lang = require("./PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs");
|
|
10
10
|
const useModal = require("./useModal-DDF_ZS8C.cjs");
|
|
11
11
|
const useDropdown = require("./useDropdown-DHFnd259.cjs");
|
|
12
|
-
const components_index = require("./index-
|
|
12
|
+
const components_index = require("./index-DHo9Tbn4.cjs");
|
|
13
13
|
const VueTailwindUI = {
|
|
14
14
|
install(app, options = {}) {
|
|
15
15
|
const { prefix = "", components: selectedComponents } = options;
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { d, g, f, _, k, b, c, j, i, e, a, h } from "./CollapsibleCard.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
import { d, g, f, _, k, b, c, j, i, e, a, h } from "./CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js";
|
|
2
2
|
import { a as a2, _ as _2 } from "./Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js";
|
|
3
3
|
import { e as e2, d as d2, c as c2, b as b2, _ as _3, a as a3 } from "./BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js";
|
|
4
4
|
import { d as d3, a as a4, b as b3, _ as _4, c as c3, e as e3, f as f2 } from "./Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js";
|
|
5
5
|
import { _ as _5 } from "./Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js";
|
|
6
|
-
import { e as e4, f as f3, _ as _6, a as a5, c as c4, d as d4, b as b4 } from "./EmptyState.vue_vue_type_script_setup_true_lang-
|
|
6
|
+
import { e as e4, f as f3, _ as _6, a as a5, c as c4, d as d4, b as b4 } from "./EmptyState.vue_vue_type_script_setup_true_lang-BBLBf32F.js";
|
|
7
7
|
import { _ as _7, a as a6 } from "./PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js";
|
|
8
8
|
import { a as a7, b as b5, c as c5, d as d5, u } from "./useModal-Aq8hn152.js";
|
|
9
9
|
import { u as u2 } from "./useDropdown-iVu14E6s.js";
|
|
10
|
-
import { c as components } from "./index-
|
|
10
|
+
import { c as components } from "./index-BEUu6KNI.js";
|
|
11
11
|
const VueTailwindUI = {
|
|
12
12
|
install(app, options = {}) {
|
|
13
13
|
const { prefix = "", components: selectedComponents } = options;
|