@j-solution/components 1.7.0 → 1.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 (207) hide show
  1. package/README.md +413 -415
  2. package/assets/jwms-portal-frontend-Ct2Tc7yj.css +1 -0
  3. package/assets/styles/global-utilities.css +34 -0
  4. package/assets/styles/j-components.css +1 -1
  5. package/assets/styles/themes.css +443 -443
  6. package/components/atoms/JButton.vue.cjs +6 -1
  7. package/components/atoms/JButton.vue.cjs.map +1 -1
  8. package/components/atoms/JButton.vue.js +10 -85
  9. package/components/atoms/JButton.vue.js.map +1 -1
  10. package/components/atoms/JButton.vue2.cjs +1 -1
  11. package/components/atoms/JButton.vue2.cjs.map +1 -1
  12. package/components/atoms/JButton.vue2.js +85 -2
  13. package/components/atoms/JButton.vue2.js.map +1 -1
  14. package/components/atoms/JGrid.vue.cjs +1 -1
  15. package/components/atoms/JGrid.vue.js +1 -1
  16. package/components/atoms/JGrid.vue2.cjs +1 -1
  17. package/components/atoms/JGrid.vue2.cjs.map +1 -1
  18. package/components/atoms/JGrid.vue2.js +39 -35
  19. package/components/atoms/JGrid.vue2.js.map +1 -1
  20. package/components/atoms/JLabel.vue.cjs +1 -1
  21. package/components/atoms/JLabel.vue.cjs.map +1 -1
  22. package/components/atoms/JLabel.vue.js +26 -22
  23. package/components/atoms/JLabel.vue.js.map +1 -1
  24. package/components/atoms/JSectionTitle.vue.cjs +7 -0
  25. package/components/atoms/JSectionTitle.vue.cjs.map +1 -0
  26. package/components/atoms/JSectionTitle.vue.js +13 -0
  27. package/components/atoms/JSectionTitle.vue.js.map +1 -0
  28. package/components/atoms/JSectionTitle.vue2.cjs +2 -0
  29. package/components/atoms/JSectionTitle.vue2.cjs.map +1 -0
  30. package/components/atoms/JSectionTitle.vue2.js +67 -0
  31. package/components/atoms/JSectionTitle.vue2.js.map +1 -0
  32. package/components/atoms/JSplitter.vue.cjs +6 -1
  33. package/components/atoms/JSplitter.vue.cjs.map +1 -1
  34. package/components/atoms/JSplitter.vue.js +10 -59
  35. package/components/atoms/JSplitter.vue.js.map +1 -1
  36. package/components/atoms/JSplitter.vue2.cjs +1 -1
  37. package/components/atoms/JSplitter.vue2.cjs.map +1 -1
  38. package/components/atoms/JSplitter.vue2.js +59 -2
  39. package/components/atoms/JSplitter.vue2.js.map +1 -1
  40. package/components/examples/ExampleCrudPage.vue.cjs +1 -1
  41. package/components/examples/ExampleCrudPage.vue.cjs.map +1 -1
  42. package/components/examples/ExampleCrudPage.vue.js +228 -208
  43. package/components/examples/ExampleCrudPage.vue.js.map +1 -1
  44. package/components/examples/ExampleTabMappingPage.vue.cjs +1 -1
  45. package/components/examples/ExampleTabMappingPage.vue.cjs.map +1 -1
  46. package/components/examples/ExampleTabMappingPage.vue.js +341 -368
  47. package/components/examples/ExampleTabMappingPage.vue.js.map +1 -1
  48. package/components/molecules/JAlert.vue.cjs +1 -1
  49. package/components/molecules/JAlert.vue.cjs.map +1 -1
  50. package/components/molecules/JAlert.vue.js +18 -16
  51. package/components/molecules/JAlert.vue.js.map +1 -1
  52. package/components/molecules/JCard.vue.cjs +1 -1
  53. package/components/molecules/JCard.vue.cjs.map +1 -1
  54. package/components/molecules/JCard.vue.js +55 -39
  55. package/components/molecules/JCard.vue.js.map +1 -1
  56. package/components/molecules/JEmptyState.vue.cjs +7 -0
  57. package/components/molecules/JEmptyState.vue.cjs.map +1 -0
  58. package/components/molecules/JEmptyState.vue.js +13 -0
  59. package/components/molecules/JEmptyState.vue.js.map +1 -0
  60. package/components/molecules/JEmptyState.vue2.cjs +2 -0
  61. package/components/molecules/JEmptyState.vue2.cjs.map +1 -0
  62. package/components/molecules/JEmptyState.vue2.js +127 -0
  63. package/components/molecules/JEmptyState.vue2.js.map +1 -0
  64. package/components/molecules/JFormField.vue.cjs +6 -1
  65. package/components/molecules/JFormField.vue.cjs.map +1 -1
  66. package/components/molecules/JFormField.vue.js +10 -264
  67. package/components/molecules/JFormField.vue.js.map +1 -1
  68. package/components/molecules/JFormField.vue2.cjs +2 -0
  69. package/components/molecules/JFormField.vue2.cjs.map +1 -0
  70. package/components/molecules/JFormField.vue2.js +271 -0
  71. package/components/molecules/JFormField.vue2.js.map +1 -0
  72. package/components/molecules/JTabs.vue.cjs +1 -1
  73. package/components/molecules/JTabs.vue.js +1 -1
  74. package/components/molecules/JTabs.vue2.cjs +1 -1
  75. package/components/molecules/JTabs.vue2.cjs.map +1 -1
  76. package/components/molecules/JTabs.vue2.js +44 -50
  77. package/components/molecules/JTabs.vue2.js.map +1 -1
  78. package/components/molecules/JTitlebar.vue.cjs +1 -1
  79. package/components/molecules/JTitlebar.vue.cjs.map +1 -1
  80. package/components/molecules/JTitlebar.vue.js +23 -20
  81. package/components/molecules/JTitlebar.vue.js.map +1 -1
  82. package/components/organisms/JDynamicForm.vue2.cjs +1 -1
  83. package/components/organisms/JDynamicForm.vue2.cjs.map +1 -1
  84. package/components/organisms/JDynamicForm.vue2.js +35 -32
  85. package/components/organisms/JDynamicForm.vue2.js.map +1 -1
  86. package/components/organisms/JDynamicTabs.vue.cjs +1 -1
  87. package/components/organisms/JDynamicTabs.vue.cjs.map +1 -1
  88. package/components/organisms/JDynamicTabs.vue.js +47 -52
  89. package/components/organisms/JDynamicTabs.vue.js.map +1 -1
  90. package/components/organisms/JFilterBar.vue.cjs +6 -1
  91. package/components/organisms/JFilterBar.vue.cjs.map +1 -1
  92. package/components/organisms/JFilterBar.vue.js +10 -137
  93. package/components/organisms/JFilterBar.vue.js.map +1 -1
  94. package/components/organisms/JFilterBar.vue2.cjs +1 -1
  95. package/components/organisms/JFilterBar.vue2.cjs.map +1 -1
  96. package/components/organisms/JFilterBar.vue2.js +143 -2
  97. package/components/organisms/JFilterBar.vue2.js.map +1 -1
  98. package/components/organisms/JFormModal.vue.cjs +1 -1
  99. package/components/organisms/JFormModal.vue.cjs.map +1 -1
  100. package/components/organisms/JFormModal.vue.js +54 -49
  101. package/components/organisms/JFormModal.vue.js.map +1 -1
  102. package/components/organisms/JHeader.vue.cjs +1 -1
  103. package/components/organisms/JHeader.vue.cjs.map +1 -1
  104. package/components/organisms/JHeader.vue.js +191 -190
  105. package/components/organisms/JHeader.vue.js.map +1 -1
  106. package/components/organisms/JModal.vue.cjs +1 -1
  107. package/components/organisms/JModal.vue.cjs.map +1 -1
  108. package/components/organisms/JModal.vue.js +47 -45
  109. package/components/organisms/JModal.vue.js.map +1 -1
  110. package/components/organisms/JPageContainer.vue.cjs +1 -1
  111. package/components/organisms/JPageContainer.vue.cjs.map +1 -1
  112. package/components/organisms/JPageContainer.vue.js +22 -22
  113. package/components/organisms/JPageContainer.vue.js.map +1 -1
  114. package/components/organisms/JSearchPanel.vue2.cjs +1 -1
  115. package/components/organisms/JSearchPanel.vue2.cjs.map +1 -1
  116. package/components/organisms/JSearchPanel.vue2.js +34 -32
  117. package/components/organisms/JSearchPanel.vue2.js.map +1 -1
  118. package/components/organisms/JShuttle.vue.cjs +7 -0
  119. package/components/organisms/JShuttle.vue.cjs.map +1 -0
  120. package/components/organisms/JShuttle.vue.js +13 -0
  121. package/components/organisms/JShuttle.vue.js.map +1 -0
  122. package/components/organisms/JShuttle.vue2.cjs +2 -0
  123. package/components/organisms/JShuttle.vue2.cjs.map +1 -0
  124. package/components/organisms/JShuttle.vue2.js +216 -0
  125. package/components/organisms/JShuttle.vue2.js.map +1 -0
  126. package/components/organisms/JSidebar/JSidebar.vue.cjs +2 -0
  127. package/components/organisms/JSidebar/JSidebar.vue.cjs.map +1 -0
  128. package/components/organisms/JSidebar/JSidebar.vue.js +189 -0
  129. package/components/organisms/JSidebar/JSidebar.vue.js.map +1 -0
  130. package/components/{molecules/JFormField.vue3.cjs → organisms/JSidebar/JSidebar.vue2.cjs} +2 -2
  131. package/components/organisms/JSidebar/JSidebar.vue2.cjs.map +1 -0
  132. package/components/organisms/JSidebar/JSidebar.vue2.js +5 -0
  133. package/components/organisms/JSidebar/JSidebar.vue2.js.map +1 -0
  134. package/components/organisms/JSidebar/JSidebarGroup.vue.cjs +2 -0
  135. package/components/organisms/JSidebar/JSidebarGroup.vue.cjs.map +1 -0
  136. package/components/organisms/JSidebar/JSidebarGroup.vue.js +89 -0
  137. package/components/organisms/JSidebar/JSidebarGroup.vue.js.map +1 -0
  138. package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs +2 -0
  139. package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs.map +1 -0
  140. package/components/organisms/JSidebar/JSidebarGroup.vue2.js +5 -0
  141. package/components/organisms/JSidebar/JSidebarGroup.vue2.js.map +1 -0
  142. package/components/organisms/JSidebar/JSidebarItem.vue.cjs +2 -0
  143. package/components/organisms/JSidebar/JSidebarItem.vue.cjs.map +1 -0
  144. package/components/organisms/JSidebar/JSidebarItem.vue.js +79 -0
  145. package/components/organisms/JSidebar/JSidebarItem.vue.js.map +1 -0
  146. package/components/organisms/JSidebar/JSidebarItem.vue2.cjs +2 -0
  147. package/components/organisms/JSidebar/JSidebarItem.vue2.cjs.map +1 -0
  148. package/components/organisms/JSidebar/JSidebarItem.vue2.js +5 -0
  149. package/components/organisms/JSidebar/JSidebarItem.vue2.js.map +1 -0
  150. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.cjs +1 -1
  151. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.cjs.map +1 -1
  152. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.js +52 -52
  153. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.js.map +1 -1
  154. package/components/shadcn/Card.vue.cjs +1 -1
  155. package/components/shadcn/Card.vue.cjs.map +1 -1
  156. package/components/shadcn/Card.vue.js +1 -1
  157. package/components/shadcn/Card.vue.js.map +1 -1
  158. package/components/shadcn/CardContent.vue.cjs +1 -1
  159. package/components/shadcn/CardContent.vue.cjs.map +1 -1
  160. package/components/shadcn/CardContent.vue.js +4 -4
  161. package/components/shadcn/CardContent.vue.js.map +1 -1
  162. package/components/shadcn/CardHeader.vue.cjs +1 -1
  163. package/components/shadcn/CardHeader.vue.cjs.map +1 -1
  164. package/components/shadcn/CardHeader.vue.js +5 -5
  165. package/components/shadcn/CardHeader.vue.js.map +1 -1
  166. package/components/shadcn/Input.vue.cjs +1 -1
  167. package/components/shadcn/Input.vue.cjs.map +1 -1
  168. package/components/shadcn/Input.vue.js +3 -3
  169. package/components/shadcn/Input.vue.js.map +1 -1
  170. package/components/shadcn/SelectTrigger.vue.cjs +1 -1
  171. package/components/shadcn/SelectTrigger.vue.cjs.map +1 -1
  172. package/components/shadcn/SelectTrigger.vue.js +1 -1
  173. package/components/shadcn/SelectTrigger.vue.js.map +1 -1
  174. package/components/shadcn/TabsContent.vue.cjs +1 -1
  175. package/components/shadcn/TabsContent.vue.cjs.map +1 -1
  176. package/components/shadcn/TabsContent.vue.js +1 -1
  177. package/components/shadcn/TabsContent.vue.js.map +1 -1
  178. package/components/shadcn/TabsList.vue.cjs +1 -1
  179. package/components/shadcn/TabsList.vue.cjs.map +1 -1
  180. package/components/shadcn/TabsList.vue.js +10 -10
  181. package/components/shadcn/TabsList.vue.js.map +1 -1
  182. package/components/shadcn/Textarea.vue.cjs +1 -1
  183. package/components/shadcn/Textarea.vue.cjs.map +1 -1
  184. package/components/shadcn/Textarea.vue.js +1 -1
  185. package/components/shadcn/Textarea.vue.js.map +1 -1
  186. package/components/shadcn/index.cjs +1 -1
  187. package/components/shadcn/index.cjs.map +1 -1
  188. package/components/shadcn/index.js +4 -4
  189. package/components/shadcn/index.js.map +1 -1
  190. package/components/templates/JLayout.vue.cjs.map +1 -1
  191. package/components/templates/JLayout.vue.js.map +1 -1
  192. package/components/templates/JLayoutSimple.vue.cjs +1 -1
  193. package/components/templates/JLayoutSimple.vue.cjs.map +1 -1
  194. package/components/templates/JLayoutSimple.vue.js +36 -30
  195. package/components/templates/JLayoutSimple.vue.js.map +1 -1
  196. package/index.cjs +1 -1
  197. package/index.js +75 -67
  198. package/package.json +1 -1
  199. package/types/index.d.ts +662 -461
  200. package/types/sidebar.types.cjs +2 -0
  201. package/types/sidebar.types.cjs.map +1 -0
  202. package/types/sidebar.types.js +5 -0
  203. package/types/sidebar.types.js.map +1 -0
  204. package/assets/jwms-portal-frontend-CwxPfHfa.css +0 -1
  205. package/components/molecules/JFormField.vue3.cjs.map +0 -1
  206. package/components/molecules/JFormField.vue3.js +0 -6
  207. package/components/molecules/JFormField.vue3.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"JDynamicMenuItem.vue.js","sources":["../../../../../src/components/organisms/JSidebarSimple/JDynamicMenuItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useRouter } from 'vue-router'\nimport type { SidebarMenuItem, MenuPermission, MenuClickEvent } from '@/types/sidebar-menu.types'\nimport JIcon from '@/components/atoms/JIcon.vue'\nimport { cn, hasMenuPermission } from '@/lib/utils'\n\n/**\n * JDynamicMenuItem - 재귀적 메뉴 아이템 컴포넌트\n * Recursive Menu Item Component\n * \n * @description\n * 다단계 메뉴 구조를 재귀적으로 렌더링하는 컴포넌트입니다.\n * 폴더 타입 메뉴는 확장/축소가 가능하고, 링크 타입 메뉴는 클릭 시 라우팅합니다.\n */\n\ntype StyleType = 'default' | 'minimal'\n\nconst props = withDefaults(\n defineProps<{\n /** 메뉴 아이템 */\n item: SidebarMenuItem\n /** 메뉴 레벨 (들여쓰기용, 0부터 시작) */\n level?: number\n /** 권한 목록 */\n permissions?: MenuPermission[]\n /** 활성화된 메뉴 경로 */\n activePath?: string\n /** 확장된 메뉴 키 목록 */\n expandedKeys?: Set<number | string>\n /** 즐겨찾기 메뉴 키 목록 */\n favorites?: (number | string)[]\n /** 즐겨찾기 변경 핸들러 */\n onFavoriteToggle?: (menuKey: number | string | undefined) => void\n /** 즐겨찾기 확인 함수 */\n isFavorite?: (menuKey: number | string | undefined) => boolean\n /** 스타일 타입 */\n styletype?: StyleType\n /** 추가 CSS 클래스 */\n className?: string\n /** 최대 깊이 제한 (무한 루프 방지, 기본값: 10) */\n maxDepth?: number\n /** 네비게이션 비활성화 (true일 때 router.push 건너뛰고 emit만 수행) */\n disableNavigation?: boolean\n /** 활성화된 메뉴 키 (menuKey 기반 활성화, activePath보다 우선) */\n activeKey?: number | string | null\n }>(),\n {\n level: 0,\n permissions: () => [],\n expandedKeys: () => new Set(),\n favorites: () => [],\n styletype: 'default',\n maxDepth: 10,\n disableNavigation: false,\n activeKey: null,\n },\n)\n\nconst emit = defineEmits<{\n /** 메뉴 클릭 이벤트 */\n menuClick: [event: MenuClickEvent]\n /** 확장 상태 변경 이벤트 */\n expandChange: [menuKey: number | string | undefined, expanded: boolean]\n}>()\n\nconst router = useRouter()\n\n/**\n * 권한 체크 함수\n * Permission check function\n * hasMenuPermission 유틸리티 함수를 사용하여 일관성 유지\n */\nconst checkPermission = computed(() => {\n return hasMenuPermission(props.item.menuKey, props.permissions)\n})\n\n/**\n * 메뉴가 활성화되어 있는지 여부\n * activeKey가 제공되면 menuKey 매칭, 아니면 경로 매칭\n */\nconst isActive = computed(() => {\n // activeKey가 제공되면 menuKey 기반 매칭 (우선순위 높음)\n if (props.activeKey !== undefined && props.activeKey !== null) {\n return props.item.menuKey === props.activeKey\n }\n // 경로 기반 매칭 (기본 동작)\n if (!props.item.path || !props.activePath) return false\n return props.activePath === props.item.path\n})\n\n/**\n * 메뉴 타입이 폴더인지 여부\n * 순환 참조 방지: children이 유효한 배열인지 확인\n */\nconst isFolder = computed(() => {\n return props.item.menuType === 'F' || (Array.isArray(props.item.children) && props.item.children.length > 0)\n})\n\n/**\n * 메뉴가 확장되어 있는지 여부\n */\nconst isExpanded = computed(() => {\n if (!isFolder.value) return false\n const key = props.item.menuKey || props.item.label\n return props.expandedKeys?.has(key) ?? false\n})\n\n/**\n * 메뉴가 비활성화되어 있는지 여부\n */\nconst isDisabled = computed(() => {\n return props.item.disabled || !checkPermission.value\n})\n\n/**\n * 레벨별 들여쓰기 스타일\n * Tailwind의 표준 클래스는 제한적이므로 인라인 스타일 사용\n */\nconst indentStyle = computed(() => {\n const basePadding = 8 // 기본 패딩 (px) - 12에서 8로 축소\n const level = props.level || 0\n const levelPadding = level * 12 // 레벨당 12px (16에서 12로 축소)\n const totalPadding = basePadding + levelPadding\n return { paddingLeft: `${totalPadding}px` }\n})\n\n/**\n * 메뉴 클릭 핸들러\n */\nconst handleMenuClick = (event: MouseEvent) => {\n if (isDisabled.value) {\n event.preventDefault()\n return\n }\n\n if (isFolder.value) {\n // 폴더 타입: 확장/축소 토글\n const key = props.item.menuKey || props.item.label\n const newExpanded = !isExpanded.value\n emit('expandChange', key, newExpanded)\n // 폴더도 메뉴 클릭 이벤트 발생\n emit('menuClick', {\n menuItem: props.item,\n path: [props.item],\n event,\n })\n } else {\n // 링크 타입: 라우팅 (disableNavigation이 false일 때만)\n if (!props.disableNavigation && props.item.path) {\n router.push(props.item.path)\n }\n \n // 메뉴 클릭 이벤트 발생\n emit('menuClick', {\n menuItem: props.item,\n path: [props.item], // 단순화된 경로 (필요시 부모 경로 포함하도록 확장 가능)\n event,\n })\n }\n}\n\n/**\n * 스타일 프리셋\n */\nconst STYLE_PRESETS: Record<StyleType, {\n itemClass: string\n labelClass: string\n iconSize: 'sm' | 'md'\n}> = {\n default: {\n itemClass: 'flex items-center gap-1.5 py-1 rounded-md cursor-pointer transition-colors group',\n labelClass: 'flex-1 truncate text-xs',\n iconSize: 'sm',\n },\n minimal: {\n itemClass: 'flex items-center gap-1 py-1 rounded-md cursor-pointer transition-colors group',\n labelClass: 'flex-1 truncate text-xs',\n iconSize: 'sm', // JIcon은 'xs'를 지원하지 않으므로 'sm' 사용\n },\n}\n\nconst preset = computed(() => {\n return STYLE_PRESETS[props.styletype] ?? STYLE_PRESETS.default\n})\n\n/**\n * Chevron 아이콘 컴포넌트\n */\nconst ChevronIcon = computed(() => {\n return isExpanded.value ? 'chevronDown' : 'chevronRight'\n})\n\n/**\n * 하위 메뉴 갯수 계산 (재귀적으로 모든 하위 메뉴 포함)\n * 폴더 타입인 경우에만 표시\n */\nconst childrenCount = computed(() => {\n if (!isFolder.value || !Array.isArray(props.item.children)) {\n return 0\n }\n \n const countChildren = (items: SidebarMenuItem[]): number => {\n let count = 0\n for (const item of items) {\n count++ // 현재 아이템 카운트\n if (Array.isArray(item.children) && item.children.length > 0) {\n count += countChildren(item.children) // 재귀적으로 하위 메뉴 카운트\n }\n }\n return count\n }\n \n return countChildren(props.item.children)\n})\n</script>\n\n<template>\n <div :class=\"cn('w-full', className)\">\n <!-- 메뉴 아이템 -->\n <div\n :class=\"cn(\n preset.itemClass,\n {\n 'bg-accent text-accent-foreground': isActive,\n 'hover:bg-accent/50': !isDisabled && !isActive,\n 'opacity-50 cursor-not-allowed': isDisabled,\n 'font-medium': isActive,\n 'font-semibold': isFolder, // 폴더인 경우 볼드체\n }\n )\"\n :style=\"indentStyle\"\n @click=\"handleMenuClick\"\n >\n <!-- Chevron 아이콘 (폴더 타입만, 덜 굵게) -->\n <JIcon\n v-if=\"isFolder\"\n :name=\"ChevronIcon\"\n :size=\"preset.iconSize\"\n class=\"flex-shrink-0 opacity-60\"\n style=\"stroke-width: 1.5;\"\n />\n <span v-else class=\"w-4 flex-shrink-0\" /> <!-- 폴더가 아닐 때 공간 확보 -->\n\n <!-- 메뉴 아이콘 (폴더가 아닌 경우만 표시) -->\n <JIcon\n v-if=\"item.icon && !isFolder\"\n :name=\"item.icon\"\n :size=\"preset.iconSize\"\n class=\"flex-shrink-0\"\n />\n\n <!-- 메뉴 라벨 -->\n <span :class=\"preset.labelClass\">{{ item.label }}</span>\n \n <!-- 하위 메뉴 갯수 (폴더인 경우만) -->\n <span\n v-if=\"isFolder && childrenCount > 0\"\n :class=\"cn(\n 'text-muted-foreground ml-1 flex-shrink-0',\n props.styletype === 'minimal' ? 'text-[10px]' : 'text-xs'\n )\"\n >\n ({{ childrenCount }})\n </span>\n \n <!-- 즐겨찾기 버튼 (menuType이 L인 경우만) -->\n <button\n v-if=\"item.menuKey && item.menuType === 'L' && onFavoriteToggle\"\n :class=\"cn(\n 'opacity-0 group-hover:opacity-100 transition-opacity hover:bg-accent rounded flex-shrink-0',\n props.styletype === 'minimal' ? 'p-0.5' : 'p-1',\n isFavorite && isFavorite(item.menuKey) && 'opacity-100'\n )\"\n @click.stop=\"onFavoriteToggle(item.menuKey)\"\n >\n <JIcon\n :name=\"isFavorite && isFavorite(item.menuKey) ? 'star' : 'star'\"\n :size=\"preset.iconSize\"\n :class=\"isFavorite && isFavorite(item.menuKey) ? 'text-yellow-500 fill-yellow-500' : 'text-muted-foreground'\"\n />\n </button>\n </div>\n\n <!-- 하위 메뉴 (폴더 타입이고 확장된 경우) -->\n <!-- 깊이 제한 체크: maxDepth를 초과하지 않는 경우에만 렌더링 -->\n <div\n v-if=\"isFolder && isExpanded && item.children && Array.isArray(item.children) && item.children.length > 0 && (level + 1) < maxDepth\"\n class=\"w-full\"\n >\n <JDynamicMenuItem\n v-for=\"(child, index) in item.children\"\n :key=\"child.menuKey || child.label || index\"\n :item=\"child\"\n :level=\"level + 1\"\n :max-depth=\"maxDepth\"\n :permissions=\"permissions\"\n :active-path=\"activePath\"\n :expanded-keys=\"expandedKeys\"\n :favorites=\"favorites\"\n :on-favorite-toggle=\"onFavoriteToggle\"\n :is-favorite=\"isFavorite\"\n :styletype=\"styletype\"\n :disable-navigation=\"disableNavigation\"\n :active-key=\"activeKey\"\n @menu-click=\"emit('menuClick', $event)\"\n @expand-change=\"(menuKey, expanded) => emit('expandChange', menuKey, expanded)\"\n />\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","router","useRouter","checkPermission","computed","hasMenuPermission","isActive","isFolder","isExpanded","key","isDisabled","indentStyle","handleMenuClick","event","newExpanded","STYLE_PRESETS","preset","ChevronIcon","childrenCount","countChildren","items","count","item","_createElementBlock","_normalizeClass","_unref","cn","_createElementVNode","_createBlock","JIcon","_openBlock","_hoisted_1","_toDisplayString","_cache","_withModifiers","$event","_createVNode","_hoisted_2","_Fragment","child","index","_component_JDynamicMenuItem","menuKey","expanded"],"mappings":"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"}
