cisse-vue-ui 0.5.17 → 0.5.22

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 (126) hide show
  1. package/README.md +666 -666
  2. package/dist/Button.vue_vue_type_script_setup_true_lang-DKE8elsf.js +236 -0
  3. package/dist/Button.vue_vue_type_script_setup_true_lang-DKE8elsf.js.map +1 -0
  4. package/dist/Button.vue_vue_type_script_setup_true_lang-DrGM65ny.cjs +235 -0
  5. package/dist/Button.vue_vue_type_script_setup_true_lang-DrGM65ny.cjs.map +1 -0
  6. package/dist/{RangeSlider.vue_vue_type_script_setup_true_lang-y3zIxWfI.js → Combobox.vue_vue_type_script_setup_true_lang-DhcLb6DX.js} +408 -185
  7. package/dist/Combobox.vue_vue_type_script_setup_true_lang-DhcLb6DX.js.map +1 -0
  8. package/dist/{RangeSlider.vue_vue_type_script_setup_true_lang-Cv1OwT9S.cjs → Combobox.vue_vue_type_script_setup_true_lang-FdUrjmSG.cjs} +435 -212
  9. package/dist/Combobox.vue_vue_type_script_setup_true_lang-FdUrjmSG.cjs.map +1 -0
  10. package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-Bech-H58.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-CNucAMQg.js} +226 -248
  11. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-CNucAMQg.js.map +1 -0
  12. package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-CHoagJ0-.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-DXb9wQQv.cjs} +225 -247
  13. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DXb9wQQv.cjs.map +1 -0
  14. package/dist/{Timeline.vue_vue_type_script_setup_true_lang-CuPF4MPe.js → DarkModeToggle.vue_vue_type_script_setup_true_lang-43fxlbro.js} +209 -415
  15. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-43fxlbro.js.map +1 -0
  16. package/dist/{Timeline.vue_vue_type_script_setup_true_lang-CqeiZOID.cjs → DarkModeToggle.vue_vue_type_script_setup_true_lang-BoB48313.cjs} +234 -440
  17. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-BoB48313.cjs.map +1 -0
  18. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js.map +1 -1
  19. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs.map +1 -1
  20. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-D22uNeS1.cjs.map +1 -1
  21. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-kT7np2ir.js.map +1 -1
  22. package/dist/cisse-vue-ui.css +51 -51
  23. package/dist/components/core/AccordionItem.stories.d.ts +10 -0
  24. package/dist/components/core/Avatar.vue.d.ts +1 -1
  25. package/dist/components/core/Button.vue.d.ts +1 -1
  26. package/dist/components/core/CardComponent.stories.d.ts +3 -0
  27. package/dist/components/core/CardComponent.vue.d.ts +15 -2
  28. package/dist/components/core/DarkModeToggle.stories.d.ts +15 -0
  29. package/dist/components/core/DarkModeToggle.test.d.ts +1 -0
  30. package/dist/components/core/DarkModeToggle.vue.d.ts +21 -0
  31. package/dist/components/core/MobileList.stories.d.ts +13 -0
  32. package/dist/components/core/MobileList.vue.d.ts +6 -0
  33. package/dist/components/core/ResponsiveList.stories.d.ts +15 -0
  34. package/dist/components/core/ResponsiveList.vue.d.ts +6 -0
  35. package/dist/components/core/TabPanel.stories.d.ts +8 -0
  36. package/dist/components/core/TableAction.stories.d.ts +14 -0
  37. package/dist/components/core/TableComponent.stories.d.ts +2 -0
  38. package/dist/components/core/TableComponent.vue.d.ts +6 -0
  39. package/dist/components/core/index.cjs +22 -20
  40. package/dist/components/core/index.cjs.map +1 -1
  41. package/dist/components/core/index.d.ts +2 -0
  42. package/dist/components/core/index.js +16 -14
  43. package/dist/components/core/index.js.map +1 -1
  44. package/dist/components/feedback/CardSkeleton.stories.d.ts +11 -0
  45. package/dist/components/feedback/CardSkeleton.test.d.ts +1 -0
  46. package/dist/components/feedback/CardSkeleton.vue.d.ts +1 -1
  47. package/dist/components/feedback/ConfirmDialog.stories.d.ts +12 -0
  48. package/dist/components/feedback/ConfirmDialog.test.d.ts +1 -0
  49. package/dist/components/feedback/ConfirmDialog.vue.d.ts +53 -0
  50. package/dist/components/feedback/ListSkeleton.stories.d.ts +12 -0
  51. package/dist/components/feedback/ListSkeleton.test.d.ts +1 -0
  52. package/dist/components/feedback/ListSkeleton.vue.d.ts +1 -1
  53. package/dist/components/feedback/Modal.vue.d.ts +11 -2
  54. package/dist/components/feedback/NotificationComponent.stories.d.ts +14 -0
  55. package/dist/components/feedback/NotificationList.stories.d.ts +11 -0
  56. package/dist/components/feedback/Progress.vue.d.ts +1 -1
  57. package/dist/components/feedback/Skeleton.vue.d.ts +1 -1
  58. package/dist/components/feedback/TableSkeleton.stories.d.ts +12 -0
  59. package/dist/components/feedback/TableSkeleton.test.d.ts +1 -0
  60. package/dist/components/feedback/TableSkeleton.vue.d.ts +1 -1
  61. package/dist/components/feedback/ToastContainer.stories.d.ts +15 -0
  62. package/dist/components/feedback/index.cjs +17 -15
  63. package/dist/components/feedback/index.cjs.map +1 -1
  64. package/dist/components/feedback/index.d.ts +2 -0
  65. package/dist/components/feedback/index.js +6 -4
  66. package/dist/components/feedback/index.js.map +1 -1
  67. package/dist/components/form/ColorPicker.vue.d.ts +3 -0
  68. package/dist/components/form/Combobox.stories.d.ts +15 -0
  69. package/dist/components/form/Combobox.test.d.ts +1 -0
  70. package/dist/components/form/Combobox.vue.d.ts +46 -0
  71. package/dist/components/form/FileUpload.vue.d.ts +1 -1
  72. package/dist/components/form/FormHelp.stories.d.ts +11 -0
  73. package/dist/components/form/FormLabel.stories.d.ts +12 -0
  74. package/dist/components/form/FormSelect.stories.d.ts +2 -0
  75. package/dist/components/form/index.cjs +17 -16
  76. package/dist/components/form/index.cjs.map +1 -1
  77. package/dist/components/form/index.d.ts +2 -0
  78. package/dist/components/form/index.js +3 -2
  79. package/dist/components/index.cjs +55 -51
  80. package/dist/components/index.cjs.map +1 -1
  81. package/dist/components/index.js +36 -32
  82. package/dist/components/index.js.map +1 -1
  83. package/dist/composables/index.cjs +3 -2
  84. package/dist/composables/index.cjs.map +1 -1
  85. package/dist/composables/index.js +9 -8
  86. package/dist/composables/index.js.map +1 -1
  87. package/dist/index-D7HVSFi2.cjs +337 -0
  88. package/dist/index-D7HVSFi2.cjs.map +1 -0
  89. package/dist/index-DZYqrXV0.js +75 -0
  90. package/dist/index-DZYqrXV0.js.map +1 -0
  91. package/dist/index-Dghdw1yo.js +338 -0
  92. package/dist/index-Dghdw1yo.js.map +1 -0
  93. package/dist/index-DjEv91o4.cjs +74 -0
  94. package/dist/index-DjEv91o4.cjs.map +1 -0
  95. package/dist/index.cjs +59 -54
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.js +46 -41
  98. package/dist/index.js.map +1 -1
  99. package/dist/style.css +1 -1
  100. package/dist/useDarkMode-Cl5QWTlC.js +53 -0
  101. package/dist/useDarkMode-Cl5QWTlC.js.map +1 -0
  102. package/dist/useDarkMode-DLZcJEUQ.cjs +52 -0
  103. package/dist/useDarkMode-DLZcJEUQ.cjs.map +1 -0
  104. package/dist/useDropdown-DHFnd259.cjs.map +1 -1
  105. package/dist/useDropdown-iVu14E6s.js.map +1 -1
  106. package/dist/{useToast-CRh_sG82.cjs → useToast-Bk60GArg.cjs} +1 -50
  107. package/dist/useToast-Bk60GArg.cjs.map +1 -0
  108. package/dist/{useToast-DwFOkewC.js → useToast-ina5g3mj.js} +6 -55
  109. package/dist/useToast-ina5g3mj.js.map +1 -0
  110. package/package.json +168 -168
  111. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js +0 -54
  112. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js.map +0 -1
  113. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs +0 -53
  114. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs.map +0 -1
  115. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-Bech-H58.js.map +0 -1
  116. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-CHoagJ0-.cjs.map +0 -1
  117. package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-Cv1OwT9S.cjs.map +0 -1
  118. package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-y3zIxWfI.js.map +0 -1
  119. package/dist/Timeline.vue_vue_type_script_setup_true_lang-CqeiZOID.cjs.map +0 -1
  120. package/dist/Timeline.vue_vue_type_script_setup_true_lang-CuPF4MPe.js.map +0 -1
  121. package/dist/index-5Ru0o5KY.js +0 -71
  122. package/dist/index-5Ru0o5KY.js.map +0 -1
  123. package/dist/index-CnDEGRt-.cjs +0 -70
  124. package/dist/index-CnDEGRt-.cjs.map +0 -1
  125. package/dist/useToast-CRh_sG82.cjs.map +0 -1
  126. package/dist/useToast-DwFOkewC.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PageLayout.vue_vue_type_script_setup_true_lang-kT7np2ir.js","sources":["../src/components/layout/BaseLayout.vue","../src/components/layout/PageLayout.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ref, computed, resolveComponent } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport MenuItem from '@/components/core/MenuItem.vue'\nimport Dropdown from '@/components/core/Dropdown.vue'\nimport type { MenuItemProps } from '@/types'\n\nexport interface UserMenuItem {\n label: string\n icon?: string\n link?: string\n action?: () => void\n}\n\nconst props = withDefaults(\n defineProps<{\n /** Menu items for the sidebar */\n menuItems?: MenuItemProps[]\n /** App/brand name displayed in sidebar */\n appName?: string\n /** App icon (iconify icon name) */\n appIcon?: string\n /** Whether sidebar is open (v-model:sidebarOpen) */\n sidebarOpen?: boolean\n /** Whether dark mode is enabled (v-model:dark) */\n dark?: boolean\n /** Show dark mode toggle in header */\n showDarkToggle?: boolean\n /** Primary color class for sidebar background */\n sidebarClass?: string\n /** Current route path for menu active state (pass useRoute().path) */\n currentPath?: string\n /** User display name */\n userName?: string\n /** User avatar (initials or image URL) */\n userAvatar?: string\n /** User menu items (dropdown) */\n userMenuItems?: UserMenuItem[]\n }>(),\n {\n menuItems: () => [],\n appName: 'App',\n appIcon: 'lucide:box',\n sidebarOpen: true,\n dark: false,\n showDarkToggle: true,\n sidebarClass: 'bg-[#172b4c] dark:bg-slate-950',\n currentPath: undefined,\n userName: undefined,\n userAvatar: undefined,\n userMenuItems: () => [],\n },\n)\n\nconst emit = defineEmits<{\n 'update:sidebarOpen': [value: boolean]\n 'update:dark': [value: boolean]\n}>()\n\nconst internalSidebarOpen = ref(props.sidebarOpen)\nconst internalDark = ref(props.dark)\n\nconst sidebarOpenModel = computed({\n get: () => props.sidebarOpen ?? internalSidebarOpen.value,\n set: (value: boolean) => {\n internalSidebarOpen.value = value\n emit('update:sidebarOpen', value)\n },\n})\n\nconst darkModel = computed({\n get: () => props.dark ?? internalDark.value,\n set: (value: boolean) => {\n internalDark.value = value\n emit('update:dark', value)\n },\n})\n\nconst toggleSidebar = () => {\n sidebarOpenModel.value = !sidebarOpenModel.value\n}\n\nconst toggleDark = () => {\n darkModel.value = !darkModel.value\n}\n\n// Try to resolve RouterView\nconst routerViewComponent = computed(() => {\n try {\n const RouterView = resolveComponent('RouterView')\n if (typeof RouterView !== 'string') {\n return RouterView\n }\n } catch {\n // RouterView not available\n }\n return null\n})\n\n// Try to resolve RouterLink\nconst routerLinkComponent = computed(() => {\n try {\n const RouterLink = resolveComponent('RouterLink')\n if (typeof RouterLink !== 'string') {\n return RouterLink\n }\n } catch {\n // RouterLink not available\n }\n return 'a'\n})\n\nconst getLinkProps = (link: string) => {\n if (routerLinkComponent.value === 'a') {\n return { href: link }\n }\n return { to: link }\n}\n\nconst handleUserMenuClick = (item: UserMenuItem) => {\n if (item.action) {\n item.action()\n }\n}\n</script>\n\n<template>\n <div class=\"font-inter relative flex h-dvh overflow-hidden bg-gray-100 dark:bg-slate-900\">\n <!-- Backdrop for mobile -->\n <div\n v-if=\"sidebarOpenModel\"\n class=\"absolute z-40 h-full w-full bg-slate-950/20 lg:hidden dark:bg-white/20\"\n @click=\"sidebarOpenModel = false\"\n />\n\n <!-- Sidebar -->\n <aside\n :class=\"[\n sidebarOpenModel ? 'lg:w-60' : '-translate-x-76 lg:w-16 lg:translate-x-0',\n sidebarClass,\n ]\"\n class=\"@container absolute z-50 flex h-full w-76 flex-col justify-between gap-10 transition-all duration-1000 ease-in-out lg:relative\"\n >\n <!-- Sidebar Header -->\n <div class=\"flex h-16 items-center px-3\">\n <div class=\"flex flex-1 items-center justify-center gap-3\">\n <slot name=\"logo\">\n <div\n class=\"bg-primary text-primary-foreground flex size-8 items-center justify-center rounded-lg bg-white/20\"\n >\n <Icon\n class=\"size-5 text-white\"\n :icon=\"appIcon\"\n />\n </div>\n <span\n :class=\"sidebarOpenModel ? 'block' : 'hidden'\"\n class=\"font-outfit flex-1 text-lg font-semibold text-white\"\n >\n {{ appName }}\n </span>\n </slot>\n </div>\n\n <button\n class=\"rounded-lg bg-white/10 p-1 transition hover:bg-white/20 lg:hidden\"\n @click=\"toggleSidebar\"\n >\n <Icon\n class=\"size-6 text-white\"\n icon=\"lucide:menu\"\n />\n </button>\n </div>\n\n <!-- Menu Items -->\n <div\n :class=\"sidebarOpenModel ? 'items-start' : 'items-center'\"\n class=\"flex flex-1 flex-col gap-8 px-2 lg:justify-center\"\n >\n <slot\n name=\"menu\"\n :current-path=\"currentPath\"\n >\n <MenuItem\n v-for=\"(item, index) in menuItems\"\n :key=\"index\"\n :menu-item=\"item\"\n :expanded=\"sidebarOpenModel\"\n :current-path=\"currentPath\"\n />\n </slot>\n </div>\n\n <!-- Sidebar Footer -->\n <div class=\"flex flex-col gap-3 px-3 pb-3\">\n <slot name=\"sidebar-footer\" />\n </div>\n </aside>\n\n <!-- Main Content Area -->\n <div class=\"flex flex-1 flex-col min-w-0\">\n <!-- Header -->\n <header\n class=\"flex h-16 items-center justify-between border-b border-slate-200 bg-white px-4 dark:border-slate-800 dark:bg-slate-950\"\n >\n <div>\n <button\n class=\"rounded-lg bg-gray-100 p-1 transition hover:bg-gray-200 dark:bg-gray-900 dark:hover:bg-gray-800\"\n @click=\"toggleSidebar\"\n >\n <Icon\n class=\"size-6 text-gray-900 hover:text-gray-800 dark:text-gray-100\"\n icon=\"lucide:menu\"\n />\n </button>\n </div>\n\n <div class=\"flex-1\">\n <slot name=\"header-center\" />\n </div>\n\n <div class=\"flex items-center gap-3\">\n <slot name=\"header-actions\" />\n\n <button\n v-if=\"showDarkToggle\"\n class=\"flex items-center justify-center rounded-lg bg-gray-100 p-2 transition hover:bg-gray-200 dark:bg-gray-900 dark:hover:bg-gray-800\"\n @click=\"toggleDark\"\n >\n <Icon\n :icon=\"darkModel ? 'lucide:sun' : 'lucide:moon'\"\n class=\"size-5 text-gray-900 dark:text-gray-100\"\n />\n </button>\n\n <!-- User Menu -->\n <Dropdown\n v-if=\"userName || userAvatar\"\n align=\"right\"\n >\n <template #trigger>\n <button\n class=\"flex items-center gap-2 rounded-lg p-1.5 transition hover:bg-gray-100 dark:hover:bg-gray-800\"\n >\n <div\n class=\"flex size-8 items-center justify-center rounded-full bg-primary text-sm font-medium text-white\"\n >\n {{ userAvatar || '?' }}\n </div>\n <span class=\"hidden text-sm font-medium text-gray-700 dark:text-gray-300 md:block\">\n {{ userName }}\n </span>\n <Icon\n icon=\"lucide:chevron-down\"\n class=\"size-4 text-gray-500\"\n />\n </button>\n </template>\n\n <template #default=\"{ close }\">\n <div class=\"min-w-48 py-1\">\n <component\n :is=\"item.link ? routerLinkComponent : 'button'\"\n v-for=\"item in userMenuItems\"\n :key=\"item.label\"\n v-bind=\"item.link ? getLinkProps(item.link) : {}\"\n class=\"flex w-full items-center gap-2 px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800\"\n @click=\"handleUserMenuClick(item); close()\"\n >\n <Icon\n v-if=\"item.icon\"\n :icon=\"item.icon\"\n class=\"size-4\"\n />\n {{ item.label }}\n </component>\n </div>\n </template>\n </Dropdown>\n </div>\n </header>\n\n <!-- Page Content -->\n <div class=\"flex flex-1 flex-col overflow-y-auto overflow-x-hidden\">\n <main class=\"container mx-auto flex flex-1 flex-col gap-5 p-5 max-w-full\">\n <slot>\n <component\n :is=\"routerViewComponent\"\n v-if=\"routerViewComponent\"\n />\n </slot>\n </main>\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed, resolveComponent } from 'vue'\n\nexport interface PageBreadcrumb {\n label: string\n link: string\n}\n\ndefineProps<{\n /** Page title */\n title?: string\n /** Page description */\n description?: string\n /** Breadcrumb navigation items */\n breadcrumbs?: PageBreadcrumb[]\n}>()\n\n// Try to resolve RouterLink\nconst linkComponent = computed(() => {\n try {\n const RouterLink = resolveComponent('RouterLink')\n if (typeof RouterLink !== 'string') {\n return RouterLink\n }\n } catch {\n // RouterLink not available\n }\n return 'a'\n})\n\nconst getLinkProps = (link: string) => {\n if (linkComponent.value === 'a') {\n return { href: link }\n }\n return { to: link }\n}\n</script>\n\n<template>\n <div class=\"flex flex-col gap-4\">\n <!-- Breadcrumbs -->\n <nav\n v-if=\"breadcrumbs && breadcrumbs.length > 0\"\n aria-label=\"Breadcrumb\"\n >\n <ol class=\"flex items-center\">\n <li\n v-for=\"(breadcrumb, index) in breadcrumbs\"\n :key=\"index\"\n class=\"flex items-center\"\n >\n <span\n v-if=\"index > 0\"\n class=\"mx-3 text-sm font-semibold text-gray-400 dark:text-gray-600\"\n >\n /\n </span>\n\n <slot\n name=\"breadcrumb\"\n :breadcrumb=\"breadcrumb\"\n :index=\"index\"\n :is-last=\"index === breadcrumbs.length - 1\"\n >\n <component\n :is=\"linkComponent\"\n v-bind=\"getLinkProps(breadcrumb.link)\"\n :class=\"[\n 'text-sm transition-colors',\n index < breadcrumbs.length - 1\n ? 'font-semibold text-gray-900 hover:text-primary/90 hover:underline dark:text-gray-100'\n : 'text-gray-400 dark:text-gray-600',\n ]\"\n >\n {{ breadcrumb.label }}\n </component>\n </slot>\n </li>\n </ol>\n </nav>\n\n <!-- Page Header -->\n <div class=\"flex flex-col gap-4 md:flex-row md:items-start md:justify-between\">\n <div class=\"flex flex-col gap-1 min-w-0 flex-1\">\n <h1\n v-if=\"title\"\n class=\"text-2xl font-bold text-gray-900 dark:text-gray-100 truncate\"\n >\n <slot name=\"title\">\n {{ title }}\n </slot>\n </h1>\n\n <p\n v-if=\"description\"\n class=\"text-sm text-gray-600 dark:text-gray-400\"\n >\n <slot name=\"description\">\n {{ description }}\n </slot>\n </p>\n </div>\n\n <div class=\"flex items-center gap-2 flex-wrap flex-shrink-0\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <!-- Page Content -->\n <div class=\"flex-1\">\n <slot />\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_2","_hoisted_3","_renderSlot","_hoisted_4","_createVNode","_unref","_Fragment","_renderList","_createBlock","MenuItem","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","Dropdown","_hoisted_10","_toDisplayString","_withCtx","_resolveDynamicComponent","_mergeProps","_createTextVNode"],"mappings":"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"}
