@gspa/ui 0.1.4 → 0.2.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 (117) hide show
  1. package/README.md +17 -0
  2. package/dist/Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js +205 -0
  3. package/dist/Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs +1 -0
  4. package/dist/DataTable.css +1 -0
  5. package/dist/DataTableToolBar.css +1 -0
  6. package/dist/FormField.vue_vue_type_script_setup_true_lang-DimMUyA-.js +205 -0
  7. package/dist/FormField.vue_vue_type_script_setup_true_lang-mEO-VA6R.cjs +1 -0
  8. package/dist/Header.css +1 -0
  9. package/dist/Input.vue_vue_type_script_setup_true_lang-C1OQn24h.cjs +1 -0
  10. package/dist/Input.vue_vue_type_script_setup_true_lang-CpBoY97r.js +137 -0
  11. package/dist/Loader.css +1 -0
  12. package/dist/ReminderConfig.css +1 -0
  13. package/dist/ReusableForm.css +1 -0
  14. package/dist/Sidebar.css +1 -0
  15. package/dist/Toast.css +1 -0
  16. package/dist/components/AccordionItem.cjs +1 -1
  17. package/dist/components/AccordionItem.js +5 -5
  18. package/dist/components/Alert.cjs +1 -1
  19. package/dist/components/Alert.js +71 -66
  20. package/dist/components/Button.cjs +1 -1
  21. package/dist/components/Button.js +2 -188
  22. package/dist/components/DataTable.cjs +1 -1
  23. package/dist/components/DataTable.js +1 -1
  24. package/dist/components/DataTableFilters.cjs +1 -1
  25. package/dist/components/DataTableFilters.js +19 -19
  26. package/dist/components/DataTableToolBar.cjs +1 -1
  27. package/dist/components/DataTableToolBar.js +1 -1
  28. package/dist/components/FormField.cjs +1 -1
  29. package/dist/components/FormField.js +2 -188
  30. package/dist/components/GraphFilters.cjs +1 -1
  31. package/dist/components/GraphFilters.js +29 -29
  32. package/dist/components/Icon.cjs +1 -1
  33. package/dist/components/Icon.js +23 -16
  34. package/dist/components/Input.cjs +1 -1
  35. package/dist/components/Input.js +2 -164
  36. package/dist/components/ReusableForm.cjs +1 -1
  37. package/dist/components/ReusableForm.js +187 -158
  38. package/dist/components/ThemeConfigurator.cjs +1 -1
  39. package/dist/components/ThemeConfigurator.js +51 -28
  40. package/dist/gspa-ui.css +1 -1
  41. package/dist/index.cjs +1 -1
  42. package/dist/index.esm.js +123 -117
  43. package/dist/layouts/AuthLayout.cjs +1 -1
  44. package/dist/layouts/AuthLayout.js +110 -112
  45. package/dist/lib/form-field.cjs +1 -0
  46. package/dist/lib/form-field.js +4 -0
  47. package/dist/lib/icon.cjs +1 -0
  48. package/dist/lib/icon.js +4 -0
  49. package/dist/lib/theme.cjs +1 -1
  50. package/dist/lib/theme.js +73 -63
  51. package/dist/src/components/Alert.vue.d.ts.map +1 -1
  52. package/dist/src/components/Button.vue.d.ts +127 -29
  53. package/dist/src/components/Button.vue.d.ts.map +1 -1
  54. package/dist/src/components/Checkbox.vue.d.ts +2 -2
  55. package/dist/src/components/DataTable.vue.d.ts +1 -1
  56. package/dist/src/components/FormField.vue.d.ts +106 -38
  57. package/dist/src/components/FormField.vue.d.ts.map +1 -1
  58. package/dist/src/components/Icon.vue.d.ts.map +1 -1
  59. package/dist/src/components/Input.vue.d.ts +137 -33
  60. package/dist/src/components/Input.vue.d.ts.map +1 -1
  61. package/dist/src/components/ReusableForm.vue.d.ts +1 -1
  62. package/dist/src/components/ReusableForm.vue.d.ts.map +1 -1
  63. package/dist/src/components/ReusableFormModal.vue.d.ts +1 -1
  64. package/dist/src/components/Textarea.vue.d.ts +2 -2
  65. package/dist/src/index.d.ts +9 -4
  66. package/dist/src/index.d.ts.map +1 -1
  67. package/dist/src/layouts/AuthLayout.vue.d.ts +2 -0
  68. package/dist/src/layouts/AuthLayout.vue.d.ts.map +1 -1
  69. package/dist/src/lib/form-field.d.ts +2 -0
  70. package/dist/src/lib/form-field.d.ts.map +1 -0
  71. package/dist/src/lib/icon.d.ts +2 -0
  72. package/dist/src/lib/icon.d.ts.map +1 -0
  73. package/dist/src/lib/theme.d.ts +4 -0
  74. package/dist/src/lib/theme.d.ts.map +1 -1
  75. package/dist/src/types.d.ts +44 -0
  76. package/dist/src/types.d.ts.map +1 -0
  77. package/dist/styles/auth-layout.css +1 -0
  78. package/dist/styles/button.css +1 -0
  79. package/dist/styles/form-field.css +1 -0
  80. package/dist/styles/input.css +1 -0
  81. package/dist/styles/tokens.css +1 -0
  82. package/dist/tsconfig.tsbuildinfo +1 -1
  83. package/package.json +10 -3
  84. package/dist/src/__tests__/Alert.spec.d.ts +0 -2
  85. package/dist/src/__tests__/Alert.spec.d.ts.map +0 -1
  86. package/dist/src/__tests__/App.spec.d.ts +0 -2
  87. package/dist/src/__tests__/App.spec.d.ts.map +0 -1
  88. package/dist/src/__tests__/AuthLayout.spec.d.ts +0 -2
  89. package/dist/src/__tests__/AuthLayout.spec.d.ts.map +0 -1
  90. package/dist/src/__tests__/Badge.spec.d.ts +0 -2
  91. package/dist/src/__tests__/Badge.spec.d.ts.map +0 -1
  92. package/dist/src/__tests__/Button.spec.d.ts +0 -2
  93. package/dist/src/__tests__/Button.spec.d.ts.map +0 -1
  94. package/dist/src/__tests__/Card.spec.d.ts +0 -2
  95. package/dist/src/__tests__/Card.spec.d.ts.map +0 -1
  96. package/dist/src/__tests__/Checkbox.spec.d.ts +0 -2
  97. package/dist/src/__tests__/Checkbox.spec.d.ts.map +0 -1
  98. package/dist/src/__tests__/Dropdown.spec.d.ts +0 -2
  99. package/dist/src/__tests__/Dropdown.spec.d.ts.map +0 -1
  100. package/dist/src/__tests__/Input.spec.d.ts +0 -2
  101. package/dist/src/__tests__/Input.spec.d.ts.map +0 -1
  102. package/dist/src/__tests__/Modal.spec.d.ts +0 -2
  103. package/dist/src/__tests__/Modal.spec.d.ts.map +0 -1
  104. package/dist/src/__tests__/Radio.spec.d.ts +0 -2
  105. package/dist/src/__tests__/Radio.spec.d.ts.map +0 -1
  106. package/dist/src/__tests__/ReusableForm.spec.d.ts +0 -2
  107. package/dist/src/__tests__/ReusableForm.spec.d.ts.map +0 -1
  108. package/dist/src/__tests__/Tabs.spec.d.ts +0 -2
  109. package/dist/src/__tests__/Tabs.spec.d.ts.map +0 -1
  110. package/dist/src/__tests__/integration/CardIntegration.spec.d.ts +0 -2
  111. package/dist/src/__tests__/integration/CardIntegration.spec.d.ts.map +0 -1
  112. package/dist/src/__tests__/integration/FormIntegration.spec.d.ts +0 -2
  113. package/dist/src/__tests__/integration/FormIntegration.spec.d.ts.map +0 -1
  114. package/dist/src/__tests__/integration/ModalIntegration.spec.d.ts +0 -2
  115. package/dist/src/__tests__/integration/ModalIntegration.spec.d.ts.map +0 -1
  116. package/dist/src/__tests__/integration/NavigationIntegration.spec.d.ts +0 -2
  117. package/dist/src/__tests__/integration/NavigationIntegration.spec.d.ts.map +0 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),S=require("class-variance-authority"),m=require("../utils/cn.cjs"),Te=require("./Checkbox.cjs"),De=require("./DataTableHeader.cjs"),Re=require("./DataTableRow.cjs"),Ae=require("./DataTableToolBar.cjs"),ze=require("./DataTablePagination.cjs"),$e=require("./FilterDrawer.cjs"),I=require("./Icon.cjs"),R=require("./Loader.cjs"),Pe=require("./Button.cjs"),Le=require("./Tooltip.cjs"),Fe=require("./Modal.cjs"),je=require("../_plugin-vue_export-helper-BHFhmbuH.cjs"),qe={key:0,class:"inline-flex items-center justify-center min-w-5 h-5 rounded-full text-xs ui-primary-bg text-white px-1"},Oe={class:"relative"},Me={class:"flex items-center justify-center"},Ke=["onClick"],Ue={class:"flex items-center gap-2"},Ie={key:1,class:"flex flex-col"},He=["onClick"],Je={key:1},Ge={key:1,class:"flex items-center gap-1 justify-center"},Qe={key:1,class:"text-xs"},Xe={key:2},Ye=["colspan"],Ze={class:"flex flex-col items-center justify-center py-12"},We={class:"ui-text mb-4 flex justify-center"},_e={class:"ui-text text-lg font-medium mb-2"},et={class:"ui-text text-sm"},tt={class:"p-6"},lt={class:"text-xl font-bold ui-text whitespace-pre-wrap wrap-break-word"},at={__name:"DataTable",props:{data:{type:Array,required:!0},columns:{type:Array,required:!0},title:{type:String,default:null},description:{type:String,default:null},selectable:{type:Boolean,default:!1},selectedItems:{type:Array,default:()=>[]},sortBy:{type:String,default:null},sortOrder:{type:String,default:"asc",validator:a=>["asc","desc"].includes(a)},pageSize:{type:Number,default:10},showPagination:{type:Boolean,default:!0},striped:{type:Boolean,default:!0},hoverable:{type:Boolean,default:!0},clickableRows:{type:Boolean,default:!1},highlightUnreadRows:{type:Boolean,default:!0},unreadCreatedAtField:{type:String,default:""},unreadMode:{type:String,default:"all",validator:a=>["all","new-only"].includes(a)},unreadPersistKey:{type:String,default:""},emptyText:{type:String,default:"No data available"},emptySubtitle:{type:String,default:"Try adjusting your search or filter criteria"},rowKey:{type:String,default:"id"},variant:{type:String,default:"default",validator:a=>["default","bordered","minimal"].includes(a)},density:{type:String,default:"compact",validator:a=>["compact","normal","comfortable"].includes(a)},headerVariant:{type:String,default:"default"},headerPadding:{type:String,default:"normal"},paginationVariant:{type:String,default:"default"},paginationPadding:{type:String,default:"normal"},actions:{type:Array,default:()=>[]},showActionsColumn:{type:Boolean,default:!0},addButton:{type:Object,default:()=>({})},loading:{type:Boolean,default:!1},dataLoading:{type:Boolean,default:!1},sortLoading:{type:Boolean,default:!1},paginationLoading:{type:Boolean,default:!1},bulkLoading:{type:Boolean,default:!1},rowLoading:{type:Object,default:()=>({})},loadingType:{type:String,default:"dots",validator:a=>["spin","pulse","bounce","ripple","bars","dots","ring"].includes(a)},loadingSize:{type:String,default:"medium",validator:a=>["small","medium","large","xl"].includes(a)},loadingColor:{type:String,default:"#3b82f6"},loadingText:{type:String,default:"Loading..."},loadingTextPosition:{type:String,default:"bottom",validator:a=>["top","bottom"].includes(a)},loadingBackground:{type:String,default:"rgba(255, 255, 255, 0.95)"},showSkeleton:{type:Boolean,default:!0},skeletonRows:{type:Number,default:10},showToolbar:{type:Boolean,default:!1},showDensityToggle:{type:Boolean,default:!0},showColumnToggle:{type:Boolean,default:!0},showRefresh:{type:Boolean,default:!0},showFilterDrawer:{type:Boolean,default:!1},filterFields:{type:Array,default:()=>[]},filterRules:{type:Object,default:()=>({logic:"all",rules:[]})},defaultFilterRules:{type:Object,default:()=>({logic:"all",rules:[]})},themeScope:{type:String,default:"default",validator:a=>["default","module"].includes(a)}},emits:["selection-change","sort-change","row-click","page-change","page-size-change","refresh","action","update:density","toggle-column","add","add-button-click","update:filterRules"],setup(a,{expose:H,emit:J}){const n=a,u=J,G=e.useSlots(),k=e.ref(1),b=e.ref(n.pageSize),p=e.ref(n.columns.map(t=>t.key)),g=e.ref(n.sortBy),y=e.ref(n.sortOrder),h=e.ref(!1),w=e.ref(""),V=e.ref(!1),C=e.ref(new Set),A=e.ref(Date.now()),Q=(t,l)=>{if(!(!t||!l))return String(l).split(".").reduce((r,o)=>r?.[o],t)},N=e.computed(()=>Array.isArray(n.filterRules?.rules)?n.filterRules.rules.length:0),X=t=>{if(t&&typeof t=="object"){const l=t.from||"",r=t.to||"";return l&&r?`${l} to ${r}`:l||r||""}return String(t??"")},Y=()=>u("update:filterRules",{logic:"all",rules:[]}),Z=e.computed(()=>(n.filterRules?.rules||[]).map(t=>({id:t.id,label:t.label,value:X(t.value)}))),W=S.cva("border ui-border-strong rounded-2xl relative overflow-hidden flex flex-col gap-y-2 px-2 pb-2",{variants:{variant:{default:"shadow-sm ui-border-strong",bordered:"border-2 ui-border-strong",minimal:"border-none ui-border-strong shadow-none bg-transparent"}},defaultVariants:{variant:"default"}}),_=S.cva("min-w-full",{variants:{variant:{default:"divide-y divide-(--ui-border-strong)",bordered:"border-collapse [&_td]:border [&_th]:border [&_td]:border-(--ui-border-strong) [&_th]:border-(--ui-border-strong)",minimal:"divide-y divide-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),ee=S.cva("",{variants:{variant:{default:" border-b border-(--ui-border-strong)",bordered:" border-b-2 border-(--ui-border-strong)",minimal:"bg-transparent border-b border-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),te=S.cva("divide-y",{variants:{variant:{default:" divide-(--ui-border-strong)",bordered:" divide-(--ui-border-strong)",minimal:"bg-transparent divide-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),f=e.computed(()=>{let t=[...n.data];if(g.value){const l=n.columns.find(r=>r.key===g.value);l&&t.sort((r,o)=>{const c=T(r,l),i=T(o,l);return c<i?y.value==="asc"?-1:1:c>i?y.value==="asc"?1:-1:0})}return t}),z=e.computed(()=>Math.ceil(f.value.length/b.value)),$=e.computed(()=>{if(!n.showPagination)return f.value;const t=(k.value-1)*b.value,l=t+b.value;return f.value.slice(t,l)}),B=e.computed(()=>n.columns.filter(t=>p.value.includes(t.key))),le=e.computed(()=>n.columns.filter(t=>t.toggleable!==!1)),ae=(t,l)=>{l?p.value.includes(t)||p.value.push(t):p.value=p.value.filter(r=>r!==t),u("toggle-column",{key:t,visible:l})},E=e.computed(()=>n.showActionsColumn?G.actions?!0:!n.actions||n.actions.length===0?!1:n.actions.some(l=>l.permission===void 0?!0:typeof l.permission=="boolean"?l.permission===!0:typeof l.permission=="function"):!1),ne=e.computed(()=>{let t=n.columns.length;return n.selectable&&t++,E.value&&t++,t}),oe=t=>n.actions.filter(l=>{if(l.permission!==void 0){if(typeof l.permission=="function"){if(!l.permission(t))return!1}else if(!l.permission)return!1}return l.visible&&typeof l.visible=="function"?l.visible(t):!0}),P=(t,l)=>t.permission&&typeof t.permission=="function"?t.permission(l):!0,L=(t,l)=>t.disabled&&typeof t.disabled=="function"?t.disabled(l):!1,re=(t,l)=>{L(t,l)||!P(t,l)||(u("action",{action:t.key,item:l,actionConfig:t}),t.onClick&&typeof t.onClick=="function"&&t.onClick(l))},se=t=>({default:"default",primary:"gradient",secondary:"secondary",danger:"danger",success:"success",warning:"warning",info:"info",subtle:"subtle",dark:"dark",light:"light",primaryOutline:"primaryOutline",dangerOutline:"dangerOutline",successOutline:"successOutline",outline:"outline",link:"link",ghost:"ghost"})[t]||"ghost",F=e.computed(()=>f.value.length>0&&f.value.every(t=>D(t))),ie=e.computed(()=>{const t=f.value.filter(l=>D(l)).length;return t>0&&t<f.value.length}),T=(t,l)=>l.accessor?l.accessor(t):l.key.split(".").reduce((r,o)=>r?.[o],t),v=(t,l)=>t[n.rowKey]||l,D=t=>n.selectedItems.some(l=>v(l)===v(t)),de=t=>{const l=[...n.selectedItems],r=l.findIndex(o=>v(o)===v(t));r>-1?l.splice(r,1):l.push(t),u("selection-change",l)},j=()=>{if(n.loading||n.dataLoading)return;const t=F.value?[]:[...f.value];u("selection-change",t)},ue=async t=>{!t.sortable||n.loading||n.sortLoading||(g.value===t.key?y.value=y.value==="asc"?"desc":"asc":(g.value=t.key,y.value="asc"),u("sort-change",{column:t.key,direction:y.value}))},ce=t=>{if(!n.loading){if(n.highlightUnreadRows){const l=v(t.item,t.index);C.value.add(String(l)),ye()}u("row-click",t)}},fe=(t,l)=>{if(!n.highlightUnreadRows)return!1;const r=String(v(t,l));if(C.value.has(r))return!1;if(n.unreadMode==="all")return!0;const o=n.unreadCreatedAtField;if(!o)return!1;const c=o.includes(".")?Q(t,o):t?.[o];if(!c)return!1;const i=String(c).trim();let d=new Date(i).getTime();if(Number.isNaN(d)){const s=i.match(/^(\d{2})[-/](\d{2})[-/](\d{4})$/);if(s){const[,U,Ne,Ee]=s;d=new Date(`${Ee}-${Ne}-${U}T00:00:00`).getTime()}}if(Number.isNaN(d))return!1;if(/^\d{4}-\d{2}-\d{2}$/.test(i)){const s=new Date(A.value);return s.setHours(0,0,0,0),d>=s.getTime()}return d>=A.value},me=(t,l)=>n.highlightUnreadRows?fe(t,l)?"font-bold !bg-[color:color-mix(in_oklab,var(--module-soft,var(--ui-primary-soft))_62%,var(--ui-surface)_38%)]":"font-normal !bg-[color:color-mix(in_oklab,var(--module-soft-alt,var(--ui-surface-soft))_42%,var(--ui-surface)_58%)]":"",ge=()=>{if(!(!n.unreadPersistKey||typeof window>"u"))try{const t=window.localStorage.getItem(n.unreadPersistKey);if(!t)return;const l=JSON.parse(t);Array.isArray(l)&&(C.value=new Set(l.map(String)))}catch{}},ye=()=>{if(!(!n.unreadPersistKey||typeof window>"u"))try{window.localStorage.setItem(n.unreadPersistKey,JSON.stringify(Array.from(C.value)))}catch{}},q=async t=>{n.paginationLoading||n.loading||(k.value=t,u("page-change",t))},pe=async t=>{n.paginationLoading||n.loading||(b.value=t,k.value=1,u("page-size-change",t))},ve=e.computed(()=>m.cn(W({variant:n.variant}),n.themeScope==="module"&&"kv-module-themed-table")),be=e.computed(()=>m.cn(_({variant:n.variant}))),ke=e.computed(()=>m.cn(ee({variant:n.variant}))),he=e.computed(()=>m.cn(te({variant:n.variant}))),we=t=>{const l={compact:"px-3.5 py-1.5",normal:"px-6 py-3",comfortable:"px-8 py-4"};return m.cn(l[n.density],"text-left text-sm font-extrabold ui-text uppercase tracking-wider",{"cursor-pointer hover:bg-(--ui-surface) transition-colors":t.sortable&&!n.loading&&!n.sortLoading,"cursor-not-allowed opacity-50":n.loading||n.sortLoading&&g.value===t.key})},Ce=()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-sm ui-text")},x=(t,l)=>{const r=T(t,l);return typeof l=="object"&&l.formatter?l.formatter(r,t):r==null?"":r instanceof Date?r.toLocaleDateString():Array.isArray(r)?r.join(", "):r},Be=(t,l=10)=>{if(!t)return t;const r=t.toString().split(" ");return r.length<=l?t:r.slice(0,l).join(" ")+"..."},xe=t=>{w.value||(w.value=t,h.value=!0)},Se=()=>{h.value=!1,w.value=""},O=e.computed(()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-sm ui-text w-12")}),M=e.computed(()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-md font-extrabold text-center")}),Ve=e.computed(()=>{const t={compact:"px-4 py-4",normal:"px-6 py-6",comfortable:"px-8 py-8"};return m.cn(t[n.density],"text-center")}),K=(t,l)=>m.cn({"ui-primary":g.value===t.key&&y.value===l,"ui-text":g.value!==t.key||y.value!==l});return e.watch(()=>n.selectedItems,()=>{},{deep:!0}),e.watch(()=>n.pageSize,t=>{b.value=t}),e.watch(()=>n.columns,t=>{p.value=t.map(l=>l.key)},{deep:!0}),H({refresh:()=>{u("refresh")},goToPage:t=>{q(t)},selectAll:()=>{j()},clearSelection:()=>{u("selection-change",[])},getCurrentPage:()=>k.value,getTotalPages:()=>z.value,getSelectedItems:()=>n.selectedItems}),ge(),(t,l)=>{const r=e.resolveComponent("font-awesome-icon");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(ve.value)},[a.title||a.description||t.$slots.header?(e.openBlock(),e.createBlock(De.default,{key:0,title:a.title,description:a.description,variant:a.headerVariant,padding:a.headerPadding},{header:e.withCtx(()=>[e.renderSlot(t.$slots,"header",{},void 0,!0)]),filters:e.withCtx(()=>[e.renderSlot(t.$slots,"filters",{},void 0,!0)]),_:3},8,["title","description","variant","padding"])):e.createCommentVNode("",!0),a.showToolbar?(e.openBlock(),e.createBlock(Ae.default,{key:1,"selected-items":a.selectedItems,"total-items":f.value.length,"show-density-toggle":a.showDensityToggle,"show-column-toggle":a.showColumnToggle,"show-refresh":a.showRefresh,"active-filters":a.showFilterDrawer?Z.value:[],"default-filter-rules":a.defaultFilterRules,"add-button":a.addButton,density:a.density,"toggleable-columns":le.value,"visible-columns":p.value,"onUpdate:density":l[1]||(l[1]=o=>u("update:density",o)),onToggleColumn:ae,onRefresh:l[2]||(l[2]=o=>t.$emit("refresh")),onAdd:l[3]||(l[3]=o=>u("add")),onAddButtonClick:l[4]||(l[4]=o=>u("add-button-click",o))},{actions:e.withCtx(()=>[e.renderSlot(t.$slots,"toolbar-actions",{},void 0,!0)]),"actions-after-add":e.withCtx(()=>[a.showFilterDrawer?(e.openBlock(),e.createElementBlock("button",{key:0,class:"px-3 py-2 text-sm border ui-border-strong rounded-md hover:bg-(--ui-surface) flex items-center gap-2",onClick:l[0]||(l[0]=o=>V.value=!0)},[e.createVNode(r,{icon:"filter"}),l[8]||(l[8]=e.createTextVNode(" Filter ",-1)),N.value>0?(e.openBlock(),e.createElementBlock("span",qe,e.toDisplayString(N.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(t.$slots,"toolbar-actions-after-add",{},void 0,!0)]),"active-filter-actions":e.withCtx(()=>[a.showFilterDrawer&&N.value>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ml-1 px-2 py-1 text-sm border border-(--ui-primary) rounded-md ui-primary hover:bg-(--ui-primary-soft)",onClick:Y}," Clear filter ")):e.createCommentVNode("",!0)]),_:3},8,["selected-items","total-items","show-density-toggle","show-column-toggle","show-refresh","active-filters","default-filter-rules","add-button","density","toggleable-columns","visible-columns"])):e.createCommentVNode("",!0),a.showFilterDrawer?(e.openBlock(),e.createBlock($e.default,{key:2,open:V.value,fields:a.filterFields,"model-value":a.filterRules,"onUpdate:modelValue":l[5]||(l[5]=o=>t.$emit("update:filterRules",o)),onClose:l[6]||(l[6]=o=>V.value=!1)},null,8,["open","fields","model-value"])):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[a.loading?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:a.loadingType,size:a.loadingSize,color:a.loadingColor,overlay:!0,text:a.loadingText,"text-position":a.loadingTextPosition,"background-color":a.loadingBackground,class:"table-loading-overlay"},null,8,["type","size","color","text","text-position","background-color"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["overflow-x-auto",{"opacity-50":a.loading}])},[e.createElementVNode("table",{class:e.normalizeClass(be.value)},[e.createElementVNode("thead",{class:e.normalizeClass(ke.value)},[e.createElementVNode("tr",null,[a.selectable?(e.openBlock(),e.createElementBlock("th",{key:0,class:e.normalizeClass(O.value)},[e.createElementVNode("div",Me,[a.bulkLoading?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:"spin",size:"small",color:a.loadingColor},null,8,["color"])):(e.openBlock(),e.createBlock(Te.default,{key:1,"model-value":F.value,indeterminate:ie.value,disabled:a.loading||a.dataLoading,"onUpdate:modelValue":j},null,8,["model-value","indeterminate","disabled"]))])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,o=>(e.openBlock(),e.createElementBlock("th",{key:o.key,class:e.normalizeClass(we(o)),onClick:c=>ue(o)},[e.createElementVNode("div",Ue,[e.createElementVNode("span",null,e.toDisplayString(o.label),1),a.sortLoading&&g.value===o.key?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:"spin",size:"small",color:a.loadingColor},null,8,["color"])):o.sortable?(e.openBlock(),e.createElementBlock("div",Ie,[(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass([K(o,"asc"),"w-3 h-3 transition-colors"]),fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[...l[9]||(l[9]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"},null,-1)])],2)),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass([K(o,"desc"),"w-3 h-3 transition-colors"]),fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[...l[10]||(l[10]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"},null,-1)])],2))])):e.createCommentVNode("",!0)])],10,Ke))),128)),E.value?(e.openBlock(),e.createElementBlock("th",{key:1,class:e.normalizeClass(M.value)}," Actions ",2)):e.createCommentVNode("",!0)])],2),e.createElementVNode("tbody",{class:e.normalizeClass(he.value)},[a.showSkeleton&&(a.loading||a.dataLoading)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.skeletonRows,o=>(e.openBlock(),e.createElementBlock("tr",{key:`skeleton-${o}`,class:"animate-pulse"},[a.selectable?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(O.value)},[...l[11]||(l[11]=[e.createElementVNode("div",{class:"w-4 h-4 ui-bg rounded"},null,-1)])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,c=>(e.openBlock(),e.createElementBlock("td",{key:c.key,class:e.normalizeClass(Ce())},[...l[12]||(l[12]=[e.createElementVNode("div",{class:"h-4 ui-bg rounded w-3/4"},null,-1)])],2))),128)),E.value?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass(M.value)},[...l[13]||(l[13]=[e.createElementVNode("div",{class:"flex gap-2 justify-center"},[e.createElementVNode("div",{class:"w-6 h-6 ui-surface rounded"}),e.createElementVNode("div",{class:"w-6 h-6 ui-surface rounded"})],-1)])],2)):e.createCommentVNode("",!0)]))),128)):$.value.length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList($.value,(o,c)=>(e.openBlock(),e.createBlock(Re.default,{key:v(o,c),item:o,columns:B.value,index:c,selectable:a.selectable,"is-selected":D(o),striped:a.striped,hoverable:a.hoverable,"clickable-rows":a.clickableRows,"row-class":me(o,c),density:a.density,variant:a.variant,onToggleSelection:de,onRowClick:ce},e.createSlots({actions:e.withCtx(({item:i,index:d})=>[t.$slots.actions?e.renderSlot(t.$slots,"actions",{key:0,item:i,index:d},void 0,!0):a.actions.length>0?(e.openBlock(),e.createElementBlock("div",Ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(oe(i),s=>(e.openBlock(),e.createBlock(Le.default,{key:s.key,content:typeof s.tooltip=="function"?s.tooltip(i):s.tooltip||s.label||s.key,placement:"top"},{default:e.withCtx(()=>[e.createVNode(Pe.default,{variant:se(s.variant),size:"xs",disabled:L(s,i)||!P(s,i),class:e.normalizeClass(["h-8 w-8",typeof s.class=="function"?s.class(i):s.class]),onClick:e.withModifiers(U=>re(s,i),["stop"])},{default:e.withCtx(()=>[s.icon?(e.openBlock(),e.createBlock(I.default,{key:0,icon:s.icon,class:"w-4 h-4"},null,8,["icon"])):s.label?(e.openBlock(),e.createElementBlock("span",Qe,e.toDisplayString(s.label),1)):e.createCommentVNode("",!0)]),_:2},1032,["variant","disabled","class","onClick"])]),_:2},1032,["content"]))),128))])):e.createCommentVNode("",!0)]),_:2},[e.renderList(B.value,i=>({name:`cell-${i.key}`,fn:e.withCtx(d=>[e.renderSlot(t.$slots,`cell-${i.key}`,e.mergeProps({ref_for:!0},d),()=>[x(d.item,d.column).toString().split(" ").length>10?(e.openBlock(),e.createElementBlock("span",{key:0,class:"cursor-pointer ui-primary hover:text-(--ui-primary)",onClick:e.withModifiers(s=>xe(x(d.item,d.column)),["stop"])},e.toDisplayString(Be(x(d.item,d.column))),9,He)):(e.openBlock(),e.createElementBlock("span",Je,e.toDisplayString(x(d.item,d.column)),1))],!0)])}))]),1032,["item","columns","index","selectable","is-selected","striped","hoverable","clickable-rows","row-class","density","variant"]))),128)):(e.openBlock(),e.createElementBlock("tr",Xe,[e.createElementVNode("td",{colspan:ne.value,class:e.normalizeClass(Ve.value)},[e.renderSlot(t.$slots,"empty",{},()=>[e.createElementVNode("div",Ze,[e.createElementVNode("div",We,[e.createVNode(I.default,{icon:"search",class:"w-16 h-16"})]),e.createElementVNode("p",_e,e.toDisplayString(a.emptyText),1),e.createElementVNode("p",et,e.toDisplayString(a.emptySubtitle),1)])],!0)],10,Ye)]))],2)],2)],2)]),a.showPagination||t.$slots.footer?(e.openBlock(),e.createBlock(ze.default,{key:3,"current-page":k.value,"total-pages":z.value,total:f.value.length,"page-size":b.value,"show-pagination":a.showPagination,selectable:a.selectable,"selected-count":a.selectedItems.length,variant:a.paginationVariant,padding:a.paginationPadding,loading:a.paginationLoading,disabled:a.loading||a.dataLoading,"onUpdate:currentPage":q,"onUpdate:pageSize":pe},{footer:e.withCtx(()=>[e.renderSlot(t.$slots,"footer",{},void 0,!0)]),_:3},8,["current-page","total-pages","total","page-size","show-pagination","selectable","selected-count","variant","padding","loading","disabled"])):e.createCommentVNode("",!0),e.createVNode(Fe.default,{modelValue:h.value,"onUpdate:modelValue":l[7]||(l[7]=o=>h.value=o),size:"lg",onClose:Se},{default:e.withCtx(()=>[e.createElementVNode("div",tt,[l[14]||(l[14]=e.createElementVNode("h3",{class:"text-md font-semibold mb-4"}," Full Text ",-1)),e.createElementVNode("div",lt,e.toDisplayString(w.value),1)])]),_:1},8,["modelValue"])],2)}}},nt=je._export_sfc(at,[["__scopeId","data-v-dc691687"]]);exports.default=nt;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),S=require("class-variance-authority"),m=require("../utils/cn.cjs"),Te=require("./Checkbox.cjs"),De=require("./DataTableHeader.cjs"),Re=require("./DataTableRow.cjs"),Ae=require("./DataTableToolBar.cjs"),ze=require("./DataTablePagination.cjs"),$e=require("./FilterDrawer.cjs"),I=require("./Icon.cjs"),R=require("./Loader.cjs"),Pe=require("../Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs"),Le=require("./Tooltip.cjs"),Fe=require("./Modal.cjs"),je=require("../_plugin-vue_export-helper-BHFhmbuH.cjs"),qe={key:0,class:"inline-flex items-center justify-center min-w-5 h-5 rounded-full text-xs ui-primary-bg text-white px-1"},Oe={class:"relative"},Me={class:"flex items-center justify-center"},Ke=["onClick"],Ue={class:"flex items-center gap-2"},Ie={key:1,class:"flex flex-col"},He=["onClick"],Je={key:1},Ge={key:1,class:"flex items-center gap-1 justify-center"},Qe={key:1,class:"text-xs"},Xe={key:2},Ye=["colspan"],Ze={class:"flex flex-col items-center justify-center py-12"},We={class:"ui-text mb-4 flex justify-center"},_e={class:"ui-text text-lg font-medium mb-2"},et={class:"ui-text text-sm"},tt={class:"p-6"},lt={class:"text-xl font-bold ui-text whitespace-pre-wrap wrap-break-word"},at={__name:"DataTable",props:{data:{type:Array,required:!0},columns:{type:Array,required:!0},title:{type:String,default:null},description:{type:String,default:null},selectable:{type:Boolean,default:!1},selectedItems:{type:Array,default:()=>[]},sortBy:{type:String,default:null},sortOrder:{type:String,default:"asc",validator:a=>["asc","desc"].includes(a)},pageSize:{type:Number,default:10},showPagination:{type:Boolean,default:!0},striped:{type:Boolean,default:!0},hoverable:{type:Boolean,default:!0},clickableRows:{type:Boolean,default:!1},highlightUnreadRows:{type:Boolean,default:!0},unreadCreatedAtField:{type:String,default:""},unreadMode:{type:String,default:"all",validator:a=>["all","new-only"].includes(a)},unreadPersistKey:{type:String,default:""},emptyText:{type:String,default:"No data available"},emptySubtitle:{type:String,default:"Try adjusting your search or filter criteria"},rowKey:{type:String,default:"id"},variant:{type:String,default:"default",validator:a=>["default","bordered","minimal"].includes(a)},density:{type:String,default:"compact",validator:a=>["compact","normal","comfortable"].includes(a)},headerVariant:{type:String,default:"default"},headerPadding:{type:String,default:"normal"},paginationVariant:{type:String,default:"default"},paginationPadding:{type:String,default:"normal"},actions:{type:Array,default:()=>[]},showActionsColumn:{type:Boolean,default:!0},addButton:{type:Object,default:()=>({})},loading:{type:Boolean,default:!1},dataLoading:{type:Boolean,default:!1},sortLoading:{type:Boolean,default:!1},paginationLoading:{type:Boolean,default:!1},bulkLoading:{type:Boolean,default:!1},rowLoading:{type:Object,default:()=>({})},loadingType:{type:String,default:"dots",validator:a=>["spin","pulse","bounce","ripple","bars","dots","ring"].includes(a)},loadingSize:{type:String,default:"medium",validator:a=>["small","medium","large","xl"].includes(a)},loadingColor:{type:String,default:"#3b82f6"},loadingText:{type:String,default:"Loading..."},loadingTextPosition:{type:String,default:"bottom",validator:a=>["top","bottom"].includes(a)},loadingBackground:{type:String,default:"rgba(255, 255, 255, 0.95)"},showSkeleton:{type:Boolean,default:!0},skeletonRows:{type:Number,default:10},showToolbar:{type:Boolean,default:!1},showDensityToggle:{type:Boolean,default:!0},showColumnToggle:{type:Boolean,default:!0},showRefresh:{type:Boolean,default:!0},showFilterDrawer:{type:Boolean,default:!1},filterFields:{type:Array,default:()=>[]},filterRules:{type:Object,default:()=>({logic:"all",rules:[]})},defaultFilterRules:{type:Object,default:()=>({logic:"all",rules:[]})},themeScope:{type:String,default:"default",validator:a=>["default","module"].includes(a)}},emits:["selection-change","sort-change","row-click","page-change","page-size-change","refresh","action","update:density","toggle-column","add","add-button-click","update:filterRules"],setup(a,{expose:H,emit:J}){const n=a,u=J,G=e.useSlots(),k=e.ref(1),b=e.ref(n.pageSize),p=e.ref(n.columns.map(t=>t.key)),g=e.ref(n.sortBy),y=e.ref(n.sortOrder),h=e.ref(!1),w=e.ref(""),V=e.ref(!1),C=e.ref(new Set),A=e.ref(Date.now()),Q=(t,l)=>{if(!(!t||!l))return String(l).split(".").reduce((r,o)=>r?.[o],t)},N=e.computed(()=>Array.isArray(n.filterRules?.rules)?n.filterRules.rules.length:0),X=t=>{if(t&&typeof t=="object"){const l=t.from||"",r=t.to||"";return l&&r?`${l} to ${r}`:l||r||""}return String(t??"")},Y=()=>u("update:filterRules",{logic:"all",rules:[]}),Z=e.computed(()=>(n.filterRules?.rules||[]).map(t=>({id:t.id,label:t.label,value:X(t.value)}))),W=S.cva("border ui-border-strong rounded-2xl relative overflow-hidden flex flex-col gap-y-2 px-2 pb-2",{variants:{variant:{default:"shadow-sm ui-border-strong",bordered:"border-2 ui-border-strong",minimal:"border-none ui-border-strong shadow-none bg-transparent"}},defaultVariants:{variant:"default"}}),_=S.cva("min-w-full",{variants:{variant:{default:"divide-y divide-(--ui-border-strong)",bordered:"border-collapse [&_td]:border [&_th]:border [&_td]:border-(--ui-border-strong) [&_th]:border-(--ui-border-strong)",minimal:"divide-y divide-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),ee=S.cva("",{variants:{variant:{default:" border-b border-(--ui-border-strong)",bordered:" border-b-2 border-(--ui-border-strong)",minimal:"bg-transparent border-b border-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),te=S.cva("divide-y",{variants:{variant:{default:" divide-(--ui-border-strong)",bordered:" divide-(--ui-border-strong)",minimal:"bg-transparent divide-(--ui-border-strong)"}},defaultVariants:{variant:"default"}}),f=e.computed(()=>{let t=[...n.data];if(g.value){const l=n.columns.find(r=>r.key===g.value);l&&t.sort((r,o)=>{const c=T(r,l),i=T(o,l);return c<i?y.value==="asc"?-1:1:c>i?y.value==="asc"?1:-1:0})}return t}),z=e.computed(()=>Math.ceil(f.value.length/b.value)),$=e.computed(()=>{if(!n.showPagination)return f.value;const t=(k.value-1)*b.value,l=t+b.value;return f.value.slice(t,l)}),B=e.computed(()=>n.columns.filter(t=>p.value.includes(t.key))),le=e.computed(()=>n.columns.filter(t=>t.toggleable!==!1)),ae=(t,l)=>{l?p.value.includes(t)||p.value.push(t):p.value=p.value.filter(r=>r!==t),u("toggle-column",{key:t,visible:l})},E=e.computed(()=>n.showActionsColumn?G.actions?!0:!n.actions||n.actions.length===0?!1:n.actions.some(l=>l.permission===void 0?!0:typeof l.permission=="boolean"?l.permission===!0:typeof l.permission=="function"):!1),ne=e.computed(()=>{let t=n.columns.length;return n.selectable&&t++,E.value&&t++,t}),oe=t=>n.actions.filter(l=>{if(l.permission!==void 0){if(typeof l.permission=="function"){if(!l.permission(t))return!1}else if(!l.permission)return!1}return l.visible&&typeof l.visible=="function"?l.visible(t):!0}),P=(t,l)=>t.permission&&typeof t.permission=="function"?t.permission(l):!0,L=(t,l)=>t.disabled&&typeof t.disabled=="function"?t.disabled(l):!1,re=(t,l)=>{L(t,l)||!P(t,l)||(u("action",{action:t.key,item:l,actionConfig:t}),t.onClick&&typeof t.onClick=="function"&&t.onClick(l))},se=t=>({default:"default",primary:"gradient",secondary:"secondary",danger:"danger",success:"success",warning:"warning",info:"info",subtle:"subtle",dark:"dark",light:"light",primaryOutline:"primaryOutline",dangerOutline:"dangerOutline",successOutline:"successOutline",outline:"outline",link:"link",ghost:"ghost"})[t]||"ghost",F=e.computed(()=>f.value.length>0&&f.value.every(t=>D(t))),ie=e.computed(()=>{const t=f.value.filter(l=>D(l)).length;return t>0&&t<f.value.length}),T=(t,l)=>l.accessor?l.accessor(t):l.key.split(".").reduce((r,o)=>r?.[o],t),v=(t,l)=>t[n.rowKey]||l,D=t=>n.selectedItems.some(l=>v(l)===v(t)),de=t=>{const l=[...n.selectedItems],r=l.findIndex(o=>v(o)===v(t));r>-1?l.splice(r,1):l.push(t),u("selection-change",l)},j=()=>{if(n.loading||n.dataLoading)return;const t=F.value?[]:[...f.value];u("selection-change",t)},ue=async t=>{!t.sortable||n.loading||n.sortLoading||(g.value===t.key?y.value=y.value==="asc"?"desc":"asc":(g.value=t.key,y.value="asc"),u("sort-change",{column:t.key,direction:y.value}))},ce=t=>{if(!n.loading){if(n.highlightUnreadRows){const l=v(t.item,t.index);C.value.add(String(l)),ye()}u("row-click",t)}},fe=(t,l)=>{if(!n.highlightUnreadRows)return!1;const r=String(v(t,l));if(C.value.has(r))return!1;if(n.unreadMode==="all")return!0;const o=n.unreadCreatedAtField;if(!o)return!1;const c=o.includes(".")?Q(t,o):t?.[o];if(!c)return!1;const i=String(c).trim();let d=new Date(i).getTime();if(Number.isNaN(d)){const s=i.match(/^(\d{2})[-/](\d{2})[-/](\d{4})$/);if(s){const[,U,Ne,Ee]=s;d=new Date(`${Ee}-${Ne}-${U}T00:00:00`).getTime()}}if(Number.isNaN(d))return!1;if(/^\d{4}-\d{2}-\d{2}$/.test(i)){const s=new Date(A.value);return s.setHours(0,0,0,0),d>=s.getTime()}return d>=A.value},me=(t,l)=>n.highlightUnreadRows?fe(t,l)?"font-bold !bg-[color:color-mix(in_oklab,var(--module-soft,var(--ui-primary-soft))_62%,var(--ui-surface)_38%)]":"font-normal !bg-[color:color-mix(in_oklab,var(--module-soft-alt,var(--ui-surface-soft))_42%,var(--ui-surface)_58%)]":"",ge=()=>{if(!(!n.unreadPersistKey||typeof window>"u"))try{const t=window.localStorage.getItem(n.unreadPersistKey);if(!t)return;const l=JSON.parse(t);Array.isArray(l)&&(C.value=new Set(l.map(String)))}catch{}},ye=()=>{if(!(!n.unreadPersistKey||typeof window>"u"))try{window.localStorage.setItem(n.unreadPersistKey,JSON.stringify(Array.from(C.value)))}catch{}},q=async t=>{n.paginationLoading||n.loading||(k.value=t,u("page-change",t))},pe=async t=>{n.paginationLoading||n.loading||(b.value=t,k.value=1,u("page-size-change",t))},ve=e.computed(()=>m.cn(W({variant:n.variant}),n.themeScope==="module"&&"kv-module-themed-table")),be=e.computed(()=>m.cn(_({variant:n.variant}))),ke=e.computed(()=>m.cn(ee({variant:n.variant}))),he=e.computed(()=>m.cn(te({variant:n.variant}))),we=t=>{const l={compact:"px-3.5 py-1.5",normal:"px-6 py-3",comfortable:"px-8 py-4"};return m.cn(l[n.density],"text-left text-sm font-extrabold ui-text uppercase tracking-wider",{"cursor-pointer hover:bg-(--ui-surface) transition-colors":t.sortable&&!n.loading&&!n.sortLoading,"cursor-not-allowed opacity-50":n.loading||n.sortLoading&&g.value===t.key})},Ce=()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-sm ui-text")},x=(t,l)=>{const r=T(t,l);return typeof l=="object"&&l.formatter?l.formatter(r,t):r==null?"":r instanceof Date?r.toLocaleDateString():Array.isArray(r)?r.join(", "):r},Be=(t,l=10)=>{if(!t)return t;const r=t.toString().split(" ");return r.length<=l?t:r.slice(0,l).join(" ")+"..."},xe=t=>{w.value||(w.value=t,h.value=!0)},Se=()=>{h.value=!1,w.value=""},O=e.computed(()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-sm ui-text w-12")}),M=e.computed(()=>{const t={compact:"px-3.5 py-1.5",normal:"px-6 py-4",comfortable:"px-8 py-6"};return m.cn(t[n.density],"whitespace-nowrap text-md font-extrabold text-center")}),Ve=e.computed(()=>{const t={compact:"px-4 py-4",normal:"px-6 py-6",comfortable:"px-8 py-8"};return m.cn(t[n.density],"text-center")}),K=(t,l)=>m.cn({"ui-primary":g.value===t.key&&y.value===l,"ui-text":g.value!==t.key||y.value!==l});return e.watch(()=>n.selectedItems,()=>{},{deep:!0}),e.watch(()=>n.pageSize,t=>{b.value=t}),e.watch(()=>n.columns,t=>{p.value=t.map(l=>l.key)},{deep:!0}),H({refresh:()=>{u("refresh")},goToPage:t=>{q(t)},selectAll:()=>{j()},clearSelection:()=>{u("selection-change",[])},getCurrentPage:()=>k.value,getTotalPages:()=>z.value,getSelectedItems:()=>n.selectedItems}),ge(),(t,l)=>{const r=e.resolveComponent("font-awesome-icon");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(ve.value)},[a.title||a.description||t.$slots.header?(e.openBlock(),e.createBlock(De.default,{key:0,title:a.title,description:a.description,variant:a.headerVariant,padding:a.headerPadding},{header:e.withCtx(()=>[e.renderSlot(t.$slots,"header",{},void 0,!0)]),filters:e.withCtx(()=>[e.renderSlot(t.$slots,"filters",{},void 0,!0)]),_:3},8,["title","description","variant","padding"])):e.createCommentVNode("",!0),a.showToolbar?(e.openBlock(),e.createBlock(Ae.default,{key:1,"selected-items":a.selectedItems,"total-items":f.value.length,"show-density-toggle":a.showDensityToggle,"show-column-toggle":a.showColumnToggle,"show-refresh":a.showRefresh,"active-filters":a.showFilterDrawer?Z.value:[],"default-filter-rules":a.defaultFilterRules,"add-button":a.addButton,density:a.density,"toggleable-columns":le.value,"visible-columns":p.value,"onUpdate:density":l[1]||(l[1]=o=>u("update:density",o)),onToggleColumn:ae,onRefresh:l[2]||(l[2]=o=>t.$emit("refresh")),onAdd:l[3]||(l[3]=o=>u("add")),onAddButtonClick:l[4]||(l[4]=o=>u("add-button-click",o))},{actions:e.withCtx(()=>[e.renderSlot(t.$slots,"toolbar-actions",{},void 0,!0)]),"actions-after-add":e.withCtx(()=>[a.showFilterDrawer?(e.openBlock(),e.createElementBlock("button",{key:0,class:"px-3 py-2 text-sm border ui-border-strong rounded-md hover:bg-(--ui-surface) flex items-center gap-2",onClick:l[0]||(l[0]=o=>V.value=!0)},[e.createVNode(r,{icon:"filter"}),l[8]||(l[8]=e.createTextVNode(" Filter ",-1)),N.value>0?(e.openBlock(),e.createElementBlock("span",qe,e.toDisplayString(N.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.renderSlot(t.$slots,"toolbar-actions-after-add",{},void 0,!0)]),"active-filter-actions":e.withCtx(()=>[a.showFilterDrawer&&N.value>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ml-1 px-2 py-1 text-sm border border-(--ui-primary) rounded-md ui-primary hover:bg-(--ui-primary-soft)",onClick:Y}," Clear filter ")):e.createCommentVNode("",!0)]),_:3},8,["selected-items","total-items","show-density-toggle","show-column-toggle","show-refresh","active-filters","default-filter-rules","add-button","density","toggleable-columns","visible-columns"])):e.createCommentVNode("",!0),a.showFilterDrawer?(e.openBlock(),e.createBlock($e.default,{key:2,open:V.value,fields:a.filterFields,"model-value":a.filterRules,"onUpdate:modelValue":l[5]||(l[5]=o=>t.$emit("update:filterRules",o)),onClose:l[6]||(l[6]=o=>V.value=!1)},null,8,["open","fields","model-value"])):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[a.loading?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:a.loadingType,size:a.loadingSize,color:a.loadingColor,overlay:!0,text:a.loadingText,"text-position":a.loadingTextPosition,"background-color":a.loadingBackground,class:"table-loading-overlay"},null,8,["type","size","color","text","text-position","background-color"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["overflow-x-auto",{"opacity-50":a.loading}])},[e.createElementVNode("table",{class:e.normalizeClass(be.value)},[e.createElementVNode("thead",{class:e.normalizeClass(ke.value)},[e.createElementVNode("tr",null,[a.selectable?(e.openBlock(),e.createElementBlock("th",{key:0,class:e.normalizeClass(O.value)},[e.createElementVNode("div",Me,[a.bulkLoading?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:"spin",size:"small",color:a.loadingColor},null,8,["color"])):(e.openBlock(),e.createBlock(Te.default,{key:1,"model-value":F.value,indeterminate:ie.value,disabled:a.loading||a.dataLoading,"onUpdate:modelValue":j},null,8,["model-value","indeterminate","disabled"]))])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,o=>(e.openBlock(),e.createElementBlock("th",{key:o.key,class:e.normalizeClass(we(o)),onClick:c=>ue(o)},[e.createElementVNode("div",Ue,[e.createElementVNode("span",null,e.toDisplayString(o.label),1),a.sortLoading&&g.value===o.key?(e.openBlock(),e.createBlock(R.default,{key:0,loading:!0,type:"spin",size:"small",color:a.loadingColor},null,8,["color"])):o.sortable?(e.openBlock(),e.createElementBlock("div",Ie,[(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass([K(o,"asc"),"w-3 h-3 transition-colors"]),fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[...l[9]||(l[9]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"},null,-1)])],2)),(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass([K(o,"desc"),"w-3 h-3 transition-colors"]),fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[...l[10]||(l[10]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"},null,-1)])],2))])):e.createCommentVNode("",!0)])],10,Ke))),128)),E.value?(e.openBlock(),e.createElementBlock("th",{key:1,class:e.normalizeClass(M.value)}," Actions ",2)):e.createCommentVNode("",!0)])],2),e.createElementVNode("tbody",{class:e.normalizeClass(he.value)},[a.showSkeleton&&(a.loading||a.dataLoading)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.skeletonRows,o=>(e.openBlock(),e.createElementBlock("tr",{key:`skeleton-${o}`,class:"animate-pulse"},[a.selectable?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(O.value)},[...l[11]||(l[11]=[e.createElementVNode("div",{class:"w-4 h-4 ui-bg rounded"},null,-1)])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,c=>(e.openBlock(),e.createElementBlock("td",{key:c.key,class:e.normalizeClass(Ce())},[...l[12]||(l[12]=[e.createElementVNode("div",{class:"h-4 ui-bg rounded w-3/4"},null,-1)])],2))),128)),E.value?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass(M.value)},[...l[13]||(l[13]=[e.createElementVNode("div",{class:"flex gap-2 justify-center"},[e.createElementVNode("div",{class:"w-6 h-6 ui-surface rounded"}),e.createElementVNode("div",{class:"w-6 h-6 ui-surface rounded"})],-1)])],2)):e.createCommentVNode("",!0)]))),128)):$.value.length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList($.value,(o,c)=>(e.openBlock(),e.createBlock(Re.default,{key:v(o,c),item:o,columns:B.value,index:c,selectable:a.selectable,"is-selected":D(o),striped:a.striped,hoverable:a.hoverable,"clickable-rows":a.clickableRows,"row-class":me(o,c),density:a.density,variant:a.variant,onToggleSelection:de,onRowClick:ce},e.createSlots({actions:e.withCtx(({item:i,index:d})=>[t.$slots.actions?e.renderSlot(t.$slots,"actions",{key:0,item:i,index:d},void 0,!0):a.actions.length>0?(e.openBlock(),e.createElementBlock("div",Ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(oe(i),s=>(e.openBlock(),e.createBlock(Le.default,{key:s.key,content:typeof s.tooltip=="function"?s.tooltip(i):s.tooltip||s.label||s.key,placement:"top"},{default:e.withCtx(()=>[e.createVNode(Pe._sfc_main,{variant:se(s.variant),size:"xs",disabled:L(s,i)||!P(s,i),class:e.normalizeClass(["h-8 w-8",typeof s.class=="function"?s.class(i):s.class]),onClick:e.withModifiers(U=>re(s,i),["stop"])},{default:e.withCtx(()=>[s.icon?(e.openBlock(),e.createBlock(I.default,{key:0,icon:s.icon,class:"w-4 h-4"},null,8,["icon"])):s.label?(e.openBlock(),e.createElementBlock("span",Qe,e.toDisplayString(s.label),1)):e.createCommentVNode("",!0)]),_:2},1032,["variant","disabled","class","onClick"])]),_:2},1032,["content"]))),128))])):e.createCommentVNode("",!0)]),_:2},[e.renderList(B.value,i=>({name:`cell-${i.key}`,fn:e.withCtx(d=>[e.renderSlot(t.$slots,`cell-${i.key}`,e.mergeProps({ref_for:!0},d),()=>[x(d.item,d.column).toString().split(" ").length>10?(e.openBlock(),e.createElementBlock("span",{key:0,class:"cursor-pointer ui-primary hover:text-(--ui-primary)",onClick:e.withModifiers(s=>xe(x(d.item,d.column)),["stop"])},e.toDisplayString(Be(x(d.item,d.column))),9,He)):(e.openBlock(),e.createElementBlock("span",Je,e.toDisplayString(x(d.item,d.column)),1))],!0)])}))]),1032,["item","columns","index","selectable","is-selected","striped","hoverable","clickable-rows","row-class","density","variant"]))),128)):(e.openBlock(),e.createElementBlock("tr",Xe,[e.createElementVNode("td",{colspan:ne.value,class:e.normalizeClass(Ve.value)},[e.renderSlot(t.$slots,"empty",{},()=>[e.createElementVNode("div",Ze,[e.createElementVNode("div",We,[e.createVNode(I.default,{icon:"search",class:"w-16 h-16"})]),e.createElementVNode("p",_e,e.toDisplayString(a.emptyText),1),e.createElementVNode("p",et,e.toDisplayString(a.emptySubtitle),1)])],!0)],10,Ye)]))],2)],2)],2)]),a.showPagination||t.$slots.footer?(e.openBlock(),e.createBlock(ze.default,{key:3,"current-page":k.value,"total-pages":z.value,total:f.value.length,"page-size":b.value,"show-pagination":a.showPagination,selectable:a.selectable,"selected-count":a.selectedItems.length,variant:a.paginationVariant,padding:a.paginationPadding,loading:a.paginationLoading,disabled:a.loading||a.dataLoading,"onUpdate:currentPage":q,"onUpdate:pageSize":pe},{footer:e.withCtx(()=>[e.renderSlot(t.$slots,"footer",{},void 0,!0)]),_:3},8,["current-page","total-pages","total","page-size","show-pagination","selectable","selected-count","variant","padding","loading","disabled"])):e.createCommentVNode("",!0),e.createVNode(Fe.default,{modelValue:h.value,"onUpdate:modelValue":l[7]||(l[7]=o=>h.value=o),size:"lg",onClose:Se},{default:e.withCtx(()=>[e.createElementVNode("div",tt,[l[14]||(l[14]=e.createElementVNode("h3",{class:"text-md font-semibold mb-4"}," Full Text ",-1)),e.createElementVNode("div",lt,e.toDisplayString(w.value),1)])]),_:1},8,["modelValue"])],2)}}},nt=je._export_sfc(at,[["__scopeId","data-v-dc691687"]]);exports.default=nt;
@@ -9,7 +9,7 @@ import _e from "./DataTablePagination.js";
9
9
  import et from "./FilterDrawer.js";
10
10
  import re from "./Icon.js";
11
11
  import H from "./Loader.js";
12
- import tt from "./Button.js";
12
+ import { _ as tt } from "../Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js";
13
13
  import at from "./Tooltip.js";
14
14
  import lt from "./Modal.js";
15
15
  import { _ as nt } from "../_plugin-vue_export-helper-CHgC5LLL.js";
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),v=require("./Button.cjs"),H=require("./Select.cjs"),g=require("class-variance-authority"),d=require("../utils/cn.cjs"),c=require("./Icon.cjs"),J={class:"bg-white border-b border-gray-200"},X={key:0,class:"flex-1 min-w-80 max-w-md"},Y={class:"relative group"},Z=["model-value","placeholder"],_={key:1,class:"min-w-36"},K={class:"relative"},ee=["value"],te={key:3,class:"flex items-center gap-2"},ae={class:"flex items-center gap-3 ml-auto"},le={class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},se={class:"flex items-center justify-between"},oe={class:"flex items-center gap-3"},re={class:"relative flex-1"},ne=["model-value","placeholder","onInput"],ce={class:"relative flex-1"},de=["model-value","placeholder","onInput"],ie=["onClick"],ue={class:"flex items-center gap-3 flex-wrap"},me=["onClick"],pe={key:2,class:"px-6 py-3 bg-gray-50 border-t border-gray-200"},fe={class:"flex items-center justify-between"},ye={class:"flex items-center gap-4"},ve={class:"text-sm text-gray-600"},ge={class:"font-medium"},he={__name:"DataTableFilters",props:{searchQuery:{type:String,default:""},searchPlaceholder:{type:String,default:"Search..."},selectedStatus:{type:String,default:""},statusOptions:{type:Array,default:()=>[]},showDateFilter:{type:Boolean,default:!1},dateFrom:{type:String,default:""},dateTo:{type:String,default:""},dateFilters:{type:Array,default:()=>[],validator:o=>o.every(i=>Object.prototype.hasOwnProperty.call(i,"key")&&Object.prototype.hasOwnProperty.call(i,"label")&&Object.prototype.hasOwnProperty.call(i,"from")&&Object.prototype.hasOwnProperty.call(i,"to"))},showExport:{type:Boolean,default:!1},showAdd:{type:Boolean,default:!1},showTableInfo:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showFilters:{type:Boolean,default:!0},totalItems:{type:Number,default:0},itemLabel:{type:String,default:"items"},variant:{type:String,default:"default",validator:o=>["default","minimal","bordered"].includes(o)},padding:{type:String,default:"normal",validator:o=>["compact","normal","comfortable"].includes(o)}},emits:["update:searchQuery","update:selectedStatus","update:dateFrom","update:dateTo","update:dateFilters","export","add","clear-filters"],setup(o,{emit:i}){const s=o,n=i,m=e.ref(!1),V=g.cva("flex flex-wrap items-center gap-4",{variants:{variant:{default:"bg-white",minimal:"bg-transparent",bordered:"bg-gray-50"},padding:{compact:"px-4 py-3",normal:"px-6 py-4",comfortable:"px-8 py-6"}},defaultVariants:{variant:"default",padding:"normal"}}),p=g.cva("border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all text-sm",{variants:{size:{sm:"px-2 py-1.5",md:"px-3 py-2.5",lg:"px-4 py-3"}},defaultVariants:{size:"md"}}),f=g.cva("rounded-lg flex items-center font-medium transition-all",{variants:{variant:{default:"text-gray-700 hover:text-gray-900 border border-gray-200 hover:bg-gray-50 hover:border-gray-300 bg-white",primary:"text-white bg-blue-600 hover:bg-blue-700 border border-blue-600 shadow-sm",success:"text-white bg-green-600 hover:bg-green-700 border border-green-600 shadow-sm",ghost:"text-gray-600 hover:text-gray-800 hover:bg-gray-100"},size:{sm:"px-2 py-1.5 text-xs",md:"px-3 py-2 text-sm",lg:"px-4 py-2.5 text-sm"}},defaultVariants:{variant:"default",size:"md"}}),y=l=>!!(l.from||l.to),w=l=>{const t=[...s.dateFilters],a=t.findIndex(r=>r.key===l);a>=0&&(t[a]={...t[a],from:"",to:""},n("update:dateFilters",t))},N=l=>`text-xs px-2 py-1 rounded ${y(l)?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"}`,B=()=>{m.value=!m.value},h=(l,t,a)=>{const r=[...s.dateFilters],u=r.findIndex(G=>G.key===l);u>=0&&(r[u]={...r[u],[t]:a},n("update:dateFilters",r))},b=e.computed(()=>{const l=s.searchQuery,t=s.selectedStatus,a=s.dateFrom||s.dateTo,r=s.dateFilters.some(u=>u.from||u.to);return l||t||a||r}),k=e.computed(()=>{let l=0;return s.searchQuery&&l++,s.selectedStatus&&l++,(s.dateFrom||s.dateTo)&&l++,l+=s.dateFilters.filter(t=>t.from||t.to).length,l}),x=e.computed(()=>{const l=[];if(s.searchQuery&&s.searchQuery.trim()&&l.push({key:"search",label:"Search",value:`"${s.searchQuery}"`,icon:"magnifying-glass"}),s.selectedStatus){const t=s.statusOptions.find(a=>a.value===s.selectedStatus);l.push({key:"status",label:"Status",value:t?.label||s.selectedStatus,icon:"filter"})}if(s.dateFrom||s.dateTo){let t="";s.dateFrom&&s.dateTo?t=`${s.dateFrom} to ${s.dateTo}`:s.dateFrom?t=`From ${s.dateFrom}`:s.dateTo&&(t=`Until ${s.dateTo}`),t&&l.push({key:"date",label:"Date Range",value:t,icon:"calendar"})}return s.dateFilters.forEach(t=>{if(t.from||t.to){let a="";t.from&&t.to?a=`${t.from} to ${t.to}`:t.from?a=`From ${t.from}`:t.to&&(a=`Until ${t.to}`),a&&l.push({key:`date-${t.key}`,label:t.label,value:a,icon:"calendar"})}}),l}),E=e.computed(()=>d.cn(V({variant:s.variant,padding:s.padding}))),S=e.computed(()=>"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400 group-hover:text-gray-600 transition-colors"),F=e.computed(()=>d.cn(p({size:"md"}),"w-full pl-10 pr-10 hover:border-gray-300")),z=e.computed(()=>"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600 p-1 hover:bg-gray-100 rounded-full transition-all"),$=e.computed(()=>d.cn(p({size:"md"}),"w-full pr-8 appearance-none hover:border-gray-300")),T=e.computed(()=>{const l=m.value||b.value;return d.cn(f({variant:l?"primary":"default",size:"lg"}),"gap-2")}),D=e.computed(()=>"bg-white text-blue-600 text-xs px-1.5 py-0.5 rounded-full min-w-[20px] text-center font-semibold"),I=e.computed(()=>"px-6 py-4 border-t border-gray-100 bg-gray-50"),C=e.computed(()=>d.cn(p({size:"md"}),"pl-10 pr-3")),A=e.computed(()=>"text-sm font-semibold text-gray-700"),O=e.computed(()=>"text-gray-500 text-sm font-medium"),Q=e.computed(()=>"text-gray-400 hover:text-gray-600 p-1.5 hover:bg-gray-200 rounded-full transition-all"),L=e.computed(()=>d.cn(f({variant:"ghost",size:"md"}))),j=e.computed(()=>d.cn(f({variant:"default",size:"lg"}))),P=e.computed(()=>"px-6 py-3 bg-blue-50 border-t border-blue-100"),q=e.computed(()=>"text-sm font-semibold text-blue-800"),R=e.computed(()=>"flex items-center gap-1.5 bg-white border border-blue-200 text-blue-800 px-3 py-1.5 rounded-full text-sm font-medium"),M=e.computed(()=>"text-blue-600 hover:text-blue-800 ml-1 hover:bg-blue-100 rounded-full p-0.5 transition-all"),U=()=>{n("update:searchQuery",""),n("update:selectedStatus",""),n("update:dateFrom",""),n("update:dateTo","");const l=s.dateFilters.map(t=>({...t,from:"",to:""}));n("update:dateFilters",l),n("clear-filters")},W=l=>{switch(l){case"search":n("update:searchQuery","");break;case"status":n("update:selectedStatus","");break;case"date":n("update:dateFrom",""),n("update:dateTo","");break;default:if(l.startsWith("date-")){const t=l.replace("date-",""),a=s.dateFilters.map(r=>r.key===t?{...r,from:"",to:""}:r);n("update:dateFilters",a)}break}};return(l,t)=>(e.openBlock(),e.createElementBlock("div",J,[e.createElementVNode("div",{class:e.normalizeClass(E.value)},[o.showSearch?(e.openBlock(),e.createElementBlock("div",X,[e.createElementVNode("div",Y,[e.createVNode(c.default,{icon:"magnifying-glass",class:e.normalizeClass(S.value)},null,8,["class"]),e.createElementVNode("input",{"model-value":o.searchQuery,placeholder:o.searchPlaceholder,class:e.normalizeClass(F.value),onInput:t[0]||(t[0]=a=>l.$emit("update:searchQuery",a.target.value))},null,42,Z),o.searchQuery?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(z.value),onClick:t[1]||(t[1]=a=>l.$emit("update:searchQuery",""))},[e.createVNode(c.default,{icon:"xmark",class:"w-3 h-3"})],2)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),o.showFilters&&o.statusOptions.length>0?(e.openBlock(),e.createElementBlock("div",_,[e.createElementVNode("div",K,[e.createVNode(H.default,{"model-value":o.selectedStatus,class:e.normalizeClass($.value),onChange:t[2]||(t[2]=a=>l.$emit("update:selectedStatus",a.target.value))},{default:e.withCtx(()=>[t[5]||(t[5]=e.createElementVNode("option",{value:""}," All Status ",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.statusOptions,a=>(e.openBlock(),e.createElementBlock("option",{key:a.value,value:a.value},e.toDisplayString(a.label),9,ee))),128))]),_:1},8,["model-value","class"]),e.createVNode(c.default,{icon:"chevron-down",class:"absolute right-2 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400 pointer-events-none"})])])):e.createCommentVNode("",!0),o.showFilters?(e.openBlock(),e.createElementBlock("button",{key:2,class:e.normalizeClass(T.value),onClick:B},[e.createVNode(c.default,{icon:"filter",class:"w-4 h-4"}),t[6]||(t[6]=e.createTextVNode(" Filters ",-1)),k.value>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(D.value)},e.toDisplayString(k.value),3)):e.createCommentVNode("",!0),e.createVNode(c.default,{icon:m.value?"chevron-up":"chevron-down",class:"w-4 h-4 ml-1"},null,8,["icon"])],2)):e.createCommentVNode("",!0),l.$slots.filters?(e.openBlock(),e.createElementBlock("div",te,[e.renderSlot(l.$slots,"filters")])):e.createCommentVNode("",!0),e.createElementVNode("div",ae,[b.value?(e.openBlock(),e.createBlock(v.default,{key:0,class:e.normalizeClass(L.value),onClick:U},{default:e.withCtx(()=>[e.createVNode(c.default,{icon:"rotate-left",class:"w-4 h-4 mr-2"}),t[7]||(t[7]=e.createTextVNode(" Clear All ",-1))]),_:1},8,["class"])):e.createCommentVNode("",!0),o.showExport?(e.openBlock(),e.createBlock(v.default,{key:1,class:e.normalizeClass(j.value),onClick:t[3]||(t[3]=a=>l.$emit("export"))},{default:e.withCtx(()=>[e.createVNode(c.default,{icon:"download",class:"w-4 h-4 mr-2"}),t[8]||(t[8]=e.createTextVNode(" Export ",-1))]),_:1},8,["class"])):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"actions",{},()=>[o.showAdd?(e.openBlock(),e.createBlock(v.default,{key:0,variant:"success",size:"lg",onClick:t[4]||(t[4]=a=>l.$emit("add"))},{default:e.withCtx(()=>[e.createVNode(c.default,{icon:"plus",class:"w-4 h-4 mr-2"}),t[9]||(t[9]=e.createTextVNode(" Add ",-1))]),_:1})):e.createCommentVNode("",!0)])])],2),o.showFilters&&m.value&&o.dateFilters.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(I.value)},[e.createElementVNode("div",le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.dateFilters,a=>(e.openBlock(),e.createElementBlock("div",{key:a.key,class:"space-y-3"},[e.createElementVNode("div",se,[e.createElementVNode("label",{class:e.normalizeClass(A.value)},e.toDisplayString(a.label),3),e.createElementVNode("span",{class:e.normalizeClass(N(a))},e.toDisplayString(y(a)?"Active":"Inactive"),3)]),e.createElementVNode("div",oe,[e.createElementVNode("div",re,[e.createVNode(c.default,{icon:"calendar",class:"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400"}),e.createElementVNode("input",{type:"date","model-value":a.from,class:e.normalizeClass(C.value),placeholder:`From ${a.label}`,onInput:r=>h(a.key,"from",r.target.value)},null,42,ne)]),e.createElementVNode("span",{class:e.normalizeClass(O.value)},"to",2),e.createElementVNode("div",ce,[e.createVNode(c.default,{icon:"calendar",class:"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400"}),e.createElementVNode("input",{type:"date","model-value":a.to,class:e.normalizeClass(C.value),placeholder:`To ${a.label}`,onInput:r=>h(a.key,"to",r.target.value)},null,42,de)]),y(a)?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(Q.value),title:"Clear this filter",onClick:r=>w(a.key)},[e.createVNode(c.default,{icon:"xmark",class:"w-4 h-4"})],10,ie)):e.createCommentVNode("",!0)])]))),128))])],2)):e.createCommentVNode("",!0),o.showFilters&&x.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(P.value)},[e.createElementVNode("div",ue,[e.createElementVNode("span",{class:e.normalizeClass(q.value)},"Active filters:",2),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,a=>(e.openBlock(),e.createElementBlock("div",{key:a.key,class:e.normalizeClass(R.value)},[e.createVNode(c.default,{icon:a.icon,class:"w-3 h-3"},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(a.label)+": "+e.toDisplayString(a.value),1),e.createElementVNode("button",{class:e.normalizeClass(M.value),onClick:r=>W(a.key)},[e.createVNode(c.default,{icon:"xmark",class:"w-3 h-3"})],10,me)],2))),128))])],2)):e.createCommentVNode("",!0),o.showTableInfo?(e.openBlock(),e.createElementBlock("div",pe,[e.createElementVNode("div",fe,[e.createElementVNode("div",ye,[e.createElementVNode("span",ve,[e.createElementVNode("span",ge,e.toDisplayString(o.totalItems||0),1),e.createTextVNode(" "+e.toDisplayString(o.itemLabel||"items")+" found ",1)])])])])):e.createCommentVNode("",!0)]))}};exports.default=he;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),v=require("../Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs"),G=require("./Select.cjs"),g=require("class-variance-authority"),d=require("../utils/cn.cjs"),c=require("./Icon.cjs"),H={class:"bg-white border-b border-gray-200"},J={key:0,class:"flex-1 min-w-80 max-w-md"},X={class:"relative group"},Y=["model-value","placeholder"],Z={key:1,class:"min-w-36"},K={class:"relative"},ee=["value"],te={key:3,class:"flex items-center gap-2"},ae={class:"flex items-center gap-3 ml-auto"},le={class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},se={class:"flex items-center justify-between"},oe={class:"flex items-center gap-3"},re={class:"relative flex-1"},ne=["model-value","placeholder","onInput"],ce={class:"relative flex-1"},de=["model-value","placeholder","onInput"],ie=["onClick"],ue={class:"flex items-center gap-3 flex-wrap"},me=["onClick"],pe={key:2,class:"px-6 py-3 bg-gray-50 border-t border-gray-200"},fe={class:"flex items-center justify-between"},ye={class:"flex items-center gap-4"},ve={class:"text-sm text-gray-600"},ge={class:"font-medium"},he={__name:"DataTableFilters",props:{searchQuery:{type:String,default:""},searchPlaceholder:{type:String,default:"Search..."},selectedStatus:{type:String,default:""},statusOptions:{type:Array,default:()=>[]},showDateFilter:{type:Boolean,default:!1},dateFrom:{type:String,default:""},dateTo:{type:String,default:""},dateFilters:{type:Array,default:()=>[],validator:o=>o.every(i=>Object.prototype.hasOwnProperty.call(i,"key")&&Object.prototype.hasOwnProperty.call(i,"label")&&Object.prototype.hasOwnProperty.call(i,"from")&&Object.prototype.hasOwnProperty.call(i,"to"))},showExport:{type:Boolean,default:!1},showAdd:{type:Boolean,default:!1},showTableInfo:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showFilters:{type:Boolean,default:!0},totalItems:{type:Number,default:0},itemLabel:{type:String,default:"items"},variant:{type:String,default:"default",validator:o=>["default","minimal","bordered"].includes(o)},padding:{type:String,default:"normal",validator:o=>["compact","normal","comfortable"].includes(o)}},emits:["update:searchQuery","update:selectedStatus","update:dateFrom","update:dateTo","update:dateFilters","export","add","clear-filters"],setup(o,{emit:i}){const s=o,n=i,m=e.ref(!1),V=g.cva("flex flex-wrap items-center gap-4",{variants:{variant:{default:"bg-white",minimal:"bg-transparent",bordered:"bg-gray-50"},padding:{compact:"px-4 py-3",normal:"px-6 py-4",comfortable:"px-8 py-6"}},defaultVariants:{variant:"default",padding:"normal"}}),p=g.cva("border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all text-sm",{variants:{size:{sm:"px-2 py-1.5",md:"px-3 py-2.5",lg:"px-4 py-3"}},defaultVariants:{size:"md"}}),f=g.cva("rounded-lg flex items-center font-medium transition-all",{variants:{variant:{default:"text-gray-700 hover:text-gray-900 border border-gray-200 hover:bg-gray-50 hover:border-gray-300 bg-white",primary:"text-white bg-blue-600 hover:bg-blue-700 border border-blue-600 shadow-sm",success:"text-white bg-green-600 hover:bg-green-700 border border-green-600 shadow-sm",ghost:"text-gray-600 hover:text-gray-800 hover:bg-gray-100"},size:{sm:"px-2 py-1.5 text-xs",md:"px-3 py-2 text-sm",lg:"px-4 py-2.5 text-sm"}},defaultVariants:{variant:"default",size:"md"}}),y=l=>!!(l.from||l.to),w=l=>{const t=[...s.dateFilters],a=t.findIndex(r=>r.key===l);a>=0&&(t[a]={...t[a],from:"",to:""},n("update:dateFilters",t))},N=l=>`text-xs px-2 py-1 rounded ${y(l)?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"}`,B=()=>{m.value=!m.value},h=(l,t,a)=>{const r=[...s.dateFilters],u=r.findIndex(W=>W.key===l);u>=0&&(r[u]={...r[u],[t]:a},n("update:dateFilters",r))},b=e.computed(()=>{const l=s.searchQuery,t=s.selectedStatus,a=s.dateFrom||s.dateTo,r=s.dateFilters.some(u=>u.from||u.to);return l||t||a||r}),k=e.computed(()=>{let l=0;return s.searchQuery&&l++,s.selectedStatus&&l++,(s.dateFrom||s.dateTo)&&l++,l+=s.dateFilters.filter(t=>t.from||t.to).length,l}),x=e.computed(()=>{const l=[];if(s.searchQuery&&s.searchQuery.trim()&&l.push({key:"search",label:"Search",value:`"${s.searchQuery}"`,icon:"magnifying-glass"}),s.selectedStatus){const t=s.statusOptions.find(a=>a.value===s.selectedStatus);l.push({key:"status",label:"Status",value:t?.label||s.selectedStatus,icon:"filter"})}if(s.dateFrom||s.dateTo){let t="";s.dateFrom&&s.dateTo?t=`${s.dateFrom} to ${s.dateTo}`:s.dateFrom?t=`From ${s.dateFrom}`:s.dateTo&&(t=`Until ${s.dateTo}`),t&&l.push({key:"date",label:"Date Range",value:t,icon:"calendar"})}return s.dateFilters.forEach(t=>{if(t.from||t.to){let a="";t.from&&t.to?a=`${t.from} to ${t.to}`:t.from?a=`From ${t.from}`:t.to&&(a=`Until ${t.to}`),a&&l.push({key:`date-${t.key}`,label:t.label,value:a,icon:"calendar"})}}),l}),E=e.computed(()=>d.cn(V({variant:s.variant,padding:s.padding}))),S=e.computed(()=>"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400 group-hover:text-gray-600 transition-colors"),F=e.computed(()=>d.cn(p({size:"md"}),"w-full pl-10 pr-10 hover:border-gray-300")),z=e.computed(()=>"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600 p-1 hover:bg-gray-100 rounded-full transition-all"),$=e.computed(()=>d.cn(p({size:"md"}),"w-full pr-8 appearance-none hover:border-gray-300")),T=e.computed(()=>{const l=m.value||b.value;return d.cn(f({variant:l?"primary":"default",size:"lg"}),"gap-2")}),D=e.computed(()=>"bg-white text-blue-600 text-xs px-1.5 py-0.5 rounded-full min-w-[20px] text-center font-semibold"),I=e.computed(()=>"px-6 py-4 border-t border-gray-100 bg-gray-50"),C=e.computed(()=>d.cn(p({size:"md"}),"pl-10 pr-3")),A=e.computed(()=>"text-sm font-semibold text-gray-700"),O=e.computed(()=>"text-gray-500 text-sm font-medium"),Q=e.computed(()=>"text-gray-400 hover:text-gray-600 p-1.5 hover:bg-gray-200 rounded-full transition-all"),_=e.computed(()=>d.cn(f({variant:"ghost",size:"md"}))),L=e.computed(()=>d.cn(f({variant:"default",size:"lg"}))),j=e.computed(()=>"px-6 py-3 bg-blue-50 border-t border-blue-100"),P=e.computed(()=>"text-sm font-semibold text-blue-800"),q=e.computed(()=>"flex items-center gap-1.5 bg-white border border-blue-200 text-blue-800 px-3 py-1.5 rounded-full text-sm font-medium"),R=e.computed(()=>"text-blue-600 hover:text-blue-800 ml-1 hover:bg-blue-100 rounded-full p-0.5 transition-all"),M=()=>{n("update:searchQuery",""),n("update:selectedStatus",""),n("update:dateFrom",""),n("update:dateTo","");const l=s.dateFilters.map(t=>({...t,from:"",to:""}));n("update:dateFilters",l),n("clear-filters")},U=l=>{switch(l){case"search":n("update:searchQuery","");break;case"status":n("update:selectedStatus","");break;case"date":n("update:dateFrom",""),n("update:dateTo","");break;default:if(l.startsWith("date-")){const t=l.replace("date-",""),a=s.dateFilters.map(r=>r.key===t?{...r,from:"",to:""}:r);n("update:dateFilters",a)}break}};return(l,t)=>(e.openBlock(),e.createElementBlock("div",H,[e.createElementVNode("div",{class:e.normalizeClass(E.value)},[o.showSearch?(e.openBlock(),e.createElementBlock("div",J,[e.createElementVNode("div",X,[e.createVNode(c.default,{icon:"magnifying-glass",class:e.normalizeClass(S.value)},null,8,["class"]),e.createElementVNode("input",{"model-value":o.searchQuery,placeholder:o.searchPlaceholder,class:e.normalizeClass(F.value),onInput:t[0]||(t[0]=a=>l.$emit("update:searchQuery",a.target.value))},null,42,Y),o.searchQuery?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(z.value),onClick:t[1]||(t[1]=a=>l.$emit("update:searchQuery",""))},[e.createVNode(c.default,{icon:"xmark",class:"w-3 h-3"})],2)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),o.showFilters&&o.statusOptions.length>0?(e.openBlock(),e.createElementBlock("div",Z,[e.createElementVNode("div",K,[e.createVNode(G.default,{"model-value":o.selectedStatus,class:e.normalizeClass($.value),onChange:t[2]||(t[2]=a=>l.$emit("update:selectedStatus",a.target.value))},{default:e.withCtx(()=>[t[5]||(t[5]=e.createElementVNode("option",{value:""}," All Status ",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.statusOptions,a=>(e.openBlock(),e.createElementBlock("option",{key:a.value,value:a.value},e.toDisplayString(a.label),9,ee))),128))]),_:1},8,["model-value","class"]),e.createVNode(c.default,{icon:"chevron-down",class:"absolute right-2 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400 pointer-events-none"})])])):e.createCommentVNode("",!0),o.showFilters?(e.openBlock(),e.createElementBlock("button",{key:2,class:e.normalizeClass(T.value),onClick:B},[e.createVNode(c.default,{icon:"filter",class:"w-4 h-4"}),t[6]||(t[6]=e.createTextVNode(" Filters ",-1)),k.value>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(D.value)},e.toDisplayString(k.value),3)):e.createCommentVNode("",!0),e.createVNode(c.default,{icon:m.value?"chevron-up":"chevron-down",class:"w-4 h-4 ml-1"},null,8,["icon"])],2)):e.createCommentVNode("",!0),l.$slots.filters?(e.openBlock(),e.createElementBlock("div",te,[e.renderSlot(l.$slots,"filters")])):e.createCommentVNode("",!0),e.createElementVNode("div",ae,[b.value?(e.openBlock(),e.createBlock(v._sfc_main,{key:0,class:e.normalizeClass(_.value),onClick:M},{default:e.withCtx(()=>[e.createVNode(c.default,{icon:"rotate-left",class:"w-4 h-4 mr-2"}),t[7]||(t[7]=e.createTextVNode(" Clear All ",-1))]),_:1},8,["class"])):e.createCommentVNode("",!0),o.showExport?(e.openBlock(),e.createBlock(v._sfc_main,{key:1,class:e.normalizeClass(L.value),onClick:t[3]||(t[3]=a=>l.$emit("export"))},{default:e.withCtx(()=>[e.createVNode(c.default,{icon:"download",class:"w-4 h-4 mr-2"}),t[8]||(t[8]=e.createTextVNode(" Export ",-1))]),_:1},8,["class"])):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"actions",{},()=>[o.showAdd?(e.openBlock(),e.createBlock(v._sfc_main,{key:0,variant:"success",size:"lg",onClick:t[4]||(t[4]=a=>l.$emit("add"))},{default:e.withCtx(()=>[e.createVNode(c.default,{icon:"plus",class:"w-4 h-4 mr-2"}),t[9]||(t[9]=e.createTextVNode(" Add ",-1))]),_:1})):e.createCommentVNode("",!0)])])],2),o.showFilters&&m.value&&o.dateFilters.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(I.value)},[e.createElementVNode("div",le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.dateFilters,a=>(e.openBlock(),e.createElementBlock("div",{key:a.key,class:"space-y-3"},[e.createElementVNode("div",se,[e.createElementVNode("label",{class:e.normalizeClass(A.value)},e.toDisplayString(a.label),3),e.createElementVNode("span",{class:e.normalizeClass(N(a))},e.toDisplayString(y(a)?"Active":"Inactive"),3)]),e.createElementVNode("div",oe,[e.createElementVNode("div",re,[e.createVNode(c.default,{icon:"calendar",class:"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400"}),e.createElementVNode("input",{type:"date","model-value":a.from,class:e.normalizeClass(C.value),placeholder:`From ${a.label}`,onInput:r=>h(a.key,"from",r.target.value)},null,42,ne)]),e.createElementVNode("span",{class:e.normalizeClass(O.value)},"to",2),e.createElementVNode("div",ce,[e.createVNode(c.default,{icon:"calendar",class:"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400"}),e.createElementVNode("input",{type:"date","model-value":a.to,class:e.normalizeClass(C.value),placeholder:`To ${a.label}`,onInput:r=>h(a.key,"to",r.target.value)},null,42,de)]),y(a)?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(Q.value),title:"Clear this filter",onClick:r=>w(a.key)},[e.createVNode(c.default,{icon:"xmark",class:"w-4 h-4"})],10,ie)):e.createCommentVNode("",!0)])]))),128))])],2)):e.createCommentVNode("",!0),o.showFilters&&x.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(j.value)},[e.createElementVNode("div",ue,[e.createElementVNode("span",{class:e.normalizeClass(P.value)},"Active filters:",2),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,a=>(e.openBlock(),e.createElementBlock("div",{key:a.key,class:e.normalizeClass(q.value)},[e.createVNode(c.default,{icon:a.icon,class:"w-3 h-3"},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(a.label)+": "+e.toDisplayString(a.value),1),e.createElementVNode("button",{class:e.normalizeClass(R.value),onClick:r=>U(a.key)},[e.createVNode(c.default,{icon:"xmark",class:"w-3 h-3"})],10,me)],2))),128))])],2)):e.createCommentVNode("",!0),o.showTableInfo?(e.openBlock(),e.createElementBlock("div",pe,[e.createElementVNode("div",fe,[e.createElementVNode("div",ye,[e.createElementVNode("span",ve,[e.createElementVNode("span",ge,e.toDisplayString(o.totalItems||0),1),e.createTextVNode(" "+e.toDisplayString(o.itemLabel||"items")+" found ",1)])])])])):e.createCommentVNode("",!0)]))}};exports.default=he;
@@ -1,5 +1,5 @@
1
1
  import { ref as oe, computed as o, createElementBlock as u, openBlock as n, createElementVNode as r, createCommentVNode as p, normalizeClass as i, createVNode as c, withCtx as w, Fragment as S, renderList as $, toDisplayString as f, createTextVNode as x, renderSlot as z, createBlock as T } from "vue";
