cisse-vue-ui 0.8.4 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +666 -4
  2. package/dist/{CheckboxGroup.vue_vue_type_script_setup_true_lang-B190Yija.js → CheckboxGroup.vue_vue_type_script_setup_true_lang-ZP02bMgY.js} +2 -2
  3. package/dist/{CheckboxGroup.vue_vue_type_script_setup_true_lang-B190Yija.js.map → CheckboxGroup.vue_vue_type_script_setup_true_lang-ZP02bMgY.js.map} +1 -1
  4. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DWs2V7xX.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-C5KHLMvx.js} +37 -184
  5. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-C5KHLMvx.js.map +1 -0
  6. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-BGUoa5fT.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-CLfy0-Wb.cjs} +33 -180
  7. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-CLfy0-Wb.cjs.map +1 -0
  8. package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-DYxh-wFx.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-COkZbeGG.cjs} +1259 -208
  9. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-COkZbeGG.cjs.map +1 -0
  10. package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-BmJHgkBs.js → FilterTabs.vue_vue_type_script_setup_true_lang-CzpYHtc5.js} +1268 -217
  11. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-CzpYHtc5.js.map +1 -0
  12. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js +298 -0
  13. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js.map +1 -0
  14. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs +297 -0
  15. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs.map +1 -0
  16. package/dist/components/core/AccordionItem.test.d.ts +1 -0
  17. package/dist/components/core/Breadcrumb.stories.d.ts +5 -0
  18. package/dist/components/core/CardWrapper.stories.d.ts +32 -0
  19. package/dist/components/core/CardWrapper.test.d.ts +1 -0
  20. package/dist/components/core/CardWrapper.vue.d.ts +129 -0
  21. package/dist/components/core/CollapsibleCard.vue.d.ts +1 -1
  22. package/dist/components/core/DataTable.stories.d.ts +38 -0
  23. package/dist/components/core/Dropdown.vue.d.ts +1 -1
  24. package/dist/components/core/Popover.vue.d.ts +2 -2
  25. package/dist/components/core/Tooltip.stories.d.ts +3 -0
  26. package/dist/components/core/index.cjs +39 -22
  27. package/dist/components/core/index.cjs.map +1 -1
  28. package/dist/components/core/index.d.ts +4 -1
  29. package/dist/components/core/index.js +39 -22
  30. package/dist/components/core/table/DataTable.test.d.ts +1 -0
  31. package/dist/components/core/{TableComponent.vue.d.ts → table/DataTable.vue.d.ts} +60 -7
  32. package/dist/components/core/table/Table.stories.d.ts +27 -0
  33. package/dist/components/core/table/atoms/Caption.test.d.ts +1 -0
  34. package/dist/components/core/table/atoms/Caption.vue.d.ts +26 -0
  35. package/dist/components/core/table/atoms/Col.test.d.ts +1 -0
  36. package/dist/components/core/table/atoms/Col.vue.d.ts +8 -0
  37. package/dist/components/core/table/atoms/Colgroup.test.d.ts +1 -0
  38. package/dist/components/core/table/atoms/Colgroup.vue.d.ts +17 -0
  39. package/dist/components/core/table/atoms/Table.test.d.ts +1 -0
  40. package/dist/components/core/table/atoms/Table.vue.d.ts +46 -0
  41. package/dist/components/core/table/atoms/Tbody.test.d.ts +1 -0
  42. package/dist/components/core/table/atoms/Tbody.vue.d.ts +17 -0
  43. package/dist/components/core/table/atoms/Td.test.d.ts +1 -0
  44. package/dist/components/core/table/atoms/Td.vue.d.ts +43 -0
  45. package/dist/components/core/table/atoms/Tfoot.test.d.ts +1 -0
  46. package/dist/components/core/table/atoms/Tfoot.vue.d.ts +17 -0
  47. package/dist/components/core/table/atoms/Th.test.d.ts +1 -0
  48. package/dist/components/core/table/atoms/Th.vue.d.ts +64 -0
  49. package/dist/components/core/table/atoms/Thead.test.d.ts +1 -0
  50. package/dist/components/core/table/atoms/Thead.vue.d.ts +17 -0
  51. package/dist/components/core/table/atoms/Tr.test.d.ts +1 -0
  52. package/dist/components/core/table/atoms/Tr.vue.d.ts +35 -0
  53. package/dist/components/core/table/atoms/index.d.ts +10 -0
  54. package/dist/components/core/table/index.d.ts +3 -0
  55. package/dist/components/core/table/molecules/ExpandableRow.test.d.ts +1 -0
  56. package/dist/components/core/table/molecules/ExpandableRow.vue.d.ts +47 -0
  57. package/dist/components/core/table/molecules/TableFooter.test.d.ts +1 -0
  58. package/dist/components/core/table/molecules/TableFooter.vue.d.ts +21 -0
  59. package/dist/components/core/table/molecules/TableHeader.test.d.ts +1 -0
  60. package/dist/components/core/table/molecules/TableHeader.vue.d.ts +49 -0
  61. package/dist/components/core/table/molecules/TableRow.test.d.ts +1 -0
  62. package/dist/components/core/table/molecules/TableRow.vue.d.ts +59 -0
  63. package/dist/components/core/table/molecules/index.d.ts +4 -0
  64. package/dist/components/feedback/Progress.vue.d.ts +1 -1
  65. package/dist/components/feedback/TableSkeleton.vue.d.ts +1 -1
  66. package/dist/components/feedback/index.cjs +14 -14
  67. package/dist/components/feedback/index.js +14 -14
  68. package/dist/components/form/Combobox.vue.d.ts +1 -1
  69. package/dist/components/form/DatePicker.vue.d.ts +1 -1
  70. package/dist/components/form/FormSection.vue.d.ts +1 -1
  71. package/dist/components/form/IconPicker.stories.d.ts +19 -0
  72. package/dist/components/form/IconPicker.test.d.ts +1 -0
  73. package/dist/components/form/InputWrapper.stories.d.ts +0 -5
  74. package/dist/components/form/Rating.vue.d.ts +1 -1
  75. package/dist/components/form/SearchInput.vue.d.ts +1 -1
  76. package/dist/components/form/index.js +2 -2
  77. package/dist/components/index.cjs +53 -36
  78. package/dist/components/index.cjs.map +1 -1
  79. package/dist/components/index.js +65 -48
  80. package/dist/composables/index.cjs +15 -8
  81. package/dist/composables/index.cjs.map +1 -1
  82. package/dist/composables/index.d.ts +7 -0
  83. package/dist/composables/index.js +12 -5
  84. package/dist/composables/useColumnResize.d.ts +38 -0
  85. package/dist/composables/useColumnResize.test.d.ts +1 -0
  86. package/dist/composables/useColumnVisibility.d.ts +44 -0
  87. package/dist/composables/useColumnVisibility.test.d.ts +1 -0
  88. package/dist/composables/useEditableCell.d.ts +51 -0
  89. package/dist/composables/useEditableCell.test.d.ts +1 -0
  90. package/dist/composables/usePagination.d.ts +44 -0
  91. package/dist/composables/usePagination.test.d.ts +1 -0
  92. package/dist/composables/usePinnedRows.d.ts +41 -0
  93. package/dist/composables/usePinnedRows.test.d.ts +1 -0
  94. package/dist/composables/useTableKeyboardNavigation.d.ts +52 -0
  95. package/dist/composables/useTableKeyboardNavigation.test.d.ts +1 -0
  96. package/dist/composables/useVirtualScroll.d.ts +32 -0
  97. package/dist/composables/useVirtualScroll.test.d.ts +1 -0
  98. package/dist/index-0kwQORZJ.js +114 -0
  99. package/dist/index-0kwQORZJ.js.map +1 -0
  100. package/dist/{index-LFQFhClN.cjs → index-BMSH4AOz.cjs} +54 -37
  101. package/dist/{index-LFQFhClN.cjs.map → index-BMSH4AOz.cjs.map} +1 -1
  102. package/dist/{index-SNefWfX0.js → index-BaWpldIJ.js} +3 -3
  103. package/dist/{index-SNefWfX0.js.map → index-BaWpldIJ.js.map} +1 -1
  104. package/dist/index.cjs +69 -45
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.js +79 -55
  107. package/dist/style.css +1 -1
  108. package/dist/types/components.d.ts +1 -1
  109. package/dist/types/property.d.ts +8 -0
  110. package/dist/usePagination-BGwbICFC.js +135 -0
  111. package/dist/usePagination-BGwbICFC.js.map +1 -0
  112. package/dist/usePagination-gvvh1zqA.cjs +134 -0
  113. package/dist/usePagination-gvvh1zqA.cjs.map +1 -0
  114. package/dist/useVirtualScroll-BivP86fA.cjs +869 -0
  115. package/dist/useVirtualScroll-BivP86fA.cjs.map +1 -0
  116. package/dist/useVirtualScroll-YeZru2Eo.js +870 -0
  117. package/dist/useVirtualScroll-YeZru2Eo.js.map +1 -0
  118. package/package.json +1 -1
  119. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-BGUoa5fT.cjs.map +0 -1
  120. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DWs2V7xX.js.map +0 -1
  121. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-BmJHgkBs.js.map +0 -1
  122. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-DYxh-wFx.cjs.map +0 -1
  123. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js +0 -150
  124. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js.map +0 -1
  125. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs +0 -149
  126. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs.map +0 -1
  127. package/dist/components/core/TableComponent.stories.d.ts +0 -16
  128. package/dist/index-CyL_6V7D.js +0 -97
  129. package/dist/index-CyL_6V7D.js.map +0 -1
  130. package/dist/useDarkMode-Cl5QWTlC.js +0 -53
  131. package/dist/useDarkMode-Cl5QWTlC.js.map +0 -1
  132. package/dist/useDarkMode-DLZcJEUQ.cjs +0 -52
  133. package/dist/useDarkMode-DLZcJEUQ.cjs.map +0 -1
  134. package/dist/useToast-Bk60GArg.cjs +0 -176
  135. package/dist/useToast-Bk60GArg.cjs.map +0 -1
  136. package/dist/useToast-ina5g3mj.js +0 -177
  137. package/dist/useToast-ina5g3mj.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs","sources":["../src/components/feedback/CardSkeleton.vue","../src/components/feedback/TableSkeleton.vue","../src/components/feedback/PaginationControls.vue","../src/components/feedback/ListSkeleton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nwithDefaults(\r\n defineProps<{\r\n /** Show avatar/icon placeholder */\r\n showAvatar?: boolean\r\n /** Number of text lines */\r\n lines?: number\r\n /** Show action buttons */\r\n showActions?: boolean\r\n }>(),\r\n {\r\n showAvatar: false,\r\n lines: 3,\r\n showActions: false,\r\n },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"bg-white dark:bg-gray-900 rounded-lg shadow-md p-4 space-y-4\" aria-hidden=\"true\">\r\n <!-- Header with avatar -->\r\n <div v-if=\"showAvatar\" class=\"flex items-center gap-3\">\r\n <div class=\"size-10 rounded-full bg-gray-200 dark:bg-gray-700 animate-pulse\" />\r\n <div class=\"flex-1 space-y-2\">\r\n <div class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse w-1/2\" />\r\n <div class=\"h-3 bg-gray-200 dark:bg-gray-700 rounded animate-pulse w-1/3\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Content lines -->\r\n <div class=\"space-y-2\">\r\n <div\r\n v-for=\"line in lines\"\r\n :key=\"line\"\r\n class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{ width: line === lines ? '60%' : '100%' }\"\r\n />\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div v-if=\"showActions\" class=\"flex justify-end gap-2 pt-2\">\r\n <div class=\"h-8 w-20 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\" />\r\n <div class=\"h-8 w-20 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\" />\r\n </div>\r\n </div>\r\n</template>\r\n","<script lang=\"ts\" setup>\r\nwithDefaults(\r\n defineProps<{\r\n /** Number of rows */\r\n rows?: number\r\n /** Number of columns */\r\n columns?: number\r\n /** Show header */\r\n showHeader?: boolean\r\n }>(),\r\n {\r\n rows: 5,\r\n columns: 4,\r\n showHeader: true,\r\n },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"w-full\" aria-hidden=\"true\">\r\n <!-- Header -->\r\n <div\r\n v-if=\"showHeader\"\r\n class=\"flex gap-4 px-4 py-3 border-b border-gray-200 dark:border-gray-700\"\r\n >\r\n <div\r\n v-for=\"col in columns\"\r\n :key=\"`header-${col}`\"\r\n class=\"flex-1 h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{ maxWidth: col === 1 ? '30%' : '20%' }\"\r\n />\r\n </div>\r\n <!-- Rows -->\r\n <div\r\n v-for=\"row in rows\"\r\n :key=\"`row-${row}`\"\r\n class=\"flex items-center gap-4 px-4 py-4 border-b border-gray-100 dark:border-gray-800\"\r\n >\r\n <div\r\n v-for=\"col in columns\"\r\n :key=\"`cell-${row}-${col}`\"\r\n class=\"flex-1 h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{\r\n maxWidth: col === 1 ? '40%' : col === columns ? '15%' : '25%',\r\n opacity: 1 - (row * 0.1)\r\n }\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n","<script lang=\"ts\" setup>\r\nimport { computed } from 'vue'\r\nimport { Icon } from '@iconify/vue'\r\n\r\nconst {\r\n currentPage,\r\n totalPages,\r\n loading = false,\r\n pageSize = 10,\r\n pageSizeOptions = [10, 20, 50, 100],\r\n showPageSize = true,\r\n showPageNumbers = true,\r\n maxVisiblePages = 7,\r\n pageLabel = 'Page',\r\n ofLabel = 'of',\r\n itemsPerPageLabel = 'Items per page:',\r\n previousLabel = 'Previous',\r\n nextLabel = 'Next',\r\n} = defineProps<{\r\n currentPage: number\r\n totalPages: number\r\n loading?: boolean\r\n pageSize?: number\r\n pageSizeOptions?: number[]\r\n showPageSize?: boolean\r\n showPageNumbers?: boolean\r\n maxVisiblePages?: number\r\n pageLabel?: string\r\n ofLabel?: string\r\n itemsPerPageLabel?: string\r\n previousLabel?: string\r\n nextLabel?: string\r\n}>()\r\n\r\ntype PageItem = number | 'ellipsis-start' | 'ellipsis-end'\r\n\r\nconst visiblePages = computed<PageItem[]>(() => {\r\n if (totalPages <= maxVisiblePages) {\r\n return Array.from({ length: totalPages }, (_, i) => i + 1)\r\n }\r\n\r\n const pages: PageItem[] = []\r\n const sidePages = Math.floor((maxVisiblePages - 3) / 2)\r\n\r\n // Always show first page\r\n pages.push(1)\r\n\r\n // Calculate range around current page\r\n let rangeStart = Math.max(2, currentPage - sidePages)\r\n let rangeEnd = Math.min(totalPages - 1, currentPage + sidePages)\r\n\r\n // Adjust range to show more pages on one side if near edges\r\n if (currentPage <= sidePages + 2) {\r\n rangeEnd = Math.min(totalPages - 1, maxVisiblePages - 2)\r\n } else if (currentPage >= totalPages - sidePages - 1) {\r\n rangeStart = Math.max(2, totalPages - maxVisiblePages + 3)\r\n }\r\n\r\n // Add ellipsis or pages after first page\r\n if (rangeStart > 2) {\r\n pages.push('ellipsis-start')\r\n }\r\n\r\n // Add range pages\r\n for (let i = rangeStart; i <= rangeEnd; i++) {\r\n pages.push(i)\r\n }\r\n\r\n // Add ellipsis or pages before last page\r\n if (rangeEnd < totalPages - 1) {\r\n pages.push('ellipsis-end')\r\n }\r\n\r\n // Always show last page\r\n if (totalPages > 1) {\r\n pages.push(totalPages)\r\n }\r\n\r\n return pages\r\n})\r\n\r\nconst emit = defineEmits<{\r\n 'update:page': [page: number]\r\n 'update:pageSize': [size: number]\r\n}>()\r\n\r\nconst changePage = (page: number) => {\r\n if (page >= 1 && page <= totalPages && !loading) {\r\n emit('update:page', page)\r\n }\r\n}\r\n\r\nconst changePageSize = (event: Event) => {\r\n const target = event.target as HTMLSelectElement\r\n emit('update:pageSize', Number(target.value))\r\n}\r\n</script>\r\n\r\n<template>\r\n <div\r\n v-if=\"totalPages > 1\"\r\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\"\r\n >\r\n <!-- Info and page size -->\r\n <div class=\"flex flex-col sm:flex-row sm:items-center gap-3 sm:gap-4\">\r\n <div class=\"text-sm text-gray-700 dark:text-gray-300 text-center sm:text-left\">\r\n {{ pageLabel }} {{ currentPage }} {{ ofLabel }} {{ totalPages }}\r\n </div>\r\n <div\r\n v-if=\"showPageSize\"\r\n class=\"flex items-center justify-center sm:justify-start gap-2\"\r\n >\r\n <label\r\n class=\"text-sm text-gray-600 dark:text-gray-400 hidden sm:inline\"\r\n for=\"page-size\"\r\n >\r\n {{ itemsPerPageLabel }}\r\n </label>\r\n <select\r\n id=\"page-size\"\r\n :value=\"pageSize\"\r\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\"\r\n @change=\"changePageSize\"\r\n >\r\n <option\r\n v-for=\"size in pageSizeOptions\"\r\n :key=\"size\"\r\n :value=\"size\"\r\n >\r\n {{ size }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <!-- Navigation buttons -->\r\n <div class=\"flex justify-center sm:justify-end items-center gap-1\">\r\n <!-- Previous button -->\r\n <button\r\n :disabled=\"currentPage === 1 || loading\"\r\n class=\"focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 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\"\r\n @click=\"changePage(currentPage - 1)\"\r\n >\r\n <Icon\r\n class=\"size-4\"\r\n icon=\"lucide:chevron-left\"\r\n />\r\n <span class=\"hidden sm:inline\">{{ previousLabel }}</span>\r\n </button>\r\n\r\n <!-- Page numbers -->\r\n <template v-if=\"showPageNumbers\">\r\n <template\r\n v-for=\"page in visiblePages\"\r\n :key=\"page\"\r\n >\r\n <!-- Ellipsis -->\r\n <span\r\n v-if=\"page === 'ellipsis-start' || page === 'ellipsis-end'\"\r\n class=\"px-2 py-2 text-sm text-gray-500 dark:text-gray-400\"\r\n >\r\n …\r\n </span>\r\n <!-- Page number button -->\r\n <button\r\n v-else\r\n :disabled=\"loading\"\r\n :class=\"[\r\n 'min-w-[40px] px-3 py-2 text-sm font-medium rounded-lg border transition-colors',\r\n page === currentPage\r\n ? 'bg-primary-600 text-white border-primary-600 dark:bg-primary-500 dark:border-primary-500'\r\n : 'bg-white text-gray-700 border-gray-300 hover:bg-gray-50 dark:bg-gray-800 dark:text-gray-200 dark:border-gray-600 dark:hover:bg-gray-700',\r\n loading ? 'cursor-not-allowed opacity-50' : ''\r\n ]\"\r\n @click=\"changePage(page)\"\r\n >\r\n {{ page }}\r\n </button>\r\n </template>\r\n </template>\r\n\r\n <!-- Next button -->\r\n <button\r\n :disabled=\"currentPage === totalPages || loading\"\r\n class=\"focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 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\"\r\n @click=\"changePage(currentPage + 1)\"\r\n >\r\n <span class=\"hidden sm:inline\">{{ nextLabel }}</span>\r\n <Icon\r\n class=\"size-4\"\r\n icon=\"lucide:chevron-right\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n</template>\r\n","<script lang=\"ts\" setup>\r\nwithDefaults(\r\n defineProps<{\r\n /** Number of items */\r\n items?: number\r\n /** Show avatar/icon placeholder */\r\n showAvatar?: boolean\r\n /** Show secondary text */\r\n showSecondary?: boolean\r\n /** Show action button */\r\n showAction?: boolean\r\n }>(),\r\n {\r\n items: 5,\r\n showAvatar: true,\r\n showSecondary: true,\r\n showAction: false,\r\n },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"divide-y divide-gray-200 dark:divide-gray-700\" aria-hidden=\"true\">\r\n <div\r\n v-for=\"item in items\"\r\n :key=\"item\"\r\n class=\"flex items-center gap-4 py-4 px-4\"\r\n >\r\n <!-- Avatar -->\r\n <div\r\n v-if=\"showAvatar\"\r\n class=\"shrink-0 size-10 rounded-full bg-gray-200 dark:bg-gray-700 animate-pulse\"\r\n />\r\n\r\n <!-- Content -->\r\n <div class=\"flex-1 min-w-0 space-y-2\">\r\n <div\r\n class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{ width: `${60 + Math.random() * 30}%` }\"\r\n />\r\n <div\r\n v-if=\"showSecondary\"\r\n class=\"h-3 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{ width: `${40 + Math.random() * 20}%` }\"\r\n />\r\n </div>\r\n\r\n <!-- Action -->\r\n <div\r\n v-if=\"showAction\"\r\n class=\"shrink-0 size-8 rounded bg-gray-200 dark:bg-gray-700 animate-pulse\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_Fragment","_renderList","_normalizeStyle","_hoisted_4","computed","_toDisplayString","_createVNode","_unref","Icon","_normalizeClass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmBE,aAAAA,cAAA,GAAAC,uBAyBM,OAzBNC,cAyBM;AAAA,QAvBO,QAAA,cAAXF,IAAAA,aAAAC,IAAAA,mBAMM,OANNE,cAMM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,UALJC,IAAAA,mBAA+E,OAAA,EAA1E,OAAM,kEAAA,GAAiE,MAAA,EAAA;AAAA,UAC5EA,IAAAA,mBAGM,OAAA,EAHD,OAAM,sBAAkB;AAAA,YAC3BA,IAAAA,mBAA4E,OAAA,EAAvE,OAAM,gEAA8D;AAAA,YACzEA,IAAAA,mBAA4E,OAAA,EAAvE,OAAM,gEAA8D;AAAA,UAAA;;QAK7EA,IAAAA,mBAOM,OAPNC,cAOM;AAAA,gCANJJ,IAAAA,mBAKEK,IAAAA,UAAA,MAAAC,IAAAA,WAJe,QAAA,OAAK,CAAb,SAAI;oCADbN,IAAAA,mBAKE,OAAA;AAAA,cAHC,KAAK;AAAA,cACN,OAAM;AAAA,cACL,OAAKO,IAAAA,eAAA,EAAA,OAAW,SAAS,QAAA,QAAK,QAAA,OAAA,CAAA;AAAA,YAAA;;;QAKxB,QAAA,eAAXR,IAAAA,aAAAC,IAAAA,mBAGM,OAHNQ,cAGM,CAAA,GAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA;AAAA,UAFJL,IAAAA,mBAA2E,OAAA,EAAtE,OAAM,8DAAA,GAA6D,MAAA,EAAA;AAAA,UACxEA,IAAAA,mBAA2E,OAAA,EAAtE,OAAM,8DAAA,GAA6D,MAAA,EAAA;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;ACvB5E,aAAAJ,cAAA,GAAAC,uBA6BM,OA7BNC,cA6BM;AAAA,QA1BI,QAAA,cADRF,IAAAA,UAAA,GAAAC,IAAAA,mBAUM,OAVNE,cAUM;AAAA,gCANJF,IAAAA,mBAKEK,IAAAA,UAAA,MAAAC,IAAAA,WAJc,QAAA,SAAO,CAAd,QAAG;oCADZN,IAAAA,mBAKE,OAAA;AAAA,cAHC,eAAe,GAAG;AAAA,cACnB,OAAM;AAAA,cACL,sCAAmB,QAAG,IAAA,QAAA,OAAA;AAAA,YAAA;;;8BAI3BA,IAAAA,mBAcMK,IAAAA,UAAA,MAAAC,IAAAA,WAbU,QAAA,MAAI,CAAX,QAAG;kCADZN,IAAAA,mBAcM,OAAA;AAAA,YAZH,YAAY,GAAG;AAAA,YAChB,OAAM;AAAA,UAAA;kCAENA,IAAAA,mBAQEK,IAAAA,UAAA,MAAAC,IAAAA,WAPc,QAAA,SAAO,CAAd,QAAG;sCADZN,IAAAA,mBAQE,OAAA;AAAA,gBANC,KAAG,QAAU,GAAG,IAAI,GAAG;AAAA,gBACxB,OAAM;AAAA,gBACL,OAAKO,IAAAA,eAAA;AAAA,4BAAyB,QAAG,IAAA,QAAiB,QAAQ,QAAA,UAAO,QAAA;AAAA,+BAA2C,MAAG;AAAA,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNxH,UAAM,eAAeE,IAAAA,SAAqB,MAAM;AAC9C,UAAI,QAAA,cAAc,QAAA,iBAAiB;AACjC,eAAO,MAAM,KAAK,EAAE,QAAQ,QAAA,WAAA,GAAc,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,MAC3D;AAEA,YAAM,QAAoB,CAAA;AAC1B,YAAM,YAAY,KAAK,OAAO,0BAAkB,KAAK,CAAC;AAGtD,YAAM,KAAK,CAAC;AAGZ,UAAI,aAAa,KAAK,IAAI,GAAG,sBAAc,SAAS;AACpD,UAAI,WAAW,KAAK,IAAI,qBAAa,GAAG,QAAA,cAAc,SAAS;AAG/D,UAAI,uBAAe,YAAY,GAAG;AAChC,mBAAW,KAAK,IAAI,QAAA,aAAa,GAAG,QAAA,kBAAkB,CAAC;AAAA,MACzD,WAAW,QAAA,eAAe,QAAA,aAAa,YAAY,GAAG;AACpD,qBAAa,KAAK,IAAI,GAAG,QAAA,aAAa,QAAA,kBAAkB,CAAC;AAAA,MAC3D;AAGA,UAAI,aAAa,GAAG;AAClB,cAAM,KAAK,gBAAgB;AAAA,MAC7B;AAGA,eAAS,IAAI,YAAY,KAAK,UAAU,KAAK;AAC3C,cAAM,KAAK,CAAC;AAAA,MACd;AAGA,UAAI,WAAW,QAAA,aAAa,GAAG;AAC7B,cAAM,KAAK,cAAc;AAAA,MAC3B;AAGA,UAAI,QAAA,aAAa,GAAG;AAClB,cAAM,KAAK,kBAAU;AAAA,MACvB;AAEA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,OAAO;AAKb,UAAM,aAAa,CAAC,SAAiB;AACnC,UAAI,QAAQ,KAAK,QAAQ,QAAA,cAAc,CAAC,QAAA,SAAS;AAC/C,aAAK,eAAe,IAAI;AAAA,MAC1B;AAAA,IACF;AAEA,UAAM,iBAAiB,CAAC,UAAiB;AACvC,YAAM,SAAS,MAAM;AACrB,WAAK,mBAAmB,OAAO,OAAO,KAAK,CAAC;AAAA,IAC9C;;aAKU,QAAA,aAAU,KADlBV,IAAAA,aAAAC,IAAAA,mBA+FM,OA/FNC,cA+FM;AAAA,QA1FJE,IAAAA,mBA6BM,OA7BND,cA6BM;AAAA,UA5BJC,uBAEM,OAFNC,cAEMM,oBADD,QAAA,SAAS,IAAG,MAACA,IAAAA,gBAAG,QAAA,WAAW,IAAG,MAACA,IAAAA,gBAAG,QAAA,OAAO,IAAG,0BAAI,QAAA,UAAU,GAAA,CAAA;AAAA,UAGvD,QAAA,gBADRX,IAAAA,UAAA,GAAAC,IAAAA,mBAwBM,OAxBNQ,cAwBM;AAAA,YApBJL,IAAAA,mBAKQ,SALR,YAKQO,IAAAA,gBADH,QAAA,iBAAiB,GAAA,CAAA;AAAA,YAEtBP,IAAAA,mBAaS,UAAA;AAAA,cAZP,IAAG;AAAA,cACF,OAAO,QAAA;AAAA,cACR,OAAM;AAAA,cACL,UAAQ;AAAA,YAAA;oCAETH,IAAAA,mBAMSK,IAAAA,UAAA,MAAAC,IAAAA,WALQ,QAAA,iBAAe,CAAvB,SAAI;wCADbN,IAAAA,mBAMS,UAAA;AAAA,kBAJN,KAAK;AAAA,kBACL,OAAO;AAAA,gBAAA,uBAEL,IAAI,GAAA,GAAA,UAAA;AAAA;;;;QAOfG,IAAAA,mBAyDM,OAzDN,YAyDM;AAAA,UAvDJA,IAAAA,mBAUS,UAAA;AAAA,YATN,UAAU,QAAA,gBAAW,KAAU,QAAA;AAAA,YAChC,OAAM;AAAA,YACL,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,WAAW,QAAA,cAAW,CAAA;AAAA,UAAA;YAE9BQ,gBAGEC,IAAAA,MAAAC,MAAAA,IAAA,GAAA;AAAA,cAFA,OAAM;AAAA,cACN,MAAK;AAAA,YAAA;YAEPV,IAAAA,mBAAyD,QAAzD,aAAyDO,IAAAA,gBAAvB,QAAA,aAAa,GAAA,CAAA;AAAA,UAAA;UAIjC,QAAA,wCACdV,IAAAA,mBA0BWK,IAAAA,UAAA,EAAA,KAAA,KAAAC,IAAAA,WAzBM,aAAA,OAAY,CAApB,SAAI;gFACL,QAAI;AAAA,cAIF,6BAA6B,SAAI,mCADzCN,IAAAA,mBAKO,QALP,aAGC,KAED,uBAEAA,IAAAA,mBAaS,UAAA;AAAA;gBAXN,UAAU,QAAA;AAAA,gBACV,OAAKc,IAAAA,eAAA;AAAA;kBAAoH,SAAS,QAAA;kBAAuS,QAAA,UAAO,kCAAA;AAAA,gBAAA;gBAOhb,SAAK,CAAA,WAAE,WAAW,IAAI;AAAA,cAAA,uBAEpB,IAAI,GAAA,IAAA,WAAA;AAAA,YAAA;;UAMbX,IAAAA,mBAUS,UAAA;AAAA,YATN,UAAU,QAAA,gBAAgB,QAAA,cAAc,QAAA;AAAA,YACzC,OAAM;AAAA,YACL,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,WAAW,QAAA,cAAW,CAAA;AAAA,UAAA;YAE9BA,IAAAA,mBAAqD,QAArD,aAAqDO,IAAAA,gBAAnB,QAAA,SAAS,GAAA,CAAA;AAAA,YAC3CC,gBAGEC,IAAAA,MAAAC,MAAAA,IAAA,GAAA;AAAA,cAFA,OAAM;AAAA,cACN,MAAK;AAAA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxKb,aAAAd,cAAA,GAAAC,uBA+BM,OA/BN,YA+BM;AAAA,8BA9BJA,IAAAA,mBA6BMK,IAAAA,UAAA,MAAAC,IAAAA,WA5BW,QAAA,OAAK,CAAb,SAAI;kCADbN,IAAAA,mBA6BM,OAAA;AAAA,YA3BH,KAAK;AAAA,YACN,OAAM;AAAA,UAAA;YAIE,QAAA,cADRD,IAAAA,UAAA,GAAAC,IAAAA,mBAGE,OAHF,UAGE;YAGFG,IAAAA,mBAUM,OAVN,YAUM;AAAA,cATJA,IAAAA,mBAGE,OAAA;AAAA,gBAFA,OAAM;AAAA,gBACL,OAAKI,IAAAA,eAAA,EAAA,OAAA,GAAA,KAAmB,KAAK,OAAA,IAAM,EAAA,IAAA,CAAA;AAAA,cAAA;cAG9B,QAAA,kCADRP,IAAAA,mBAIE,OAAA;AAAA;gBAFA,OAAM;AAAA,gBACL,OAAKO,IAAAA,eAAA,EAAA,OAAA,GAAA,KAAmB,KAAK,OAAA,IAAM,EAAA,IAAA,CAAA;AAAA,cAAA;;YAMhC,QAAA,cADRR,IAAAA,UAAA,GAAAC,IAAAA,mBAGE,OAHF,UAGE;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ export {};
@@ -9,3 +9,8 @@ export declare const WithIcons: Story;
9
9
  export declare const NoHomeIcon: Story;
10
10
  export declare const SingleItem: Story;
11
11
  export declare const LongPath: Story;
12
+ export declare const EcommercePath: Story;
13
+ export declare const AdminPath: Story;
14
+ export declare const DocumentationPath: Story;
15
+ export declare const WithMaxItems: Story;
16
+ export declare const StatesDemo: Story;
@@ -0,0 +1,32 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as CardWrapper } from './CardWrapper.vue';
3
+ declare const meta: Meta<typeof CardWrapper>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithTitleAndIcon: Story;
8
+ export declare const WithActions: Story;
9
+ export declare const WithFooter: Story;
10
+ export declare const ShadowVariants: Story;
11
+ export declare const RoundedVariants: Story;
12
+ export declare const BorderVariants: Story;
13
+ export declare const Variants: Story;
14
+ export declare const PaddingVariants: Story;
15
+ export declare const HeaderPaddingVariants: Story;
16
+ export declare const NoDividers: Story;
17
+ export declare const CustomClasses: Story;
18
+ export declare const CustomIconSlot: Story;
19
+ export declare const Loading: Story;
20
+ export declare const LoadingWithOptions: Story;
21
+ export declare const AccentVariants: Story;
22
+ export declare const Clickable: Story;
23
+ export declare const Selected: Story;
24
+ export declare const Disabled: Story;
25
+ export declare const ImageTop: Story;
26
+ export declare const ImageLeft: Story;
27
+ export declare const ImageBackground: Story;
28
+ export declare const ImagePositions: Story;
29
+ export declare const InteractiveStates: Story;
30
+ export declare const ProductCard: Story;
31
+ export declare const BlogPostCard: Story;
32
+ export declare const CompleteExample: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,129 @@
1
+ export type CardShadow = 'none' | 'sm' | 'md' | 'lg' | 'xl';
2
+ export type CardRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
3
+ export type CardPadding = 'none' | 'sm' | 'md' | 'lg';
4
+ export type CardBorder = 'none' | 'default' | 'primary' | 'secondary';
5
+ export type CardVariant = 'default' | 'glass' | 'outline' | 'flat';
6
+ export type CardAccent = 'none' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';
7
+ export type CardImagePosition = 'top' | 'bottom' | 'left' | 'right' | 'background';
8
+ type __VLS_Props = {
9
+ /** Card title */
10
+ title?: string;
11
+ /** Card description */
12
+ description?: string;
13
+ /** Header icon (Iconify format) */
14
+ icon?: string;
15
+ /** Shadow level */
16
+ shadow?: CardShadow;
17
+ /** Border radius */
18
+ rounded?: CardRounded;
19
+ /** Content padding (defaults to none for CardComponent compatibility) */
20
+ padding?: CardPadding;
21
+ /** Header/footer padding (defaults to md to match CardComponent header) */
22
+ headerPadding?: CardPadding;
23
+ /** Border style */
24
+ border?: CardBorder;
25
+ /** Visual variant */
26
+ variant?: CardVariant;
27
+ /** Colored accent border (top or left depending on layout) */
28
+ accent?: CardAccent;
29
+ /** Show header divider */
30
+ headerDivider?: boolean;
31
+ /** Show footer divider */
32
+ footerDivider?: boolean;
33
+ /** Make card clickable with hover effects */
34
+ clickable?: boolean;
35
+ /** Selected state (adds visual indicator) */
36
+ selected?: boolean;
37
+ /** Disabled state */
38
+ disabled?: boolean;
39
+ /** Image URL for card media */
40
+ image?: string;
41
+ /** Image alt text */
42
+ imageAlt?: string;
43
+ /** Image position */
44
+ imagePosition?: CardImagePosition;
45
+ /** Image height (for top/bottom positions) */
46
+ imageHeight?: string;
47
+ /** Image width (for left/right positions) */
48
+ imageWidth?: string;
49
+ /** Loading state */
50
+ loading?: boolean;
51
+ /** Number of skeleton lines */
52
+ loadingLines?: number;
53
+ /** Show avatar in skeleton */
54
+ loadingAvatar?: boolean;
55
+ /** Show actions in skeleton */
56
+ loadingActions?: boolean;
57
+ /** Custom class for the card container */
58
+ cardClass?: string;
59
+ /** Custom class for the header section */
60
+ headerClass?: string;
61
+ /** Custom class for the title */
62
+ titleClass?: string;
63
+ /** Custom class for the description */
64
+ descriptionClass?: string;
65
+ /** Custom class for the icon wrapper */
66
+ iconClass?: string;
67
+ /** Custom class for the icon element */
68
+ iconElementClass?: string;
69
+ /** Custom class for the content/body */
70
+ contentClass?: string;
71
+ /** Custom class for the footer */
72
+ footerClass?: string;
73
+ /** Custom class for dividers */
74
+ dividerClass?: string;
75
+ /** Custom class for the actions container */
76
+ actionsClass?: string;
77
+ /** Custom class for the image */
78
+ imageClass?: string;
79
+ };
80
+ declare function __VLS_template(): {
81
+ attrs: Partial<{}>;
82
+ slots: {
83
+ image?(_: {}): any;
84
+ image?(_: {}): any;
85
+ image?(_: {}): any;
86
+ header?(_: {}): any;
87
+ icon?(_: {}): any;
88
+ title?(_: {}): any;
89
+ description?(_: {}): any;
90
+ actions?(_: {}): any;
91
+ default?(_: {}): any;
92
+ footer?(_: {}): any;
93
+ };
94
+ refs: {};
95
+ rootEl: any;
96
+ };
97
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
98
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
99
+ click: (event: MouseEvent) => any;
100
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
101
+ onClick?: ((event: MouseEvent) => any) | undefined;
102
+ }>, {
103
+ rounded: CardRounded;
104
+ loading: boolean;
105
+ loadingLines: number;
106
+ loadingAvatar: boolean;
107
+ loadingActions: boolean;
108
+ shadow: CardShadow;
109
+ padding: CardPadding;
110
+ headerPadding: CardPadding;
111
+ border: CardBorder;
112
+ variant: CardVariant;
113
+ accent: CardAccent;
114
+ headerDivider: boolean;
115
+ footerDivider: boolean;
116
+ clickable: boolean;
117
+ selected: boolean;
118
+ disabled: boolean;
119
+ imagePosition: CardImagePosition;
120
+ imageHeight: string;
121
+ imageWidth: string;
122
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
123
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
124
+ export default _default;
125
+ type __VLS_WithTemplateSlots<T, S> = T & {
126
+ new (): {
127
+ $slots: S;
128
+ };
129
+ };
@@ -25,9 +25,9 @@ declare function __VLS_template(): {
25
25
  };
26
26
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
27
27
  declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
28
- defaultExpanded: boolean;
29
28
  headerClass: string;
30
29
  contentClass: string;
30
+ defaultExpanded: boolean;
31
31
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
32
32
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
33
33
  export default _default;
@@ -0,0 +1,38 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { DataTable as TableComponent } from './table';
3
+ declare const meta: Meta<typeof TableComponent>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithTypes: Story;
8
+ export declare const WithBadge: Story;
9
+ export declare const WithAlignment: Story;
10
+ export declare const Selectable: Story;
11
+ export declare const WithActions: Story;
12
+ export declare const WithCustomSlot: Story;
13
+ export declare const EmptyStateBasic: Story;
14
+ export declare const NestedProperties: Story;
15
+ export declare const Loading: Story;
16
+ export declare const LoadingCustomRows: Story;
17
+ export declare const Striped: Story;
18
+ export declare const Bordered: Story;
19
+ export declare const Compact: Story;
20
+ export declare const NoHover: Story;
21
+ export declare const StickyHeader: Story;
22
+ export declare const ClickableRows: Story;
23
+ export declare const AllFeatures: Story;
24
+ export declare const EmptyState: Story;
25
+ export declare const CustomEmptyState: Story;
26
+ export declare const ErrorState: Story;
27
+ export declare const CustomErrorState: Story;
28
+ export declare const WithColumnVisibility: Story;
29
+ export declare const WithPagination: Story;
30
+ export declare const PaginationCustomPageSize: Story;
31
+ export declare const PaginationControlled: Story;
32
+ export declare const PaginationServerSide: Story;
33
+ export declare const PaginationWithSelection: Story;
34
+ export declare const PaginationNoPageSizeSelector: Story;
35
+ export declare const WithPinnedRows: Story;
36
+ export declare const WithEditableCells: Story;
37
+ export declare const WithVirtualScroll: Story;
38
+ export declare const WithResizableColumns: Story;
@@ -40,8 +40,8 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}
40
40
  onSelect?: ((item: DropdownItem) => any) | undefined;
