ivt
Version:
Ivt Components Library
119 lines (115 loc) • 5.59 kB
JavaScript
import React__default from 'react';
import { c as cn } from '../chunks/utils-BDcRwQMd.mjs';
import { c as createLucideIcon } from '../chunks/createLucideIcon-C11Tr46U.mjs';
import { A as Accordion, a as AccordionItem, b as AccordionTrigger, c as AccordionContent } from '../chunks/accordion-BcAmhbBS.mjs';
import { B as Badge } from '../chunks/badge-ZU62MOiS.mjs';
import { D as DeleteConfirmationModal } from '../chunks/DeleteConfirmationModal-NPS_J_dT.mjs';
import { B as Button } from '../chunks/button-CZpmCmNo.mjs';
import '../chunks/bundle-mjs-CXmmFvYo.mjs';
import '../chunks/index-D4jPaBZ2.mjs';
import 'react/jsx-runtime';
import '@radix-ui/react-collection';
import '../chunks/index-Dsw02Eup.mjs';
import 'react-dom';
import '@radix-ui/react-slot';
import '../chunks/index-1toTCGyr.mjs';
import '../chunks/index-C8u7IIcP.mjs';
import '../chunks/index-BWXpaxmG.mjs';
import '../chunks/index-DfeRLazC.mjs';
import '../chunks/index-gX0V59dZ.mjs';
import '../chunks/index-UxWlwQlk.mjs';
import '../chunks/chevron-down-CDFTds2-.mjs';
import 'class-variance-authority';
import '../chunks/dialog-DL1cSseU.mjs';
import '../chunks/index-CaYwp6E6.mjs';
import '../chunks/index-4NpeUekv.mjs';
import '../chunks/index-DC-gAYjS.mjs';
import '../chunks/index-z4Hk6sF4.mjs';
import '../chunks/tslib.es6-Q9puKanr.mjs';
import '../chunks/index-BksCjWh6.mjs';
import '../chunks/x-B6hDJA_l.mjs';
import '../chunks/trash-2-ab4Di2Bx.mjs';
const __iconNode = [
[
"path",
{
d: "M3 6h18",
key: "d0wm0j"
}
],
[
"path",
{
d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",
key: "4alrt4"
}
],
[
"path",
{
d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",
key: "v07s0e"
}
]
];
const Trash = createLucideIcon("Trash", __iconNode);
function AccordionTable({ data, renderContent, getItemId, onDelete, categoryTitle = (cat)=>cat }) {
const [openChildByCategory, setOpenChildByCategory] = React__default.useState(()=>Object.fromEntries(Object.entries(data).map(([category, dates])=>[
category,
Object.keys(dates)[0] || null
])));
return /*#__PURE__*/ React__default.createElement(Accordion, {
type: "single",
className: "*:font-lato space-y-2 rounded-lg",
collapsible: true
}, Object.entries(data).map(([category, dates])=>{
const anyChildOpen = openChildByCategory[category] != null;
return /*#__PURE__*/ React__default.createElement(AccordionItem, {
key: category,
value: category,
className: cn("bg-sidebar group rounded-lg border last:border-b", "data-[state=open]:pb-2")
}, /*#__PURE__*/ React__default.createElement(AccordionTrigger, {
className: cn("hover:bg-sidebar/80 bg-sidebar rounded-lg px-4 hover:no-underline")
}, /*#__PURE__*/ React__default.createElement("span", {
className: "text-sm font-medium"
}, categoryTitle(category))), /*#__PURE__*/ React__default.createElement(AccordionContent, {
className: "rounded-lg border-0 pb-0 group-data-[state=open]:border-0"
}, /*#__PURE__*/ React__default.createElement(Accordion, {
type: "single",
className: cn("mx-2 overflow-hidden rounded-lg border"),
defaultValue: Object.keys(dates)[0],
collapsible: true,
onValueChange: (v)=>setOpenChildByCategory((prev)=>({
...prev,
[category]: v || null
}))
}, Object.entries(dates).map(([date, item])=>{
const itemId = getItemId(item);
return /*#__PURE__*/ React__default.createElement(AccordionItem, {
key: `${category}-${date}-${itemId}`,
value: date,
className: cn("bg-sidebar pt-1 pb-0.75", anyChildOpen && "p-0")
}, /*#__PURE__*/ React__default.createElement(AccordionTrigger, {
className: cn("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", anyChildOpen && "bg-sidebar data-[state=open]:m-0 data-[state=open]:mx-0 data-[state=open]:mt-0 data-[state=open]:pl-0")
}, /*#__PURE__*/ React__default.createElement("div", {
className: "flex w-full items-center justify-between pr-2"
}, /*#__PURE__*/ React__default.createElement("div", {
className: cn("ml-2.5 flex flex-wrap items-center gap-2 transition-all")
}, /*#__PURE__*/ React__default.createElement(Badge, {
variant: "outline",
className: "text-xs font-semibold"
}, date), onDelete && /*#__PURE__*/ React__default.createElement(DeleteConfirmationModal, {
onConfirm: ()=>onDelete(category, item)
}, /*#__PURE__*/ React__default.createElement(Button, {
variant: "table",
size: "icon"
}, /*#__PURE__*/ React__default.createElement(Trash, {
className: "text-destructive size-3.5"
})))))), /*#__PURE__*/ React__default.createElement(AccordionContent, null, /*#__PURE__*/ React__default.createElement("div", {
className: "bg-card mr-4 ml-2 rounded-lg border"
}, renderContent(item, category, date))));
}))));
}));
}
export { AccordionTable };
//# sourceMappingURL=index.mjs.map