1
+ {"version":3,"file":"PageLayout.vue_vue_type_script_setup_true_lang-kT7np2ir.js","sources":["../src/components/layout/BaseLayout.vue","../src/components/layout/PageLayout.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport { ref, computed, resolveComponent } from 'vue'\r\nimport { Icon } from '@iconify/vue'\r\nimport MenuItem from '@/components/core/MenuItem.vue'\r\nimport Dropdown from '@/components/core/Dropdown.vue'\r\nimport type { MenuItemProps } from '@/types'\r\n\r\nexport interface UserMenuItem {\r\n label: string\r\n icon?: string\r\n link?: string\r\n action?: () => void\r\n}\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** Menu items for the sidebar */\r\n menuItems?: MenuItemProps[]\r\n /** App/brand name displayed in sidebar */\r\n appName?: string\r\n /** App icon (iconify icon name) */\r\n appIcon?: string\r\n /** Whether sidebar is open (v-model:sidebarOpen) */\r\n sidebarOpen?: boolean\r\n /** Whether dark mode is enabled (v-model:dark) */\r\n dark?: boolean\r\n /** Show dark mode toggle in header */\r\n showDarkToggle?: boolean\r\n /** Primary color class for sidebar background */\r\n sidebarClass?: string\r\n /** Current route path for menu active state (pass useRoute().path) */\r\n currentPath?: string\r\n /** User display name */\r\n userName?: string\r\n /** User avatar (initials or image URL) */\r\n userAvatar?: string\r\n /** User menu items (dropdown) */\r\n userMenuItems?: UserMenuItem[]\r\n }>(),\r\n {\r\n menuItems: () => [],\r\n appName: 'App',\r\n appIcon: 'lucide:box',\r\n sidebarOpen: true,\r\n dark: false,\r\n showDarkToggle: true,\r\n sidebarClass: 'bg-[#172b4c] dark:bg-slate-950',\r\n currentPath: undefined,\r\n userName: undefined,\r\n userAvatar: undefined,\r\n userMenuItems: () => [],\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n 'update:sidebarOpen': [value: boolean]\r\n 'update:dark': [value: boolean]\r\n}>()\r\n\r\nconst internalSidebarOpen = ref(props.sidebarOpen)\r\nconst internalDark = ref(props.dark)\r\n\r\nconst sidebarOpenModel = computed({\r\n get: () => props.sidebarOpen ?? internalSidebarOpen.value,\r\n set: (value: boolean) => {\r\n internalSidebarOpen.value = value\r\n emit('update:sidebarOpen', value)\r\n },\r\n})\r\n\r\nconst darkModel = computed({\r\n get: () => props.dark ?? internalDark.value,\r\n set: (value: boolean) => {\r\n internalDark.value = value\r\n emit('update:dark', value)\r\n },\r\n})\r\n\r\nconst toggleSidebar = () => {\r\n sidebarOpenModel.value = !sidebarOpenModel.value\r\n}\r\n\r\nconst toggleDark = () => {\r\n darkModel.value = !darkModel.value\r\n}\r\n\r\n// Try to resolve RouterView\r\nconst routerViewComponent = computed(() => {\r\n try {\r\n const RouterView = resolveComponent('RouterView')\r\n if (typeof RouterView !== 'string') {\r\n return RouterView\r\n }\r\n } catch {\r\n // RouterView not available\r\n }\r\n return null\r\n})\r\n\r\n// Try to resolve RouterLink\r\nconst routerLinkComponent = computed(() => {\r\n try {\r\n const RouterLink = resolveComponent('RouterLink')\r\n if (typeof RouterLink !== 'string') {\r\n return RouterLink\r\n }\r\n } catch {\r\n // RouterLink not available\r\n }\r\n return 'a'\r\n})\r\n\r\nconst getLinkProps = (link: string) => {\r\n if (routerLinkComponent.value === 'a') {\r\n return { href: link }\r\n }\r\n return { to: link }\r\n}\r\n\r\nconst handleUserMenuClick = (item: UserMenuItem) => {\r\n if (item.action) {\r\n item.action()\r\n }\r\n}\r\n</script>\r\n\r\n<template>\r\n <div class=\"font-inter relative flex h-dvh overflow-hidden bg-gray-100 dark:bg-slate-900\">\r\n <!-- Backdrop for mobile -->\r\n <div\r\n v-if=\"sidebarOpenModel\"\r\n class=\"absolute z-40 h-full w-full bg-slate-950/20 lg:hidden dark:bg-white/20\"\r\n @click=\"sidebarOpenModel = false\"\r\n />\r\n\r\n <!-- Sidebar -->\r\n <aside\r\n :class=\"[\r\n sidebarOpenModel ? 'lg:w-60' : '-translate-x-76 lg:w-16 lg:translate-x-0',\r\n sidebarClass,\r\n ]\"\r\n class=\"@container absolute z-50 flex h-full w-76 flex-col justify-between gap-10 transition-all duration-1000 ease-in-out lg:relative\"\r\n >\r\n <!-- Sidebar Header -->\r\n <div class=\"flex h-16 items-center px-3\">\r\n <div class=\"flex flex-1 items-center justify-center gap-3\">\r\n <slot name=\"logo\">\r\n <div\r\n class=\"bg-primary text-primary-foreground flex size-8 items-center justify-center rounded-lg bg-white/20\"\r\n >\r\n <Icon\r\n class=\"size-5 text-white\"\r\n :icon=\"appIcon\"\r\n />\r\n </div>\r\n <span\r\n :class=\"sidebarOpenModel ? 'block' : 'hidden'\"\r\n class=\"font-outfit flex-1 text-lg font-semibold text-white\"\r\n >\r\n {{ appName }}\r\n </span>\r\n </slot>\r\n </div>\r\n\r\n <button\r\n class=\"rounded-lg bg-white/10 p-1 transition hover:bg-white/20 lg:hidden\"\r\n @click=\"toggleSidebar\"\r\n >\r\n <Icon\r\n class=\"size-6 text-white\"\r\n icon=\"lucide:menu\"\r\n />\r\n </button>\r\n </div>\r\n\r\n <!-- Menu Items -->\r\n <div\r\n :class=\"sidebarOpenModel ? 'items-start' : 'items-center'\"\r\n class=\"flex flex-1 flex-col gap-8 px-2 lg:justify-center\"\r\n >\r\n <slot\r\n name=\"menu\"\r\n :current-path=\"currentPath\"\r\n >\r\n <MenuItem\r\n v-for=\"(item, index) in menuItems\"\r\n :key=\"index\"\r\n :menu-item=\"item\"\r\n :expanded=\"sidebarOpenModel\"\r\n :current-path=\"currentPath\"\r\n />\r\n </slot>\r\n </div>\r\n\r\n <!-- Sidebar Footer -->\r\n <div class=\"flex flex-col gap-3 px-3 pb-3\">\r\n <slot name=\"sidebar-footer\" />\r\n </div>\r\n </aside>\r\n\r\n <!-- Main Content Area -->\r\n <div class=\"flex flex-1 flex-col min-w-0\">\r\n <!-- Header -->\r\n <header\r\n class=\"flex h-16 items-center justify-between border-b border-slate-200 bg-white px-4 dark:border-slate-800 dark:bg-slate-950\"\r\n >\r\n <div>\r\n <button\r\n class=\"rounded-lg bg-gray-100 p-1 transition hover:bg-gray-200 dark:bg-gray-900 dark:hover:bg-gray-800\"\r\n @click=\"toggleSidebar\"\r\n >\r\n <Icon\r\n class=\"size-6 text-gray-900 hover:text-gray-800 dark:text-gray-100\"\r\n icon=\"lucide:menu\"\r\n />\r\n </button>\r\n </div>\r\n\r\n <div class=\"flex-1\">\r\n <slot name=\"header-center\" />\r\n </div>\r\n\r\n <div class=\"flex items-center gap-3\">\r\n <slot name=\"header-actions\" />\r\n\r\n <button\r\n v-if=\"showDarkToggle\"\r\n class=\"flex items-center justify-center rounded-lg bg-gray-100 p-2 transition hover:bg-gray-200 dark:bg-gray-900 dark:hover:bg-gray-800\"\r\n @click=\"toggleDark\"\r\n >\r\n <Icon\r\n :icon=\"darkModel ? 'lucide:sun' : 'lucide:moon'\"\r\n class=\"size-5 text-gray-900 dark:text-gray-100\"\r\n />\r\n </button>\r\n\r\n <!-- User Menu -->\r\n <Dropdown\r\n v-if=\"userName || userAvatar\"\r\n align=\"right\"\r\n >\r\n <template #trigger>\r\n <button\r\n class=\"flex items-center gap-2 rounded-lg p-1.5 transition hover:bg-gray-100 dark:hover:bg-gray-800\"\r\n >\r\n <div\r\n class=\"flex size-8 items-center justify-center rounded-full bg-primary text-sm font-medium text-white\"\r\n >\r\n {{ userAvatar || '?' }}\r\n </div>\r\n <span class=\"hidden text-sm font-medium text-gray-700 dark:text-gray-300 md:block\">\r\n {{ userName }}\r\n </span>\r\n <Icon\r\n icon=\"lucide:chevron-down\"\r\n class=\"size-4 text-gray-500\"\r\n />\r\n </button>\r\n </template>\r\n\r\n <template #default=\"{ close }\">\r\n <div class=\"min-w-48 py-1\">\r\n <component\r\n :is=\"item.link ? routerLinkComponent : 'button'\"\r\n v-for=\"item in userMenuItems\"\r\n :key=\"item.label\"\r\n v-bind=\"item.link ? getLinkProps(item.link) : {}\"\r\n class=\"flex w-full items-center gap-2 px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800\"\r\n @click=\"handleUserMenuClick(item); close()\"\r\n >\r\n <Icon\r\n v-if=\"item.icon\"\r\n :icon=\"item.icon\"\r\n class=\"size-4\"\r\n />\r\n {{ item.label }}\r\n </component>\r\n </div>\r\n </template>\r\n </Dropdown>\r\n </div>\r\n </header>\r\n\r\n <!-- Page Content -->\r\n <div class=\"flex flex-1 flex-col overflow-y-auto overflow-x-hidden\">\r\n <main class=\"container mx-auto flex flex-1 flex-col gap-5 p-5 max-w-full\">\r\n <slot>\r\n <component\r\n :is=\"routerViewComponent\"\r\n v-if=\"routerViewComponent\"\r\n />\r\n </slot>\r\n </main>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n","<script lang=\"ts\" setup>\r\nimport { computed, resolveComponent } from 'vue'\r\n\r\nexport interface PageBreadcrumb {\r\n label: string\r\n link: string\r\n}\r\n\r\ndefineProps<{\r\n /** Page title */\r\n title?: string\r\n /** Page description */\r\n description?: string\r\n /** Breadcrumb navigation items */\r\n breadcrumbs?: PageBreadcrumb[]\r\n}>()\r\n\r\n// Try to resolve RouterLink\r\nconst linkComponent = computed(() => {\r\n try {\r\n const RouterLink = resolveComponent('RouterLink')\r\n if (typeof RouterLink !== 'string') {\r\n return RouterLink\r\n }\r\n } catch {\r\n // RouterLink not available\r\n }\r\n return 'a'\r\n})\r\n\r\nconst getLinkProps = (link: string) => {\r\n if (linkComponent.value === 'a') {\r\n return { href: link }\r\n }\r\n return { to: link }\r\n}\r\n</script>\r\n\r\n<template>\r\n <div class=\"flex flex-col gap-4\">\r\n <!-- Breadcrumbs -->\r\n <nav\r\n v-if=\"breadcrumbs && breadcrumbs.length > 0\"\r\n aria-label=\"Breadcrumb\"\r\n >\r\n <ol class=\"flex items-center\">\r\n <li\r\n v-for=\"(breadcrumb, index) in breadcrumbs\"\r\n :key=\"index\"\r\n class=\"flex items-center\"\r\n >\r\n <span\r\n v-if=\"index > 0\"\r\n class=\"mx-3 text-sm font-semibold text-gray-400 dark:text-gray-600\"\r\n >\r\n /\r\n </span>\r\n\r\n <slot\r\n name=\"breadcrumb\"\r\n :breadcrumb=\"breadcrumb\"\r\n :index=\"index\"\r\n :is-last=\"index === breadcrumbs.length - 1\"\r\n >\r\n <component\r\n :is=\"linkComponent\"\r\n v-bind=\"getLinkProps(breadcrumb.link)\"\r\n :class=\"[\r\n 'text-sm transition-colors',\r\n index < breadcrumbs.length - 1\r\n ? 'font-semibold text-gray-900 hover:text-primary/90 hover:underline dark:text-gray-100'\r\n : 'text-gray-400 dark:text-gray-600',\r\n ]\"\r\n >\r\n {{ breadcrumb.label }}\r\n </component>\r\n </slot>\r\n </li>\r\n </ol>\r\n </nav>\r\n\r\n <!-- Page Header -->\r\n <div class=\"flex flex-col gap-4 md:flex-row md:items-start md:justify-between\">\r\n <div class=\"flex flex-col gap-1 min-w-0 flex-1\">\r\n <h1\r\n v-if=\"title\"\r\n class=\"text-2xl font-bold text-gray-900 dark:text-gray-100 truncate\"\r\n >\r\n <slot name=\"title\">\r\n {{ title }}\r\n </slot>\r\n </h1>\r\n\r\n <p\r\n v-if=\"description\"\r\n class=\"text-sm text-gray-600 dark:text-gray-400\"\r\n >\r\n <slot name=\"description\">\r\n {{ description }}\r\n </slot>\r\n </p>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-2 flex-wrap flex-shrink-0\">\r\n <slot name=\"actions\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Page Content -->\r\n <div class=\"flex-1\">\r\n <slot />\r\n </div>\r\n </div>\r\n</template>\r\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_2","_hoisted_3","_renderSlot","_hoisted_4","_createVNode","_unref","_Fragment","_renderList","_createBlock","MenuItem","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","Dropdown","_hoisted_10","_toDisplayString","_withCtx","_resolveDynamicComponent","_mergeProps","_createTextVNode"],"mappings":"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"}
@@ -1,83 +1,83 @@
1
1
 
