@j-solution/components 1.8.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 (79) hide show
  1. package/README.md +413 -415
  2. package/assets/jwms-portal-frontend-Ct2Tc7yj.css +1 -0
  3. package/assets/styles/j-components.css +1 -1
  4. package/assets/styles/themes.css +422 -422
  5. package/components/atoms/JButton.vue.cjs +1 -1
  6. package/components/atoms/JButton.vue.js +1 -1
  7. package/components/atoms/JButton.vue2.cjs.map +1 -1
  8. package/components/atoms/JButton.vue2.js.map +1 -1
  9. package/components/atoms/JLabel.vue.cjs.map +1 -1
  10. package/components/atoms/JLabel.vue.js.map +1 -1
  11. package/components/molecules/JTabs.vue.cjs +1 -1
  12. package/components/molecules/JTabs.vue.js +1 -1
  13. package/components/molecules/JTabs.vue2.cjs.map +1 -1
  14. package/components/molecules/JTabs.vue2.js.map +1 -1
  15. package/components/organisms/JDynamicTabs.vue.cjs.map +1 -1
  16. package/components/organisms/JDynamicTabs.vue.js.map +1 -1
  17. package/components/organisms/JFilterBar.vue.cjs +1 -1
  18. package/components/organisms/JFilterBar.vue.js +2 -2
  19. package/components/organisms/JFilterBar.vue2.cjs +1 -1
  20. package/components/organisms/JFilterBar.vue2.cjs.map +1 -1
  21. package/components/organisms/JFilterBar.vue2.js +14 -12
  22. package/components/organisms/JFilterBar.vue2.js.map +1 -1
  23. package/components/organisms/JPageContainer.vue.cjs.map +1 -1
  24. package/components/organisms/JPageContainer.vue.js.map +1 -1
  25. package/components/organisms/JSidebar/JSidebar.vue.cjs +2 -0
  26. package/components/organisms/JSidebar/JSidebar.vue.cjs.map +1 -0
  27. package/components/organisms/JSidebar/JSidebar.vue.js +189 -0
  28. package/components/organisms/JSidebar/JSidebar.vue.js.map +1 -0
  29. package/components/organisms/JSidebar/JSidebar.vue2.cjs +2 -0
  30. package/components/organisms/JSidebar/JSidebar.vue2.cjs.map +1 -0
  31. package/components/organisms/JSidebar/JSidebar.vue2.js +5 -0
  32. package/components/organisms/JSidebar/JSidebar.vue2.js.map +1 -0
  33. package/components/organisms/JSidebar/JSidebarGroup.vue.cjs +2 -0
  34. package/components/organisms/JSidebar/JSidebarGroup.vue.cjs.map +1 -0
  35. package/components/organisms/JSidebar/JSidebarGroup.vue.js +89 -0
  36. package/components/organisms/JSidebar/JSidebarGroup.vue.js.map +1 -0
  37. package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs +2 -0
  38. package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs.map +1 -0
  39. package/components/organisms/JSidebar/JSidebarGroup.vue2.js +5 -0
  40. package/components/organisms/JSidebar/JSidebarGroup.vue2.js.map +1 -0
  41. package/components/organisms/JSidebar/JSidebarItem.vue.cjs +2 -0
  42. package/components/organisms/JSidebar/JSidebarItem.vue.cjs.map +1 -0
  43. package/components/organisms/JSidebar/JSidebarItem.vue.js +79 -0
  44. package/components/organisms/JSidebar/JSidebarItem.vue.js.map +1 -0
  45. package/components/organisms/JSidebar/JSidebarItem.vue2.cjs +2 -0
  46. package/components/organisms/JSidebar/JSidebarItem.vue2.cjs.map +1 -0
  47. package/components/organisms/JSidebar/JSidebarItem.vue2.js +5 -0
  48. package/components/organisms/JSidebar/JSidebarItem.vue2.js.map +1 -0
  49. package/components/shadcn/Card.vue.cjs.map +1 -1
  50. package/components/shadcn/Card.vue.js.map +1 -1
  51. package/components/shadcn/CardContent.vue.cjs.map +1 -1
  52. package/components/shadcn/CardContent.vue.js.map +1 -1
  53. package/components/shadcn/CardHeader.vue.cjs.map +1 -1
  54. package/components/shadcn/CardHeader.vue.js.map +1 -1
  55. package/components/shadcn/Input.vue.cjs.map +1 -1
  56. package/components/shadcn/Input.vue.js.map +1 -1
  57. package/components/shadcn/SelectTrigger.vue.cjs.map +1 -1
  58. package/components/shadcn/SelectTrigger.vue.js.map +1 -1
  59. package/components/shadcn/TabsContent.vue.cjs.map +1 -1
  60. package/components/shadcn/TabsContent.vue.js.map +1 -1
  61. package/components/shadcn/Textarea.vue.cjs.map +1 -1
  62. package/components/shadcn/Textarea.vue.js.map +1 -1
  63. package/components/shadcn/index.cjs.map +1 -1
  64. package/components/shadcn/index.js.map +1 -1
  65. package/components/templates/JLayout.vue.cjs.map +1 -1
  66. package/components/templates/JLayout.vue.js.map +1 -1
  67. package/components/templates/JLayoutSimple.vue.cjs +1 -1
  68. package/components/templates/JLayoutSimple.vue.cjs.map +1 -1
  69. package/components/templates/JLayoutSimple.vue.js +36 -30
  70. package/components/templates/JLayoutSimple.vue.js.map +1 -1
  71. package/index.cjs +1 -1
  72. package/index.js +22 -20
  73. package/package.json +1 -1
  74. package/types/index.d.ts +119 -61
  75. package/types/sidebar.types.cjs +2 -0
  76. package/types/sidebar.types.cjs.map +1 -0
  77. package/types/sidebar.types.js +5 -0
  78. package/types/sidebar.types.js.map +1 -0
  79. package/assets/jwms-portal-frontend-BtHTA-UF.css +0 -1