41
41
  }>, {
42
42
  width: "auto" | "full" | "sm" | "md" | "lg";
43
- teleport: boolean;
44
43
  align: "left" | "right";
44
+ teleport: boolean;
45
45
  items: DropdownItem[];
46
46
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
47
47
  triggerRef: HTMLDivElement;
@@ -28,9 +28,9 @@ declare function __VLS_template(): {
28
28
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
29
29
  declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
30
30
  width: "auto" | "sm" | "md" | "lg";
31
- teleport: boolean;
32
- position: PopoverPosition;
33
31
  hover: boolean;
32
+ position: PopoverPosition;
33
+ teleport: boolean;
34
34
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
35
35
  triggerRef: HTMLDivElement;
36
36
  popoverRef: HTMLDivElement;
@@ -8,3 +8,6 @@ export declare const Positions: Story;
8
8
  export declare const WithDelay: Story;
9
9
  export declare const Disabled: Story;
10
10
  export declare const OnIcons: Story;
11
+ export declare const AllPositions: Story;
12
+ export declare const LongContent: Story;
13
+ export declare const OnText: Story;
@@ -1,31 +1,48 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const FilterTabs_vue_vue_type_script_setup_true_lang = require("../../FilterTabs.vue_vue_type_script_setup_true_lang-DYxh-wFx.cjs");
3
+ const FilterTabs_vue_vue_type_script_setup_true_lang = require("../../FilterTabs.vue_vue_type_script_setup_true_lang-COkZbeGG.cjs");
4
4
  const Dropdown_vue_vue_type_script_setup_true_lang = require("../../Dropdown.vue_vue_type_script_setup_true_lang-BAKGRZIb.cjs");
5
5
  const BadgeType_vue_vue_type_script_setup_true_lang = require("../../BadgeType.vue_vue_type_script_setup_true_lang-zs0NXN4g.cjs");
6
6
  const Button_vue_vue_type_script_setup_true_lang = require("../../Button.vue_vue_type_script_setup_true_lang-CXRj7LEP.cjs");
7
- exports.Accordion = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$15;
8
- exports.AccordionItem = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$16;
9
- exports.AutocompleteComponent = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$4;
10
- exports.Avatar = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$6;
11
- exports.Breadcrumb = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$14;
7
+ exports.Accordion = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$30;
8
+ exports.AccordionItem = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$31;
9
+ exports.AutocompleteComponent = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$19;
10
+ exports.Avatar = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$21;
11
+ exports.Breadcrumb = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$29;
12
+ exports.Caption = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$3;
12
13
  exports.CardComponent = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main;
13
- exports.CollapsibleCard = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$10;
14
- exports.DarkModeToggle = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$18;
15
- exports.Drawer = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$13;
16
- exports.FilterTabs = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$21;
17
- exports.MobileList = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$2;
18
- exports.Popover = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$12;
19
- exports.ResponsiveList = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$3;
20
- exports.StatsCard = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$19;
21
- exports.StatsGrid = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$20;
22
- exports.Stepper = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$9;
23
- exports.TabPanel = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$8;
24
- exports.TableAction = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$5;
25
- exports.TableComponent = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$1;
26
- exports.Tabs = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$7;
27
- exports.Timeline = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$17;
28
- exports.Tooltip = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$11;
14
+ exports.CardWrapper = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$1;
15
+ exports.Col = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$5;
16
+ exports.Colgroup = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$4;
17
+ exports.CollapsibleCard = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$25;
18
+ exports.DarkModeToggle = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$33;
19
+ exports.DataTable = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$16;
20
+ exports.Drawer = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$28;
21
+ exports.ExpandableRow = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$15;
22
+ exports.FilterTabs = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$36;
23
+ exports.MobileList = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$17;
24
+ exports.Popover = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$27;
25
+ exports.ResponsiveList = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$18;
26
+ exports.StatsCard = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$34;
27
+ exports.StatsGrid = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$35;
28
+ exports.Stepper = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$24;
29
+ exports.TabPanel = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$23;
30
+ exports.Table = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$2;
31
+ exports.TableAction = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$20;
32
+ exports.TableComponent = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$16;
33
+ exports.TableContextKey = FilterTabs_vue_vue_type_script_setup_true_lang.TableContextKey;
34
+ exports.TableFooter = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$14;
35
+ exports.TableHeader = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$12;
36
+ exports.TableRow = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$13;
37
+ exports.Tabs = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$22;
38
+ exports.Tbody = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$7;
39
+ exports.Td = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$11;
40
+ exports.Tfoot = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$8;
41
+ exports.Th = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$10;
42
+ exports.Thead = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$6;
43
+ exports.Timeline = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$32;
44
+ exports.Tooltip = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$26;
45
+ exports.Tr = FilterTabs_vue_vue_type_script_setup_true_lang._sfc_main$9;
29
46
  exports.Dropdown = Dropdown_vue_vue_type_script_setup_true_lang._sfc_main$1;
30
47
  exports.MenuItem = Dropdown_vue_vue_type_script_setup_true_lang._sfc_main;
31
48
  exports.StatusBadge = BadgeType_vue_vue_type_script_setup_true_lang._sfc_main;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,8 @@
1
1
  export { default as CardComponent } from './CardComponent.vue';
2
- export { default as TableComponent } from './TableComponent.vue';
2
+ export { default as CardWrapper } from './CardWrapper.vue';
3
+ export type { CardShadow, CardRounded, CardPadding, CardBorder, CardVariant, CardAccent, CardImagePosition, } from './CardWrapper.vue';
4
+ export { Table, TableContextKey, type TableContext, Caption, Colgroup, Col, Thead, Tbody, Tfoot, Tr, Th, type SortDirection, Td, TableHeader, TableRow, TableFooter, ExpandableRow, DataTable, } from './table';
5
+ export { DataTable as TableComponent } from './table';
3
6
  export { default as MobileList } from './MobileList.vue';
4
7
  export { default as ResponsiveList } from './ResponsiveList.vue';
5
8
  export { default as AutocompleteComponent } from './AutocompleteComponent.vue';
@@ -1,33 +1,50 @@
1
- import { o, p, d, f, n, _, j, r, m, u, b, l, c, s, t, i, h, e, a, g, q, k } from "../../FilterTabs.vue_vue_type_script_setup_true_lang-BmJHgkBs.js";
1
+ import { D, E, s, u, C, c, _, a, e, d, y, G, p, B, o, J, q, A, r, H, I, x, w, b, t, p as p2, T, n, l, m, v, g, k, h, j, f, F, z, i } from "../../FilterTabs.vue_vue_type_script_setup_true_lang-CzpYHtc5.js";
2
2
  import { a as a2, _ as _2 } from "../../Dropdown.vue_vue_type_script_setup_true_lang-GLCX7E3C.js";
3
3
  import { _ as _3 } from "../../BadgeType.vue_vue_type_script_setup_true_lang-tHRMWBb-.js";
4
4
  import { _ as _4 } from "../../Button.vue_vue_type_script_setup_true_lang-CBYr0Z2_.js";
5
5
  export {
6
- o as Accordion,
7
- p as AccordionItem,
8
- d as AutocompleteComponent,
9
- f as Avatar,
10
- n as Breadcrumb,
6
+ D as Accordion,
7
+ E as AccordionItem,
8
+ s as AutocompleteComponent,
9
+ u as Avatar,
10
+ C as Breadcrumb,
11
11
  _4 as Button,
12
+ c as Caption,
12
13
  _ as CardComponent,
13
- j as CollapsibleCard,
14
- r as DarkModeToggle,
15
- m as Drawer,
14
+ a as CardWrapper,
15
+ e as Col,
16
+ d as Colgroup,
17
+ y as CollapsibleCard,
18
+ G as DarkModeToggle,
19
+ p as DataTable,
20
+ B as Drawer,
16
21
  a2 as Dropdown,
17
- u as FilterTabs,
22
+ o as ExpandableRow,
23
+ J as FilterTabs,
18
24
  _2 as MenuItem,
19
- b as MobileList,
20
- l as Popover,
21
- c as ResponsiveList,
22
- s as StatsCard,
23
- t as StatsGrid,
25
+ q as MobileList,
26
+ A as Popover,
27
+ r as ResponsiveList,
28
+ H as StatsCard,
29
+ I as StatsGrid,
24
30
  _3 as StatusBadge,
25
- i as Stepper,
26
- h as TabPanel,
27
- e as TableAction,
28
- a as TableComponent,
29
- g as Tabs,
30
- q as Timeline,
31
- k as Tooltip
31
+ x as Stepper,
32
+ w as TabPanel,
33
+ b as Table,
34
+ t as TableAction,
35
+ p2 as TableComponent,
36
+ T as TableContextKey,
37
+ n as TableFooter,
38
+ l as TableHeader,
39
+ m as TableRow,
40
+ v as Tabs,
41
+ g as Tbody,
42
+ k as Td,
43
+ h as Tfoot,
44
+ j as Th,
45
+ f as Thead,
46
+ F as Timeline,
47
+ z as Tooltip,
48
+ i as Tr
32
49
  };
33
50
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,5 @@
1
- import { Property } from '../../types';
2
- export type SortDirection = 'asc' | 'desc';
1
+ import { Property } from '../../../types';
2
+ import { SortDirection } from './atoms/Th.vue';
3
3
  type ItemType = {
4
4
  id: number | string;
5
5
  [key: string]: unknown;
@@ -15,7 +15,7 @@ type __VLS_Props = {
15
15
  selectedItems?: Set<string>;
16
16
  /** Filter function to determine if an item is selectable */
17
17
  selectableFilter?: (item: ItemType) => boolean;
18
- /** Key field for unique identification (default: 'id') */
18
+ /** Key field for unique identification */
19
19
  keyField?: string;
20
20
  /** Current sort column */
21
21
  sortBy?: string;
@@ -25,18 +25,53 @@ type __VLS_Props = {
25
25
  loading?: boolean;
26
26
  /** Number of skeleton rows to show when loading */
27
27
  loadingRows?: number;
28
+ /** Whether there is an error to display */
29
+ error?: boolean;
30
+ /** Error message to display (if error slot not provided) */
31
+ errorMessage?: string;
32
+ /** Enable alternating row colors */
33
+ striped?: boolean;
34
+ /** Show cell borders */
35
+ bordered?: boolean;
36
+ /** Enable row hover effect */
37
+ hover?: boolean;
38
+ /** Use compact padding */
39
+ compact?: boolean;
40
+ /** Make header sticky on scroll */
41
+ stickyHeader?: boolean;
42
+ /** Make rows clickable */
43
+ clickableRows?: boolean;
44
+ /** Enable client-side pagination */
45
+ paginated?: boolean;
46
+ /** Number of items per page */
47
+ pageSize?: number;
48
+ /** Available page size options */
49
+ pageSizeOptions?: number[];
50
+ /** Show page size selector */
51
+ showPageSize?: boolean;
52
+ /** Current page (1-indexed, for controlled pagination) */
53
+ currentPage?: number;
54
+ /** Total items (for server-side pagination) */
55
+ totalItems?: number;
28
56
  };
29
57
  declare function __VLS_template(): {
30
58
  attrs: Partial<{}>;
31
59
  slots: Partial<Record<string, (_: {
32
- property: Property;
60
+ column: Property;
33
61
  }) => any>> & Partial<Record<string, (_: {
34
- item: ItemType;
35
- property: Property;
62
+ item: {
63
+ [key: string]: unknown;
64
+ id: number | string;
65
+ };
36
66
  value: unknown;
67
+ column: Property;
37
68
  }) => any>> & {
69
+ error?(_: {}): any;
38
70
  action?(_: {
39
- item: ItemType;
71
+ item: {
72
+ [key: string]: unknown;
73
+ id: number | string;
74
+ };
40
75
  }): any;
41
76
  empty?(_: {}): any;
42
77
  };
@@ -48,15 +83,33 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}
48
83
  sort: (column: string, direction: SortDirection) => any;
49
84
  select: (id: string) => any;
50
85
  selectAll: () => any;
86
+ "update:pageSize": (size: number) => any;
87
+ rowClick: (item: ItemType, event: MouseEvent) => any;
88
+ "update:currentPage": (page: number) => any;
51
89
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
52
90
  onSort?: ((column: string, direction: SortDirection) => any) | undefined;
53
91
  onSelect?: ((id: string) => any) | undefined;
54
92
  onSelectAll?: (() => any) | undefined;
93
+ "onUpdate:pageSize"?: ((size: number) => any) | undefined;
94
+ onRowClick?: ((item: ItemType, event: MouseEvent) => any) | undefined;
95
+ "onUpdate:currentPage"?: ((page: number) => any) | undefined;
55
96
  }>, {
56
97
  loading: boolean;
98
+ striped: boolean;
99
+ bordered: boolean;
100
+ hover: boolean;
101
+ compact: boolean;
102
+ stickyHeader: boolean;
103
+ error: boolean;
57
104
  selectable: boolean;
105
+ pageSize: number;
106
+ pageSizeOptions: number[];
107
+ showPageSize: boolean;
58
108
  keyField: string;
59
109
  loadingRows: number;
110
+ errorMessage: string;
111
+ clickableRows: boolean;
112
+ paginated: boolean;
60
113
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
61
114
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
62
115
  export default _default;
@@ -0,0 +1,27 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { Table } from './index';
3
+ declare const meta: Meta<typeof Table>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const BasicTable: Story;
7
+ export declare const StripedTable: Story;
8
+ export declare const BorderedTable: Story;
9
+ export declare const CompactTable: Story;
10
+ export declare const SortableHeaders: Story;
11
+ export declare const ClickableRows: Story;
12
+ export declare const SelectableRows: Story;
13
+ export declare const WithFooter: Story;
14
+ export declare const ColumnWidths: Story;
15
+ export declare const TruncatedCells: Story;
16
+ export declare const DisabledRows: Story;
17
+ export declare const ColspanRowspan: Story;
18
+ export declare const MultipleTheadTbody: Story;
19
+ export declare const RowGrouping: Story;
20
+ export declare const WithColgroup: Story;
21
+ export declare const ComplexLayout: Story;
22
+ export declare const WithCaption: Story;
23
+ export declare const CaptionBottom: Story;
24
+ export declare const ScreenReaderOnlyCaption: Story;
25
+ export declare const ExpandableRows: Story;
26
+ export declare const ExpandableRowsControlled: Story;
27
+ export declare const ExpandableRowsOnRowClick: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ type __VLS_Props = {
2
+ /** Position of the caption */
3
+ position?: 'top' | 'bottom';
4
+ /** Visually hide caption but keep for screen readers */
5
+ srOnly?: boolean;
6
+ };
7
+ declare function __VLS_template(): {
8
+ attrs: Partial<{}>;
9
+ slots: {
10
+ default?(_: {}): any;
11
+ };
12
+ refs: {};
13
+ rootEl: any;
14
+ };
15
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
16
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
17
+ position: "top" | "bottom";
18
+ srOnly: boolean;
19
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
20
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
21
+ export default _default;
22
+ type __VLS_WithTemplateSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };
@@ -0,0 +1 @@
1
+ export {};