2
- .slider-input[data-v-c25e2c2a] {
2
+ .slider-input[data-v-a411f1b4] {
3
3
  height: 0.5rem;
4
4
  }
5
- .slider-input[data-v-c25e2c2a]::-webkit-slider-runnable-track {
6
- height: 0.5rem;
7
- border-radius: 9999px;
5
+ .slider-input[data-v-a411f1b4]::-webkit-slider-runnable-track {
6
+ height: 0.5rem;
7
+ border-radius: 9999px;
8
8
  background-color: #e5e7eb;
9
9
  }
10
- .dark .slider-input[data-v-c25e2c2a]::-webkit-slider-runnable-track {
10
+ .dark .slider-input[data-v-a411f1b4]::-webkit-slider-runnable-track {
11
11
  background-color: #374151;
12
12
  }
13
- .slider-input[data-v-c25e2c2a]::-webkit-slider-thumb {
14
- -webkit-appearance: none;
15
- appearance: none;
16
- width: 1.25rem;
17
- height: 1.25rem;
18
- border-radius: 9999px;
19
- background-color: var(--color-primary, #3b82f6);
20
- border: 2px solid white;
21
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
22
- margin-top: -0.375rem;
13
+ .slider-input[data-v-a411f1b4]::-webkit-slider-thumb {
14
+ -webkit-appearance: none;
15
+ appearance: none;
16
+ width: 1.25rem;
17
+ height: 1.25rem;
18
+ border-radius: 9999px;
19
+ background-color: var(--color-primary, #3b82f6);
20
+ border: 2px solid white;
21
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
22
+ margin-top: -0.375rem;
23
23
  cursor: pointer;
24
24
  }
25
- .slider-input[data-v-c25e2c2a]::-moz-range-track {
26
- height: 0.5rem;
27
- border-radius: 9999px;
25
+ .slider-input[data-v-a411f1b4]::-moz-range-track {
26
+ height: 0.5rem;
27
+ border-radius: 9999px;
28
28
  background-color: #e5e7eb;
29
29
  }
30
- .dark .slider-input[data-v-c25e2c2a]::-moz-range-track {
30
+ .dark .slider-input[data-v-a411f1b4]::-moz-range-track {
31
31
  background-color: #374151;
32
32
  }
33
- .slider-input[data-v-c25e2c2a]::-moz-range-thumb {
34
- width: 1.25rem;
35
- height: 1.25rem;
36
- border-radius: 9999px;
37
- background-color: var(--color-primary, #3b82f6);
38
- border: 2px solid white;
39
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
33
+ .slider-input[data-v-a411f1b4]::-moz-range-thumb {
34
+ width: 1.25rem;
35
+ height: 1.25rem;
36
+ border-radius: 9999px;
37
+ background-color: var(--color-primary, #3b82f6);
38
+ border: 2px solid white;
39
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
40
40
  cursor: pointer;
41
41
  }
42
- .slider-input[data-v-c25e2c2a]:focus::-webkit-slider-thumb {
42
+ .slider-input[data-v-a411f1b4]:focus::-webkit-slider-thumb {
43
43
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.3);
44
44
  }
45
- .slider-input[data-v-c25e2c2a]:focus::-moz-range-thumb {
45
+ .slider-input[data-v-a411f1b4]:focus::-moz-range-thumb {
46
46
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.3);
47
- }
47
+ }
48
48
 
49
- .bg-stripes[data-v-7ff636cf] {
50
- background-image: linear-gradient(
51
- 45deg,
52
- rgba(255, 255, 255, 0.15) 25%,
53
- transparent 25%,
54
- transparent 50%,
55
- rgba(255, 255, 255, 0.15) 50%,
56
- rgba(255, 255, 255, 0.15) 75%,
57
- transparent 75%,
58
- transparent
59
- );
49
+ .bg-stripes[data-v-546a3ae5] {
50
+ background-image: linear-gradient(
51
+ 45deg,
52
+ rgba(255, 255, 255, 0.15) 25%,
53
+ transparent 25%,
54
+ transparent 50%,
55
+ rgba(255, 255, 255, 0.15) 50%,
56
+ rgba(255, 255, 255, 0.15) 75%,
57
+ transparent 75%,
58
+ transparent
59
+ );
60
60
  background-size: 1rem 1rem;
61
61
  }
62
- .animate-stripes[data-v-7ff636cf] {
63
- animation: stripes-7ff636cf 1s linear infinite;
62
+ .animate-stripes[data-v-546a3ae5] {
63
+ animation: stripes-546a3ae5 1s linear infinite;
64
64
  }
65
- @keyframes stripes-7ff636cf {
66
- from {
65
+ @keyframes stripes-546a3ae5 {
66
+ from {
67
67
  background-position: 1rem 0;
68
68
  }
69
- to {
69
+ to {
70
70
  background-position: 0 0;
71
71
  }
72
72
  }
73
- .animate-indeterminate[data-v-7ff636cf] {
74
- animation: indeterminate-7ff636cf 1.5s ease-in-out infinite;
73
+ .animate-indeterminate[data-v-546a3ae5] {
74
+ animation: indeterminate-546a3ae5 1.5s ease-in-out infinite;
75
75
  }
76
- @keyframes indeterminate-7ff636cf {
77
- 0% {
76
+ @keyframes indeterminate-546a3ae5 {
77
+ 0% {
78
78
  transform: translateX(-100%);
79
79
  }
80
- 100% {
80
+ 100% {
81
81
  transform: translateX(400%);
82
82
  }
83
- }
83
+ }
@@ -0,0 +1,10 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as AccordionItem } from './AccordionItem.vue';
3
+ declare const meta: Meta<typeof AccordionItem>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithIcon: Story;
8
+ export declare const Disabled: Story;
9
+ export declare const OpenByDefault: Story;
10
+ export declare const MultipleItems: Story;
@@ -14,7 +14,7 @@ type __VLS_Props = {
14
14
  rounded?: 'full' | 'lg' | 'md';
15
15
  };
16
16
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
17
- size: AvatarSize;
18
17
  rounded: "full" | "lg" | "md";
18
+ size: AvatarSize;
19
19
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
20
20
  export default _default;
@@ -36,9 +36,9 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}
36
36
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
37
37
  onClick?: ((event: MouseEvent) => any) | undefined;
38
38
  }>, {
39
+ type: "button" | "submit" | "reset";
39
40
  variant: ButtonVariant;
40
41
  size: ButtonSize;
41
- type: "button" | "submit" | "reset";
42
42
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
43
43
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
44
44
  export default _default;
@@ -8,3 +8,6 @@ export declare const WithTitle: Story;
8
8
  export declare const WithTitleAndDescription: Story;
9
9
  export declare const WithActions: Story;
10
10
  export declare const CustomSlots: Story;
11
+ export declare const Loading: Story;
12
+ export declare const LoadingWithAvatar: Story;
13
+ export declare const LoadingWithActions: Story;
@@ -3,6 +3,14 @@ type __VLS_Props = {
3
3
  description?: string;
4
4
  titleClass?: string;
5
5
  dividerClass?: string;
6
+ /** Show loading skeleton */
7
+ loading?: boolean;
8
+ /** Number of skeleton lines */
9
+ loadingLines?: number;
10
+ /** Show avatar in skeleton */
11
+ loadingAvatar?: boolean;
12
+ /** Show actions in skeleton */
13
+ loadingActions?: boolean;
6
14
  };
7
15
  declare function __VLS_template(): {
8
16
  attrs: Partial<{}>;
@@ -14,10 +22,15 @@ declare function __VLS_template(): {
14
22
  default?(_: {}): any;
15
23
  };
16
24
  refs: {};
17
- rootEl: HTMLDivElement;
25
+ rootEl: any;
18
26
  };
19
27
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
20
- declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
28
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
29
+ loading: boolean;
30
+ loadingLines: number;
31
+ loadingAvatar: boolean;
32
+ loadingActions: boolean;
33
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
21
34
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
22
35
  export default _default;
23
36
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -0,0 +1,15 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as DarkModeToggle } from './DarkModeToggle.vue';
3
+ declare const meta: Meta<typeof DarkModeToggle>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DarkModeToggle>;
6
+ export declare const Default: Story;
7
+ export declare const Small: Story;
8
+ export declare const Medium: Story;
9
+ export declare const Large: Story;
10
+ export declare const WithLabel: Story;
11
+ export declare const WithLabelSmall: Story;
12
+ export declare const WithLabelLarge: Story;
13
+ export declare const CustomIcons: Story;
14
+ export declare const AllSizes: Story;
15
+ export declare const AllSizesWithLabel: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ export type DarkModeToggleSize = 'sm' | 'md' | 'lg';
2
+ type __VLS_Props = {
3
+ /** Toggle size */
4
+ size?: DarkModeToggleSize;
5
+ /** Light mode icon */
6
+ lightIcon?: string;
7
+ /** Dark mode icon */
8
+ darkIcon?: string;
9
+ /** Show label */
10
+ showLabel?: boolean;
11
+ /** Storage key for persistence */
12
+ storageKey?: string;
13
+ };
14
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
15
+ size: DarkModeToggleSize;
16
+ storageKey: string;
17
+ lightIcon: string;
18
+ darkIcon: string;
19
+ showLabel: boolean;
20
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
21
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as MobileList } from './MobileList.vue';
3
+ declare const meta: Meta<typeof MobileList>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithAvatar: Story;
8
+ export declare const WithActions: Story;
9
+ export declare const Selectable: Story;
10
+ export declare const WithStatusBadge: Story;
11
+ export declare const Empty: Story;
12
+ export declare const Loading: Story;
13
+ export declare const LoadingCustomItems: Story;
@@ -23,6 +23,10 @@ type __VLS_Props = {
23
23
  selectedItems?: Set<string>;
24
24
  /** Filter function to determine if an item is selectable */
25
25
  selectableFilter?: (item: ItemType) => boolean;
26
+ /** Show loading skeleton */
27
+ loading?: boolean;
28
+ /** Number of skeleton items to show when loading */
29
+ loadingItems?: number;
26
30
  };
27
31
  declare function __VLS_template(): {
28
32
  attrs: Partial<{}>;
@@ -68,8 +72,10 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}
68
72
  onSelect?: ((id: string) => any) | undefined;
69
73
  onSelectAll?: (() => any) | undefined;
70
74
  }>, {
75
+ loading: boolean;
71
76
  selectable: boolean;
72
77
  keyField: string;
78
+ loadingItems: number;
73
79
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
74
80
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
75
81
  export default _default;
@@ -0,0 +1,15 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as ResponsiveList } from './ResponsiveList.vue';
3
+ declare const meta: Meta<typeof ResponsiveList>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithAvatar: Story;
8
+ export declare const WithStatusBadge: Story;
9
+ export declare const WithActions: Story;
10
+ export declare const Selectable: Story;
11
+ export declare const SortableColumns: Story;
12
+ export declare const CustomBreakpoint: Story;
13
+ export declare const Empty: Story;
14
+ export declare const Loading: Story;
15
+ export declare const LoadingCustomRows: Story;
@@ -46,6 +46,10 @@ type __VLS_Props = {
46
46
  sortBy?: string;
47
47
  /** Current sort direction */
48
48
  sortDirection?: SortDirection;
49
+ /** Show loading skeleton */
50
+ loading?: boolean;
51
+ /** Number of skeleton rows/items to show when loading */
52
+ loadingRows?: number;
49
53
  };
50
54
  declare function __VLS_template(): {
51
55
  attrs: Partial<{}>;
@@ -109,8 +113,10 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}
109
113
  onSelect?: ((id: string) => any) | undefined;
110
114
  onSelectAll?: (() => any) | undefined;
111
115
  }>, {
116
+ loading: boolean;
112
117
  selectable: boolean;
113
118
  keyField: string;
119
+ loadingRows: number;
114
120
  breakpoint: "sm" | "md" | "lg" | "xl" | "2xl";
115
121
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
116
122
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
@@ -0,0 +1,8 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as TabPanel } from './TabPanel.vue';
3
+ declare const meta: Meta<typeof TabPanel>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithRichContent: Story;
8
+ export declare const WithForm: Story;
@@ -0,0 +1,14 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as TableAction } from './TableAction.vue';
3
+ declare const meta: Meta<typeof TableAction>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Info: Story;
8
+ export declare const Warning: Story;
9
+ export declare const Success: Story;
10
+ export declare const Error: Story;
11
+ export declare const WithLink: Story;
12
+ export declare const AllColors: Story;
13
+ export declare const CommonActions: Story;
14
+ export declare const InTableRow: Story;
@@ -12,3 +12,5 @@ export declare const WithActions: Story;
12
12
  export declare const WithCustomSlot: Story;
13
13
  export declare const EmptyState: Story;
14
14
  export declare const NestedProperties: Story;
15
+ export declare const Loading: Story;
16
+ export declare const LoadingCustomRows: Story;
@@ -21,6 +21,10 @@ type __VLS_Props = {
21
21
  sortBy?: string;
22
22
  /** Current sort direction */
23
23
  sortDirection?: SortDirection;
24
+ /** Show loading skeleton */
25
+ loading?: boolean;
26
+ /** Number of skeleton rows to show when loading */
27
+ loadingRows?: number;
24
28
  };
25
29
  declare function __VLS_template(): {
26
30
  attrs: Partial<{}>;
@@ -49,8 +53,10 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}
49
53
  onSelect?: ((id: string) => any) | undefined;
50
54
  onSelectAll?: (() => any) | undefined;
51
55
  }>, {
56
+ loading: boolean;
52
57
  selectable: boolean;
53
58
  keyField: string;
59
+ loadingRows: number;
54
60
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
55
61
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
56
62
  export default _default;
@@ -1,28 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const Timeline_vue_vue_type_script_setup_true_lang = require("../../Timeline.vue_vue_type_script_setup_true_lang-CqeiZOID.cjs");
3
+ const DarkModeToggle_vue_vue_type_script_setup_true_lang = require("../../DarkModeToggle.vue_vue_type_script_setup_true_lang-BoB48313.cjs");
4
4
  const Dropdown_vue_vue_type_script_setup_true_lang = require("../../Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs");
5
5
  const BadgeType_vue_vue_type_script_setup_true_lang = require("../../BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
6
- exports.Accordion = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$16;
7
- exports.AccordionItem = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$17;
8
- exports.AutocompleteComponent = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$4;
9
- exports.Avatar = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$7;
10
- exports.Breadcrumb = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$15;
11
- exports.Button = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$6;
12
- exports.CardComponent = Timeline_vue_vue_type_script_setup_true_lang._sfc_main;
13
- exports.CollapsibleCard = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$11;
14
- exports.Drawer = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$14;
15
- exports.MobileList = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$2;
16
- exports.Popover = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$13;
17
- exports.ResponsiveList = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$3;
18
- exports.Stepper = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$10;
19
- exports.TabPanel = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$9;
20
- exports.TableAction = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$5;
21
- exports.TableComponent = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$1;
22
- exports.Tabs = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$8;
23
- exports.Timeline = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$18;
24
- exports.Tooltip = Timeline_vue_vue_type_script_setup_true_lang._sfc_main$12;
6
+ const Button_vue_vue_type_script_setup_true_lang = require("../../Button.vue_vue_type_script_setup_true_lang-DrGM65ny.cjs");
7
+ exports.Accordion = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$15;
8
+ exports.AccordionItem = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$16;
9
+ exports.AutocompleteComponent = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$4;
10
+ exports.Avatar = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$6;
11
+ exports.Breadcrumb = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$14;
12
+ exports.CardComponent = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main;
13
+ exports.CollapsibleCard = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$10;
14
+ exports.DarkModeToggle = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$18;
15
+ exports.Drawer = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$13;
16
+ exports.MobileList = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$2;
17
+ exports.Popover = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$12;
18
+ exports.ResponsiveList = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$3;
19
+ exports.Stepper = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$9;
20
+ exports.TabPanel = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$8;
21
+ exports.TableAction = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$5;
22
+ exports.TableComponent = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$1;
23
+ exports.Tabs = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$7;
24
+ exports.Timeline = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$17;
25
+ exports.Tooltip = DarkModeToggle_vue_vue_type_script_setup_true_lang._sfc_main$11;
25
26
  exports.Dropdown = Dropdown_vue_vue_type_script_setup_true_lang._sfc_main$1;
26
27
  exports.MenuItem = Dropdown_vue_vue_type_script_setup_true_lang._sfc_main;
27
28
  exports.StatusBadge = BadgeType_vue_vue_type_script_setup_true_lang._sfc_main;
29
+ exports.Button = Button_vue_vue_type_script_setup_true_lang._sfc_main;
28
30
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -20,6 +20,7 @@ export { default as Breadcrumb } from './Breadcrumb.vue';
20
20
  export { default as Accordion } from './Accordion.vue';
21
21
  export { default as AccordionItem } from './AccordionItem.vue';
22
22
  export { default as Timeline } from './Timeline.vue';
23
+ export { default as DarkModeToggle } from './DarkModeToggle.vue';
23
24
  export type { ButtonVariant, ButtonSize } from './Button.vue';
24
25
  export type { DrawerPosition, DrawerSize } from './Drawer.vue';
25
26
  export type { BreadcrumbItem } from './Breadcrumb.vue';
@@ -33,3 +34,4 @@ export type { Tab } from './Tabs.vue';
33
34
  export type { DropdownItem } from './Dropdown.vue';
34
35
  export type { MobileListColumn } from './MobileList.vue';
35
36
  export type { ResponsiveListColumn } from './ResponsiveList.vue';
37
+ export type { DarkModeToggleSize } from './DarkModeToggle.vue';
@@ -1,28 +1,30 @@
1
- import { p, q, d, g, o, f, _, k, n, b, m, c, j, i, e, a, h, r, l } from "../../Timeline.vue_vue_type_script_setup_true_lang-CuPF4MPe.js";
1
+ import { o, p, d, f, n, _, j, r, m, b, l, c, i, h, e, a, g, q, k } from "../../DarkModeToggle.vue_vue_type_script_setup_true_lang-43fxlbro.js";
2
2
  import { a as a2, _ as _2 } from "../../Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js";
3
3
  import { _ as _3 } from "../../BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js";
4
+ import { _ as _4 } from "../../Button.vue_vue_type_script_setup_true_lang-DKE8elsf.js";
4
5
  export {
5
- p as Accordion,
6
- q as AccordionItem,
6
+ o as Accordion,
7
+ p as AccordionItem,
7
8
  d as AutocompleteComponent,
8
- g as Avatar,
9
- o as Breadcrumb,
10
- f as Button,
9
+ f as Avatar,
10
+ n as Breadcrumb,
11
+ _4 as Button,
11
12
  _ as CardComponent,
12
- k as CollapsibleCard,
13
- n as Drawer,
13
+ j as CollapsibleCard,
14
+ r as DarkModeToggle,
15
+ m as Drawer,
14
16
  a2 as Dropdown,
15
17
  _2 as MenuItem,
16
18
  b as MobileList,
17
- m as Popover,
19
+ l as Popover,
18
20
  c as ResponsiveList,
19
21
  _3 as StatusBadge,
20
- j as Stepper,
21
- i as TabPanel,
22
+ i as Stepper,
23
+ h as TabPanel,
22
24
  e as TableAction,
23
25
  a as TableComponent,
24
- h as Tabs,
25
- r as Timeline,
26
- l as Tooltip
26
+ g as Tabs,
27
+ q as Timeline,
28
+ k as Tooltip
27
29
  };
28
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import { default as CardSkeleton } from './CardSkeleton.vue';
3
+ declare const meta: Meta<typeof CardSkeleton>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithAvatar: Story;
8
+ export declare const WithActions: Story;
9
+ export declare const Full: Story;
10
+ export declare const SingleLine: Story;
11
+ export declare const Grid: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -7,8 +7,8 @@ type __VLS_Props = {
7
7
  showActions?: boolean;
8
8
  };
9
9
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
10
- lines: number;
11
10
  showAvatar: boolean;
11
+ lines: number;
12
12
  showActions: boolean;
13
13
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
14
14
  export default _default;