@@ -0,0 +1,89 @@
1
+ import { defineComponent as L, inject as N, ref as S, computed as v, watch as B, resolveComponent as J, createElementBlock as n, unref as f, openBlock as e, Fragment as s, createElementVNode as c, renderList as x, createBlock as p, createCommentVNode as h, createVNode as A, normalizeClass as y, toDisplayString as g } from "vue";
2
+ import { SIDEBAR_INJECTION_KEY as G } from "../../../types/sidebar.types.js";
3
+ import I from "../../atoms/JIcon.vue.js";
4
+ import _ from "./JSidebarItem.vue.js";
5
+ import { cn as C } from "../../../lib/utils.js";
6
+ const M = { key: 1 }, V = { class: "flex-1 truncate text-left" }, z = {
7
+ key: 0,
8
+ class: "text-[10px] text-muted-foreground/60 flex-shrink-0"
9
+ }, D = { class: "overflow-hidden ml-3 pl-2 border-l border-border/50" }, K = /* @__PURE__ */ L({
10
+ __name: "JSidebarGroup",
11
+ props: {
12
+ item: {}
13
+ },
14
+ emits: ["menu-click"],
15
+ setup(u, { emit: b }) {
16
+ const a = u, E = b, m = N(G), l = S(!1), k = v(() => a.item.children ? a.item.children.filter((t) => t.menuType === "L").length : 0), w = () => {
17
+ l.value = !l.value;
18
+ }, d = (t, o) => {
19
+ E("menu-click", t, o);
20
+ }, T = v(() => {
21
+ if (!m.activePath || !a.item.children) return !1;
22
+ const t = (o) => {
23
+ for (const i of o)
24
+ if (i.menuType === "L" && i.path === m.activePath || i.children && t(i.children)) return !0;
25
+ return !1;
26
+ };
27
+ return t(a.item.children);
28
+ });
29
+ return B(T, (t) => {
30
+ t && (l.value = !0);
31
+ }, { immediate: !0 }), (t, o) => {
32
+ const i = J("JSidebarGroup", !0);
33
+ return f(m).collapsed ? (e(), n(s, { key: 0 }, [
34
+ o[0] || (o[0] = c("div", { class: "h-px bg-border mx-2 my-1" }, null, -1)),
35
+ (e(!0), n(s, null, x(u.item.children, (r) => (e(), n(s, {
36
+ key: r.id
37
+ }, [
38
+ r.menuType === "L" ? (e(), p(_, {
39
+ key: 0,
40
+ item: r,
41
+ onMenuClick: d
42
+ }, null, 8, ["item"])) : h("", !0)
43
+ ], 64))), 128))
44
+ ], 64)) : (e(), n("div", M, [
45
+ c("button", {
46
+ class: "flex items-center gap-1.5 w-full px-2 py-1.5 mt-1 text-xs font-semibold text-muted-foreground cursor-pointer select-none transition-colors hover:text-foreground",
47
+ onClick: w
48
+ }, [
49
+ A(I, {
50
+ name: "chevronRight",
51
+ size: "sm",
52
+ class: y(f(C)(
53
+ "flex-shrink-0 transition-transform duration-200",
54
+ l.value && "rotate-90"
55
+ ))
56
+ }, null, 8, ["class"]),
57
+ c("span", V, g(u.item.label), 1),
58
+ k.value > 0 ? (e(), n("span", z, g(k.value), 1)) : h("", !0)
59
+ ]),
60
+ c("div", {
61
+ class: y(f(C)(
62
+ "grid transition-[grid-template-rows] duration-200 ease-out",
63
+ l.value ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
64
+ ))
65
+ }, [
66
+ c("div", D, [
67
+ (e(!0), n(s, null, x(u.item.children, (r) => (e(), n(s, {
68
+ key: r.id
69
+ }, [
70
+ r.menuType === "L" ? (e(), p(_, {
71
+ key: 0,
72
+ item: r,
73
+ onMenuClick: d
74
+ }, null, 8, ["item"])) : r.menuType === "F" ? (e(), p(i, {
75
+ key: 1,
76
+ item: r,
77
+ onMenuClick: d
78
+ }, null, 8, ["item"])) : h("", !0)
79
+ ], 64))), 128))
80
+ ])
81
+ ], 2)
82
+ ]));
83
+ };
84
+ }
85
+ });
86
+ export {
87
+ K as default
88
+ };
89
+ //# sourceMappingURL=JSidebarGroup.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSidebarGroup.vue.js","sources":["../../../../../src/components/organisms/JSidebar/JSidebarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, inject, watch } from 'vue'\nimport type { SidebarMenuItem } from '@/types/sidebar.types'\nimport { SIDEBAR_INJECTION_KEY } from '@/types/sidebar.types'\nimport JIcon from '@/components/atoms/JIcon.vue'\nimport JSidebarItem from './JSidebarItem.vue'\nimport { cn } from '@/lib/utils'\n\n/**\n * JSidebarGroup - 그룹 헤더 (menuType='F' 전용)\n * 폴더 타입 메뉴를 렌더링. 펼침/접힘 토글 + 하위 메뉴 재귀 렌더링.\n * 링크(L)는 JSidebarItem에서 처리.\n */\n\nconst props = defineProps<{\n item: SidebarMenuItem\n}>()\n\nconst emit = defineEmits<{\n 'menu-click': [item: SidebarMenuItem, event: MouseEvent]\n}>()\n\nconst state = inject(SIDEBAR_INJECTION_KEY)!\n\nconst isExpanded = ref(false)\n\n/** 직계 자식 중 L 타입 개수 (재귀하지 않음) */\nconst childCount = computed(() => {\n if (!props.item.children) return 0\n return props.item.children.filter(c => c.menuType === 'L').length\n})\n\nconst toggleExpand = () => {\n isExpanded.value = !isExpanded.value\n}\n\n/** 자식의 menu-click을 상위로 전파 */\nconst handleChildClick = (item: SidebarMenuItem, event: MouseEvent) => {\n emit('menu-click', item, event)\n}\n\n/** 현재 경로가 이 그룹의 자식에 포함되면 자동 펼침 */\nconst hasActiveChild = computed(() => {\n if (!state.activePath || !props.item.children) return false\n const checkActive = (items: SidebarMenuItem[]): boolean => {\n for (const child of items) {\n if (child.menuType === 'L' && child.path === state.activePath) return true\n if (child.children && checkActive(child.children)) return true\n }\n return false\n }\n return checkActive(props.item.children)\n})\n\nwatch(hasActiveChild, (active) => {\n if (active) isExpanded.value = true\n}, { immediate: true })\n</script>\n\n<template>\n <!-- Collapsed: 구분선만 -->\n <template v-if=\"state.collapsed\">\n <div class=\"h-px bg-border mx-2 my-1\" />\n <!-- collapsed 상태에서 자식 아이템 직접 렌더링 -->\n <template v-for=\"child in item.children\" :key=\"child.id\">\n <JSidebarItem\n v-if=\"child.menuType === 'L'\"\n :item=\"child\"\n @menu-click=\"handleChildClick\"\n />\n <!-- 중첩 폴더는 collapsed에서 무시 (1단계만) -->\n </template>\n </template>\n\n <!-- Expanded: 그룹 헤더 + 하위 메뉴 -->\n <div v-else>\n <!-- 그룹 헤더 -->\n <button\n class=\"flex items-center gap-1.5 w-full px-2 py-1.5 mt-1 text-xs font-semibold text-muted-foreground cursor-pointer select-none transition-colors hover:text-foreground\"\n @click=\"toggleExpand\"\n >\n <JIcon\n name=\"chevronRight\"\n size=\"sm\"\n :class=\"cn(\n 'flex-shrink-0 transition-transform duration-200',\n isExpanded && 'rotate-90'\n )\"\n />\n <span class=\"flex-1 truncate text-left\">{{ item.label }}</span>\n <span\n v-if=\"childCount > 0\"\n class=\"text-[10px] text-muted-foreground/60 flex-shrink-0\"\n >\n {{ childCount }}\n </span>\n </button>\n\n <!-- 하위 메뉴 (grid-template-rows 애니메이션) -->\n <div\n :class=\"cn(\n 'grid transition-[grid-template-rows] duration-200 ease-out',\n isExpanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\n )\"\n >\n <div class=\"overflow-hidden ml-3 pl-2 border-l border-border/50\">\n <template v-for=\"child in item.children\" :key=\"child.id\">\n <JSidebarItem\n v-if=\"child.menuType === 'L'\"\n :item=\"child\"\n @menu-click=\"handleChildClick\"\n />\n <!-- 중첩 폴더: 재귀 -->\n <JSidebarGroup\n v-else-if=\"child.menuType === 'F'\"\n :item=\"child\"\n @menu-click=\"handleChildClick\"\n />\n </template>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","state","inject","SIDEBAR_INJECTION_KEY","isExpanded","ref","childCount","computed","c","toggleExpand","handleChildClick","item","event","hasActiveChild","checkActive","items","child","watch","active","_unref","_createElementBlock","_Fragment","_createElementVNode","_openBlock","_renderList","_createBlock","JSidebarItem","_hoisted_1","_createVNode","JIcon","cn","_hoisted_2","_toDisplayString","_hoisted_3","_hoisted_4","_component_JSidebarGroup"],"mappings":";;;;;;;;;;;;;;;AAcA,UAAMA,IAAQC,GAIRC,IAAOC,GAIPC,IAAQC,EAAOC,CAAqB,GAEpCC,IAAaC,EAAI,EAAK,GAGtBC,IAAaC,EAAS,MACrBV,EAAM,KAAK,WACTA,EAAM,KAAK,SAAS,OAAO,OAAKW,EAAE,aAAa,GAAG,EAAE,SAD1B,CAElC,GAEKC,IAAe,MAAM;AACzB,MAAAL,EAAW,QAAQ,CAACA,EAAW;AAAA,IACjC,GAGMM,IAAmB,CAACC,GAAuBC,MAAsB;AACrE,MAAAb,EAAK,cAAcY,GAAMC,CAAK;AAAA,IAChC,GAGMC,IAAiBN,EAAS,MAAM;AACpC,UAAI,CAACN,EAAM,cAAc,CAACJ,EAAM,KAAK,SAAU,QAAO;AACtD,YAAMiB,IAAc,CAACC,MAAsC;AACzD,mBAAWC,KAASD;AAElB,cADIC,EAAM,aAAa,OAAOA,EAAM,SAASf,EAAM,cAC/Ce,EAAM,YAAYF,EAAYE,EAAM,QAAQ,EAAG,QAAO;AAE5D,eAAO;AAAA,MACT;AACA,aAAOF,EAAYjB,EAAM,KAAK,QAAQ;AAAA,IACxC,CAAC;AAED,WAAAoB,EAAMJ,GAAgB,CAACK,MAAW;AAChC,MAAIA,QAAmB,QAAQ;AAAA,IACjC,GAAG,EAAE,WAAW,IAAM;;AAKJ,aAAAC,EAAAlB,CAAA,EAAM,kBAAtBmB,EAWWC,GAAA,EAAA,KAAA,KAAA;AAAA,wBAVTC,EAAwC,OAAA,EAAnC,OAAM,2BAAA,GAA0B,MAAA,EAAA;AAAA,SAErCC,EAAA,EAAA,GAAAH,EAOWC,GAAA,MAAAG,EAPe1B,EAAA,KAAK,WAAdkB;UAA8B,KAAAA,EAAM;AAAA,QAAA;UAE3CA,EAAM,aAAQ,YADtBS,EAIEC,GAAA;AAAA;YAFC,MAAMV;AAAA,YACN,aAAYN;AAAA,UAAA;;sBAOnBU,EA8CM,OAAAO,GAAA;AAAA,QA5CJL,EAmBS,UAAA;AAAA,UAlBP,OAAM;AAAA,UACL,SAAOb;AAAA,QAAA;UAERmB,EAOEC,GAAA;AAAA,YANA,MAAK;AAAA,YACL,MAAK;AAAA,YACJ,SAAOV,EAAAW,CAAA;AAAA;cAA2E1B,EAAA,SAAU;AAAA,YAAA;;UAK/FkB,EAA+D,QAA/DS,GAA+DC,EAApBlC,EAAA,KAAK,KAAK,GAAA,CAAA;AAAA,UAE7CQ,EAAA,QAAU,UADlBc,EAKO,QALPa,GAKOD,EADF1B,EAAA,KAAU,GAAA,CAAA;;QAKjBgB,EAqBM,OAAA;AAAA,UApBH,SAAOH,EAAAW,CAAA;AAAA;YAAkF1B,EAAA,QAAU,oBAAA;AAAA,UAAA;;UAKpGkB,EAcM,OAdNY,GAcM;AAAA,aAbJX,EAAA,EAAA,GAAAH,EAYWC,GAAA,MAAAG,EAZe1B,EAAA,KAAK,WAAdkB;cAA8B,KAAAA,EAAM;AAAA,YAAA;cAE3CA,EAAM,aAAQ,YADtBS,EAIEC,GAAA;AAAA;gBAFC,MAAMV;AAAA,gBACN,aAAYN;AAAA,cAAA,yBAIFM,EAAM,aAAQ,YAD3BS,EAIEU,GAAA;AAAA;gBAFC,MAAMnB;AAAA,gBACN,aAAYN;AAAA,cAAA;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./JSidebarGroup.vue.cjs");exports.default=e.default;
2
+ //# sourceMappingURL=JSidebarGroup.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSidebarGroup.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import f from "./JSidebarGroup.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=JSidebarGroup.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSidebarGroup.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),p=require("../../../types/sidebar.types.cjs"),a=require("../../atoms/JIcon.vue.cjs"),f=require("../../atoms/JTooltip.vue.cjs"),l=require("../../../lib/utils.cjs"),v={key:0,class:"absolute left-0 top-1 bottom-1 w-[3px] rounded-r bg-primary"},y={class:"flex-1 truncate text-xs"},g=e.defineComponent({__name:"JSidebarItem",props:{item:{}},emits:["menu-click"],setup(t,{emit:u}){const o=t,m=u,i=e.inject(p.SIDEBAR_INJECTION_KEY),r=e.computed(()=>!o.item.path||!i.activePath?!1:i.activePath===o.item.path),c=e.computed(()=>i.favorites.has(o.item.id)),s=n=>{o.item.disabled||m("menu-click",o.item,n)},d=n=>{n.stopPropagation(),i.toggleFavorite(o.item.id)};return(n,k)=>e.unref(i).collapsed?(e.openBlock(),e.createBlock(f.default,{key:0,content:t.item.label,side:"right",size:"sm"},{trigger:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(l.cn)("flex items-center justify-center py-1.5 mx-1 rounded-md cursor-pointer transition-colors",r.value?"bg-primary/10 text-primary":"text-foreground hover:bg-accent/50",t.item.disabled&&"opacity-40 cursor-not-allowed")),onClick:s},[e.createVNode(a.default,{name:t.item.icon||"file",size:"sm"},null,8,["name"])],2)]),_:1},8,["content"])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(l.cn)("group flex items-center gap-2 py-1 px-2 rounded-md cursor-pointer transition-colors relative",r.value?"bg-primary/10 text-primary font-medium":"text-foreground hover:bg-accent/50",t.item.disabled&&"opacity-40 cursor-not-allowed")),onClick:s},[r.value?(e.openBlock(),e.createElementBlock("div",v)):e.createCommentVNode("",!0),t.item.icon?(e.openBlock(),e.createBlock(a.default,{key:1,name:t.item.icon,size:"sm",class:"flex-shrink-0"},null,8,["name"])):e.createCommentVNode("",!0),e.createElementVNode("span",y,e.toDisplayString(t.item.label),1),e.createElementVNode("button",{class:e.normalizeClass(e.unref(l.cn)("flex-shrink-0 p-0.5 rounded transition-opacity",c.value?"opacity-100 text-yellow-500":"opacity-0 group-hover:opacity-100 text-muted-foreground hover:text-yellow-500")),onClick:d},[e.createVNode(a.default,{name:"star",size:"sm",class:e.normalizeClass(c.value?"fill-yellow-500":void 0)},null,8,["class"])],2)],2))}});exports.default=g;
2
+ //# sourceMappingURL=JSidebarItem.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSidebarItem.vue.cjs","sources":["../../../../../src/components/organisms/JSidebar/JSidebarItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport type { SidebarMenuItem } from '@/types/sidebar.types'\nimport { SIDEBAR_INJECTION_KEY } from '@/types/sidebar.types'\nimport JIcon from '@/components/atoms/JIcon.vue'\nimport JTooltip from '@/components/atoms/JTooltip.vue'\nimport { cn } from '@/lib/utils'\n\n/**\n * JSidebarItem - 메뉴 아이템 (menuType='L' 전용)\n * 링크 타입 메뉴만 렌더링. 폴더(F)는 JSidebarGroup에서 처리.\n */\n\nconst props = defineProps<{\n item: SidebarMenuItem\n}>()\n\nconst emit = defineEmits<{\n 'menu-click': [item: SidebarMenuItem, event: MouseEvent]\n}>()\n\nconst state = inject(SIDEBAR_INJECTION_KEY)!\n\nconst isActive = computed(() => {\n if (!props.item.path || !state.activePath) return false\n return state.activePath === props.item.path\n})\n\nconst isFav = computed(() => state.favorites.has(props.item.id))\n\nconst handleClick = (event: MouseEvent) => {\n if (props.item.disabled) return\n emit('menu-click', props.item, event)\n}\n\nconst handleFavoriteClick = (event: MouseEvent) => {\n event.stopPropagation()\n state.toggleFavorite(props.item.id)\n}\n</script>\n\n<template>\n <!-- Collapsed: 아이콘 + Tooltip -->\n <JTooltip\n v-if=\"state.collapsed\"\n :content=\"item.label\"\n side=\"right\"\n size=\"sm\"\n >\n <template #trigger>\n <div\n :class=\"cn(\n 'flex items-center justify-center py-1.5 mx-1 rounded-md cursor-pointer transition-colors',\n isActive\n ? 'bg-primary/10 text-primary'\n : 'text-foreground hover:bg-accent/50',\n item.disabled && 'opacity-40 cursor-not-allowed'\n )\"\n @click=\"handleClick\"\n >\n <JIcon :name=\"item.icon || 'file'\" size=\"sm\" />\n </div>\n </template>\n </JTooltip>\n\n <!-- Expanded: 아이콘 + 라벨 + 즐겨찾기 -->\n <div\n v-else\n :class=\"cn(\n 'group flex items-center gap-2 py-1 px-2 rounded-md cursor-pointer transition-colors relative',\n isActive\n ? 'bg-primary/10 text-primary font-medium'\n : 'text-foreground hover:bg-accent/50',\n item.disabled && 'opacity-40 cursor-not-allowed'\n )\"\n @click=\"handleClick\"\n >\n <!-- 활성 좌측 바 -->\n <div\n v-if=\"isActive\"\n class=\"absolute left-0 top-1 bottom-1 w-[3px] rounded-r bg-primary\"\n />\n\n <JIcon\n v-if=\"item.icon\"\n :name=\"item.icon\"\n size=\"sm\"\n class=\"flex-shrink-0\"\n />\n <span class=\"flex-1 truncate text-xs\">{{ item.label }}</span>\n\n <!-- 즐겨찾기 별 -->\n <button\n :class=\"cn(\n 'flex-shrink-0 p-0.5 rounded transition-opacity',\n isFav\n ? 'opacity-100 text-yellow-500'\n : 'opacity-0 group-hover:opacity-100 text-muted-foreground hover:text-yellow-500'\n )\"\n @click=\"handleFavoriteClick\"\n >\n <JIcon\n name=\"star\"\n size=\"sm\"\n :class=\"isFav ? 'fill-yellow-500' : undefined\"\n />\n </button>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","state","inject","SIDEBAR_INJECTION_KEY","isActive","computed","isFav","handleClick","event","handleFavoriteClick","_unref","_createBlock","JTooltip","_createElementVNode","cn","_createVNode","JIcon","_createElementBlock","_openBlock","_hoisted_1","_hoisted_2","_toDisplayString","_normalizeClass"],"mappings":"0fAaA,MAAMA,EAAQC,EAIRC,EAAOC,EAIPC,EAAQC,EAAAA,OAAOC,uBAAqB,EAEpCC,EAAWC,EAAAA,SAAS,IACpB,CAACR,EAAM,KAAK,MAAQ,CAACI,EAAM,WAAmB,GAC3CA,EAAM,aAAeJ,EAAM,KAAK,IACxC,EAEKS,EAAQD,WAAS,IAAMJ,EAAM,UAAU,IAAIJ,EAAM,KAAK,EAAE,CAAC,EAEzDU,EAAeC,GAAsB,CACrCX,EAAM,KAAK,UACfE,EAAK,aAAcF,EAAM,KAAMW,CAAK,CACtC,EAEMC,EAAuBD,GAAsB,CACjDA,EAAM,gBAAA,EACNP,EAAM,eAAeJ,EAAM,KAAK,EAAE,CACpC,eAMUa,EAAAA,MAAAT,CAAA,EAAM,yBADdU,EAAAA,YAoBWC,UAAA,OAlBR,QAASd,EAAA,KAAK,MACf,KAAK,QACL,KAAK,IAAA,GAEM,kBACT,IAWM,CAXNe,EAAAA,mBAWM,MAAA,CAVH,uBAAOH,EAAAA,MAAAI,IAAA,6FAAoHV,EAAA,wEAAkHN,EAAA,KAAK,UAAQ,+BAAA,GAO1P,QAAOS,CAAA,GAERQ,EAAAA,YAA+CC,EAAAA,QAAA,CAAvC,KAAMlB,EAAA,KAAK,MAAI,OAAY,KAAK,IAAA,6DAM9CmB,EAAAA,mBAyCM,MAAA,OAvCH,uBAAOP,EAAAA,MAAAI,IAAA,iGAAgHV,EAAA,oFAAkHN,EAAA,KAAK,UAAQ,+BAAA,GAOtP,QAAOS,CAAA,GAIAH,EAAA,OADRc,EAAAA,UAAA,EAAAD,EAAAA,mBAGE,MAHFE,CAGE,+BAGMrB,EAAA,KAAK,oBADba,EAAAA,YAKEK,EAAAA,QAAA,OAHC,KAAMlB,EAAA,KAAK,KACZ,KAAK,KACL,MAAM,eAAA,gDAERe,qBAA6D,OAA7DO,EAA6DC,EAAAA,gBAApBvB,EAAA,KAAK,KAAK,EAAA,CAAA,EAGnDe,EAAAA,mBAcS,SAAA,CAbN,uBAAOH,EAAAA,MAAAI,IAAA,mDAAsER,EAAA,sHAM7E,QAAOG,CAAA,GAERM,EAAAA,YAIEC,EAAAA,QAAA,CAHA,KAAK,OACL,KAAK,KACJ,MAAKM,EAAAA,eAAEhB,EAAA,MAAK,kBAAuB,MAAS,CAAA"}
@@ -0,0 +1,79 @@
1
+ import { defineComponent as b, inject as C, computed as p, createBlock as f, createElementBlock as y, unref as r, openBlock as n, withCtx as w, createElementVNode as l, normalizeClass as a, createVNode as v, createCommentVNode as x, toDisplayString as z } from "vue";
2
+ import { SIDEBAR_INJECTION_KEY as E } from "../../../types/sidebar.types.js";
3
+ import s from "../../atoms/JIcon.vue.js";
4
+ import N from "../../atoms/JTooltip.vue.js";
5
+ import { cn as m } from "../../../lib/utils.js";
6
+ const B = {
7
+ key: 0,
8
+ class: "absolute left-0 top-1 bottom-1 w-[3px] rounded-r bg-primary"
9
+ }, I = { class: "flex-1 truncate text-xs" }, A = /* @__PURE__ */ b({
10
+ __name: "JSidebarItem",
11
+ props: {
12
+ item: {}
13
+ },
14
+ emits: ["menu-click"],
15
+ setup(e, { emit: g }) {
16
+ const t = e, h = g, i = C(E), c = p(() => !t.item.path || !i.activePath ? !1 : i.activePath === t.item.path), d = p(() => i.favorites.has(t.item.id)), u = (o) => {
17
+ t.item.disabled || h("menu-click", t.item, o);
18
+ }, k = (o) => {
19
+ o.stopPropagation(), i.toggleFavorite(t.item.id);
20
+ };
21
+ return (o, F) => r(i).collapsed ? (n(), f(N, {
22
+ key: 0,
23
+ content: e.item.label,
24
+ side: "right",
25
+ size: "sm"
26
+ }, {
27
+ trigger: w(() => [
28
+ l("div", {
29
+ class: a(r(m)(
30
+ "flex items-center justify-center py-1.5 mx-1 rounded-md cursor-pointer transition-colors",
31
+ c.value ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent/50",
32
+ e.item.disabled && "opacity-40 cursor-not-allowed"
33
+ )),
34
+ onClick: u
35
+ }, [
36
+ v(s, {
37
+ name: e.item.icon || "file",
38
+ size: "sm"
39
+ }, null, 8, ["name"])
40
+ ], 2)
41
+ ]),
42
+ _: 1
43
+ }, 8, ["content"])) : (n(), y("div", {
44
+ key: 1,
45
+ class: a(r(m)(
46
+ "group flex items-center gap-2 py-1 px-2 rounded-md cursor-pointer transition-colors relative",
47
+ c.value ? "bg-primary/10 text-primary font-medium" : "text-foreground hover:bg-accent/50",
48
+ e.item.disabled && "opacity-40 cursor-not-allowed"
49
+ )),
50
+ onClick: u
51
+ }, [
52
+ c.value ? (n(), y("div", B)) : x("", !0),
53
+ e.item.icon ? (n(), f(s, {
54
+ key: 1,
55
+ name: e.item.icon,
56
+ size: "sm",
57
+ class: "flex-shrink-0"
58
+ }, null, 8, ["name"])) : x("", !0),
59
+ l("span", I, z(e.item.label), 1),
60
+ l("button", {
61
+ class: a(r(m)(
62
+ "flex-shrink-0 p-0.5 rounded transition-opacity",
63
+ d.value ? "opacity-100 text-yellow-500" : "opacity-0 group-hover:opacity-100 text-muted-foreground hover:text-yellow-500"
64
+ )),
65
+ onClick: k
66
+ }, [
67
+ v(s, {
68
+ name: "star",
69
+ size: "sm",
70
+ class: a(d.value ? "fill-yellow-500" : void 0)
71
+ }, null, 8, ["class"])
72
+ ], 2)
73
+ ], 2));
74
+ }
75
+ });
76
+ export {
77
+ A as default
78
+ };
79
+ //# sourceMappingURL=JSidebarItem.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSidebarItem.vue.js","sources":["../../../../../src/components/organisms/JSidebar/JSidebarItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport type { SidebarMenuItem } from '@/types/sidebar.types'\nimport { SIDEBAR_INJECTION_KEY } from '@/types/sidebar.types'\nimport JIcon from '@/components/atoms/JIcon.vue'\nimport JTooltip from '@/components/atoms/JTooltip.vue'\nimport { cn } from '@/lib/utils'\n\n/**\n * JSidebarItem - 메뉴 아이템 (menuType='L' 전용)\n * 링크 타입 메뉴만 렌더링. 폴더(F)는 JSidebarGroup에서 처리.\n */\n\nconst props = defineProps<{\n item: SidebarMenuItem\n}>()\n\nconst emit = defineEmits<{\n 'menu-click': [item: SidebarMenuItem, event: MouseEvent]\n}>()\n\nconst state = inject(SIDEBAR_INJECTION_KEY)!\n\nconst isActive = computed(() => {\n if (!props.item.path || !state.activePath) return false\n return state.activePath === props.item.path\n})\n\nconst isFav = computed(() => state.favorites.has(props.item.id))\n\nconst handleClick = (event: MouseEvent) => {\n if (props.item.disabled) return\n emit('menu-click', props.item, event)\n}\n\nconst handleFavoriteClick = (event: MouseEvent) => {\n event.stopPropagation()\n state.toggleFavorite(props.item.id)\n}\n</script>\n\n<template>\n <!-- Collapsed: 아이콘 + Tooltip -->\n <JTooltip\n v-if=\"state.collapsed\"\n :content=\"item.label\"\n side=\"right\"\n size=\"sm\"\n >\n <template #trigger>\n <div\n :class=\"cn(\n 'flex items-center justify-center py-1.5 mx-1 rounded-md cursor-pointer transition-colors',\n isActive\n ? 'bg-primary/10 text-primary'\n : 'text-foreground hover:bg-accent/50',\n item.disabled && 'opacity-40 cursor-not-allowed'\n )\"\n @click=\"handleClick\"\n >\n <JIcon :name=\"item.icon || 'file'\" size=\"sm\" />\n </div>\n </template>\n </JTooltip>\n\n <!-- Expanded: 아이콘 + 라벨 + 즐겨찾기 -->\n <div\n v-else\n :class=\"cn(\n 'group flex items-center gap-2 py-1 px-2 rounded-md cursor-pointer transition-colors relative',\n isActive\n ? 'bg-primary/10 text-primary font-medium'\n : 'text-foreground hover:bg-accent/50',\n item.disabled && 'opacity-40 cursor-not-allowed'\n )\"\n @click=\"handleClick\"\n >\n <!-- 활성 좌측 바 -->\n <div\n v-if=\"isActive\"\n class=\"absolute left-0 top-1 bottom-1 w-[3px] rounded-r bg-primary\"\n />\n\n <JIcon\n v-if=\"item.icon\"\n :name=\"item.icon\"\n size=\"sm\"\n class=\"flex-shrink-0\"\n />\n <span class=\"flex-1 truncate text-xs\">{{ item.label }}</span>\n\n <!-- 즐겨찾기 별 -->\n <button\n :class=\"cn(\n 'flex-shrink-0 p-0.5 rounded transition-opacity',\n isFav\n ? 'opacity-100 text-yellow-500'\n : 'opacity-0 group-hover:opacity-100 text-muted-foreground hover:text-yellow-500'\n )\"\n @click=\"handleFavoriteClick\"\n >\n <JIcon\n name=\"star\"\n size=\"sm\"\n :class=\"isFav ? 'fill-yellow-500' : undefined\"\n />\n </button>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","state","inject","SIDEBAR_INJECTION_KEY","isActive","computed","isFav","handleClick","event","handleFavoriteClick","_unref","_createBlock","JTooltip","_createElementVNode","cn","_createVNode","JIcon","_createElementBlock","_openBlock","_hoisted_1","_hoisted_2","_toDisplayString","_normalizeClass"],"mappings":";;;;;;;;;;;;;;;AAaA,UAAMA,IAAQC,GAIRC,IAAOC,GAIPC,IAAQC,EAAOC,CAAqB,GAEpCC,IAAWC,EAAS,MACpB,CAACR,EAAM,KAAK,QAAQ,CAACI,EAAM,aAAmB,KAC3CA,EAAM,eAAeJ,EAAM,KAAK,IACxC,GAEKS,IAAQD,EAAS,MAAMJ,EAAM,UAAU,IAAIJ,EAAM,KAAK,EAAE,CAAC,GAEzDU,IAAc,CAACC,MAAsB;AACzC,MAAIX,EAAM,KAAK,YACfE,EAAK,cAAcF,EAAM,MAAMW,CAAK;AAAA,IACtC,GAEMC,IAAsB,CAACD,MAAsB;AACjD,MAAAA,EAAM,gBAAA,GACNP,EAAM,eAAeJ,EAAM,KAAK,EAAE;AAAA,IACpC;qBAMUa,EAAAT,CAAA,EAAM,kBADdU,EAoBWC,GAAA;AAAA;MAlBR,SAASd,EAAA,KAAK;AAAA,MACf,MAAK;AAAA,MACL,MAAK;AAAA,IAAA;MAEM,WACT,MAWM;AAAA,QAXNe,EAWM,OAAA;AAAA,UAVH,SAAOH,EAAAI,CAAA;AAAA;YAAoHV,EAAA;YAAkHN,EAAA,KAAK,YAAQ;AAAA,UAAA;UAO1P,SAAOS;AAAA,QAAA;UAERQ,EAA+CC,GAAA;AAAA,YAAvC,MAAMlB,EAAA,KAAK,QAAI;AAAA,YAAY,MAAK;AAAA,UAAA;;;;gCAM9CmB,EAyCM,OAAA;AAAA;MAvCH,SAAOP,EAAAI,CAAA;AAAA;QAAgHV,EAAA;QAAkHN,EAAA,KAAK,YAAQ;AAAA,MAAA;MAOtP,SAAOS;AAAA,IAAA;MAIAH,EAAA,SADRc,EAAA,GAAAD,EAGE,OAHFE,CAGE;MAGMrB,EAAA,KAAK,aADba,EAKEK,GAAA;AAAA;QAHC,MAAMlB,EAAA,KAAK;AAAA,QACZ,MAAK;AAAA,QACL,OAAM;AAAA,MAAA;MAERe,EAA6D,QAA7DO,GAA6DC,EAApBvB,EAAA,KAAK,KAAK,GAAA,CAAA;AAAA,MAGnDe,EAcS,UAAA;AAAA,QAbN,SAAOH,EAAAI,CAAA;AAAA;UAAsER,EAAA;;QAM7E,SAAOG;AAAA,MAAA;QAERM,EAIEC,GAAA;AAAA,UAHA,MAAK;AAAA,UACL,MAAK;AAAA,UACJ,OAAKM,EAAEhB,EAAA,QAAK,oBAAuB,MAAS;AAAA,QAAA;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./JSidebarItem.vue.cjs");exports.default=e.default;
2
+ //# sourceMappingURL=JSidebarItem.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSidebarItem.vue2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import f from "./JSidebarItem.vue.js";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=JSidebarItem.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSidebarItem.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -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\n :class=\"\n cn(\n 'rounded-sm border bg-card text-card-foreground shadow-sm',\n props.class,\n )\n \"\n >\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,eAASC,EAAAA,MAAAC,EAAAA,EAAA,6DAAgFL,EAAM,KAAA,KAOrGM,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"}
@@ -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\n :class=\"\n cn(\n 'rounded-sm border bg-card text-card-foreground shadow-sm',\n props.class,\n )\n \"\n >\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,QAASC,EAAAC,CAAA;AAAA;UAAgFL,EAAM;AAAA,QAAA;AAAA;;MAOrGM,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 +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>\r\n <div :class=\"cn('p-3 pt-2 pb-2', props.class)\">\r\n <slot />\r\n </div>\r\n</template>\r\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
+ {"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 +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>\r\n <div :class=\"cn('p-3 pt-2 pb-2', props.class)\">\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,EAEM,OAAA;AAAA,MAFA,OAAKC,EAAEC,EAAAC,CAAA,EAAE,iBAAkBL,EAAM,KAAK,CAAA;AAAA,IAAA;MAC1CM,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 +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>\r\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)\">\r\n <slot />\r\n </div>\r\n</template>\r\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
+ {"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 +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>\r\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)\">\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,EAEM,OAAA;AAAA,MAFA,OAAKC,EAAEC,EAAAC,CAAA,EAAE,uGAAwGL,EAAM,KAAK,CAAA;AAAA,IAAA;MAChIM,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 +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-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"}
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"}
@@ -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-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
+ {"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 +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-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"}
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"}
@@ -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-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
+ {"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 +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 '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,+HAAoJR,EAAM,KAAA,GAMlKM,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"}
@@ -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 '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;QAAoJR,EAAM;AAAA,MAAA;AAAA,OAMlKM,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 +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-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"}
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"}
@@ -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-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
+ {"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 +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-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\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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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-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\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":";;;;;;;;;;;;AAIO,MAAMA,IAAiBC;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,MAAM;AAAA,MAAA;AAAA,MAER,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;"}
1
+ {"version":3,"file":"index.js","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":";;;;;;;;;;;;AAIO,MAAMA,IAAiBC;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,MAAM;AAAA,MAAA;AAAA,MAER,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"JLayout.vue.cjs","sources":["../../../../src/components/templates/JLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue'\r\nimport { cn } from '@/lib/utils'\r\n\r\n/**\r\n * JLayout - 기본 레이아웃 컴포넌트 (templates)\r\n * Base Layout Component\r\n * \r\n * @description\r\n * 공통 레이아웃 구조를 제공하는 기본 컴포넌트입니다.\r\n * Header, Sidebar, Content 영역을 슬롯으로 제공하여 유연한 레이아웃 구성이 가능합니다.\r\n * \r\n * 레이아웃 구조:\r\n * - header: 상단 헤더 영역 (슬롯)\r\n * - sidebar: 사이드바 영역 (슬롯)\r\n * - content: 메인 콘텐츠 영역 (슬롯, 기본 슬롯도 지원)\r\n * \r\n * @example\r\n * ```vue\r\n * <JLayout styletype=\"default\" :content-scroll=\"true\">\r\n * <template #header>\r\n * <JHeader logo-text=\"JWMS Portal\" />\r\n * </template>\r\n * <template #sidebar>\r\n * <JSidebarSimple :menu-items=\"menuItems\" />\r\n * </template>\r\n * <template #content>\r\n * <div>메인 콘텐츠</div>\r\n * </template>\r\n * </JLayout>\r\n * ```\r\n * \r\n * @example 기본 슬롯 사용\r\n * ```vue\r\n * <JLayout>\r\n * <div>기본 콘텐츠</div>\r\n * </JLayout>\r\n * ```\r\n */\r\n\r\ntype StyleType = 'default' | 'minimal'\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 레이아웃 스타일 타입 */\r\n styletype?: StyleType\r\n /** 콘텐츠 영역 스크롤 가능 여부 */\r\n contentScroll?: boolean\r\n /** 추가 CSS 클래스 */\r\n class?: string\r\n }>(),\r\n {\r\n styletype: 'default',\r\n contentScroll: true,\r\n }\r\n)\r\n\r\n// JLayout은 사이드바 상태를 직접 관리하지 않고, 슬롯으로 전달\r\n// Preset 컴포넌트(JLayoutAdvanced, JLayoutSimple)에서 상태 관리\r\n\r\n/**\r\n * 스타일 프리셋\r\n */\r\nconst STYLE_PRESETS: Record<StyleType, {\r\n containerClass: string\r\n contentClass: string\r\n}> = {\r\n default: {\r\n containerClass: 'flex flex-col h-screen w-full overflow-hidden',\r\n contentClass: 'flex flex-1 overflow-hidden',\r\n },\r\n minimal: {\r\n containerClass: 'flex flex-col h-screen w-full overflow-hidden',\r\n contentClass: 'flex flex-1 overflow-hidden',\r\n },\r\n}\r\n\r\nconst preset = computed(() => {\r\n return STYLE_PRESETS[props.styletype] ?? STYLE_PRESETS.default\r\n})\r\n\r\nconst contentClasses = computed(() => {\r\n return cn(\r\n preset.value.contentClass,\r\n !props.contentScroll && 'overflow-hidden'\r\n )\r\n})\r\n</script>\r\n\r\n<template>\r\n <div :class=\"cn(preset.containerClass, props.class)\">\r\n <!-- 헤더 슬롯 -->\r\n <slot name=\"header\" />\r\n\r\n <!-- 메인 컨텐츠 영역 -->\n <div :class=\"contentClasses\">\n <!-- 사이드바 슬롯 (사이드바가 보일 때만 border 표시) -->\n <slot name=\"sidebar\" />\n\n <!-- 콘텐츠 슬롯 -->\n <div class=\"flex-1 flex flex-col min-h-0\" :class=\"props.contentScroll ? 'overflow-auto' : 'overflow-hidden'\">\n <slot name=\"content\">\n <!-- 기본 슬롯도 지원 -->\n <slot />\n </slot>\n </div>\n </div>\n </div>\r\n</template>\r\n"],"names":["props","__props","STYLE_PRESETS","preset","computed","contentClasses","cn","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_createElementVNode"],"mappings":"0SA0CA,MAAMA,EAAQC,EAqBRC,EAGD,CACH,QAAS,CACP,eAAgB,gDAChB,aAAc,6BAAA,EAEhB,QAAS,CACP,eAAgB,gDAChB,aAAc,6BAAA,CAChB,EAGIC,EAASC,EAAAA,SAAS,IACfF,EAAcF,EAAM,SAAS,GAAKE,EAAc,OACxD,EAEKG,EAAiBD,EAAAA,SAAS,IACvBE,EAAAA,GACLH,EAAO,MAAM,aACb,CAACH,EAAM,eAAiB,iBAAA,CAE3B,8BAICO,EAAAA,mBAiBM,MAAA,CAjBA,MAAKC,EAAAA,eAAEC,EAAAA,YAAGN,EAAA,MAAO,eAAgBH,EAAM,KAAK,CAAA,CAAA,GAEhDU,aAAsBC,EAAA,OAAA,QAAA,EAGtBC,EAAAA,mBAWM,MAAA,CAXA,uBAAOP,EAAA,KAAc,CAAA,GAEzBK,aAAuBC,EAAA,OAAA,SAAA,EAGvBC,EAAAA,mBAKM,MAAA,CALD,MAAKJ,EAAAA,eAAA,CAAC,+BAAuCR,EAAM,cAAa,gBAAA,iBAAA,CAAA,CAAA,GACnEU,EAAAA,WAGOC,sBAHP,IAGO,CADLD,aAAQC,EAAA,OAAA,SAAA,CAAA"}
1
+ {"version":3,"file":"JLayout.vue.cjs","sources":["../../../../src/components/templates/JLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { cn } from '@/lib/utils'\n\n/**\n * JLayout - 기본 레이아웃 컴포넌트 (templates)\n * Base Layout Component\n * \n * @description\n * 공통 레이아웃 구조를 제공하는 기본 컴포넌트입니다.\n * Header, Sidebar, Content 영역을 슬롯으로 제공하여 유연한 레이아웃 구성이 가능합니다.\n * \n * 레이아웃 구조:\n * - header: 상단 헤더 영역 (슬롯)\n * - sidebar: 사이드바 영역 (슬롯)\n * - content: 메인 콘텐츠 영역 (슬롯, 기본 슬롯도 지원)\n * \n * @example\n * ```vue\n * <JLayout styletype=\"default\" :content-scroll=\"true\">\n * <template #header>\n * <JHeader logo-text=\"JWMS Portal\" />\n * </template>\n * <template #sidebar>\n * <JSidebarSimple :menu-items=\"menuItems\" />\n * </template>\n * <template #content>\n * <div>메인 콘텐츠</div>\n * </template>\n * </JLayout>\n * ```\n * \n * @example 기본 슬롯 사용\n * ```vue\n * <JLayout>\n * <div>기본 콘텐츠</div>\n * </JLayout>\n * ```\n */\n\ntype StyleType = 'default' | 'minimal'\n\nconst props = withDefaults(\n defineProps<{\n /** 레이아웃 스타일 타입 */\n styletype?: StyleType\n /** 콘텐츠 영역 스크롤 가능 여부 */\n contentScroll?: boolean\n /** 추가 CSS 클래스 */\n class?: string\n }>(),\n {\n styletype: 'default',\n contentScroll: true,\n }\n)\n\n// JLayout은 사이드바 상태를 직접 관리하지 않고, 슬롯으로 전달\n// Preset 컴포넌트(JLayoutAdvanced, JLayoutSimple)에서 상태 관리\n\n/**\n * 스타일 프리셋\n */\nconst STYLE_PRESETS: Record<StyleType, {\n containerClass: string\n contentClass: string\n}> = {\n default: {\n containerClass: 'flex flex-col h-screen w-full overflow-hidden',\n contentClass: 'flex flex-1 overflow-hidden',\n },\n minimal: {\n containerClass: 'flex flex-col h-screen w-full overflow-hidden',\n contentClass: 'flex flex-1 overflow-hidden',\n },\n}\n\nconst preset = computed(() => {\n return STYLE_PRESETS[props.styletype] ?? STYLE_PRESETS.default\n})\n\nconst contentClasses = computed(() => {\n return cn(\n preset.value.contentClass,\n !props.contentScroll && 'overflow-hidden'\n )\n})\n</script>\n\n<template>\n <div :class=\"cn(preset.containerClass, props.class)\">\n <!-- 헤더 슬롯 -->\n <slot name=\"header\" />\n\n <!-- 메인 컨텐츠 영역 -->\n <div :class=\"contentClasses\">\n <!-- 사이드바 슬롯 (사이드바가 보일 때만 border 표시) -->\n <slot name=\"sidebar\" />\n\n <!-- 콘텐츠 슬롯 -->\n <div class=\"flex-1 flex flex-col min-h-0\" :class=\"props.contentScroll ? 'overflow-auto' : 'overflow-hidden'\">\n <slot name=\"content\">\n <!-- 기본 슬롯도 지원 -->\n <slot />\n </slot>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","STYLE_PRESETS","preset","computed","contentClasses","cn","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_createElementVNode"],"mappings":"0SA0CA,MAAMA,EAAQC,EAqBRC,EAGD,CACH,QAAS,CACP,eAAgB,gDAChB,aAAc,6BAAA,EAEhB,QAAS,CACP,eAAgB,gDAChB,aAAc,6BAAA,CAChB,EAGIC,EAASC,EAAAA,SAAS,IACfF,EAAcF,EAAM,SAAS,GAAKE,EAAc,OACxD,EAEKG,EAAiBD,EAAAA,SAAS,IACvBE,EAAAA,GACLH,EAAO,MAAM,aACb,CAACH,EAAM,eAAiB,iBAAA,CAE3B,8BAICO,EAAAA,mBAiBM,MAAA,CAjBA,MAAKC,EAAAA,eAAEC,EAAAA,YAAGN,EAAA,MAAO,eAAgBH,EAAM,KAAK,CAAA,CAAA,GAEhDU,aAAsBC,EAAA,OAAA,QAAA,EAGtBC,EAAAA,mBAWM,MAAA,CAXA,uBAAOP,EAAA,KAAc,CAAA,GAEzBK,aAAuBC,EAAA,OAAA,SAAA,EAGvBC,EAAAA,mBAKM,MAAA,CALD,MAAKJ,EAAAA,eAAA,CAAC,+BAAuCR,EAAM,cAAa,gBAAA,iBAAA,CAAA,CAAA,GACnEU,EAAAA,WAGOC,sBAHP,IAGO,CADLD,aAAQC,EAAA,OAAA,SAAA,CAAA"}