1
+ {"version":3,"file":"JDynamicMenuItem.vue.js","sources":["../../../../../src/components/organisms/JSidebarSimple/JDynamicMenuItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useRouter } from 'vue-router'\nimport type { SidebarMenuItem, MenuPermission, MenuClickEvent } from '@/types/sidebar-menu.types'\nimport JIcon from '@/components/atoms/JIcon.vue'\nimport { cn, hasMenuPermission } from '@/lib/utils'\n\n/**\n * JDynamicMenuItem - 재귀적 메뉴 아이템 컴포넌트\n * Recursive Menu Item Component\n * \n * @description\n * 다단계 메뉴 구조를 재귀적으로 렌더링하는 컴포넌트입니다.\n * 폴더 타입 메뉴는 확장/축소가 가능하고, 링크 타입 메뉴는 클릭 시 라우팅합니다.\n */\n\ntype StyleType = 'default' | 'minimal'\n\nconst props = withDefaults(\n defineProps<{\n /** 메뉴 아이템 */\n item: SidebarMenuItem\n /** 메뉴 레벨 (들여쓰기용, 0부터 시작) */\n level?: number\n /** 권한 목록 */\n permissions?: MenuPermission[]\n /** 활성화된 메뉴 경로 */\n activePath?: string\n /** 확장된 메뉴 키 목록 */\n expandedKeys?: Set<number | string>\n /** 즐겨찾기 메뉴 키 목록 */\n favorites?: (number | string)[]\n /** 즐겨찾기 변경 핸들러 */\n onFavoriteToggle?: (menuKey: number | string | undefined) => void\n /** 즐겨찾기 확인 함수 */\n isFavorite?: (menuKey: number | string | undefined) => boolean\n /** 스타일 타입 */\n styletype?: StyleType\n /** 추가 CSS 클래스 */\n className?: string\n /** 최대 깊이 제한 (무한 루프 방지, 기본값: 10) */\n maxDepth?: number\n /** 네비게이션 비활성화 (true일 때 router.push 건너뛰고 emit만 수행) */\n disableNavigation?: boolean\n /** 활성화된 메뉴 키 (menuKey 기반 활성화, activePath보다 우선) */\n activeKey?: number | string | null\n }>(),\n {\n level: 0,\n permissions: () => [],\n expandedKeys: () => new Set(),\n favorites: () => [],\n styletype: 'default',\n maxDepth: 10,\n disableNavigation: false,\n activeKey: null,\n },\n)\n\nconst emit = defineEmits<{\n /** 메뉴 클릭 이벤트 */\n menuClick: [event: MenuClickEvent]\n /** 확장 상태 변경 이벤트 */\n expandChange: [menuKey: number | string | undefined, expanded: boolean]\n}>()\n\nconst router = useRouter()\n\n/**\n * 권한 체크 함수\n * Permission check function\n * hasMenuPermission 유틸리티 함수를 사용하여 일관성 유지\n */\nconst checkPermission = computed(() => {\n return hasMenuPermission(props.item.menuKey, props.permissions)\n})\n\n/**\n * 메뉴가 활성화되어 있는지 여부\n * activeKey가 제공되면 menuKey 매칭, 아니면 경로 매칭\n */\nconst isActive = computed(() => {\n // activeKey가 제공되면 menuKey 기반 매칭 (우선순위 높음)\n if (props.activeKey !== undefined && props.activeKey !== null) {\n return props.item.menuKey === props.activeKey\n }\n // 경로 기반 매칭 (기본 동작)\n if (!props.item.path || !props.activePath) return false\n return props.activePath === props.item.path\n})\n\n/**\n * 메뉴 타입이 폴더인지 여부\n * 순환 참조 방지: children이 유효한 배열인지 확인\n */\nconst isFolder = computed(() => {\n return props.item.menuType === 'F' || (Array.isArray(props.item.children) && props.item.children.length > 0)\n})\n\n/**\n * 메뉴가 확장되어 있는지 여부\n */\nconst isExpanded = computed(() => {\n if (!isFolder.value) return false\n const key = props.item.menuKey || props.item.label\n return props.expandedKeys?.has(key) ?? false\n})\n\n/**\n * 메뉴가 비활성화되어 있는지 여부\n */\nconst isDisabled = computed(() => {\n return props.item.disabled || !checkPermission.value\n})\n\n/**\n * 레벨별 들여쓰기 스타일\n * 모든 레벨에서 동일한 padding 사용 (들여쓰기는 컨테이너의 ml로 조절)\n */\nconst indentStyle = computed(() => {\n return { paddingLeft: '8px', paddingRight: '8px' }\n})\n\n\n\n/**\n * 메뉴 클릭 핸들러\n */\nconst handleMenuClick = (event: MouseEvent) => {\n if (isDisabled.value) {\n event.preventDefault()\n return\n }\n\n if (isFolder.value) {\n // 폴더 타입: 확장/축소 토글\n const key = props.item.menuKey || props.item.label\n const newExpanded = !isExpanded.value\n emit('expandChange', key, newExpanded)\n // 폴더도 메뉴 클릭 이벤트 발생\n emit('menuClick', {\n menuItem: props.item,\n path: [props.item],\n event,\n })\n } else {\n // 링크 타입: 라우팅 (disableNavigation이 false일 때만)\n if (!props.disableNavigation && props.item.path) {\n router.push(props.item.path)\n }\n \n // 메뉴 클릭 이벤트 발생\n emit('menuClick', {\n menuItem: props.item,\n path: [props.item], // 단순화된 경로 (필요시 부모 경로 포함하도록 확장 가능)\n event,\n })\n }\n}\n\n/**\n * 스타일 프리셋\n */\nconst STYLE_PRESETS: Record<StyleType, {\n itemClass: string\n labelClass: string\n iconSize: 'sm' | 'md'\n}> = {\n default: {\n itemClass: 'flex items-center gap-1.5 py-1 rounded-md cursor-pointer transition-colors group',\n labelClass: 'flex-1 truncate text-xs',\n iconSize: 'sm',\n },\n minimal: {\n itemClass: 'flex items-center gap-1 py-1 rounded-md cursor-pointer transition-colors group',\n labelClass: 'flex-1 truncate text-xs',\n iconSize: 'sm', // JIcon은 'xs'를 지원하지 않으므로 'sm' 사용\n },\n}\n\nconst preset = computed(() => {\n return STYLE_PRESETS[props.styletype] ?? STYLE_PRESETS.default\n})\n\n/**\n * Chevron 아이콘 컴포넌트\n */\nconst ChevronIcon = computed(() => {\n return isExpanded.value ? 'chevronDown' : 'chevronRight'\n})\n\n/**\n * 하위 메뉴 갯수 계산 (재귀적으로 모든 하위 메뉴 포함)\n * 폴더 타입인 경우에만 표시\n */\nconst childrenCount = computed(() => {\n if (!isFolder.value || !Array.isArray(props.item.children)) {\n return 0\n }\n \n const countChildren = (items: SidebarMenuItem[]): number => {\n let count = 0\n for (const item of items) {\n count++ // 현재 아이템 카운트\n if (Array.isArray(item.children) && item.children.length > 0) {\n count += countChildren(item.children) // 재귀적으로 하위 메뉴 카운트\n }\n }\n return count\n }\n \n return countChildren(props.item.children)\n})\n</script>\n\n<template>\n <div :class=\"cn('w-full', className)\">\n <!-- 메뉴 아이템 -->\n <div\n :class=\"cn(\n preset.itemClass,\n {\n 'bg-primary/5 text-primary border-l-2 border-primary shadow-sm': isActive,\n 'hover:bg-accent/50': !isDisabled && !isActive,\n 'opacity-50 cursor-not-allowed': isDisabled,\n 'font-medium': isActive,\n 'font-semibold': isFolder, // 폴더인 경우 볼드체\n }\n )\"\n :style=\"indentStyle\"\n @click=\"handleMenuClick\"\n >\n <!-- Chevron 아이콘 (폴더 타입만, 덜 굵게) -->\n <JIcon\n v-if=\"isFolder\"\n :name=\"ChevronIcon\"\n :size=\"preset.iconSize\"\n class=\"flex-shrink-0 opacity-60\"\n style=\"stroke-width: 1.5;\"\n />\n <span v-else class=\"w-4 flex-shrink-0\" /> <!-- 폴더가 아닐 때 공간 확보 -->\n\n <!-- 메뉴 아이콘 (폴더가 아닌 경우만 표시) -->\n <JIcon\n v-if=\"item.icon && !isFolder\"\n :name=\"item.icon\"\n :size=\"preset.iconSize\"\n class=\"flex-shrink-0\"\n />\n\n <!-- 메뉴 라벨 -->\n <span :class=\"preset.labelClass\">{{ item.label }}</span>\n \n <!-- 하위 메뉴 갯수 (폴더인 경우만) -->\n <span\n v-if=\"isFolder && childrenCount > 0\"\n :class=\"cn(\n 'text-muted-foreground ml-1 flex-shrink-0',\n props.styletype === 'minimal' ? 'text-[10px]' : 'text-xs'\n )\"\n >\n ({{ childrenCount }})\n </span>\n \n <!-- 즐겨찾기 버튼 (menuType이 L인 경우만) -->\n <button\n v-if=\"item.menuKey && item.menuType === 'L' && onFavoriteToggle\"\n :class=\"cn(\n 'opacity-0 group-hover:opacity-100 transition-opacity hover:bg-accent rounded flex-shrink-0',\n props.styletype === 'minimal' ? 'p-0.5' : 'p-1',\n isFavorite && isFavorite(item.menuKey) && 'opacity-100'\n )\"\n @click.stop=\"onFavoriteToggle(item.menuKey)\"\n >\n <JIcon\n :name=\"isFavorite && isFavorite(item.menuKey) ? 'star' : 'star'\"\n :size=\"preset.iconSize\"\n :class=\"isFavorite && isFavorite(item.menuKey) ? 'text-yellow-500 fill-yellow-500' : 'text-muted-foreground'\"\n />\n </button>\n </div>\n\n <!-- 하위 메뉴 (폴더 타입이고 확장된 경우) -->\n <!-- 깊이 제한 체크: maxDepth를 초과하지 않는 경우에만 렌더링 -->\n <div\n v-if=\"isFolder && isExpanded && item.children && Array.isArray(item.children) && item.children.length > 0 && (level + 1) < maxDepth\"\n class=\"border-l border-border/60 ml-[14px] pl-[6px]\"\n >\n <JDynamicMenuItem\n v-for=\"(child, index) in item.children\"\n :key=\"child.menuKey || child.label || index\"\n :item=\"child\"\n :level=\"level + 1\"\n :max-depth=\"maxDepth\"\n :permissions=\"permissions\"\n :active-path=\"activePath\"\n :expanded-keys=\"expandedKeys\"\n :favorites=\"favorites\"\n :on-favorite-toggle=\"onFavoriteToggle\"\n :is-favorite=\"isFavorite\"\n :styletype=\"styletype\"\n :disable-navigation=\"disableNavigation\"\n :active-key=\"activeKey\"\n @menu-click=\"emit('menuClick', $event)\"\n @expand-change=\"(menuKey, expanded) => emit('expandChange', menuKey, expanded)\"\n />\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","router","useRouter","checkPermission","computed","hasMenuPermission","isActive","isFolder","isExpanded","key","isDisabled","indentStyle","handleMenuClick","event","newExpanded","STYLE_PRESETS","preset","ChevronIcon","childrenCount","countChildren","items","count","item","_createElementBlock","_normalizeClass","_unref","cn","_createElementVNode","_createBlock","JIcon","_openBlock","_hoisted_1","_toDisplayString","_cache","_withModifiers","$event","_createVNode","_hoisted_2","_Fragment","child","index","_component_JDynamicMenuItem","menuKey","expanded"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("../../lib/utils.cjs"),n=e.defineComponent({__name:"Card",props:{class:{}},setup(r){const s=r;return(o,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(t.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",s.class))},[e.renderSlot(o.$slots,"default")],2))}});exports.default=n;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("../../lib/utils.cjs"),n=e.defineComponent({__name:"Card",props:{class:{}},setup(r){const s=r;return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(t.cn)("rounded-sm border bg-card text-card-foreground shadow-sm",s.class))},[e.renderSlot(o.$slots,"default")],2))}});exports.default=n;
2
2
  //# sourceMappingURL=Card.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.vue.cjs","sources":["../../../../src/components/shadcn/Card.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { HTMLAttributes } from \"vue\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n class?: HTMLAttributes[\"class\"]\r\n}>()\r\n</script>\r\n\r\n<template>\r\n <div\r\n :class=\"\r\n cn(\r\n 'rounded-lg border bg-card text-card-foreground shadow-sm',\r\n props.class,\r\n )\r\n \"\r\n >\r\n <slot />\r\n </div>\r\n</template>\r\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":"iOAIA,MAAMA,EAAQC,8BAMZC,EAAAA,mBASM,MAAA,CARH,MAAKC,EAAAA,eAAUC,EAAAA,MAAAC,EAAAA,EAAA,6DAAkFL,EAAM,KAAA,KAOxGM,aAAQC,EAAA,OAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"Card.vue.cjs","sources":["../../../../src/components/shadcn/Card.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n class?: HTMLAttributes[\"class\"]\n}>()\n</script>\n\n<template>\n <div\n :class=\"\n cn(\n 'rounded-sm border bg-card text-card-foreground shadow-sm',\n props.class,\n )\n \"\n >\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":"iOAIA,MAAMA,EAAQC,8BAMZC,EAAAA,mBASM,MAAA,CARH,MAAKC,EAAAA,eAASC,EAAAA,MAAAC,EAAAA,EAAA,6DAAgFL,EAAM,KAAA,KAOrGM,aAAQC,EAAA,OAAA,SAAA,CAAA"}
@@ -10,7 +10,7 @@ const u = /* @__PURE__ */ s({
10
10
  return (o, m) => (t(), n("div", {
11
11
  class: a(
12
12
  c(l)(
13
- "rounded-lg border bg-card text-card-foreground shadow-sm",
13
+ "rounded-sm border bg-card text-card-foreground shadow-sm",
14
14
  r.class
15
15
  )
16
16
  )
@@ -1 +1 @@
1
- {"version":3,"file":"Card.vue.js","sources":["../../../../src/components/shadcn/Card.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { HTMLAttributes } from \"vue\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n class?: HTMLAttributes[\"class\"]\r\n}>()\r\n</script>\r\n\r\n<template>\r\n <div\r\n :class=\"\r\n cn(\r\n 'rounded-lg border bg-card text-card-foreground shadow-sm',\r\n props.class,\r\n )\r\n \"\r\n >\r\n <slot />\r\n </div>\r\n</template>\r\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;AAIA,UAAMA,IAAQC;2BAMZC,EASM,OAAA;AAAA,MARH,OAAKC;AAAAA,QAAUC,EAAAC,CAAA;AAAA;UAAkFL,EAAM;AAAA,QAAA;AAAA;;MAOxGM,EAAQC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"Card.vue.js","sources":["../../../../src/components/shadcn/Card.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n class?: HTMLAttributes[\"class\"]\n}>()\n</script>\n\n<template>\n <div\n :class=\"\n cn(\n 'rounded-sm border bg-card text-card-foreground shadow-sm',\n props.class,\n )\n \"\n >\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;AAIA,UAAMA,IAAQC;2BAMZC,EASM,OAAA;AAAA,MARH,OAAKC;AAAAA,QAASC,EAAAC,CAAA;AAAA;UAAgFL,EAAM;AAAA,QAAA;AAAA;;MAOrGM,EAAQC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("../../lib/utils.cjs"),o=e.defineComponent({__name:"CardContent",props:{class:{}},setup(t){const s=t;return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(r.cn)("p-3 pt-0",s.class))},[e.renderSlot(n.$slots,"default")],2))}});exports.default=o;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("../../lib/utils.cjs"),o=e.defineComponent({__name:"CardContent",props:{class:{}},setup(t){const s=t;return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(r.cn)("p-3 pt-2 pb-2",s.class))},[e.renderSlot(n.$slots,"default")],2))}});exports.default=o;
2
2
  //# sourceMappingURL=CardContent.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardContent.vue.cjs","sources":["../../../../src/components/shadcn/CardContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { HTMLAttributes } from \"vue\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n class?: HTMLAttributes[\"class\"]\r\n}>()\r\n</script>\r\n\r\n<template>\n <div :class=\"cn('p-3 pt-0', props.class)\">\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":"wOAIA,MAAMA,EAAQC,8BAMZC,EAAAA,mBAEM,MAAA,CAFA,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAE,WAAaL,EAAM,KAAK,CAAA,CAAA,GACrCM,aAAQC,EAAA,OAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"CardContent.vue.cjs","sources":["../../../../src/components/shadcn/CardContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n class?: HTMLAttributes[\"class\"]\n}>()\n</script>\n\n<template>\n <div :class=\"cn('p-3 pt-2 pb-2', props.class)\">\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":"wOAIA,MAAMA,EAAQC,8BAMZC,EAAAA,mBAEM,MAAA,CAFA,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAE,gBAAkBL,EAAM,KAAK,CAAA,CAAA,GAC1CM,aAAQC,EAAA,OAAA,SAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { defineComponent as n, createElementBlock as r, openBlock as s, normalizeClass as a, unref as c, renderSlot as l } from "vue";
2
- import { cn as p } from "../../lib/utils.js";
1
+ import { defineComponent as n, createElementBlock as r, openBlock as s, normalizeClass as a, unref as p, renderSlot as c } from "vue";
2
+ import { cn as l } from "../../lib/utils.js";
3
3
  const i = /* @__PURE__ */ n({
4
4
  __name: "CardContent",
5
5
  props: {
@@ -8,9 +8,9 @@ const i = /* @__PURE__ */ n({
8
8
  setup(e) {
9
9
  const o = e;
10
10
  return (t, m) => (s(), r("div", {
11
- class: a(c(p)("p-3 pt-0", o.class))
11
+ class: a(p(l)("p-3 pt-2 pb-2", o.class))
12
12
  }, [
13
- l(t.$slots, "default")
13
+ c(t.$slots, "default")
14
14
  ], 2));
15
15
  }
16
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CardContent.vue.js","sources":["../../../../src/components/shadcn/CardContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { HTMLAttributes } from \"vue\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n class?: HTMLAttributes[\"class\"]\r\n}>()\r\n</script>\r\n\r\n<template>\n <div :class=\"cn('p-3 pt-0', props.class)\">\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;AAIA,UAAMA,IAAQC;2BAMZC,EAEM,OAAA;AAAA,MAFA,OAAKC,EAAEC,EAAAC,CAAA,EAAE,YAAaL,EAAM,KAAK,CAAA;AAAA,IAAA;MACrCM,EAAQC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"CardContent.vue.js","sources":["../../../../src/components/shadcn/CardContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n class?: HTMLAttributes[\"class\"]\n}>()\n</script>\n\n<template>\n <div :class=\"cn('p-3 pt-2 pb-2', props.class)\">\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;AAIA,UAAMA,IAAQC;2BAMZC,EAEM,OAAA;AAAA,MAFA,OAAKC,EAAEC,EAAAC,CAAA,EAAE,iBAAkBL,EAAM,KAAK,CAAA;AAAA,IAAA;MAC1CM,EAAQC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("../../lib/utils.cjs"),l=e.defineComponent({__name:"CardHeader",props:{class:{}},setup(r){const o=r;return(s,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(t.cn)("flex flex-col gap-y-2 p-3 border-b border-border bg-muted/60 dark:bg-[hsl(var(--border))]",o.class))},[e.renderSlot(s.$slots,"default")],2))}});exports.default=l;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("../../lib/utils.cjs"),l=e.defineComponent({__name:"CardHeader",props:{class:{}},setup(r){const o=r;return(s,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(t.cn)("flex flex-col gap-y-2 p-3 pt-2 pb-2 border-b border-border bg-muted/60 dark:bg-[hsl(var(--border))]",o.class))},[e.renderSlot(s.$slots,"default")],2))}});exports.default=l;
2
2
  //# sourceMappingURL=CardHeader.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardHeader.vue.cjs","sources":["../../../../src/components/shadcn/CardHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { HTMLAttributes } from \"vue\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n class?: HTMLAttributes[\"class\"]\r\n}>()\r\n</script>\r\n\r\n<template>\n <div :class=\"cn('flex flex-col gap-y-2 p-3 border-b border-border bg-muted/60 dark:bg-[hsl(var(--border))]', props.class)\">\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":"uOAIA,MAAMA,EAAQC,8BAMZC,EAAAA,mBAEM,MAAA,CAFA,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAE,4FAA8FL,EAAM,KAAK,CAAA,CAAA,GACtHM,aAAQC,EAAA,OAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"CardHeader.vue.cjs","sources":["../../../../src/components/shadcn/CardHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n class?: HTMLAttributes[\"class\"]\n}>()\n</script>\n\n<template>\n <div :class=\"cn('flex flex-col gap-y-2 p-3 pt-2 pb-2 border-b border-border bg-muted/60 dark:bg-[hsl(var(--border))]', props.class)\">\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":"uOAIA,MAAMA,EAAQC,8BAMZC,EAAAA,mBAEM,MAAA,CAFA,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAE,sGAAwGL,EAAM,KAAK,CAAA,CAAA,GAChIM,aAAQC,EAAA,OAAA,SAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { defineComponent as s, createElementBlock as a, openBlock as l, normalizeClass as t, unref as n, renderSlot as c } from "vue";
2
- import { cn as d } from "../../lib/utils.js";
1
+ import { defineComponent as s, createElementBlock as a, openBlock as t, normalizeClass as l, unref as n, renderSlot as p } from "vue";
2
+ import { cn as c } from "../../lib/utils.js";
3
3
  const b = /* @__PURE__ */ s({
4
4
  __name: "CardHeader",
5
5
  props: {
@@ -7,10 +7,10 @@ const b = /* @__PURE__ */ s({
7
7
  },
8
8
  setup(e) {
9
9
  const r = e;
10
- return (o, p) => (l(), a("div", {
11
- class: t(n(d)("flex flex-col gap-y-2 p-3 border-b border-border bg-muted/60 dark:bg-[hsl(var(--border))]", r.class))
10
+ return (o, d) => (t(), a("div", {
11
+ class: l(n(c)("flex flex-col gap-y-2 p-3 pt-2 pb-2 border-b border-border bg-muted/60 dark:bg-[hsl(var(--border))]", r.class))
12
12
  }, [
13
- c(o.$slots, "default")
13
+ p(o.$slots, "default")
14
14
  ], 2));
15
15
  }
16
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CardHeader.vue.js","sources":["../../../../src/components/shadcn/CardHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { HTMLAttributes } from \"vue\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n class?: HTMLAttributes[\"class\"]\r\n}>()\r\n</script>\r\n\r\n<template>\n <div :class=\"cn('flex flex-col gap-y-2 p-3 border-b border-border bg-muted/60 dark:bg-[hsl(var(--border))]', props.class)\">\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;AAIA,UAAMA,IAAQC;2BAMZC,EAEM,OAAA;AAAA,MAFA,OAAKC,EAAEC,EAAAC,CAAA,EAAE,6FAA8FL,EAAM,KAAK,CAAA;AAAA,IAAA;MACtHM,EAAQC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"CardHeader.vue.js","sources":["../../../../src/components/shadcn/CardHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n class?: HTMLAttributes[\"class\"]\n}>()\n</script>\n\n<template>\n <div :class=\"cn('flex flex-col gap-y-2 p-3 pt-2 pb-2 border-b border-border bg-muted/60 dark:bg-[hsl(var(--border))]', props.class)\">\n <slot />\n </div>\n</template>\n"],"names":["props","__props","_createElementBlock","_normalizeClass","_unref","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;AAIA,UAAMA,IAAQC;2BAMZC,EAEM,OAAA;AAAA,MAFA,OAAKC,EAAEC,EAAAC,CAAA,EAAE,uGAAwGL,EAAM,KAAK,CAAA;AAAA,IAAA;MAChIM,EAAQC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),i=require("@vueuse/core"),a=require("../../lib/utils.cjs"),d=e.defineComponent({__name:"Input",props:{defaultValue:{},modelValue:{},class:{}},emits:["update:modelValue"],setup(u,{emit:r}){const l=u,s=r,t=i.useVModel(l,"modelValue",s,{passive:!0,defaultValue:l.defaultValue});return(f,o)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{"onUpdate:modelValue":o[0]||(o[0]=n=>e.isRef(t)?t.value=n:null),class:e.normalizeClass(e.unref(a.cn)("flex h-8 w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-foreground file:text-xs file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",l.class))},null,2)),[[e.vModelText,e.unref(t)]])}});exports.default=d;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),i=require("@vueuse/core"),a=require("../../lib/utils.cjs"),d=e.defineComponent({__name:"Input",props:{defaultValue:{},modelValue:{},class:{}},emits:["update:modelValue"],setup(u,{emit:s}){const l=u,r=s,t=i.useVModel(l,"modelValue",r,{passive:!0,defaultValue:l.defaultValue});return(f,o)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",{"onUpdate:modelValue":o[0]||(o[0]=n=>e.isRef(t)?t.value=n:null),class:e.normalizeClass(e.unref(a.cn)("flex h-8 w-full rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-foreground file:text-xs file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",l.class))},null,2)),[[e.vModelText,e.unref(t)]])}});exports.default=d;
2
2
  //# sourceMappingURL=Input.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.vue.cjs","sources":["../../../../src/components/shadcn/Input.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\r\nimport { useVModel } from \"@vueuse/core\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n defaultValue?: string | number\r\n modelValue?: string | number\r\n class?: HTMLAttributes[\"class\"]\r\n}>()\r\n\r\nconst emits = defineEmits<{\r\n (e: \"update:modelValue\", payload: string | number): void\r\n}>()\r\n\r\nconst modelValue = useVModel(props, \"modelValue\", emits, {\r\n passive: true,\r\n defaultValue: props.defaultValue,\r\n})\n</script>\n\n<template>\n <input v-model=\"modelValue\" :class=\"cn('flex h-8 w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-foreground file:text-xs file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)\">\n</template>\n"],"names":["props","__props","emits","__emit","modelValue","useVModel","_createElementBlock","$event","_normalizeClass","_unref","cn"],"mappings":"+TAKA,MAAMA,EAAQC,EAMRC,EAAQC,EAIRC,EAAaC,EAAAA,UAAUL,EAAO,aAAcE,EAAO,CACvD,QAAS,GACT,aAAcF,EAAM,YAAA,CACrB,+CAICM,EAAAA,mBAA6a,QAAA,iDAA7ZF,EAAU,MAAAG,EAAA,MAAG,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAE,uXAAyXV,EAAM,KAAK,CAAA,CAAA,0BAA1ZS,EAAAA,MAAAL,CAAA,CAAU,CAAA"}
1
+ {"version":3,"file":"Input.vue.cjs","sources":["../../../../src/components/shadcn/Input.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { useVModel } from \"@vueuse/core\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n defaultValue?: string | number\n modelValue?: string | number\n class?: HTMLAttributes[\"class\"]\n}>()\n\nconst emits = defineEmits<{\n (e: \"update:modelValue\", payload: string | number): void\n}>()\n\nconst modelValue = useVModel(props, \"modelValue\", emits, {\n passive: true,\n defaultValue: props.defaultValue,\n})\n</script>\n\n<template>\n <input v-model=\"modelValue\" :class=\"cn('flex h-8 w-full rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-foreground file:text-xs file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)\">\n</template>\n"],"names":["props","__props","emits","__emit","modelValue","useVModel","_createElementBlock","$event","_normalizeClass","_unref","cn"],"mappings":"+TAKA,MAAMA,EAAQC,EAMRC,EAAQC,EAIRC,EAAaC,EAAAA,UAAUL,EAAO,aAAcE,EAAO,CACvD,QAAS,GACT,aAAcF,EAAM,YAAA,CACrB,+CAICM,EAAAA,mBAA6a,QAAA,iDAA7ZF,EAAU,MAAAG,EAAA,MAAG,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAE,uXAAyXV,EAAM,KAAK,CAAA,CAAA,0BAA1ZS,EAAAA,MAAAL,CAAA,CAAU,CAAA"}
@@ -9,14 +9,14 @@ const _ = /* @__PURE__ */ n({
9
9
  class: {}
10
10
  },
11
11
  emits: ["update:modelValue"],
12
- setup(r, { emit: s }) {
13
- const e = r, l = c(e, "modelValue", s, {
12
+ setup(s, { emit: r }) {
13
+ const e = s, l = c(e, "modelValue", r, {
14
14
  passive: !0,
15
15
  defaultValue: e.defaultValue
16
16
  });
17
17
  return (x, o) => u((d(), a("input", {
18
18
  "onUpdate:modelValue": o[0] || (o[0] = (i) => m(l) ? l.value = i : null),
19
- class: f(t(b)("flex h-8 w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-foreground file:text-xs file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", e.class))
19
+ class: f(t(b)("flex h-8 w-full rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-foreground file:text-xs file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", e.class))
20
20
  }, null, 2)), [
21
21
  [p, t(l)]
22
22
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"Input.vue.js","sources":["../../../../src/components/shadcn/Input.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\r\nimport { useVModel } from \"@vueuse/core\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n defaultValue?: string | number\r\n modelValue?: string | number\r\n class?: HTMLAttributes[\"class\"]\r\n}>()\r\n\r\nconst emits = defineEmits<{\r\n (e: \"update:modelValue\", payload: string | number): void\r\n}>()\r\n\r\nconst modelValue = useVModel(props, \"modelValue\", emits, {\r\n passive: true,\r\n defaultValue: props.defaultValue,\r\n})\n</script>\n\n<template>\n <input v-model=\"modelValue\" :class=\"cn('flex h-8 w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-foreground file:text-xs file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)\">\n</template>\n"],"names":["props","__props","modelValue","useVModel","__emit","_createElementBlock","$event","_normalizeClass","_unref","cn"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAURC,IAAaC,EAAUH,GAAO,cAJtBI,GAI2C;AAAA,MACvD,SAAS;AAAA,MACT,cAAcJ,EAAM;AAAA,IAAA,CACrB;6BAICK,EAA6a,SAAA;AAAA,2DAA7ZH,EAAU,QAAAI,IAAA;AAAA,MAAG,OAAKC,EAAEC,EAAAC,CAAA,EAAE,wXAAyXT,EAAM,KAAK,CAAA;AAAA,IAAA;UAA1ZQ,EAAAN,CAAA,CAAU;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"Input.vue.js","sources":["../../../../src/components/shadcn/Input.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { useVModel } from \"@vueuse/core\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n defaultValue?: string | number\n modelValue?: string | number\n class?: HTMLAttributes[\"class\"]\n}>()\n\nconst emits = defineEmits<{\n (e: \"update:modelValue\", payload: string | number): void\n}>()\n\nconst modelValue = useVModel(props, \"modelValue\", emits, {\n passive: true,\n defaultValue: props.defaultValue,\n})\n</script>\n\n<template>\n <input v-model=\"modelValue\" :class=\"cn('flex h-8 w-full rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-foreground file:text-xs file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)\">\n</template>\n"],"names":["props","__props","modelValue","useVModel","__emit","_createElementBlock","$event","_normalizeClass","_unref","cn"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAURC,IAAaC,EAAUH,GAAO,cAJtBI,GAI2C;AAAA,MACvD,SAAS;AAAA,MACT,cAAcJ,EAAM;AAAA,IAAA,CACrB;6BAICK,EAA6a,SAAA;AAAA,2DAA7ZH,EAAU,QAAAI,IAAA;AAAA,MAAG,OAAKC,EAAEC,EAAAC,CAAA,EAAE,wXAAyXT,EAAM,KAAK,CAAA;AAAA,IAAA;UAA1ZQ,EAAAN,CAAA,CAAU;AAAA,IAAA;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),a=require("@vueuse/core"),u=require("lucide-vue-next"),r=require("reka-ui"),l=require("../../lib/utils.cjs"),d=e.defineComponent({__name:"SelectTrigger",props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{}},setup(o){const t=o,s=a.reactiveOmit(t,"class"),n=r.useForwardProps(s);return(c,i)=>(e.openBlock(),e.createBlock(e.unref(r.SelectTrigger),e.mergeProps(e.unref(n),{class:e.unref(l.cn)("flex h-8 w-full items-center justify-between rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start",t.class)}),{default:e.withCtx(()=>[e.renderSlot(c.$slots,"default"),e.createVNode(e.unref(r.SelectIcon),{"as-child":""},{default:e.withCtx(()=>[e.createVNode(e.unref(u.ChevronDown),{class:"w-3.5 h-3.5 opacity-50 shrink-0"})]),_:1})]),_:3},16,["class"]))}});exports.default=d;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),a=require("@vueuse/core"),u=require("lucide-vue-next"),r=require("reka-ui"),l=require("../../lib/utils.cjs"),i=e.defineComponent({__name:"SelectTrigger",props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{}},setup(o){const t=o,s=a.reactiveOmit(t,"class"),n=r.useForwardProps(s);return(c,d)=>(e.openBlock(),e.createBlock(e.unref(r.SelectTrigger),e.mergeProps(e.unref(n),{class:e.unref(l.cn)("flex h-8 w-full items-center justify-between rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start",t.class)}),{default:e.withCtx(()=>[e.renderSlot(c.$slots,"default"),e.createVNode(e.unref(r.SelectIcon),{"as-child":""},{default:e.withCtx(()=>[e.createVNode(e.unref(u.ChevronDown),{class:"w-3.5 h-3.5 opacity-50 shrink-0"})]),_:1})]),_:3},16,["class"]))}});exports.default=i;
2
2
  //# sourceMappingURL=SelectTrigger.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTrigger.vue.cjs","sources":["../../../../src/components/shadcn/SelectTrigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { SelectTriggerProps } from \"reka-ui\"\r\nimport type { HTMLAttributes } from \"vue\"\r\nimport { reactiveOmit } from \"@vueuse/core\"\r\nimport { ChevronDown } from \"lucide-vue-next\"\r\nimport { SelectIcon, SelectTrigger, useForwardProps } from \"reka-ui\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<SelectTriggerProps & { class?: HTMLAttributes[\"class\"] }>()\r\n\r\nconst delegatedProps = reactiveOmit(props, \"class\")\r\n\r\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n <SelectTrigger\n v-bind=\"forwardedProps\"\n :class=\"cn(\n 'flex h-8 w-full items-center justify-between rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start',\n props.class,\n )\"\n >\n <slot />\n <SelectIcon as-child>\n <ChevronDown class=\"w-3.5 h-3.5 opacity-50 shrink-0\" />\n </SelectIcon>\n </SelectTrigger>\n</template>\n"],"names":["props","__props","delegatedProps","reactiveOmit","forwardedProps","useForwardProps","_createBlock","_unref","SelectTrigger","_mergeProps","cn","_renderSlot","_ctx","_createVNode","SelectIcon","ChevronDown"],"mappings":"wXAQA,MAAMA,EAAQC,EAERC,EAAiBC,EAAAA,aAAaH,EAAO,OAAO,EAE5CI,EAAiBC,EAAAA,gBAAgBH,CAAc,8BAInDI,EAAAA,YAWgBC,EAAAA,MAAAC,EAAAA,aAAA,EAXhBC,EAAAA,WAWgBF,QAAAH,CAAA,EAVQ,CACrB,MAAOG,EAAAA,MAAAG,IAAA,qUAAoVV,EAAM,KAAA,uBAKlW,IAAQ,CAARW,aAAQC,EAAA,OAAA,SAAA,EACRC,EAAAA,YAEaN,EAAAA,MAAAO,EAAAA,UAAA,EAAA,CAFD,WAAA,IAAQ,mBAClB,IAAuD,CAAvDD,EAAAA,YAAuDN,EAAAA,MAAAQ,EAAAA,WAAA,EAAA,CAA1C,MAAM,kCAAiC,CAAA"}
1
+ {"version":3,"file":"SelectTrigger.vue.cjs","sources":["../../../../src/components/shadcn/SelectTrigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { SelectTriggerProps } from \"reka-ui\"\nimport type { HTMLAttributes } from \"vue\"\nimport { reactiveOmit } from \"@vueuse/core\"\nimport { ChevronDown } from \"lucide-vue-next\"\nimport { SelectIcon, SelectTrigger, useForwardProps } from \"reka-ui\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<SelectTriggerProps & { class?: HTMLAttributes[\"class\"] }>()\n\nconst delegatedProps = reactiveOmit(props, \"class\")\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n <SelectTrigger\n v-bind=\"forwardedProps\"\n :class=\"cn(\n 'flex h-8 w-full items-center justify-between rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start',\n props.class,\n )\"\n >\n <slot />\n <SelectIcon as-child>\n <ChevronDown class=\"w-3.5 h-3.5 opacity-50 shrink-0\" />\n </SelectIcon>\n </SelectTrigger>\n</template>\n"],"names":["props","__props","delegatedProps","reactiveOmit","forwardedProps","useForwardProps","_createBlock","_unref","SelectTrigger","_mergeProps","cn","_renderSlot","_ctx","_createVNode","SelectIcon","ChevronDown"],"mappings":"wXAQA,MAAMA,EAAQC,EAERC,EAAiBC,EAAAA,aAAaH,EAAO,OAAO,EAE5CI,EAAiBC,EAAAA,gBAAgBH,CAAc,8BAInDI,EAAAA,YAWgBC,EAAAA,MAAAC,EAAAA,aAAA,EAXhBC,EAAAA,WAWgBF,QAAAH,CAAA,EAVQ,CACrB,MAAOG,EAAAA,MAAAG,IAAA,qUAAoVV,EAAM,KAAA,uBAKlW,IAAQ,CAARW,aAAQC,EAAA,OAAA,SAAA,EACRC,EAAAA,YAEaN,EAAAA,MAAAO,EAAAA,UAAA,EAAA,CAFD,WAAA,IAAQ,mBAClB,IAAuD,CAAvDD,EAAAA,YAAuDN,EAAAA,MAAAQ,EAAAA,WAAA,EAAA,CAA1C,MAAM,kCAAiC,CAAA"}
@@ -16,7 +16,7 @@ const P = /* @__PURE__ */ l({
16
16
  const r = s, n = u(r, "class"), a = g(n);
17
17
  return (c, x) => (i(), d(e(b), f(e(a), {
18
18
  class: e(w)(
19
- "flex h-8 w-full items-center justify-between rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start",
19
+ "flex h-8 w-full items-center justify-between rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start",
20
20
  r.class
21
21
  )
22
22
  }), {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTrigger.vue.js","sources":["../../../../src/components/shadcn/SelectTrigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { SelectTriggerProps } from \"reka-ui\"\r\nimport type { HTMLAttributes } from \"vue\"\r\nimport { reactiveOmit } from \"@vueuse/core\"\r\nimport { ChevronDown } from \"lucide-vue-next\"\r\nimport { SelectIcon, SelectTrigger, useForwardProps } from \"reka-ui\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<SelectTriggerProps & { class?: HTMLAttributes[\"class\"] }>()\r\n\r\nconst delegatedProps = reactiveOmit(props, \"class\")\r\n\r\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n <SelectTrigger\n v-bind=\"forwardedProps\"\n :class=\"cn(\n 'flex h-8 w-full items-center justify-between rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start',\n props.class,\n )\"\n >\n <slot />\n <SelectIcon as-child>\n <ChevronDown class=\"w-3.5 h-3.5 opacity-50 shrink-0\" />\n </SelectIcon>\n </SelectTrigger>\n</template>\n"],"names":["props","__props","delegatedProps","reactiveOmit","forwardedProps","useForwardProps","_createBlock","_unref","SelectTrigger","_mergeProps","cn","_renderSlot","_ctx","_createVNode","SelectIcon","ChevronDown"],"mappings":";;;;;;;;;;;;;;;AAQA,UAAMA,IAAQC,GAERC,IAAiBC,EAAaH,GAAO,OAAO,GAE5CI,IAAiBC,EAAgBH,CAAc;2BAInDI,EAWgBC,EAAAC,CAAA,GAXhBC,EAWgBF,EAAAH,CAAA,GAVQ;AAAA,MACrB,OAAOG,EAAAG,CAAA;AAAA;QAAoVV,EAAM;AAAA,MAAA;AAAA;iBAKlW,MAAQ;AAAA,QAARW,EAAQC,EAAA,QAAA,SAAA;AAAA,QACRC,EAEaN,EAAAO,CAAA,GAAA,EAFD,YAAA,MAAQ;AAAA,qBAClB,MAAuD;AAAA,YAAvDD,EAAuDN,EAAAQ,CAAA,GAAA,EAA1C,OAAM,mCAAiC;AAAA,UAAA;;;;;;;;"}
1
+ {"version":3,"file":"SelectTrigger.vue.js","sources":["../../../../src/components/shadcn/SelectTrigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { SelectTriggerProps } from \"reka-ui\"\nimport type { HTMLAttributes } from \"vue\"\nimport { reactiveOmit } from \"@vueuse/core\"\nimport { ChevronDown } from \"lucide-vue-next\"\nimport { SelectIcon, SelectTrigger, useForwardProps } from \"reka-ui\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<SelectTriggerProps & { class?: HTMLAttributes[\"class\"] }>()\n\nconst delegatedProps = reactiveOmit(props, \"class\")\n\nconst forwardedProps = useForwardProps(delegatedProps)\n</script>\n\n<template>\n <SelectTrigger\n v-bind=\"forwardedProps\"\n :class=\"cn(\n 'flex h-8 w-full items-center justify-between rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start',\n props.class,\n )\"\n >\n <slot />\n <SelectIcon as-child>\n <ChevronDown class=\"w-3.5 h-3.5 opacity-50 shrink-0\" />\n </SelectIcon>\n </SelectTrigger>\n</template>\n"],"names":["props","__props","delegatedProps","reactiveOmit","forwardedProps","useForwardProps","_createBlock","_unref","SelectTrigger","_mergeProps","cn","_renderSlot","_ctx","_createVNode","SelectIcon","ChevronDown"],"mappings":";;;;;;;;;;;;;;;AAQA,UAAMA,IAAQC,GAERC,IAAiBC,EAAaH,GAAO,OAAO,GAE5CI,IAAiBC,EAAgBH,CAAc;2BAInDI,EAWgBC,EAAAC,CAAA,GAXhBC,EAWgBF,EAAAH,CAAA,GAVQ;AAAA,MACrB,OAAOG,EAAAG,CAAA;AAAA;QAAoVV,EAAM;AAAA,MAAA;AAAA;iBAKlW,MAAQ;AAAA,QAARW,EAAQC,EAAA,QAAA,SAAA;AAAA,QACRC,EAEaN,EAAAO,CAAA,GAAA,EAFD,YAAA,MAAQ;AAAA,qBAClB,MAAuD;AAAA,YAAvDD,EAAuDN,EAAAQ,CAAA,GAAA,EAA1C,OAAM,mCAAiC;AAAA,UAAA;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("reka-ui"),i=require("@vueuse/core"),c=require("../../lib/utils.cjs"),u=e.defineComponent({__name:"TabsContent",props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(o){const s=o,t=i.reactiveOmit(s,"class");return(n,l)=>(e.openBlock(),e.createBlock(e.unref(r.TabsContent),e.mergeProps({class:e.unref(c.cn)("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",s.class)},e.unref(t)),{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},16,["class"]))}});exports.default=u;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("reka-ui"),i=require("@vueuse/core"),c=require("../../lib/utils.cjs"),u=e.defineComponent({__name:"TabsContent",props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(o){const s=o,t=i.reactiveOmit(s,"class");return(n,l)=>(e.openBlock(),e.createBlock(e.unref(r.TabsContent),e.mergeProps({class:e.unref(c.cn)("ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",s.class)},e.unref(t)),{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},16,["class"]))}});exports.default=u;
2
2
  //# sourceMappingURL=TabsContent.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabsContent.vue.cjs","sources":["../../../../src/components/shadcn/TabsContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { TabsContentProps } from 'reka-ui'\r\nimport type { HTMLAttributes } from 'vue'\r\nimport { TabsContent } from 'reka-ui'\r\nimport { reactiveOmit } from '@vueuse/core'\r\nimport { cn } from '@/lib/utils'\r\n\r\nconst props = defineProps<TabsContentProps & { class?: HTMLAttributes['class'] }>()\r\n\r\nconst delegatedProps = reactiveOmit(props, 'class')\r\n</script>\r\n\r\n<template>\r\n <TabsContent\r\n :class=\"\r\n cn(\r\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\r\n props.class\r\n )\r\n \"\r\n v-bind=\"delegatedProps\"\r\n >\r\n <slot />\r\n </TabsContent>\r\n</template>\r\n\r\n"],"names":["props","__props","delegatedProps","reactiveOmit","_openBlock","_createBlock","_unref","_mergeProps","cn","_renderSlot","_ctx"],"mappings":"uVAOA,MAAMA,EAAQC,EAERC,EAAiBC,EAAAA,aAAaH,EAAO,OAAO,gBAIhDI,EAAAA,YAAAC,EAAAA,YAUcC,EAAAA,qBAVdC,EAAAA,WAUc,CATX,MAAeD,EAAAA,MAAAE,IAAA,oIAAyJR,EAAM,KAAA,GAMvKM,EAAAA,MAAAJ,CAAA,CAAc,EAAA,mBAEtB,IAAQ,CAARO,aAAQC,EAAA,OAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"TabsContent.vue.cjs","sources":["../../../../src/components/shadcn/TabsContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { TabsContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { TabsContent } from 'reka-ui'\nimport { reactiveOmit } from '@vueuse/core'\nimport { cn } from '@/lib/utils'\n\nconst props = defineProps<TabsContentProps & { class?: HTMLAttributes['class'] }>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n <TabsContent\n :class=\"\n cn(\n 'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n props.class\n )\n \"\n v-bind=\"delegatedProps\"\n >\n <slot />\n </TabsContent>\n</template>\n\n"],"names":["props","__props","delegatedProps","reactiveOmit","_openBlock","_createBlock","_unref","_mergeProps","cn","_renderSlot","_ctx"],"mappings":"uVAOA,MAAMA,EAAQC,EAERC,EAAiBC,EAAAA,aAAaH,EAAO,OAAO,gBAIhDI,EAAAA,YAAAC,EAAAA,YAUcC,EAAAA,qBAVdC,EAAAA,WAUc,CATX,MAAcD,EAAAA,MAAAE,IAAA,+HAAkJR,EAAM,KAAA,GAM/JM,EAAAA,MAAAJ,CAAA,CAAc,EAAA,mBAEtB,IAAQ,CAARO,aAAQC,EAAA,OAAA,SAAA,CAAA"}
@@ -15,7 +15,7 @@ const C = /* @__PURE__ */ r({
15
15
  const o = s, t = u(o, "class");
16
16
  return (n, d) => (a(), i(e(p), c({
17
17
  class: e(m)(
18
- "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
18
+ "ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
19
19
  o.class
20
20
  )
21
21
  }, e(t)), {
@@ -1 +1 @@
1
- {"version":3,"file":"TabsContent.vue.js","sources":["../../../../src/components/shadcn/TabsContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { TabsContentProps } from 'reka-ui'\r\nimport type { HTMLAttributes } from 'vue'\r\nimport { TabsContent } from 'reka-ui'\r\nimport { reactiveOmit } from '@vueuse/core'\r\nimport { cn } from '@/lib/utils'\r\n\r\nconst props = defineProps<TabsContentProps & { class?: HTMLAttributes['class'] }>()\r\n\r\nconst delegatedProps = reactiveOmit(props, 'class')\r\n</script>\r\n\r\n<template>\r\n <TabsContent\r\n :class=\"\r\n cn(\r\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\r\n props.class\r\n )\r\n \"\r\n v-bind=\"delegatedProps\"\r\n >\r\n <slot />\r\n </TabsContent>\r\n</template>\r\n\r\n"],"names":["props","__props","delegatedProps","reactiveOmit","_openBlock","_createBlock","_unref","_mergeProps","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAERC,IAAiBC,EAAaH,GAAO,OAAO;sBAIhDI,KAAAC,EAUcC,MAVdC,EAUc;AAAA,MATX,OAAeD,EAAAE,CAAA;AAAA;QAAyJR,EAAM;AAAA,MAAA;AAAA,OAMvKM,EAAAJ,CAAA,CAAc,GAAA;AAAA,iBAEtB,MAAQ;AAAA,QAARO,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
1
+ {"version":3,"file":"TabsContent.vue.js","sources":["../../../../src/components/shadcn/TabsContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { TabsContentProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { TabsContent } from 'reka-ui'\nimport { reactiveOmit } from '@vueuse/core'\nimport { cn } from '@/lib/utils'\n\nconst props = defineProps<TabsContentProps & { class?: HTMLAttributes['class'] }>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n <TabsContent\n :class=\"\n cn(\n 'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n props.class\n )\n \"\n v-bind=\"delegatedProps\"\n >\n <slot />\n </TabsContent>\n</template>\n\n"],"names":["props","__props","delegatedProps","reactiveOmit","_openBlock","_createBlock","_unref","_mergeProps","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAERC,IAAiBC,EAAaH,GAAO,OAAO;sBAIhDI,KAAAC,EAUcC,MAVdC,EAUc;AAAA,MATX,OAAcD,EAAAE,CAAA;AAAA;QAAkJR,EAAM;AAAA,MAAA;AAAA,OAM/JM,EAAAJ,CAAA,CAAc,GAAA;AAAA,iBAEtB,MAAQ;AAAA,QAARO,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),n=require("reka-ui"),u=require("@vueuse/core"),c=require("../../lib/utils.cjs"),l=e.defineComponent({__name:"TabsList",props:{loop:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,r=u.reactiveOmit(t,"class");return(o,a)=>(e.openBlock(),e.createBlock(e.unref(n.TabsList),e.mergeProps({class:e.unref(c.cn)("inline-flex h-8 items-center justify-center rounded-md bg-muted p-0.5 text-xs text-muted-foreground",t.class)},e.unref(r)),{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},16,["class"]))}});exports.default=l;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),n=require("reka-ui"),a=require("@vueuse/core"),l=require("../../lib/utils.cjs"),u=e.defineComponent({__name:"TabsList",props:{loop:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(r){const t=r,s=a.reactiveOmit(t,"class");return(o,c)=>(e.openBlock(),e.createBlock(e.unref(n.TabsList),e.mergeProps({class:e.unref(l.cn)("inline-flex h-8 items-end justify-start bg-background border-b border-border text-xs text-muted-foreground",t.class)},e.unref(s)),{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},16,["class"]))}});exports.default=u;
2
2
  //# sourceMappingURL=TabsList.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabsList.vue.cjs","sources":["../../../../src/components/shadcn/TabsList.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { TabsListProps } from 'reka-ui'\r\nimport type { HTMLAttributes } from 'vue'\r\nimport { TabsList } from 'reka-ui'\r\nimport { reactiveOmit } from '@vueuse/core'\r\nimport { cn } from '@/lib/utils'\r\n\r\nconst props = defineProps<TabsListProps & { class?: HTMLAttributes['class'] }>()\r\n\r\nconst delegatedProps = reactiveOmit(props, 'class')\r\n</script>\r\n\r\n<template>\n <TabsList\n :class=\"\n cn(\n 'inline-flex h-8 items-center justify-center rounded-md bg-muted p-0.5 text-xs text-muted-foreground',\n props.class\n )\n \"\n v-bind=\"delegatedProps\"\n >\n <slot />\n </TabsList>\n</template>\n\r\n"],"names":["props","__props","delegatedProps","reactiveOmit","_openBlock","_createBlock","_unref","_mergeProps","cn","_renderSlot","_ctx"],"mappings":"qUAOA,MAAMA,EAAQC,EAERC,EAAiBC,EAAAA,aAAaH,EAAO,OAAO,gBAIhDI,EAAAA,YAAAC,EAAAA,YAUWC,EAAAA,kBAVXC,EAAAA,WAUW,CATR,MAAcD,EAAAA,MAAAE,IAAA,wGAA2HR,EAAM,KAAA,GAMxIM,EAAAA,MAAAJ,CAAA,CAAc,EAAA,mBAEtB,IAAQ,CAARO,aAAQC,EAAA,OAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"TabsList.vue.cjs","sources":["../../../../src/components/shadcn/TabsList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { TabsListProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { TabsList } from 'reka-ui'\nimport { reactiveOmit } from '@vueuse/core'\nimport { cn } from '@/lib/utils'\n\nconst props = defineProps<TabsListProps & { class?: HTMLAttributes['class'] }>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n <TabsList\n :class=\"\n cn(\n 'inline-flex h-8 items-end justify-start bg-background border-b border-border text-xs text-muted-foreground',\n props.class\n )\n \"\n v-bind=\"delegatedProps\"\n >\n <slot />\n </TabsList>\n</template>\n\n"],"names":["props","__props","delegatedProps","reactiveOmit","_openBlock","_createBlock","_unref","_mergeProps","cn","_renderSlot","_ctx"],"mappings":"qUAOA,MAAMA,EAAQC,EAERC,EAAiBC,EAAAA,aAAaH,EAAO,OAAO,gBAIhDI,EAAAA,YAAAC,EAAAA,YAUWC,EAAAA,kBAVXC,EAAAA,WAUW,CATR,MAAcD,EAAAA,MAAAE,IAAA,+GAAkIR,EAAM,KAAA,GAM/IM,EAAAA,MAAAJ,CAAA,CAAc,EAAA,mBAEtB,IAAQ,CAARO,aAAQC,EAAA,OAAA,SAAA,CAAA"}
@@ -1,8 +1,8 @@
1
- import { defineComponent as n, createBlock as a, openBlock as l, unref as e, mergeProps as c, withCtx as p, renderSlot as m } from "vue";
2
- import { TabsList as i } from "reka-ui";
3
- import { reactiveOmit as d } from "@vueuse/core";
1
+ import { defineComponent as a, createBlock as n, openBlock as l, unref as e, mergeProps as c, withCtx as p, renderSlot as i } from "vue";
2
+ import { TabsList as d } from "reka-ui";
3
+ import { reactiveOmit as m } from "@vueuse/core";
4
4
  import { cn as f } from "../../lib/utils.js";
5
- const B = /* @__PURE__ */ n({
5
+ const h = /* @__PURE__ */ a({
6
6
  __name: "TabsList",
7
7
  props: {
8
8
  loop: { type: Boolean },
@@ -11,21 +11,21 @@ const B = /* @__PURE__ */ n({
11
11
  class: {}
12
12
  },
13
13
  setup(o) {
14
- const t = o, s = d(t, "class");
15
- return (r, u) => (l(), a(e(i), c({
14
+ const t = o, r = m(t, "class");
15
+ return (s, u) => (l(), n(e(d), c({
16
16
  class: e(f)(
17
- "inline-flex h-8 items-center justify-center rounded-md bg-muted p-0.5 text-xs text-muted-foreground",
17
+ "inline-flex h-8 items-end justify-start bg-background border-b border-border text-xs text-muted-foreground",
18
18
  t.class
19
19
  )
20
- }, e(s)), {
20
+ }, e(r)), {
21
21
  default: p(() => [
22
- m(r.$slots, "default")
22
+ i(s.$slots, "default")
23
23
  ]),
24
24
  _: 3
25
25
  }, 16, ["class"]));
26
26
  }
27
27
  });
28
28
  export {
29
- B as default
29
+ h as default
30
30
  };
31
31
  //# sourceMappingURL=TabsList.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabsList.vue.js","sources":["../../../../src/components/shadcn/TabsList.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { TabsListProps } from 'reka-ui'\r\nimport type { HTMLAttributes } from 'vue'\r\nimport { TabsList } from 'reka-ui'\r\nimport { reactiveOmit } from '@vueuse/core'\r\nimport { cn } from '@/lib/utils'\r\n\r\nconst props = defineProps<TabsListProps & { class?: HTMLAttributes['class'] }>()\r\n\r\nconst delegatedProps = reactiveOmit(props, 'class')\r\n</script>\r\n\r\n<template>\n <TabsList\n :class=\"\n cn(\n 'inline-flex h-8 items-center justify-center rounded-md bg-muted p-0.5 text-xs text-muted-foreground',\n props.class\n )\n \"\n v-bind=\"delegatedProps\"\n >\n <slot />\n </TabsList>\n</template>\n\r\n"],"names":["props","__props","delegatedProps","reactiveOmit","_openBlock","_createBlock","_unref","_mergeProps","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAERC,IAAiBC,EAAaH,GAAO,OAAO;sBAIhDI,KAAAC,EAUWC,MAVXC,EAUW;AAAA,MATR,OAAcD,EAAAE,CAAA;AAAA;QAA2HR,EAAM;AAAA,MAAA;AAAA,OAMxIM,EAAAJ,CAAA,CAAc,GAAA;AAAA,iBAEtB,MAAQ;AAAA,QAARO,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
1
+ {"version":3,"file":"TabsList.vue.js","sources":["../../../../src/components/shadcn/TabsList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { TabsListProps } from 'reka-ui'\nimport type { HTMLAttributes } from 'vue'\nimport { TabsList } from 'reka-ui'\nimport { reactiveOmit } from '@vueuse/core'\nimport { cn } from '@/lib/utils'\n\nconst props = defineProps<TabsListProps & { class?: HTMLAttributes['class'] }>()\n\nconst delegatedProps = reactiveOmit(props, 'class')\n</script>\n\n<template>\n <TabsList\n :class=\"\n cn(\n 'inline-flex h-8 items-end justify-start bg-background border-b border-border text-xs text-muted-foreground',\n props.class\n )\n \"\n v-bind=\"delegatedProps\"\n >\n <slot />\n </TabsList>\n</template>\n\n"],"names":["props","__props","delegatedProps","reactiveOmit","_openBlock","_createBlock","_unref","_mergeProps","cn","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAERC,IAAiBC,EAAaH,GAAO,OAAO;sBAIhDI,KAAAC,EAUWC,MAVXC,EAUW;AAAA,MATR,OAAcD,EAAAE,CAAA;AAAA;QAAkIR,EAAM;AAAA,MAAA;AAAA,OAM/IM,EAAAJ,CAAA,CAAc,GAAA;AAAA,iBAEtB,MAAQ;AAAA,QAARO,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),i=require("@vueuse/core"),a=require("../../lib/utils.cjs"),d=e.defineComponent({__name:"Textarea",props:{class:{},defaultValue:{},modelValue:{}},emits:["update:modelValue"],setup(u,{emit:s}){const l=u,r=s,o=i.useVModel(l,"modelValue",r,{passive:!0,defaultValue:l.defaultValue});return(c,t)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{"onUpdate:modelValue":t[0]||(t[0]=n=>e.isRef(o)?o.value=n:null),class:e.normalizeClass(e.unref(a.cn)("flex min-h-12 w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",l.class))},null,2)),[[e.vModelText,e.unref(o)]])}});exports.default=d;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),i=require("@vueuse/core"),a=require("../../lib/utils.cjs"),d=e.defineComponent({__name:"Textarea",props:{class:{},defaultValue:{},modelValue:{}},emits:["update:modelValue"],setup(u,{emit:s}){const l=u,r=s,o=i.useVModel(l,"modelValue",r,{passive:!0,defaultValue:l.defaultValue});return(c,t)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{"onUpdate:modelValue":t[0]||(t[0]=n=>e.isRef(o)?o.value=n:null),class:e.normalizeClass(e.unref(a.cn)("flex min-h-12 w-full rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",l.class))},null,2)),[[e.vModelText,e.unref(o)]])}});exports.default=d;
2
2
  //# sourceMappingURL=Textarea.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.vue.cjs","sources":["../../../../src/components/shadcn/Textarea.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\r\nimport { useVModel } from \"@vueuse/core\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n class?: HTMLAttributes[\"class\"]\r\n defaultValue?: string | number\r\n modelValue?: string | number\r\n}>()\r\n\r\nconst emits = defineEmits<{\r\n (e: \"update:modelValue\", payload: string | number): void\r\n}>()\r\n\r\nconst modelValue = useVModel(props, \"modelValue\", emits, {\r\n passive: true,\r\n defaultValue: props.defaultValue,\r\n})\n</script>\n\n<template>\n <textarea v-model=\"modelValue\" :class=\"cn('flex min-h-12 w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)\" />\n</template>\n"],"names":["props","__props","emits","__emit","modelValue","useVModel","_createElementBlock","$event","_normalizeClass","_unref","cn"],"mappings":"kUAKA,MAAMA,EAAQC,EAMRC,EAAQC,EAIRC,EAAaC,EAAAA,UAAUL,EAAO,aAAcE,EAAO,CACvD,QAAS,GACT,aAAcF,EAAM,YAAA,CACrB,+CAICM,EAAAA,mBAAkW,WAAA,iDAA/UF,EAAU,MAAAG,EAAA,MAAG,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAE,uSAAySV,EAAM,KAAK,CAAA,CAAA,0BAA1US,EAAAA,MAAAL,CAAA,CAAU,CAAA"}
1
+ {"version":3,"file":"Textarea.vue.cjs","sources":["../../../../src/components/shadcn/Textarea.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { useVModel } from \"@vueuse/core\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n class?: HTMLAttributes[\"class\"]\n defaultValue?: string | number\n modelValue?: string | number\n}>()\n\nconst emits = defineEmits<{\n (e: \"update:modelValue\", payload: string | number): void\n}>()\n\nconst modelValue = useVModel(props, \"modelValue\", emits, {\n passive: true,\n defaultValue: props.defaultValue,\n})\n</script>\n\n<template>\n <textarea v-model=\"modelValue\" :class=\"cn('flex min-h-12 w-full rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)\" />\n</template>\n"],"names":["props","__props","emits","__emit","modelValue","useVModel","_createElementBlock","$event","_normalizeClass","_unref","cn"],"mappings":"kUAKA,MAAMA,EAAQC,EAMRC,EAAQC,EAIRC,EAAaC,EAAAA,UAAUL,EAAO,aAAcE,EAAO,CACvD,QAAS,GACT,aAAcF,EAAM,YAAA,CACrB,+CAICM,EAAAA,mBAAkW,WAAA,iDAA/UF,EAAU,MAAAG,EAAA,MAAG,MAAKC,EAAAA,eAAEC,QAAAC,EAAAA,EAAA,EAAE,uSAAySV,EAAM,KAAK,CAAA,CAAA,0BAA1US,EAAAA,MAAAL,CAAA,CAAU,CAAA"}
@@ -16,7 +16,7 @@ const _ = /* @__PURE__ */ u({
16
16
  });
17
17
  return (g, l) => i((d(), n("textarea", {
18
18
  "onUpdate:modelValue": l[0] || (l[0] = (a) => f(o) ? o.value = a : null),
19
- class: m(t(b)("flex min-h-12 w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", e.class))
19
+ class: m(t(b)("flex min-h-12 w-full rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", e.class))
20
20
  }, null, 2)), [
21
21
  [c, t(o)]
22
22
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.vue.js","sources":["../../../../src/components/shadcn/Textarea.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\r\nimport { useVModel } from \"@vueuse/core\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst props = defineProps<{\r\n class?: HTMLAttributes[\"class\"]\r\n defaultValue?: string | number\r\n modelValue?: string | number\r\n}>()\r\n\r\nconst emits = defineEmits<{\r\n (e: \"update:modelValue\", payload: string | number): void\r\n}>()\r\n\r\nconst modelValue = useVModel(props, \"modelValue\", emits, {\r\n passive: true,\r\n defaultValue: props.defaultValue,\r\n})\n</script>\n\n<template>\n <textarea v-model=\"modelValue\" :class=\"cn('flex min-h-12 w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)\" />\n</template>\n"],"names":["props","__props","modelValue","useVModel","__emit","_createElementBlock","$event","_normalizeClass","_unref","cn"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAURC,IAAaC,EAAUH,GAAO,cAJtBI,GAI2C;AAAA,MACvD,SAAS;AAAA,MACT,cAAcJ,EAAM;AAAA,IAAA,CACrB;6BAICK,EAAkW,YAAA;AAAA,2DAA/UH,EAAU,QAAAI,IAAA;AAAA,MAAG,OAAKC,EAAEC,EAAAC,CAAA,EAAE,wSAAyST,EAAM,KAAK,CAAA;AAAA,IAAA;UAA1UQ,EAAAN,CAAA,CAAU;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"Textarea.vue.js","sources":["../../../../src/components/shadcn/Textarea.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from \"vue\"\nimport { useVModel } from \"@vueuse/core\"\nimport { cn } from \"@/lib/utils\"\n\nconst props = defineProps<{\n class?: HTMLAttributes[\"class\"]\n defaultValue?: string | number\n modelValue?: string | number\n}>()\n\nconst emits = defineEmits<{\n (e: \"update:modelValue\", payload: string | number): void\n}>()\n\nconst modelValue = useVModel(props, \"modelValue\", emits, {\n passive: true,\n defaultValue: props.defaultValue,\n})\n</script>\n\n<template>\n <textarea v-model=\"modelValue\" :class=\"cn('flex min-h-12 w-full rounded-sm border border-input bg-background px-2.5 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)\" />\n</template>\n"],"names":["props","__props","modelValue","useVModel","__emit","_createElementBlock","$event","_normalizeClass","_unref","cn"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAURC,IAAaC,EAAUH,GAAO,cAJtBI,GAI2C;AAAA,MACvD,SAAS;AAAA,MACT,cAAcJ,EAAM;AAAA,IAAA,CACrB;6BAICK,EAAkW,YAAA;AAAA,2DAA/UH,EAAU,QAAAI,IAAA;AAAA,MAAG,OAAKC,EAAEC,EAAAC,CAAA,EAAE,wSAAyST,EAAM,KAAK,CAAA;AAAA,IAAA;UAA1UQ,EAAAN,CAAA,CAAU;AAAA,IAAA;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("class-variance-authority");require("vue");require("reka-ui");require("@vueuse/core");require("clsx");require("tailwind-merge");require("lucide-vue-next");require("./alert-variants.cjs");require("./avatar-variants.cjs");require("./badge-variants.cjs");require("./button-group-variants.cjs");require("vue-sonner");const r=e.cva("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{xs:"h-7 rounded-md px-2 text-xs",sm:"h-8 rounded-md px-3 text-sm",md:"h-9 px-4 py-2",lg:"h-10 rounded-md px-6",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"sm"}});exports.buttonVariants=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("class-variance-authority");require("vue");require("reka-ui");require("@vueuse/core");require("clsx");require("tailwind-merge");require("lucide-vue-next");require("./alert-variants.cjs");require("./avatar-variants.cjs");require("./badge-variants.cjs");require("./button-group-variants.cjs");require("vue-sonner");const r=e.cva("inline-flex items-center justify-center whitespace-nowrap rounded-sm text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{xs:"h-7 rounded-sm px-2 text-xs",sm:"h-8 rounded-sm px-3 text-sm",md:"h-9 px-4 py-2",lg:"h-10 rounded-sm px-6",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"sm"}});exports.buttonVariants=r;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/components/shadcn/index.ts"],"sourcesContent":["// Button variants\r\nimport type { VariantProps } from \"class-variance-authority\"\r\nimport { cva } from \"class-variance-authority\"\r\n\r\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n xs: \"h-7 rounded-md px-2 text-xs\",\n sm: \"h-8 rounded-md px-3 text-sm\",\n md: \"h-9 px-4 py-2\",\n lg: \"h-10 rounded-md px-6\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"sm\",\n },\n },\n)\n\r\nexport type ButtonVariants = VariantProps<typeof buttonVariants>\r\n\r\n// Accordion\r\nexport { default as Accordion } from \"./Accordion.vue\"\r\nexport { default as AccordionContent } from \"./AccordionContent.vue\"\r\nexport { default as AccordionItem } from \"./AccordionItem.vue\"\r\nexport { default as AccordionTrigger } from \"./AccordionTrigger.vue\"\r\n\r\n// Alert\r\nexport { default as Alert } from \"./Alert.vue\"\r\nexport { default as AlertDescription } from \"./AlertDescription.vue\"\r\nexport { default as AlertTitle } from \"./AlertTitle.vue\"\r\n\r\n// Avatar\r\nexport { default as Avatar } from \"./Avatar.vue\"\r\nexport { default as AvatarFallback } from \"./AvatarFallback.vue\"\r\nexport { default as AvatarImage } from \"./AvatarImage.vue\"\r\n\r\n// Badge\r\nexport { default as Badge } from \"./Badge.vue\"\r\n\r\n// Calendar\r\nexport { default as Calendar } from \"./Calendar.vue\"\r\nexport { default as CalendarCell } from \"./CalendarCell.vue\"\r\nexport { default as CalendarCellTrigger } from \"./CalendarCellTrigger.vue\"\r\nexport { default as CalendarGrid } from \"./CalendarGrid.vue\"\r\nexport { default as CalendarGridBody } from \"./CalendarGridBody.vue\"\r\nexport { default as CalendarGridHead } from \"./CalendarGridHead.vue\"\r\nexport { default as CalendarGridRow } from \"./CalendarGridRow.vue\"\r\nexport { default as CalendarHeadCell } from \"./CalendarHeadCell.vue\"\r\nexport { default as CalendarHeader } from \"./CalendarHeader.vue\"\r\nexport { default as CalendarHeading } from \"./CalendarHeading.vue\"\r\nexport { default as CalendarNextButton } from \"./CalendarNextButton.vue\"\r\nexport { default as CalendarPrevButton } from \"./CalendarPrevButton.vue\"\r\n\r\n// Card\r\nexport { default as Card } from \"./Card.vue\"\r\nexport { default as CardContent } from \"./CardContent.vue\"\r\nexport { default as CardDescription } from \"./CardDescription.vue\"\r\nexport { default as CardFooter } from \"./CardFooter.vue\"\r\nexport { default as CardHeader } from \"./CardHeader.vue\"\r\nexport { default as CardTitle } from \"./CardTitle.vue\"\r\n\r\n// Checkbox\r\nexport { default as Checkbox } from \"./Checkbox.vue\"\r\n\r\n// Combobox\r\nexport { default as Combobox } from \"./Combobox.vue\"\r\nexport { default as ComboboxAnchor } from \"./ComboboxAnchor.vue\"\r\nexport { default as ComboboxEmpty } from \"./ComboboxEmpty.vue\"\r\nexport { default as ComboboxGroup } from \"./ComboboxGroup.vue\"\r\nexport { default as ComboboxInput } from \"./ComboboxInput.vue\"\r\nexport { default as ComboboxItem } from \"./ComboboxItem.vue\"\r\nexport { default as ComboboxList } from \"./ComboboxList.vue\"\r\nexport { default as ComboboxSeparator } from \"./ComboboxSeparator.vue\"\r\nexport { default as ComboboxTrigger } from \"./ComboboxTrigger.vue\"\r\n\r\n// ContextMenu\r\nexport { default as ContextMenu } from \"./ContextMenu.vue\"\r\nexport { default as ContextMenuCheckboxItem } from \"./ContextMenuCheckboxItem.vue\"\r\nexport { default as ContextMenuContent } from \"./ContextMenuContent.vue\"\r\nexport { default as ContextMenuGroup } from \"./ContextMenuGroup.vue\"\r\nexport { default as ContextMenuItem } from \"./ContextMenuItem.vue\"\r\nexport { default as ContextMenuLabel } from \"./ContextMenuLabel.vue\"\r\nexport { default as ContextMenuPortal } from \"./ContextMenuPortal.vue\"\r\nexport { default as ContextMenuRadioGroup } from \"./ContextMenuRadioGroup.vue\"\r\nexport { default as ContextMenuRadioItem } from \"./ContextMenuRadioItem.vue\"\r\nexport { default as ContextMenuSeparator } from \"./ContextMenuSeparator.vue\"\r\nexport { default as ContextMenuShortcut } from \"./ContextMenuShortcut.vue\"\r\nexport { default as ContextMenuSub } from \"./ContextMenuSub.vue\"\r\nexport { default as ContextMenuSubContent } from \"./ContextMenuSubContent.vue\"\r\nexport { default as ContextMenuSubTrigger } from \"./ContextMenuSubTrigger.vue\"\r\nexport { default as ContextMenuTrigger } from \"./ContextMenuTrigger.vue\"\r\n\r\n// Dialog\r\nexport { default as Dialog } from \"./Dialog.vue\"\r\nexport { default as DialogBody } from \"./DialogBody.vue\"\r\nexport { default as DialogContent } from \"./DialogContent.vue\"\r\nexport { default as DialogDescription } from \"./DialogDescription.vue\"\r\nexport { default as DialogFooter } from \"./DialogFooter.vue\"\r\nexport { default as DialogHeader } from \"./DialogHeader.vue\"\r\nexport { default as DialogTitle } from \"./DialogTitle.vue\"\r\n\r\n// Field\r\nexport { default as Field } from \"./Field.vue\"\r\nexport { default as FieldContent } from \"./FieldContent.vue\"\r\nexport { default as FieldDescription } from \"./FieldDescription.vue\"\r\nexport { default as FieldError } from \"./FieldError.vue\"\r\nexport { default as FieldGroup } from \"./FieldGroup.vue\"\r\nexport { default as FieldLabel } from \"./FieldLabel.vue\"\r\nexport { default as FieldLegend } from \"./FieldLegend.vue\"\r\nexport { default as FieldSeparator } from \"./FieldSeparator.vue\"\r\nexport { default as FieldSet } from \"./FieldSet.vue\"\r\nexport { default as FieldTitle } from \"./FieldTitle.vue\"\r\n\r\n// ButtonGroup\r\nexport { default as ButtonGroup } from \"./ButtonGroup.vue\"\r\nexport { default as ButtonGroupSeparator } from \"./ButtonGroupSeparator.vue\"\r\nexport { default as ButtonGroupText } from \"./ButtonGroupText.vue\"\r\n\r\n// Input\r\nexport { default as Button } from \"./Button.vue\"\r\nexport { default as Input } from \"./Input.vue\"\r\n\r\n// Kbd\r\nexport { default as Kbd } from \"./Kbd.vue\"\r\nexport { default as KbdGroup } from \"./KbdGroup.vue\"\r\n\r\n// Label\r\nexport { default as Label } from \"./Label.vue\"\r\n\r\n// Popover\r\nexport { default as Popover } from \"./Popover.vue\"\r\nexport { default as PopoverContent } from \"./PopoverContent.vue\"\r\nexport { default as PopoverTrigger } from \"./PopoverTrigger.vue\"\r\n\r\n// Progress\r\nexport { default as Progress } from \"./Progress.vue\"\r\n\r\n// Radio\r\nexport { default as RadioGroup } from \"./RadioGroup.vue\"\r\nexport { default as RadioGroupItem } from \"./RadioGroupItem.vue\"\r\n\r\n// Select\r\nexport { default as Select } from \"./Select.vue\"\r\nexport { default as SelectContent } from \"./SelectContent.vue\"\r\nexport { default as SelectGroup } from \"./SelectGroup.vue\"\r\nexport { default as SelectItem } from \"./SelectItem.vue\"\r\nexport { default as SelectItemText } from \"./SelectItemText.vue\"\r\nexport { default as SelectLabel } from \"./SelectLabel.vue\"\r\nexport { default as SelectScrollDownButton } from \"./SelectScrollDownButton.vue\"\r\nexport { default as SelectScrollUpButton } from \"./SelectScrollUpButton.vue\"\r\nexport { default as SelectSeparator } from \"./SelectSeparator.vue\"\r\nexport { default as SelectTrigger } from \"./SelectTrigger.vue\"\r\nexport { default as SelectValue } from \"./SelectValue.vue\"\r\n\r\n// Separator\r\nexport { default as Separator } from \"./Separator.vue\"\r\n\r\n// Spinner\r\nexport { default as Spinner } from \"./Spinner.vue\"\r\n\r\n// Switch\r\nexport { default as Switch } from \"./Switch.vue\"\r\n\r\n// Tabs\r\nexport { default as Tabs } from \"./Tabs.vue\"\r\nexport { default as TabsContent } from \"./TabsContent.vue\"\r\nexport { default as TabsList } from \"./TabsList.vue\"\r\nexport { default as TabsTrigger } from \"./TabsTrigger.vue\"\r\n\r\n// Textarea\r\nexport { default as Textarea } from \"./Textarea.vue\"\r\n\r\n\r\n// Tooltip\r\nexport { default as Tooltip } from \"./Tooltip.vue\"\r\nexport { default as TooltipContent } from \"./TooltipContent.vue\"\r\nexport { default as TooltipProvider } from \"./TooltipProvider.vue\"\r\nexport { default as TooltipTrigger } from \"./TooltipTrigger.vue\"\r\n\r\n// Toaster\r\nexport { default as Toaster } from \"./Toaster.vue\""],"names":["buttonVariants","cva"],"mappings":"yZAIO,MAAMA,EAAiBC,EAAAA,IAC5B,yRACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,yDACT,YACE,qEACF,QACE,iFACF,UACE,+DACF,MAAO,+CACP,KAAM,iDAAA,EAER,KAAM,CACJ,GAAI,8BACJ,GAAI,8BACJ,GAAI,gBACJ,GAAI,uBACJ,KAAM,SAAA,CACR,EAEF,gBAAiB,CACf,QAAS,UACT,KAAM,IAAA,CACR,CAEJ"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/components/shadcn/index.ts"],"sourcesContent":["// Button variants\nimport type { VariantProps } from \"class-variance-authority\"\nimport { cva } from \"class-variance-authority\"\n\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n xs: \"h-7 rounded-sm px-2 text-xs\",\n sm: \"h-8 rounded-sm px-3 text-sm\",\n md: \"h-9 px-4 py-2\",\n lg: \"h-10 rounded-sm px-6\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"sm\",\n },\n },\n)\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>\n\n// Accordion\nexport { default as Accordion } from \"./Accordion.vue\"\nexport { default as AccordionContent } from \"./AccordionContent.vue\"\nexport { default as AccordionItem } from \"./AccordionItem.vue\"\nexport { default as AccordionTrigger } from \"./AccordionTrigger.vue\"\n\n// Alert\nexport { default as Alert } from \"./Alert.vue\"\nexport { default as AlertDescription } from \"./AlertDescription.vue\"\nexport { default as AlertTitle } from \"./AlertTitle.vue\"\n\n// Avatar\nexport { default as Avatar } from \"./Avatar.vue\"\nexport { default as AvatarFallback } from \"./AvatarFallback.vue\"\nexport { default as AvatarImage } from \"./AvatarImage.vue\"\n\n// Badge\nexport { default as Badge } from \"./Badge.vue\"\n\n// Calendar\nexport { default as Calendar } from \"./Calendar.vue\"\nexport { default as CalendarCell } from \"./CalendarCell.vue\"\nexport { default as CalendarCellTrigger } from \"./CalendarCellTrigger.vue\"\nexport { default as CalendarGrid } from \"./CalendarGrid.vue\"\nexport { default as CalendarGridBody } from \"./CalendarGridBody.vue\"\nexport { default as CalendarGridHead } from \"./CalendarGridHead.vue\"\nexport { default as CalendarGridRow } from \"./CalendarGridRow.vue\"\nexport { default as CalendarHeadCell } from \"./CalendarHeadCell.vue\"\nexport { default as CalendarHeader } from \"./CalendarHeader.vue\"\nexport { default as CalendarHeading } from \"./CalendarHeading.vue\"\nexport { default as CalendarNextButton } from \"./CalendarNextButton.vue\"\nexport { default as CalendarPrevButton } from \"./CalendarPrevButton.vue\"\n\n// Card\nexport { default as Card } from \"./Card.vue\"\nexport { default as CardContent } from \"./CardContent.vue\"\nexport { default as CardDescription } from \"./CardDescription.vue\"\nexport { default as CardFooter } from \"./CardFooter.vue\"\nexport { default as CardHeader } from \"./CardHeader.vue\"\nexport { default as CardTitle } from \"./CardTitle.vue\"\n\n// Checkbox\nexport { default as Checkbox } from \"./Checkbox.vue\"\n\n// Combobox\nexport { default as Combobox } from \"./Combobox.vue\"\nexport { default as ComboboxAnchor } from \"./ComboboxAnchor.vue\"\nexport { default as ComboboxEmpty } from \"./ComboboxEmpty.vue\"\nexport { default as ComboboxGroup } from \"./ComboboxGroup.vue\"\nexport { default as ComboboxInput } from \"./ComboboxInput.vue\"\nexport { default as ComboboxItem } from \"./ComboboxItem.vue\"\nexport { default as ComboboxList } from \"./ComboboxList.vue\"\nexport { default as ComboboxSeparator } from \"./ComboboxSeparator.vue\"\nexport { default as ComboboxTrigger } from \"./ComboboxTrigger.vue\"\n\n// ContextMenu\nexport { default as ContextMenu } from \"./ContextMenu.vue\"\nexport { default as ContextMenuCheckboxItem } from \"./ContextMenuCheckboxItem.vue\"\nexport { default as ContextMenuContent } from \"./ContextMenuContent.vue\"\nexport { default as ContextMenuGroup } from \"./ContextMenuGroup.vue\"\nexport { default as ContextMenuItem } from \"./ContextMenuItem.vue\"\nexport { default as ContextMenuLabel } from \"./ContextMenuLabel.vue\"\nexport { default as ContextMenuPortal } from \"./ContextMenuPortal.vue\"\nexport { default as ContextMenuRadioGroup } from \"./ContextMenuRadioGroup.vue\"\nexport { default as ContextMenuRadioItem } from \"./ContextMenuRadioItem.vue\"\nexport { default as ContextMenuSeparator } from \"./ContextMenuSeparator.vue\"\nexport { default as ContextMenuShortcut } from \"./ContextMenuShortcut.vue\"\nexport { default as ContextMenuSub } from \"./ContextMenuSub.vue\"\nexport { default as ContextMenuSubContent } from \"./ContextMenuSubContent.vue\"\nexport { default as ContextMenuSubTrigger } from \"./ContextMenuSubTrigger.vue\"\nexport { default as ContextMenuTrigger } from \"./ContextMenuTrigger.vue\"\n\n// Dialog\nexport { default as Dialog } from \"./Dialog.vue\"\nexport { default as DialogBody } from \"./DialogBody.vue\"\nexport { default as DialogContent } from \"./DialogContent.vue\"\nexport { default as DialogDescription } from \"./DialogDescription.vue\"\nexport { default as DialogFooter } from \"./DialogFooter.vue\"\nexport { default as DialogHeader } from \"./DialogHeader.vue\"\nexport { default as DialogTitle } from \"./DialogTitle.vue\"\n\n// Field\nexport { default as Field } from \"./Field.vue\"\nexport { default as FieldContent } from \"./FieldContent.vue\"\nexport { default as FieldDescription } from \"./FieldDescription.vue\"\nexport { default as FieldError } from \"./FieldError.vue\"\nexport { default as FieldGroup } from \"./FieldGroup.vue\"\nexport { default as FieldLabel } from \"./FieldLabel.vue\"\nexport { default as FieldLegend } from \"./FieldLegend.vue\"\nexport { default as FieldSeparator } from \"./FieldSeparator.vue\"\nexport { default as FieldSet } from \"./FieldSet.vue\"\nexport { default as FieldTitle } from \"./FieldTitle.vue\"\n\n// ButtonGroup\nexport { default as ButtonGroup } from \"./ButtonGroup.vue\"\nexport { default as ButtonGroupSeparator } from \"./ButtonGroupSeparator.vue\"\nexport { default as ButtonGroupText } from \"./ButtonGroupText.vue\"\n\n// Input\nexport { default as Button } from \"./Button.vue\"\nexport { default as Input } from \"./Input.vue\"\n\n// Kbd\nexport { default as Kbd } from \"./Kbd.vue\"\nexport { default as KbdGroup } from \"./KbdGroup.vue\"\n\n// Label\nexport { default as Label } from \"./Label.vue\"\n\n// Popover\nexport { default as Popover } from \"./Popover.vue\"\nexport { default as PopoverContent } from \"./PopoverContent.vue\"\nexport { default as PopoverTrigger } from \"./PopoverTrigger.vue\"\n\n// Progress\nexport { default as Progress } from \"./Progress.vue\"\n\n// Radio\nexport { default as RadioGroup } from \"./RadioGroup.vue\"\nexport { default as RadioGroupItem } from \"./RadioGroupItem.vue\"\n\n// Select\nexport { default as Select } from \"./Select.vue\"\nexport { default as SelectContent } from \"./SelectContent.vue\"\nexport { default as SelectGroup } from \"./SelectGroup.vue\"\nexport { default as SelectItem } from \"./SelectItem.vue\"\nexport { default as SelectItemText } from \"./SelectItemText.vue\"\nexport { default as SelectLabel } from \"./SelectLabel.vue\"\nexport { default as SelectScrollDownButton } from \"./SelectScrollDownButton.vue\"\nexport { default as SelectScrollUpButton } from \"./SelectScrollUpButton.vue\"\nexport { default as SelectSeparator } from \"./SelectSeparator.vue\"\nexport { default as SelectTrigger } from \"./SelectTrigger.vue\"\nexport { default as SelectValue } from \"./SelectValue.vue\"\n\n// Separator\nexport { default as Separator } from \"./Separator.vue\"\n\n// Spinner\nexport { default as Spinner } from \"./Spinner.vue\"\n\n// Switch\nexport { default as Switch } from \"./Switch.vue\"\n\n// Tabs\nexport { default as Tabs } from \"./Tabs.vue\"\nexport { default as TabsContent } from \"./TabsContent.vue\"\nexport { default as TabsList } from \"./TabsList.vue\"\nexport { default as TabsTrigger } from \"./TabsTrigger.vue\"\n\n// Textarea\nexport { default as Textarea } from \"./Textarea.vue\"\n\n\n// Tooltip\nexport { default as Tooltip } from \"./Tooltip.vue\"\nexport { default as TooltipContent } from \"./TooltipContent.vue\"\nexport { default as TooltipProvider } from \"./TooltipProvider.vue\"\nexport { default as TooltipTrigger } from \"./TooltipTrigger.vue\"\n\n// Toaster\nexport { default as Toaster } from \"./Toaster.vue\""],"names":["buttonVariants","cva"],"mappings":"yZAIO,MAAMA,EAAiBC,EAAAA,IAC5B,yRACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,yDACT,YACE,qEACF,QACE,iFACF,UACE,+DACF,MAAO,+CACP,KAAM,iDAAA,EAER,KAAM,CACJ,GAAI,8BACJ,GAAI,8BACJ,GAAI,gBACJ,GAAI,uBACJ,KAAM,SAAA,CACR,EAEF,gBAAiB,CACf,QAAS,UACT,KAAM,IAAA,CACR,CAEJ"}
@@ -11,7 +11,7 @@ import "./badge-variants.js";
11
11
  import "./button-group-variants.js";
12
12
  import "vue-sonner";
13
13
  const g = e(
14
- "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
14
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
15
15
  {
16
16
  variants: {
17
17
  variant: {
@@ -23,10 +23,10 @@ const g = e(
23
23
  link: "text-primary underline-offset-4 hover:underline"
24
24
  },
25
25
  size: {
26
- xs: "h-7 rounded-md px-2 text-xs",
27
- sm: "h-8 rounded-md px-3 text-sm",
26
+ xs: "h-7 rounded-sm px-2 text-xs",
27
+ sm: "h-8 rounded-sm px-3 text-sm",
28
28
  md: "h-9 px-4 py-2",
29
- lg: "h-10 rounded-md px-6",
29
+ lg: "h-10 rounded-sm px-6",
30
30
  icon: "h-9 w-9"
31
31
  }
32
32
  },