ivt
Version:
Ivt Components Library
1 lines • 9.28 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../node_modules/lucide-react/dist/esm/icons/trash.js","../../src/components/default/accordion-table/AccordionTable.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.479.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\", key: \"4alrt4\" }],\n [\"path\", { d: \"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\", key: \"v07s0e\" }]\n];\nconst Trash = createLucideIcon(\"Trash\", __iconNode);\n\nexport { __iconNode, Trash as default };\n//# sourceMappingURL=trash.js.map\n","import { TrashIcon } from \"lucide-react\";\nimport React from \"react\";\nimport { DeleteConfirmationModal } from \"@/components/default/base\";\nimport {\n\tAccordion,\n\tAccordionContent,\n\tAccordionItem,\n\tAccordionTrigger,\n} from \"@/components/ui/accordion\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\ninterface AccordionTableProps<T> {\n\tdata: Record<string, Record<string, T>>;\n\trenderContent: (item: T, category: string, date: string) => React.ReactNode;\n\tgetItemId: (item: T) => number | string;\n\tonDelete?: (category: string, item: T) => void;\n\tcategoryTitle?: (category: string) => React.ReactNode;\n}\n\nexport function AccordionTable<T>({\n\tdata,\n\trenderContent,\n\tgetItemId,\n\tonDelete,\n\tcategoryTitle = (cat) => cat,\n}: AccordionTableProps<T>) {\n\tconst [openChildByCategory, setOpenChildByCategory] = React.useState<\n\t\tRecord<string, string | null>\n\t>(() =>\n\t\tObject.fromEntries(\n\t\t\tObject.entries(data).map(([category, dates]) => [category, Object.keys(dates)[0] || null]),\n\t\t),\n\t);\n\n\treturn (\n\t\t<Accordion type=\"single\" className=\"*:font-lato space-y-2 rounded-lg\" collapsible>\n\t\t\t{Object.entries(data).map(([category, dates]) => {\n\t\t\t\tconst anyChildOpen = openChildByCategory[category] != null;\n\n\t\t\t\treturn (\n\t\t\t\t\t<AccordionItem\n\t\t\t\t\t\tkey={category}\n\t\t\t\t\t\tvalue={category}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"bg-sidebar group rounded-lg border last:border-b\",\n\t\t\t\t\t\t\t\"data-[state=open]:pb-2\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<AccordionTrigger\n\t\t\t\t\t\t\tclassName={cn(\"hover:bg-sidebar/80 bg-sidebar rounded-lg px-4 hover:no-underline\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"text-sm font-medium\">{categoryTitle(category)}</span>\n\t\t\t\t\t\t</AccordionTrigger>\n\t\t\t\t\t\t<AccordionContent className=\"rounded-lg border-0 pb-0 group-data-[state=open]:border-0\">\n\t\t\t\t\t\t\t<Accordion\n\t\t\t\t\t\t\t\ttype=\"single\"\n\t\t\t\t\t\t\t\tclassName={cn(\"mx-2 overflow-hidden rounded-lg border\")}\n\t\t\t\t\t\t\t\tdefaultValue={Object.keys(dates)[0]}\n\t\t\t\t\t\t\t\tcollapsible\n\t\t\t\t\t\t\t\tonValueChange={(v) =>\n\t\t\t\t\t\t\t\t\tsetOpenChildByCategory((prev) => ({\n\t\t\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t\t\t[category]: v || null,\n\t\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{Object.entries(dates).map(([date, item]) => {\n\t\t\t\t\t\t\t\t\tconst itemId = getItemId(item);\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<AccordionItem\n\t\t\t\t\t\t\t\t\t\t\tkey={`${category}-${date}-${itemId}`}\n\t\t\t\t\t\t\t\t\t\t\tvalue={date}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\"bg-sidebar pt-1 pb-0.75\", anyChildOpen && \"p-0\")}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<AccordionTrigger\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"bg-sidebar hover:text-foreground [&>svg]:text-muted-foreground group mx-0 my-0 rounded-lg rounded-br-none rounded-bl-none py-1.5 pr-4 transition-all hover:no-underline data-[state=open]:pb-4\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tanyChildOpen &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"bg-sidebar data-[state=open]:m-0 data-[state=open]:mx-0 data-[state=open]:mt-0 data-[state=open]:pl-0\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex w-full items-center justify-between pr-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"ml-2.5 flex flex-wrap items-center gap-2 transition-all\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant=\"outline\" className=\"text-xs font-semibold\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{date}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{onDelete && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<DeleteConfirmationModal onConfirm={() => onDelete(category, item)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button variant=\"table\" size=\"icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TrashIcon className=\"text-destructive size-3.5\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</DeleteConfirmationModal>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</AccordionTrigger>\n\n\t\t\t\t\t\t\t\t\t\t\t<AccordionContent>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"bg-card mr-4 ml-2 rounded-lg border\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{renderContent(item, category, date)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</AccordionContent>\n\t\t\t\t\t\t\t\t\t\t</AccordionItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</Accordion>\n\t\t\t\t\t\t</AccordionContent>\n\t\t\t\t\t</AccordionItem>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Accordion>\n\t);\n}\n"],"names":["AccordionTable","data","renderContent","getItemId","onDelete","categoryTitle","cat","openChildByCategory","setOpenChildByCategory","React","useState","Object","fromEntries","entries","map","category","dates","keys","Accordion","type","className","collapsible","anyChildOpen","AccordionItem","key","value","cn","AccordionTrigger","span","AccordionContent","defaultValue","onValueChange","v","prev","date","item","itemId","div","Badge","variant","DeleteConfirmationModal","onConfirm","Button","size","TrashIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,UAAuB,GAAA;AAClC,IAAA;AAAC,QAAA,MAAQ;QAAA;YAAE,CAAA,EAAG,SAAW;YAAA,GAAA,EAAK;;KAAU;AACxC,IAAA;AAAC,QAAA,MAAQ;QAAA;AAAE,YAAA,CAAA,EAAG,uCAAyC;YAAA,GAAA,EAAK;;KAAU;AACtE,IAAA;AAAC,QAAA,MAAQ;QAAA;AAAE,YAAA,CAAA,EAAG,oCAAsC;YAAA,GAAA,EAAK;;AAAU;CACrE;AAaM,MAAA,KAAA,GAAQ,gBAAiB,CAAA,OAAA,EAAS,UAAU,CAAA;;ACC3C,SAASA,cAAAA,CAAkB,EACjCC,IAAI,EACJC,aAAa,EACbC,SAAS,EACTC,QAAQ,EACRC,aAAAA,GAAgB,CAACC,GAAAA,GAAQA,GAAG,EACJ,EAAA;IACxB,MAAM,CAACC,qBAAqBC,sBAAAA,CAAuB,GAAGC,eAAMC,QAAQ,CAElE,IACDC,MAAAA,CAAOC,WAAW,CACjBD,MAAAA,CAAOE,OAAO,CAACZ,IAAAA,CAAAA,CAAMa,GAAG,CAAC,CAAC,CAACC,QAAAA,EAAUC,KAAAA,CAAM,GAAK;AAACD,gBAAAA,QAAAA;AAAUJ,gBAAAA,MAAAA,CAAOM,IAAI,CAACD,KAAAA,CAAM,CAAC,EAAE,IAAI;AAAK,aAAA,CAAA,CAAA,CAAA;AAI3F,IAAA,qBACCP,cAAA,CAAA,aAAA,CAACS,SAAAA,EAAAA;QAAUC,IAAAA,EAAK,QAAA;QAASC,SAAAA,EAAU,kCAAA;QAAmCC,WAAAA,EAAAA;OACpEV,MAAAA,CAAOE,OAAO,CAACZ,IAAAA,CAAAA,CAAMa,GAAG,CAAC,CAAC,CAACC,UAAUC,KAAAA,CAAM,GAAA;AAC3C,QAAA,MAAMM,YAAAA,GAAef,mBAAmB,CAACQ,QAAAA,CAAS,IAAI,IAAA;AAEtD,QAAA,qBACCN,cAAA,CAAA,aAAA,CAACc,aAAAA,EAAAA;YACAC,GAAAA,EAAKT,QAAAA;YACLU,KAAAA,EAAOV,QAAAA;AACPK,YAAAA,SAAAA,EAAWM,GACV,kDAAA,EACA,wBAAA;yBAGDjB,cAAA,CAAA,aAAA,CAACkB,gBAAAA,EAAAA;AACAP,YAAAA,SAAAA,EAAWM,EAAAA,CAAG,mEAAA;yBAEdjB,cAAA,CAAA,aAAA,CAACmB,MAAAA,EAAAA;YAAKR,SAAAA,EAAU;AAAuBf,SAAAA,EAAAA,aAAAA,CAAcU,2BAEtDN,cAAA,CAAA,aAAA,CAACoB,gBAAAA,EAAAA;YAAiBT,SAAAA,EAAU;yBAC3BX,cAAA,CAAA,aAAA,CAACS,SAAAA,EAAAA;YACAC,IAAAA,EAAK,QAAA;AACLC,YAAAA,SAAAA,EAAWM,EAAAA,CAAG,wCAAA,CAAA;AACdI,YAAAA,YAAAA,EAAcnB,MAAAA,CAAOM,IAAI,CAACD,KAAAA,CAAM,CAAC,CAAA,CAAE;YACnCK,WAAAA,EAAAA,IAAAA;AACAU,YAAAA,aAAAA,EAAe,CAACC,CAAAA,GACfxB,sBAAAA,CAAuB,CAACyB,QAAU;AACjC,wBAAA,GAAGA,IAAI;wBACP,CAAClB,QAAAA,GAAWiB,CAAAA,IAAK;qBAClB,CAAA;WAGArB,MAAAA,CAAOE,OAAO,CAACG,KAAAA,CAAAA,CAAOF,GAAG,CAAC,CAAC,CAACoB,MAAMC,IAAAA,CAAK,GAAA;AACvC,YAAA,MAAMC,SAASjC,SAAAA,CAAUgC,IAAAA,CAAAA;AAEzB,YAAA,qBACC1B,cAAA,CAAA,aAAA,CAACc,aAAAA,EAAAA;AACAC,gBAAAA,GAAAA,EAAK,GAAGT,QAAAA,CAAS,CAAC,EAAEmB,IAAAA,CAAK,CAAC,EAAEE,MAAAA,CAAAA,CAAQ;gBACpCX,KAAAA,EAAOS,IAAAA;gBACPd,SAAAA,EAAWM,EAAAA,CAAG,2BAA2BJ,YAAAA,IAAgB,KAAA;6BAEzDb,cAAA,CAAA,aAAA,CAACkB,gBAAAA,EAAAA;gBACAP,SAAAA,EAAWM,EAAAA,CACV,kMACAJ,YAAAA,IACC,uGAAA;6BAGFb,cAAA,CAAA,aAAA,CAAC4B,KAAAA,EAAAA;gBAAIjB,SAAAA,EAAU;6BACdX,cAAA,CAAA,aAAA,CAAC4B,KAAAA,EAAAA;AACAjB,gBAAAA,SAAAA,EAAWM,EAAAA,CACV,yDAAA;6BAGDjB,cAAA,CAAA,aAAA,CAAC6B,KAAAA,EAAAA;gBAAMC,OAAAA,EAAQ,SAAA;gBAAUnB,SAAAA,EAAU;AACjCc,aAAAA,EAAAA,IAAAA,CAAAA,EAED9B,0BACAK,cAAA,CAAA,aAAA,CAAC+B,uBAAAA,EAAAA;gBAAwBC,SAAAA,EAAW,IAAMrC,SAASW,QAAAA,EAAUoB,IAAAA;6BAC5D1B,cAAA,CAAA,aAAA,CAACiC,MAAAA,EAAAA;gBAAOH,OAAAA,EAAQ,OAAA;gBAAQI,IAAAA,EAAK;6BAC5BlC,cAAA,CAAA,aAAA,CAACmC,KAAAA,EAAAA;gBAAUxB,SAAAA,EAAU;AAQ3B,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,gBAAAX,cAAA,CAAA,aAAA,CAACoB,sCACApB,cAAA,CAAA,aAAA,CAAC4B,KAAAA,EAAAA;gBAAIjB,SAAAA,EAAU;AACblB,aAAAA,EAAAA,aAAAA,CAAciC,MAAMpB,QAAAA,EAAUmB,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAKpC,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAKL,IAAA,CAAA,CAAA,CAAA;AAGH;;;;","x_google_ignoreList":[0]}