2
- import I from "./Button.js";
2
+ import { _ as I } from "../Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js";
3
3
  import ne from "./Select.js";
4
4
  import { cva as B } from "class-variance-authority";
5
5
  import { cn as y } from "../utils/cn.js";
@@ -223,12 +223,12 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
223
223
  )
224
224
  ), W = o(
225
225
  () => "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600 p-1 hover:bg-gray-100 rounded-full transition-all"
226
- ), q = o(
226
+ ), _ = o(
227
227
  () => y(
228
228
  k({ size: "md" }),
229
229
  "w-full pr-8 appearance-none hover:border-gray-300"
230
230
  )
231
- ), G = o(() => {
231
+ ), q = o(() => {
232
232
  const a = b.value || D.value;
233
233
  return y(
234
234
  F({
@@ -237,21 +237,21 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
237
237
  }),
238
238
  "gap-2"
239
239
  );
240
- }), H = o(
240
+ }), G = o(
241
241
  () => "bg-white text-blue-600 text-xs px-1.5 py-0.5 rounded-full min-w-[20px] text-center font-semibold"
242
- ), J = o(
242
+ ), H = o(
243
243
  () => "px-6 py-4 border-t border-gray-100 bg-gray-50"
244
244
  ), Q = o(
245
245
  () => y(k({ size: "md" }), "pl-10 pr-3")
246
- ), M = o(
246
+ ), J = o(
247
247
  () => "text-sm font-semibold text-gray-700"
248
- ), X = o(
248
+ ), M = o(
249
249
  () => "text-gray-500 text-sm font-medium"
250
- ), Y = o(
250
+ ), X = o(
251
251
  () => "text-gray-400 hover:text-gray-600 p-1.5 hover:bg-gray-200 rounded-full transition-all"
252
- ), Z = o(
252
+ ), Y = o(
253
253
  () => y(F({ variant: "ghost", size: "md" }))
254
- ), _ = o(
254
+ ), Z = o(
255
255
  () => y(F({ variant: "default", size: "lg" }))
256
256
  ), K = o(
257
257
  () => "px-6 py-3 bg-blue-50 border-t border-blue-100"
@@ -322,7 +322,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
322
322
  r("div", pe, [
323
323
  c(ne, {
324
324
  "model-value": l.selectedStatus,
325
- class: i(q.value),
325
+ class: i(_.value),
326
326
  onChange: e[2] || (e[2] = (t) => a.$emit("update:selectedStatus", t.target.value))
327
327
  }, {
328
328
  default: w(() => [
@@ -342,7 +342,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
342
342
  ])) : p("", !0),
343
343
  l.showFilters ? (n(), u("button", {
344
344
  key: 2,
345
- class: i(G.value),
345
+ class: i(q.value),
346
346
  onClick: P
347
347
  }, [
348
348
  c(v, {
@@ -352,7 +352,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
352
352
  e[6] || (e[6] = x(" Filters ", -1)),
353
353
  A.value > 0 ? (n(), u("span", {
354
354
  key: 0,
355
- class: i(H.value)
355
+ class: i(G.value)
356
356
  }, f(A.value), 3)) : p("", !0),
357
357
  c(v, {
358
358
  icon: b.value ? "chevron-up" : "chevron-down",
@@ -365,7 +365,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
365
365
  r("div", ye, [
366
366
  D.value ? (n(), T(I, {
367
367
  key: 0,
368
- class: i(Z.value),
368
+ class: i(Y.value),
369
369
  onClick: se
370
370
  }, {
371
371
  default: w(() => [
@@ -379,7 +379,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
379
379
  }, 8, ["class"])) : p("", !0),
380
380
  l.showExport ? (n(), T(I, {
381
381
  key: 1,
382
- class: i(_.value),
382
+ class: i(Z.value),
383
383
  onClick: e[3] || (e[3] = (t) => a.$emit("export"))
384
384
  }, {
385
385
  default: w(() => [
@@ -412,7 +412,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
412
412
  ], 2),
413
413
  l.showFilters && b.value && l.dateFilters.length > 0 ? (n(), u("div", {
414
414
  key: 0,
415
- class: i(J.value)
415
+ class: i(H.value)
416
416
  }, [
417
417
  r("div", ge, [
418
418
  (n(!0), u(S, null, $(l.dateFilters, (t) => (n(), u("div", {
@@ -421,7 +421,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
421
421
  }, [
422
422
  r("div", he, [
423
423
  r("label", {
424
- class: i(M.value)
424
+ class: i(J.value)
425
425
  }, f(t.label), 3),
426
426
  r("span", {
427
427
  class: i(L(t))
@@ -442,7 +442,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
442
442
  }, null, 42, we)
443
443
  ]),
444
444
  r("span", {
445
- class: i(X.value)
445
+ class: i(M.value)
446
446
  }, "to", 2),
447
447
  r("div", ke, [
448
448
  c(v, {
@@ -459,7 +459,7 @@ const ie = { class: "bg-white border-b border-gray-200" }, de = {
459
459
  ]),
460
460
  C(t) ? (n(), u("button", {
461
461
  key: 0,
462
- class: i(Y.value),
462
+ class: i(X.value),
463
463
  title: "Clear this filter",
464
464
  onClick: (d) => E(t.key)
465
465
  }, [
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),w=require("./Button.cjs"),V=require("./Icon.cjs"),_=require("./FilterDrawer.cjs"),f=require("class-variance-authority"),c=require("../utils/cn.cjs"),ee=require("../_plugin-vue_export-helper-BHFhmbuH.cjs"),te={class:"flex flex-col rounded-2xl mb-2 px-2"},oe={class:"flex items-center gap-3"},le={key:0,class:"flex items-center gap-3"},ne={class:"text-sm ui-text"},re={class:"flex items-center gap-2"},ae={class:"flex items-center gap-3"},se=["title","onClick"],ie={key:1,class:"relative"},ue={class:"p-3"},de={class:"space-y-1"},ce={class:"flex items-center gap-2 cursor-pointer w-full"},me=["checked","onChange"],fe=["disabled"],pe={key:3,class:"flex items-center gap-2"},ve={key:4,class:"relative"},ge=["value","placeholder"],be={key:0,class:"inline-flex items-center justify-center min-w-5 h-5 rounded-full text-xs ui-primary-bg text-white px-1"},ye={key:7,class:"flex items-center gap-2"},ke={key:1,class:"mt-2 px-3 py-2 border ui-border-strong rounded-lg flex flex-wrap items-center gap-2 ui-surface"},he=["onClick"],Be=[{key:"delete",label:"Delete",icon:{render(){return e.h("svg",{fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"})])}},variant:"danger"},{key:"edit",label:"Edit",icon:{render(){return e.h("svg",{fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10"})])}},variant:"primary"}],Ce={name:"DataTableToolBar"},xe=Object.assign(Ce,{props:{selectedItems:{type:Array,default:()=>[]},totalItems:{type:Number,default:0},itemLabel:{type:String,default:"items"},showTableInfo:{type:Boolean,default:!1},showItemCount:{type:Boolean,default:!1},bulkActions:{type:Array,default:()=>Be},showDensityToggle:{type:Boolean,default:!0},showColumnToggle:{type:Boolean,default:!0},showRefresh:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},searchQuery:{type:String,default:""},searchPlaceholder:{type:String,default:"Search..."},addButton:{type:Object,default:()=>({})},isRefreshing:{type:Boolean,default:!1},density:{type:String,default:"compact",validator:o=>["compact","normal","comfortable"].includes(o)},toggleableColumns:{type:Array,default:()=>[]},visibleColumns:{type:Array,default:()=>[]},variant:{type:String,default:"default",validator:o=>["default","minimal","bordered"].includes(o)},padding:{type:String,default:"normal",validator:o=>["compact","normal","comfortable"].includes(o)},themeScope:{type:String,default:"default",validator:o=>["default","module"].includes(o)},activeFilters:{type:Array,default:()=>[]},enableFilters:{type:Boolean,default:!1},filterFields:{type:Array,default:()=>[]},filterRules:{type:Object,default:()=>({logic:"all",rules:[]})},defaultFilterRules:{type:Object,default:()=>({logic:"all",rules:[]})}},emits:["bulk-action","update:density","toggle-column","refresh","update:search-query","add","add-button-click","update:filterRules"],setup(o,{emit:E}){const r=o,s=E,i=e.ref(!1),p=e.ref(!1),g=e.ref(!1),u=e.ref(null),v=e.ref(null),b=e.ref({}),y=e.computed(()=>r.selectedItems.length),k=e.computed(()=>Object.keys(r.addButton||{}).length>0),N=e.computed(()=>k.value?r.addButton.permission===void 0?!0:typeof r.addButton.permission=="function"?r.addButton.permission():!!r.addButton.permission:!1),h=e.computed(()=>!k.value||!N.value?!1:typeof r.addButton.visible=="function"?r.addButton.visible():r.addButton.visible===void 0?!0:!!r.addButton.visible),B=e.computed(()=>h.value?typeof r.addButton.disabled=="function"?r.addButton.disabled():!!r.addButton.disabled:!0),S=e.computed(()=>r.addButton.tooltip||r.addButton.label||"Add new item"),A=[{value:"compact",label:"Compact",icon:["fas","minus"]},{value:"normal",label:"Normal",icon:["fas","bars"]},{value:"comfortable",label:"Comfortable",icon:["fas","bars-staggered"]}],R=f.cva("flex items-center justify-between border ui-border-strong rounded-2xl",{variants:{variant:{default:"ui-border-strong",minimal:"bg-transparent ui-border-strong",bordered:" ui-border-strong"},padding:{compact:"p-2",normal:"p-4",comfortable:"p-6"}},defaultVariants:{variant:"default",padding:"normal"}}),F=f.cva("px-3 py-1.5 text-sm font-medium rounded-md flex items-center gap-1 transition-colors ",{variants:{variant:{danger:"ui-danger ui-danger-bg hover:bg-(--ui-danger-soft) border border-(--ui-danger-soft)",primary:"ui-primary ui-primary-soft hover:bg-(--ui-primary-soft) border border-(--ui-primary-soft)",secondary:"ui-text ui-bg hover:bg-(--ui-bg) border ui-border-strong"}},defaultVariants:{variant:"secondary"}}),$=f.cva("p-2 border ui-border-strong transition-colors ",{variants:{active:{true:"ui-primary-soft ui-primary border-(--ui-primary-soft)",false:"ui-surface ui-text hover:bg-(--ui-surface)"},position:{first:"rounded-l-md border-r-0",middle:"border-x-0",last:"rounded-r-md border-l-0"}},defaultVariants:{active:!1,position:"middle"}}),z=f.cva("px-3 py-2 text-sm border ui-border-strong rounded-md flex items-center gap-2 transition-colors ",{variants:{state:{normal:"ui-text hover:text-(--ui-text) hover:bg-(--ui-surface)",refreshing:"ui-text opacity-75 cursor-not-allowed"}},defaultVariants:{state:"normal"}}),D=e.computed(()=>c.cn(R({variant:r.variant,padding:r.padding}),r.themeScope==="module"&&"kv-module-themed-toolbar")),T=e.computed(()=>"text-md ui-text"),L=e.computed(()=>"flex items-center"),I=e.computed(()=>"flex items-center gap-2 px-3 py-2 text-sm ui-text hover:text-(--ui-text) border ui-border-strong rounded-md hover:brightness-105 transition-colors focus:outline-none focus:ring-2 focus:ring-(--ui-primary) focus:ring-offset-1"),M=e.computed(()=>"ui-bg rounded-lg shadow-lg z-[9999] max-h-64 overflow-y-auto"),j=e.computed(()=>"text-xs font-medium ui-text uppercase tracking-wider mb-2 border-b ui-border-strong pb-2"),q=e.computed(()=>"py-1 hover:bg-(--ui-surface) rounded transition-colors"),O=e.computed(()=>"w-4 h-4 rounded ui-border-strong ui-primary focus:ring-(--ui-primary) focus:ring-2 focus:ring-offset-1"),H=e.computed(()=>"text-sm ui-text flex-1 select-none"),P=e.computed(()=>"w-72 pl-9 pr-3 py-2 text-sm border ui-border-strong rounded-md ui-surface ui-text placeholder:text-(--ui-text-muted) focus:outline-none focus:ring-2 focus:ring-(--ui-primary) focus:border-transparent transition-all"),d=()=>{if(!u.value)return;const t=u.value.getBoundingClientRect(),l=224,a=Math.max(12,t.right-l);b.value={position:"fixed",top:`${t.bottom+6}px`,left:`${a}px`,width:`${l}px`,zIndex:9999}},C=t=>{u.value&&v.value&&!u.value.contains(t.target)&&!v.value.contains(t.target)&&(i.value=!1)},Q=()=>{i.value=!i.value,i.value&&d()},U=t=>c.cn(F({variant:t.variant||"secondary"})),Z=t=>{let l="middle";return t==="compact"?l="first":t==="comfortable"&&(l="last"),c.cn($({active:r.density===t,position:l}))},G=()=>c.cn(z({state:r.isRefreshing?"refreshing":"normal"})),J=()=>c.cn("w-4 h-4",{"animate-spin":r.isRefreshing}),K=t=>r.visibleColumns.includes(t),W=(t,l)=>{s("toggle-column",{column:t,visible:l})},X=()=>{B.value||(s("add"),s("add-button-click",r.addButton),typeof r.addButton.onClick=="function"&&r.addButton.onClick())},x=e.computed(()=>(r.filterRules?.rules||[]).map(t=>({id:t.id,label:t.label,value:typeof t.value=="object"?`${t.value.from||""}${t.value.from||t.value.to?" to ":""}${t.value.to||""}`:String(t.value??"")}))),Y=t=>{const l=Array.isArray(r.filterRules?.rules)?r.filterRules.rules:[];s("update:filterRules",{logic:r.filterRules?.logic||"all",rules:l.filter(a=>a.id!==t)})};return e.watch(()=>r.defaultFilterRules,t=>{if(g.value||!r.enableFilters)return;const l=Array.isArray(t?.rules)?t.rules:[];l.length!==0&&(s("update:filterRules",{logic:t?.logic||"all",rules:l}),g.value=!0)},{immediate:!0,deep:!0}),e.onMounted(()=>{document.addEventListener("click",C),window.addEventListener("scroll",d,!0),window.addEventListener("resize",d)}),e.onUnmounted(()=>{document.removeEventListener("click",C),window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d)}),(t,l)=>{const a=e.resolveComponent("font-awesome-icon");return e.openBlock(),e.createElementBlock("div",te,[e.createElementVNode("div",{class:e.normalizeClass(D.value)},[e.createElementVNode("div",oe,[y.value>0?(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("span",ne,e.toDisplayString(y.value)+" selected ",1),e.createElementVNode("div",re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.bulkActions,n=>(e.openBlock(),e.createBlock(w.default,{key:n.key,class:e.normalizeClass(U(n)),onClick:m=>t.$emit("bulk-action",{action:n.key,items:o.selectedItems})},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(a,{key:0,icon:n.icon,class:"w-4 h-4"},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label),1)]),_:2},1032,["class","onClick"]))),128))])])):o.showItemCount&&o.totalItems>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(T.value)},e.toDisplayString(o.totalItems)+" "+e.toDisplayString(o.itemLabel),3)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ae,[o.showDensityToggle?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(L.value)},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(A,n=>e.createElementVNode("button",{key:n.value,class:e.normalizeClass(Z(n.value)),title:n.label,type:"button",onClick:m=>t.$emit("update:density",n.value)},[e.createVNode(a,{icon:n.icon,class:"w-4 h-4"},null,8,["icon"])],10,se)),64))],2)):e.createCommentVNode("",!0),o.showColumnToggle?(e.openBlock(),e.createElementBlock("div",ie,[e.createElementVNode("button",{ref_key:"columnToggleButton",ref:u,class:e.normalizeClass(I.value),type:"button",onClick:e.withModifiers(Q,["stop"])},[e.createVNode(a,{icon:"columns",class:"w-4 h-4"}),l[7]||(l[7]=e.createElementVNode("span",null,"Columns",-1))],2),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.withDirectives(e.createElementVNode("div",{ref_key:"columnMenu",ref:v,class:e.normalizeClass(M.value),style:e.normalizeStyle(b.value),onClick:l[0]||(l[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ue,[e.createElementVNode("div",{class:e.normalizeClass(j.value)}," Show Columns ",2),e.createElementVNode("div",de,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.toggleableColumns,n=>(e.openBlock(),e.createElementBlock("div",{key:n.key,class:e.normalizeClass(q.value)},[e.createElementVNode("label",ce,[e.createElementVNode("input",{type:"checkbox",checked:K(n.key),class:e.normalizeClass(O.value),onChange:m=>W(n.key,m.target.checked)},null,42,me),e.createElementVNode("span",{class:e.normalizeClass(H.value)},e.toDisplayString(n.label),3)])],2))),128))])])],6),[[e.vShow,i.value]])]))])):e.createCommentVNode("",!0),o.showRefresh?(e.openBlock(),e.createElementBlock("button",{key:2,disabled:o.isRefreshing,class:e.normalizeClass(G()),type:"button",onClick:l[1]||(l[1]=n=>t.$emit("refresh"))},[e.createVNode(a,{icon:"sync",class:e.normalizeClass(J())},null,8,["class"]),l[8]||(l[8]=e.createElementVNode("span",null,"Refresh",-1))],10,fe)):e.createCommentVNode("",!0),t.$slots.actions?(e.openBlock(),e.createElementBlock("div",pe,[e.renderSlot(t.$slots,"actions",{},void 0,!0)])):e.createCommentVNode("",!0),o.showSearch?(e.openBlock(),e.createElementBlock("div",ve,[e.createVNode(a,{icon:"search",class:"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 w-3.5 h-3.5 ui-text-soft"}),e.createElementVNode("input",{value:o.searchQuery,type:"text",placeholder:o.searchPlaceholder,class:e.normalizeClass(P.value),onInput:l[2]||(l[2]=n=>t.$emit("update:search-query",n.target.value))},null,42,ge)])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createBlock(w.default,{key:5,variant:o.addButton.variant||"success",disabled:B.value,title:S.value,onClick:X},{default:e.withCtx(()=>[e.createVNode(V.default,{icon:o.addButton.icon||"plus"},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(o.addButton.label||"Add"),1)]),_:1},8,["variant","disabled","title"])):e.createCommentVNode("",!0),o.enableFilters?(e.openBlock(),e.createElementBlock("button",{key:6,class:"px-3 py-2 text-sm border ui-border-strong rounded-md hover:bg-(--ui-surface) flex items-center gap-2",onClick:l[3]||(l[3]=n=>p.value=!0)},[e.createVNode(a,{icon:"filter"}),l[9]||(l[9]=e.createTextVNode(" Filter ",-1)),(o.filterRules.rules||[]).length?(e.openBlock(),e.createElementBlock("span",be,e.toDisplayString((o.filterRules.rules||[]).length),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),t.$slots["actions-after-add"]?(e.openBlock(),e.createElementBlock("div",ye,[e.renderSlot(t.$slots,"actions-after-add",{},void 0,!0)])):e.createCommentVNode("",!0)])],2),o.enableFilters?(e.openBlock(),e.createBlock(_.default,{key:0,open:p.value,fields:o.filterFields,"model-value":o.filterRules,"onUpdate:modelValue":l[4]||(l[4]=n=>t.$emit("update:filterRules",n)),onClose:l[5]||(l[5]=n=>p.value=!1)},null,8,["open","fields","model-value"])):e.createCommentVNode("",!0),(o.enableFilters?x.value.length>0:o.activeFilters.length>0)?(e.openBlock(),e.createElementBlock("div",ke,[l[10]||(l[10]=e.createElementVNode("span",{class:"text-sm ui-text-soft"},"Filters:",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.enableFilters?x.value:o.activeFilters,n=>(e.openBlock(),e.createElementBlock("span",{key:n.id||`${n.label}-${n.value}`,class:"inline-flex items-center gap-1 px-2 py-1 rounded-md text-sm border ui-border-strong ui-text"},[e.createTextVNode(e.toDisplayString(n.label)+": "+e.toDisplayString(n.value)+" ",1),o.enableFilters&&n.id?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ml-1 ui-text-soft hover:ui-primary",onClick:m=>Y(n.id)},[e.createVNode(V.default,{icon:"xmark",class:"w-3 h-3"})],8,he)):e.createCommentVNode("",!0)]))),128)),o.enableFilters?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ml-1 px-2 py-1 text-sm border border-(--ui-primary) rounded-md ui-primary hover:bg-(--ui-primary-soft)",onClick:l[6]||(l[6]=n=>t.$emit("update:filterRules",{logic:o.defaultFilterRules?.logic||"all",rules:o.defaultFilterRules?.rules||[]}))}," Clear filter ")):e.createCommentVNode("",!0),e.renderSlot(t.$slots,"active-filter-actions",{},void 0,!0)])):e.createCommentVNode("",!0)])}}}),we=ee._export_sfc(xe,[["__scopeId","data-v-b6fc1eb4"]]);exports.default=we;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),w=require("../Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs"),V=require("./Icon.cjs"),_=require("./FilterDrawer.cjs"),f=require("class-variance-authority"),c=require("../utils/cn.cjs"),ee=require("../_plugin-vue_export-helper-BHFhmbuH.cjs"),te={class:"flex flex-col rounded-2xl mb-2 px-2"},oe={class:"flex items-center gap-3"},le={key:0,class:"flex items-center gap-3"},ne={class:"text-sm ui-text"},re={class:"flex items-center gap-2"},ae={class:"flex items-center gap-3"},se=["title","onClick"],ie={key:1,class:"relative"},ue={class:"p-3"},de={class:"space-y-1"},ce={class:"flex items-center gap-2 cursor-pointer w-full"},me=["checked","onChange"],fe=["disabled"],pe={key:3,class:"flex items-center gap-2"},ve={key:4,class:"relative"},ge=["value","placeholder"],be={key:0,class:"inline-flex items-center justify-center min-w-5 h-5 rounded-full text-xs ui-primary-bg text-white px-1"},ye={key:7,class:"flex items-center gap-2"},ke={key:1,class:"mt-2 px-3 py-2 border ui-border-strong rounded-lg flex flex-wrap items-center gap-2 ui-surface"},he=["onClick"],Be=[{key:"delete",label:"Delete",icon:{render(){return e.h("svg",{fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"})])}},variant:"danger"},{key:"edit",label:"Edit",icon:{render(){return e.h("svg",{fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10"})])}},variant:"primary"}],Ce={name:"DataTableToolBar"},xe=Object.assign(Ce,{props:{selectedItems:{type:Array,default:()=>[]},totalItems:{type:Number,default:0},itemLabel:{type:String,default:"items"},showTableInfo:{type:Boolean,default:!1},showItemCount:{type:Boolean,default:!1},bulkActions:{type:Array,default:()=>Be},showDensityToggle:{type:Boolean,default:!0},showColumnToggle:{type:Boolean,default:!0},showRefresh:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},searchQuery:{type:String,default:""},searchPlaceholder:{type:String,default:"Search..."},addButton:{type:Object,default:()=>({})},isRefreshing:{type:Boolean,default:!1},density:{type:String,default:"compact",validator:o=>["compact","normal","comfortable"].includes(o)},toggleableColumns:{type:Array,default:()=>[]},visibleColumns:{type:Array,default:()=>[]},variant:{type:String,default:"default",validator:o=>["default","minimal","bordered"].includes(o)},padding:{type:String,default:"normal",validator:o=>["compact","normal","comfortable"].includes(o)},themeScope:{type:String,default:"default",validator:o=>["default","module"].includes(o)},activeFilters:{type:Array,default:()=>[]},enableFilters:{type:Boolean,default:!1},filterFields:{type:Array,default:()=>[]},filterRules:{type:Object,default:()=>({logic:"all",rules:[]})},defaultFilterRules:{type:Object,default:()=>({logic:"all",rules:[]})}},emits:["bulk-action","update:density","toggle-column","refresh","update:search-query","add","add-button-click","update:filterRules"],setup(o,{emit:E}){const r=o,s=E,i=e.ref(!1),p=e.ref(!1),g=e.ref(!1),u=e.ref(null),v=e.ref(null),b=e.ref({}),y=e.computed(()=>r.selectedItems.length),k=e.computed(()=>Object.keys(r.addButton||{}).length>0),N=e.computed(()=>k.value?r.addButton.permission===void 0?!0:typeof r.addButton.permission=="function"?r.addButton.permission():!!r.addButton.permission:!1),h=e.computed(()=>!k.value||!N.value?!1:typeof r.addButton.visible=="function"?r.addButton.visible():r.addButton.visible===void 0?!0:!!r.addButton.visible),B=e.computed(()=>h.value?typeof r.addButton.disabled=="function"?r.addButton.disabled():!!r.addButton.disabled:!0),S=e.computed(()=>r.addButton.tooltip||r.addButton.label||"Add new item"),A=[{value:"compact",label:"Compact",icon:["fas","minus"]},{value:"normal",label:"Normal",icon:["fas","bars"]},{value:"comfortable",label:"Comfortable",icon:["fas","bars-staggered"]}],R=f.cva("flex items-center justify-between border ui-border-strong rounded-2xl",{variants:{variant:{default:"ui-border-strong",minimal:"bg-transparent ui-border-strong",bordered:" ui-border-strong"},padding:{compact:"p-2",normal:"p-4",comfortable:"p-6"}},defaultVariants:{variant:"default",padding:"normal"}}),F=f.cva("px-3 py-1.5 text-sm font-medium rounded-md flex items-center gap-1 transition-colors ",{variants:{variant:{danger:"ui-danger ui-danger-bg hover:bg-(--ui-danger-soft) border border-(--ui-danger-soft)",primary:"ui-primary ui-primary-soft hover:bg-(--ui-primary-soft) border border-(--ui-primary-soft)",secondary:"ui-text ui-bg hover:bg-(--ui-bg) border ui-border-strong"}},defaultVariants:{variant:"secondary"}}),$=f.cva("p-2 border ui-border-strong transition-colors ",{variants:{active:{true:"ui-primary-soft ui-primary border-(--ui-primary-soft)",false:"ui-surface ui-text hover:bg-(--ui-surface)"},position:{first:"rounded-l-md border-r-0",middle:"border-x-0",last:"rounded-r-md border-l-0"}},defaultVariants:{active:!1,position:"middle"}}),z=f.cva("px-3 py-2 text-sm border ui-border-strong rounded-md flex items-center gap-2 transition-colors ",{variants:{state:{normal:"ui-text hover:text-(--ui-text) hover:bg-(--ui-surface)",refreshing:"ui-text opacity-75 cursor-not-allowed"}},defaultVariants:{state:"normal"}}),D=e.computed(()=>c.cn(R({variant:r.variant,padding:r.padding}),r.themeScope==="module"&&"kv-module-themed-toolbar")),T=e.computed(()=>"text-md ui-text"),L=e.computed(()=>"flex items-center"),I=e.computed(()=>"flex items-center gap-2 px-3 py-2 text-sm ui-text hover:text-(--ui-text) border ui-border-strong rounded-md hover:brightness-105 transition-colors focus:outline-none focus:ring-2 focus:ring-(--ui-primary) focus:ring-offset-1"),M=e.computed(()=>"ui-bg rounded-lg shadow-lg z-[9999] max-h-64 overflow-y-auto"),j=e.computed(()=>"text-xs font-medium ui-text uppercase tracking-wider mb-2 border-b ui-border-strong pb-2"),q=e.computed(()=>"py-1 hover:bg-(--ui-surface) rounded transition-colors"),O=e.computed(()=>"w-4 h-4 rounded ui-border-strong ui-primary focus:ring-(--ui-primary) focus:ring-2 focus:ring-offset-1"),H=e.computed(()=>"text-sm ui-text flex-1 select-none"),P=e.computed(()=>"w-72 pl-9 pr-3 py-2 text-sm border ui-border-strong rounded-md ui-surface ui-text placeholder:text-(--ui-text-muted) focus:outline-none focus:ring-2 focus:ring-(--ui-primary) focus:border-transparent transition-all"),d=()=>{if(!u.value)return;const t=u.value.getBoundingClientRect(),l=224,a=Math.max(12,t.right-l);b.value={position:"fixed",top:`${t.bottom+6}px`,left:`${a}px`,width:`${l}px`,zIndex:9999}},C=t=>{u.value&&v.value&&!u.value.contains(t.target)&&!v.value.contains(t.target)&&(i.value=!1)},Q=()=>{i.value=!i.value,i.value&&d()},U=t=>c.cn(F({variant:t.variant||"secondary"})),Z=t=>{let l="middle";return t==="compact"?l="first":t==="comfortable"&&(l="last"),c.cn($({active:r.density===t,position:l}))},G=()=>c.cn(z({state:r.isRefreshing?"refreshing":"normal"})),J=()=>c.cn("w-4 h-4",{"animate-spin":r.isRefreshing}),K=t=>r.visibleColumns.includes(t),W=(t,l)=>{s("toggle-column",{column:t,visible:l})},X=()=>{B.value||(s("add"),s("add-button-click",r.addButton),typeof r.addButton.onClick=="function"&&r.addButton.onClick())},x=e.computed(()=>(r.filterRules?.rules||[]).map(t=>({id:t.id,label:t.label,value:typeof t.value=="object"?`${t.value.from||""}${t.value.from||t.value.to?" to ":""}${t.value.to||""}`:String(t.value??"")}))),Y=t=>{const l=Array.isArray(r.filterRules?.rules)?r.filterRules.rules:[];s("update:filterRules",{logic:r.filterRules?.logic||"all",rules:l.filter(a=>a.id!==t)})};return e.watch(()=>r.defaultFilterRules,t=>{if(g.value||!r.enableFilters)return;const l=Array.isArray(t?.rules)?t.rules:[];l.length!==0&&(s("update:filterRules",{logic:t?.logic||"all",rules:l}),g.value=!0)},{immediate:!0,deep:!0}),e.onMounted(()=>{document.addEventListener("click",C),window.addEventListener("scroll",d,!0),window.addEventListener("resize",d)}),e.onUnmounted(()=>{document.removeEventListener("click",C),window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d)}),(t,l)=>{const a=e.resolveComponent("font-awesome-icon");return e.openBlock(),e.createElementBlock("div",te,[e.createElementVNode("div",{class:e.normalizeClass(D.value)},[e.createElementVNode("div",oe,[y.value>0?(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("span",ne,e.toDisplayString(y.value)+" selected ",1),e.createElementVNode("div",re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.bulkActions,n=>(e.openBlock(),e.createBlock(w._sfc_main,{key:n.key,class:e.normalizeClass(U(n)),onClick:m=>t.$emit("bulk-action",{action:n.key,items:o.selectedItems})},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(a,{key:0,icon:n.icon,class:"w-4 h-4"},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label),1)]),_:2},1032,["class","onClick"]))),128))])])):o.showItemCount&&o.totalItems>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(T.value)},e.toDisplayString(o.totalItems)+" "+e.toDisplayString(o.itemLabel),3)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ae,[o.showDensityToggle?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(L.value)},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(A,n=>e.createElementVNode("button",{key:n.value,class:e.normalizeClass(Z(n.value)),title:n.label,type:"button",onClick:m=>t.$emit("update:density",n.value)},[e.createVNode(a,{icon:n.icon,class:"w-4 h-4"},null,8,["icon"])],10,se)),64))],2)):e.createCommentVNode("",!0),o.showColumnToggle?(e.openBlock(),e.createElementBlock("div",ie,[e.createElementVNode("button",{ref_key:"columnToggleButton",ref:u,class:e.normalizeClass(I.value),type:"button",onClick:e.withModifiers(Q,["stop"])},[e.createVNode(a,{icon:"columns",class:"w-4 h-4"}),l[7]||(l[7]=e.createElementVNode("span",null,"Columns",-1))],2),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.withDirectives(e.createElementVNode("div",{ref_key:"columnMenu",ref:v,class:e.normalizeClass(M.value),style:e.normalizeStyle(b.value),onClick:l[0]||(l[0]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ue,[e.createElementVNode("div",{class:e.normalizeClass(j.value)}," Show Columns ",2),e.createElementVNode("div",de,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.toggleableColumns,n=>(e.openBlock(),e.createElementBlock("div",{key:n.key,class:e.normalizeClass(q.value)},[e.createElementVNode("label",ce,[e.createElementVNode("input",{type:"checkbox",checked:K(n.key),class:e.normalizeClass(O.value),onChange:m=>W(n.key,m.target.checked)},null,42,me),e.createElementVNode("span",{class:e.normalizeClass(H.value)},e.toDisplayString(n.label),3)])],2))),128))])])],6),[[e.vShow,i.value]])]))])):e.createCommentVNode("",!0),o.showRefresh?(e.openBlock(),e.createElementBlock("button",{key:2,disabled:o.isRefreshing,class:e.normalizeClass(G()),type:"button",onClick:l[1]||(l[1]=n=>t.$emit("refresh"))},[e.createVNode(a,{icon:"sync",class:e.normalizeClass(J())},null,8,["class"]),l[8]||(l[8]=e.createElementVNode("span",null,"Refresh",-1))],10,fe)):e.createCommentVNode("",!0),t.$slots.actions?(e.openBlock(),e.createElementBlock("div",pe,[e.renderSlot(t.$slots,"actions",{},void 0,!0)])):e.createCommentVNode("",!0),o.showSearch?(e.openBlock(),e.createElementBlock("div",ve,[e.createVNode(a,{icon:"search",class:"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 w-3.5 h-3.5 ui-text-soft"}),e.createElementVNode("input",{value:o.searchQuery,type:"text",placeholder:o.searchPlaceholder,class:e.normalizeClass(P.value),onInput:l[2]||(l[2]=n=>t.$emit("update:search-query",n.target.value))},null,42,ge)])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createBlock(w._sfc_main,{key:5,variant:o.addButton.variant||"success",disabled:B.value,title:S.value,onClick:X},{default:e.withCtx(()=>[e.createVNode(V.default,{icon:o.addButton.icon||"plus"},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(o.addButton.label||"Add"),1)]),_:1},8,["variant","disabled","title"])):e.createCommentVNode("",!0),o.enableFilters?(e.openBlock(),e.createElementBlock("button",{key:6,class:"px-3 py-2 text-sm border ui-border-strong rounded-md hover:bg-(--ui-surface) flex items-center gap-2",onClick:l[3]||(l[3]=n=>p.value=!0)},[e.createVNode(a,{icon:"filter"}),l[9]||(l[9]=e.createTextVNode(" Filter ",-1)),(o.filterRules.rules||[]).length?(e.openBlock(),e.createElementBlock("span",be,e.toDisplayString((o.filterRules.rules||[]).length),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),t.$slots["actions-after-add"]?(e.openBlock(),e.createElementBlock("div",ye,[e.renderSlot(t.$slots,"actions-after-add",{},void 0,!0)])):e.createCommentVNode("",!0)])],2),o.enableFilters?(e.openBlock(),e.createBlock(_.default,{key:0,open:p.value,fields:o.filterFields,"model-value":o.filterRules,"onUpdate:modelValue":l[4]||(l[4]=n=>t.$emit("update:filterRules",n)),onClose:l[5]||(l[5]=n=>p.value=!1)},null,8,["open","fields","model-value"])):e.createCommentVNode("",!0),(o.enableFilters?x.value.length>0:o.activeFilters.length>0)?(e.openBlock(),e.createElementBlock("div",ke,[l[10]||(l[10]=e.createElementVNode("span",{class:"text-sm ui-text-soft"},"Filters:",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.enableFilters?x.value:o.activeFilters,n=>(e.openBlock(),e.createElementBlock("span",{key:n.id||`${n.label}-${n.value}`,class:"inline-flex items-center gap-1 px-2 py-1 rounded-md text-sm border ui-border-strong ui-text"},[e.createTextVNode(e.toDisplayString(n.label)+": "+e.toDisplayString(n.value)+" ",1),o.enableFilters&&n.id?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ml-1 ui-text-soft hover:ui-primary",onClick:m=>Y(n.id)},[e.createVNode(V.default,{icon:"xmark",class:"w-3 h-3"})],8,he)):e.createCommentVNode("",!0)]))),128)),o.enableFilters?(e.openBlock(),e.createElementBlock("button",{key:0,class:"ml-1 px-2 py-1 text-sm border border-(--ui-primary) rounded-md ui-primary hover:bg-(--ui-primary-soft)",onClick:l[6]||(l[6]=n=>t.$emit("update:filterRules",{logic:o.defaultFilterRules?.logic||"all",rules:o.defaultFilterRules?.rules||[]}))}," Clear filter ")):e.createCommentVNode("",!0),e.renderSlot(t.$slots,"active-filter-actions",{},void 0,!0)])):e.createCommentVNode("",!0)])}}}),we=ee._export_sfc(xe,[["__scopeId","data-v-b6fc1eb4"]]);exports.default=we;
@@ -1,5 +1,5 @@
1
1
  import { ref as v, computed as i, watch as be, onMounted as ge, onUnmounted as ye, resolveComponent as pe, createElementBlock as r, openBlock as s, createElementVNode as a, createBlock as h, createCommentVNode as u, normalizeClass as d, toDisplayString as f, Fragment as C, renderList as B, withCtx as O, createTextVNode as F, createVNode as m, withModifiers as z, Teleport as he, withDirectives as ke, normalizeStyle as xe, vShow as Ce, renderSlot as S, h as w } from "vue";
2
- import N from "./Button.js";
2
+ import { _ as N } from "../Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js";
3
3
  import H from "./Icon.js";
4
4
  import Be from "./FilterDrawer.js";
5
5
  import { cva as $ } from "class-variance-authority";
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("class-variance-authority"),l=require("../utils/cn.cjs"),z=require("./DatePicker.cjs"),b=["for"],B={key:0,class:"ui-danger ml-1","aria-label":"required"},S={class:"relative"},C=["aria-label"],w=["id"],N=["id"],E={__name:"FormField",props:{label:String,description:String,error:String,success:String,helpText:String,required:{type:Boolean,default:!1},type:{type:String,default:"text"},modelValue:[String,Date],size:{type:String,default:"md",validator:t=>["sm","md","lg"].includes(t)},id:String},emits:["update:modelValue"],setup(t,{emit:v}){const o=t,f=v,y=`field-${Math.random().toString(36).slice(2,9)}`,a=e.computed(()=>`${o.id||y}-${Math.random().toString(36).slice(2,5)}`),i=e.computed(()=>!!o.error),n=e.ref(!1),d=()=>{n.value=!n.value},g=e.computed(()=>{const s=[];return o.error?s.push(`${a.value}-error`):o.helpText&&s.push(`${a.value}-help`),s.length>0?s.join(" "):void 0}),h=r.cva("ui-text",{variants:{size:{sm:"space-y-1",md:"space-y-2",lg:"space-y-3"}},defaultVariants:{size:"md"}}),V=r.cva("block ui-text",{variants:{size:{sm:"text-xs font-medium",md:"text-sm font-medium",lg:"text-base font-medium"}},defaultVariants:{size:"md"}}),k=r.cva("ui-text",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-base"}},defaultVariants:{size:"md"}}),u=r.cva("flex items-start gap-2",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-sm"},intent:{error:"ui-danger",success:"ui-success"}},defaultVariants:{size:"md",intent:"error"}}),x=r.cva("ui-text",{variants:{size:{sm:"text-xs",md:"text-sm",lg:"text-sm"}},defaultVariants:{size:"md"}});return(s,m)=>{const c=e.resolveComponent("font-awesome-icon");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(l.cn)(e.unref(h)({size:t.size}),s.$attrs.class))},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:a.value,class:e.normalizeClass(e.unref(l.cn)(e.unref(V)({size:t.size})))},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),t.required?(e.openBlock(),e.createElementBlock("span",B,"*")):e.createCommentVNode("",!0)],10,b)):e.createCommentVNode("",!0),t.description?(e.openBlock(),e.createElementBlock("p",{key:1,class:e.normalizeClass(e.unref(l.cn)(e.unref(k)({size:t.size})))},e.toDisplayString(t.description),3)):e.createCommentVNode("",!0),e.createElementVNode("div",S,[t.type==="date"?(e.openBlock(),e.createBlock(z.default,{key:0,id:a.value,"model-value":t.modelValue,disabled:!1,required:t.required,class:e.normalizeClass(i.value?"border-(--ui-danger)":""),"onUpdate:modelValue":m[0]||(m[0]=p=>f("update:modelValue",p))},null,8,["id","model-value","required","class"])):e.renderSlot(s.$slots,"default",{key:1,fieldId:a.value,hasError:i.value,ariaDescribedBy:g.value,showPassword:n.value,togglePasswordVisibility:d}),t.type==="password"?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"absolute inset-y-0 right-0 pr-3 flex items-center ui-text hover:text-(--ui-text) transition-colors","aria-label":n.value?"Hide password":"Show password",onClick:d},[e.createVNode(c,{icon:n.value?"eye-slash":"eye",class:"w-4 h-4"},null,8,["icon"])],8,C)):e.createCommentVNode("",!0)]),e.createVNode(e.Transition,{"enter-active-class":"transition-all duration-200","enter-from-class":"opacity-0 -translate-y-1","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition-all duration-150","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 -translate-y-1"},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createElementBlock("div",{key:0,id:`${a.value}-error`,class:e.normalizeClass(e.unref(l.cn)(e.unref(u)({size:t.size,intent:"error"}))),role:"alert","aria-live":"polite"},[e.createVNode(c,{icon:"exclamation-triangle",class:"w-4 h-4 shrink-0 mt-0.5"}),e.createElementVNode("span",null,e.toDisplayString(t.error),1)],10,w)):e.createCommentVNode("",!0)]),_:1}),t.helpText&&!i.value?(e.openBlock(),e.createElementBlock("p",{key:2,id:`${a.value}-help`,class:e.normalizeClass(e.unref(l.cn)(e.unref(x)({size:t.size})))},e.toDisplayString(t.helpText),11,N)):e.createCommentVNode("",!0),e.createVNode(e.Transition,{"enter-active-class":"transition-all duration-200","enter-from-class":"opacity-0 -translate-y-1","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition-all duration-150","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 -translate-y-1"},{default:e.withCtx(()=>[t.success&&!i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(l.cn)(e.unref(u)({size:t.size,intent:"success"})))},[e.createVNode(c,{icon:"check",class:"w-4 h-4 shrink-0 mt-0.5"}),e.createElementVNode("span",null,e.toDisplayString(t.success),1)],2)):e.createCommentVNode("",!0)]),_:1})],2)}}};exports.default=E;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../FormField.vue_vue_type_script_setup_true_lang-mEO-VA6R.cjs");exports.default=e._sfc_main;