@knkcs/anker 1.10.1 → 1.10.3
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.
- package/dist/atoms/index.d.ts +2 -0
- package/dist/atoms/index.js +2 -2
- package/dist/{chunk-ELQTHWXC.js → chunk-ETY43HAI.js} +10 -6
- package/dist/chunk-ETY43HAI.js.map +1 -0
- package/dist/components/index.d.ts +11 -0
- package/dist/components/index.js +16 -5
- package/dist/components/index.js.map +1 -1
- package/package.json +4 -2
- package/dist/chunk-ELQTHWXC.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/bulk-action-bar/bulk-action-bar.tsx","../../src/components/card.tsx","../../src/components/card-list.tsx","../../src/components/card-list-data.tsx","../../src/components/card-list-item.tsx","../../src/components/chip-picker/chip-picker.tsx","../../src/components/context-rail/context-rail.tsx","../../src/components/data-table/cells/action-cell.tsx","../../src/components/data-table/cells/cell-utils.ts","../../src/components/data-table/cells/boolean-cell.tsx","../../src/components/data-table/cells/code-cell.tsx","../../src/components/data-table/cells/color-swatch-cell.tsx","../../src/components/data-table/cells/count-cell.tsx","../../src/components/data-table/cells/date-cell.tsx","../../src/components/data-table/cells/user-agent.ts","../../src/components/data-table/cells/device-cell.tsx","../../src/components/data-table/cells/identity-cell.tsx","../../src/components/data-table/cells/link-cell.tsx","../../src/components/data-table/cells/menu-cell.tsx","../../src/components/data-table/cells/number-cell.tsx","../../src/components/data-table/cells/slug-cell.tsx","../../src/components/data-table/cells/status-badge-cell.tsx","../../src/components/data-table/cells/switch-cell.tsx","../../src/components/data-table/cells/truncated-text-cell.tsx","../../src/components/data-table/cells/url-cell.tsx","../../src/components/pagination.tsx","../../src/components/data-table/data-table.tsx","../../src/components/drawer.tsx","../../src/components/fact-box.tsx","../../src/components/inline-creatable-list/inline-creatable-list.tsx","../../src/components/labeled-switch.tsx","../../src/components/modal.tsx","../../src/components/selectable-card/selectable-card.tsx","../../src/components/sidebar/sidebar.tsx","../../src/components/sidebar-section.tsx","../../src/components/stepper/use-stepper.tsx","../../src/components/stepper/stepper.tsx","../../src/components/timeline.tsx","../../src/components/toolbar.tsx","../../src/components/tree-view.tsx","../../src/components/upload-drop-zone.tsx","../../src/components/widget.tsx"],"names":["jsxs","ChakraCard","jsx","Children","X","useState","RouterLink","Ellipsis","ChevronRight","table","Checkbox","_","Portal","React","Plus","useRef","useEffect","Fragment","COLLAPSED_WIDTH","EXPANDED_WIDTH","COLLAPSE_BREAKPOINT","getInitialCollapsed","useMemo","SidebarSection","createContext","step","useContext","ChakraTimeline","ChakraTreeView","Card"],"mappings":"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","file":"index.js","sourcesContent":["import { X } from \"lucide-react\";\nimport type React from \"react\";\nimport { Button, IconButton } from \"../../atoms/button\";\nimport { Collapsible } from \"../../primitives/collapsible\";\nimport { Flex, HStack } from \"../../primitives/layout\";\nimport {\n\tPopover,\n\tPopoverContent,\n\tPopoverTrigger,\n} from \"../../primitives/popover\";\nimport { Text } from \"../../primitives/typography\";\n\nexport interface BulkActionBarProps {\n\t/** Number of currently selected items. */\n\tselectedCount: number;\n\t/** Called when the user clicks the clear-selection button. */\n\tonClear: () => void;\n\t/** Explicitly control visibility. Defaults to `selectedCount > 0`. */\n\tvisible?: boolean;\n\t/** CSS position for the bar. @default \"fixed\" */\n\tposition?: \"fixed\" | \"sticky\";\n\t/** Action buttons / popover actions to display. */\n\tchildren: React.ReactNode;\n\t/** Custom label renderer. Defaults to `\"{n} items selected\"`. */\n\tcountLabel?: (count: number) => string;\n}\n\nexport interface BulkActionProps {\n\t/** Visible button label. */\n\tlabel: string;\n\t/** Optional icon rendered before the label. */\n\ticon?: React.ReactNode;\n\t/** Called when the button is clicked. */\n\tonClick: () => void;\n\t/** Chakra color palette for the button. */\n\tcolorPalette?: string;\n\t/** Whether the button is disabled. */\n\tdisabled?: boolean;\n\t/** Whether the button shows a loading spinner. */\n\tloading?: boolean;\n}\n\nexport interface BulkPopoverActionProps {\n\t/** Visible trigger label. */\n\tlabel: string;\n\t/** Optional icon rendered before the label. */\n\ticon?: React.ReactNode;\n\t/** Content rendered inside the popover. */\n\tchildren: React.ReactNode;\n\t/** Whether the trigger button is disabled. */\n\tdisabled?: boolean;\n}\n\nconst BulkAction = ({\n\tlabel,\n\ticon,\n\tonClick,\n\tcolorPalette,\n\tdisabled,\n\tloading,\n}: BulkActionProps) => (\n\t<Button\n\t\tsize=\"sm\"\n\t\tonClick={onClick}\n\t\tcolorPalette={colorPalette}\n\t\tdisabled={disabled}\n\t\tloading={loading}\n\t>\n\t\t{icon}\n\t\t{label}\n\t</Button>\n);\nBulkAction.displayName = \"BulkActionBar.Action\";\n\nconst BulkPopoverAction = ({\n\tlabel,\n\ticon,\n\tchildren,\n\tdisabled,\n}: BulkPopoverActionProps) => (\n\t<Popover>\n\t\t<PopoverTrigger asChild>\n\t\t\t<Button size=\"sm\" disabled={disabled}>\n\t\t\t\t{icon}\n\t\t\t\t{label}\n\t\t\t</Button>\n\t\t</PopoverTrigger>\n\t\t<PopoverContent>{children}</PopoverContent>\n\t</Popover>\n);\nBulkPopoverAction.displayName = \"BulkActionBar.PopoverAction\";\n\nexport const BulkActionBar = ({\n\tselectedCount,\n\tonClear,\n\tvisible,\n\tposition = \"fixed\",\n\tchildren,\n\tcountLabel,\n}: BulkActionBarProps) => {\n\tconst isVisible = visible ?? selectedCount > 0;\n\tconst label = countLabel\n\t\t? countLabel(selectedCount)\n\t\t: `${selectedCount} items selected`;\n\n\treturn (\n\t\t<Collapsible.Root open={isVisible}>\n\t\t\t<Collapsible.Content>\n\t\t\t\t<Flex\n\t\t\t\t\tposition={position}\n\t\t\t\t\tbottom={0}\n\t\t\t\t\tinsetInline={0}\n\t\t\t\t\tzIndex=\"sticky\"\n\t\t\t\t\tbg=\"bg.surface\"\n\t\t\t\t\tborderTopWidth=\"1px\"\n\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\tshadow=\"lg\"\n\t\t\t\t\tpx={4}\n\t\t\t\t\tpy={3}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t>\n\t\t\t\t\t<HStack gap={2}>\n\t\t\t\t\t\t<Text fontWeight=\"medium\" fontSize=\"sm\">\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\taria-label=\"Clear selection\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tonClick={onClear}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X size={14} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<HStack gap={2}>{children}</HStack>\n\t\t\t\t</Flex>\n\t\t\t</Collapsible.Content>\n\t\t</Collapsible.Root>\n\t);\n};\nBulkActionBar.displayName = \"BulkActionBar\";\n\nBulkActionBar.Action = BulkAction;\nBulkActionBar.PopoverAction = BulkPopoverAction;\n","import { type CardRootProps, Card as ChakraCard } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { Heading } from \"../primitives/typography\";\n\nexport interface CardProps extends Omit<CardRootProps, \"title\"> {\n\tmaxW?: CardRootProps[\"maxW\"];\n\t/** Card title rendered in Card.Header. */\n\ttitle?: React.ReactNode;\n\t/** Custom header content. Overrides title if both provided. */\n\theader?: React.ReactNode;\n\t/** Footer content rendered in Card.Footer. */\n\tfooter?: React.ReactNode;\n\tchildren: React.ReactNode;\n}\n\nexport const Card = ({\n\tref,\n\tmaxW = \"full\",\n\ttitle,\n\theader,\n\tfooter,\n\tchildren,\n\t...props\n}: CardProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\treturn (\n\t\t<ChakraCard.Root\n\t\t\tref={ref}\n\t\t\tbg=\"bg-surface\"\n\t\t\tw=\"full\"\n\t\t\theight=\"full\"\n\t\t\tmaxW={maxW}\n\t\t\tmarginInline=\"auto\"\n\t\t\toverflow=\"hidden\"\n\t\t\t{...props}\n\t\t>\n\t\t\t{(header || title) && (\n\t\t\t\t<ChakraCard.Header>\n\t\t\t\t\t{header ?? <Heading size=\"md\">{title}</Heading>}\n\t\t\t\t</ChakraCard.Header>\n\t\t\t)}\n\t\t\t<ChakraCard.Body overflow=\"hidden\">{children}</ChakraCard.Body>\n\t\t\t{footer && <ChakraCard.Footer>{footer}</ChakraCard.Footer>}\n\t\t</ChakraCard.Root>\n\t);\n};\nCard.displayName = \"Card\";\n","import { Children } from \"react\";\nimport { Box, Flex, Grid, GridItem } from \"../primitives/layout\";\n\nexport interface CardListProps {\n\t/** Column header labels displayed above the grid. */\n\theaders: string[];\n\t/** Whether rows have a left-side component slot (e.g., avatar). */\n\thasComponentLeft?: boolean;\n\t/** Whether rows have a right-side menu slot. */\n\thasMenu?: boolean;\n\t/** CardListItem children to render as rows. */\n\tchildren?: React.ReactNode;\n\t/** Total number of grid columns. Defaults to 12. */\n\tcolumnCount?: number;\n\t/** Content to display when there are no rows. */\n\temptyState?: React.ReactNode;\n}\n\nexport const CardList: React.FC<CardListProps> = ({\n\tchildren,\n\theaders,\n\thasComponentLeft,\n\thasMenu,\n\tcolumnCount = 12,\n\temptyState,\n}) => {\n\tconst colSpan = Math.floor(columnCount / headers.length);\n\tconst isEmpty = Children.count(children) === 0;\n\n\treturn (\n\t\t<Box role=\"grid\" aria-colcount={headers.length}>\n\t\t\t<Flex pb={2} px={hasComponentLeft ? 0 : 6}>\n\t\t\t\t{hasComponentLeft && <Box minWidth={75} px={6} />}\n\t\t\t\t<Grid\n\t\t\t\t\tw=\"100%\"\n\t\t\t\t\ttemplateRows=\"repeat(1, 1fr)\"\n\t\t\t\t\ttemplateColumns={`repeat(${columnCount}, 1fr)`}\n\t\t\t\t\tgap={4}\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t>\n\t\t\t\t\t{headers.map((header) => (\n\t\t\t\t\t\t<GridItem key={header} colSpan={colSpan} role=\"columnheader\">\n\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t</GridItem>\n\t\t\t\t\t))}\n\t\t\t\t</Grid>\n\t\t\t\t{hasMenu && <Box minWidth=\"80px\" px={6} />}\n\t\t\t</Flex>\n\n\t\t\t<Flex direction=\"column\" gap=\"3\">\n\t\t\t\t{isEmpty && emptyState ? emptyState : children}\n\t\t\t</Flex>\n\t\t</Box>\n\t);\n};\nCardList.displayName = \"CardList\";\n","import { Tooltip } from \"../primitives/tooltip\";\nimport { Text, type TextProps } from \"../primitives/typography\";\n\nexport interface CardListDataProps extends TextProps {\n\t/** Cell content. Strings are shown in a tooltip on overflow. */\n\tchildren: React.ReactNode;\n}\n\nexport const CardListData: React.FC<CardListDataProps> = ({\n\tchildren,\n\t...restProps\n}) => {\n\tconst textContent =\n\t\ttypeof children === \"string\" || typeof children === \"number\"\n\t\t\t? String(children)\n\t\t\t: null;\n\n\treturn (\n\t\t<Tooltip content={textContent ?? \"\"} disabled={!textContent}>\n\t\t\t<Text lineClamp={1} color=\"muted\" {...restProps}>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</Tooltip>\n\t);\n};\nCardListData.displayName = \"CardListData\";\n","import { Menu, Portal } from \"@chakra-ui/react\";\nimport { Ellipsis } from \"lucide-react\";\nimport type React from \"react\";\nimport { Children } from \"react\";\nimport { Box, Flex, Grid, GridItem } from \"../primitives/layout\";\n\nexport interface CardListMenuItem<T = string> {\n\t/** Text label for the menu item. */\n\tlabel: string;\n\t/** Callback fired when the menu item is clicked. */\n\tonClick: () => void;\n\t/** Icon rendered before the label. */\n\ticon?: React.ReactNode;\n\t/** Text color override for the menu item. */\n\tcolor?: string;\n\t/** Value associated with the menu item. */\n\tvalue?: T;\n}\n\nexport interface CardListItemProps<T = string> {\n\t/** Whether the item is visually selected. */\n\tisActive?: boolean;\n\t/** Callback fired when the row is clicked. */\n\thandleItemClick?: () => void;\n\t/** Callback fired when the row is double-clicked. */\n\thandleItemDoubleClick?: () => void;\n\t/** Menu items rendered in the row's action menu. */\n\tmenuItems?: CardListMenuItem<T>[];\n\t/** Component rendered on the left side of the row (e.g., avatar). */\n\tcomponentLeft?: React.ReactNode;\n\t/** CardListData children to render as cells. */\n\tchildren: React.ReactNode;\n\t/** Total number of grid columns. Defaults to 12. */\n\tcolumnCount?: number;\n}\n\nexport const CardListItem = <T extends string = string>({\n\tisActive,\n\thandleItemClick,\n\thandleItemDoubleClick,\n\tmenuItems,\n\tcomponentLeft,\n\tchildren,\n\tcolumnCount = 12,\n}: CardListItemProps<T>) => {\n\tconst colSpan = Math.floor(columnCount / Children.count(children));\n\n\treturn (\n\t\t<Flex\n\t\t\trole=\"row\"\n\t\t\tboxShadow={isActive ? \"0 0 0 2px token(colors.accent)\" : \"sm\"}\n\t\t\tbg=\"bg-surface\"\n\t\t\tborderRadius=\"lg\"\n\t\t\talignItems=\"stretch\"\n\t\t\toverflow=\"hidden\"\n\t\t\ttransition=\"all 200ms ease\"\n\t\t>\n\t\t\t<Flex\n\t\t\t\twidth=\"100%\"\n\t\t\t\ttransition=\"all 200ms ease\"\n\t\t\t\t_hover={{ bg: \"bg-subtle\", cursor: \"pointer\" }}\n\t\t\t\talignItems=\"stretch\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tonClick={handleItemClick}\n\t\t\t\tonDoubleClick={handleItemDoubleClick}\n\t\t\t\t{...(handleItemClick && {\n\t\t\t\t\trole: \"button\",\n\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\tonKeyDown: (e: React.KeyboardEvent) => {\n\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\thandleItemClick();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{componentLeft && (\n\t\t\t\t\t<Box\n\t\t\t\t\t\twidth={75}\n\t\t\t\t\t\tpx={6}\n\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{componentLeft}\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\n\t\t\t\t<Grid\n\t\t\t\t\tpx={componentLeft === undefined ? 6 : 0}\n\t\t\t\t\tpy={4}\n\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\ttemplateRows=\"repeat(1, 1fr)\"\n\t\t\t\t\ttemplateColumns={`repeat(${columnCount}, 1fr)`}\n\t\t\t\t\tgap={4}\n\t\t\t\t>\n\t\t\t\t\t{Children.map(children, (child, index) => (\n\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: no alternative for key\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tcolSpan={colSpan}\n\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{child}\n\t\t\t\t\t\t</GridItem>\n\t\t\t\t\t))}\n\t\t\t\t</Grid>\n\t\t\t</Flex>\n\t\t\t{menuItems && (\n\t\t\t\t<Menu.Root>\n\t\t\t\t\t<Menu.Trigger\n\t\t\t\t\t\twidth=\"80px\"\n\t\t\t\t\t\tpx={6}\n\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\tbg=\"accent\"\n\t\t\t\t\t\tcolor=\"on-accent\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\t_hover={{ opacity: 0.9 }}\n\t\t\t\t\t\taria-label=\"Row actions\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Ellipsis size={20} />\n\t\t\t\t\t</Menu.Trigger>\n\t\t\t\t\t<Portal>\n\t\t\t\t\t\t<Menu.Positioner>\n\t\t\t\t\t\t\t<Menu.Content>\n\t\t\t\t\t\t\t\t{menuItems.map((menuItem) => (\n\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\tkey={menuItem.label}\n\t\t\t\t\t\t\t\t\t\tonClick={menuItem.onClick}\n\t\t\t\t\t\t\t\t\t\tcolor={menuItem.color}\n\t\t\t\t\t\t\t\t\t\tvalue={menuItem.value ?? menuItem.label}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{menuItem.icon}\n\t\t\t\t\t\t\t\t\t\t{menuItem.label}\n\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</Menu.Content>\n\t\t\t\t\t\t</Menu.Positioner>\n\t\t\t\t\t</Portal>\n\t\t\t\t</Menu.Root>\n\t\t\t)}\n\t\t</Flex>\n\t);\n};\n(CardListItem as { displayName?: string }).displayName = \"CardListItem\";\n","import { Plus, X } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { useState } from \"react\";\nimport { IconButton } from \"../../atoms/button\";\nimport { TextInput } from \"../../atoms/text-input\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport {\n\tPopover,\n\tPopoverBody,\n\tPopoverContent,\n\tPopoverTrigger,\n} from \"../../primitives/popover\";\nimport { Text } from \"../../primitives/typography\";\n\nexport interface ChipPickerProps<T> {\n\tassigned: T[];\n\tavailable: T[];\n\tonAdd: (item: T) => void;\n\tonRemove: (item: T) => void;\n\tgetItemId: (item: T) => string;\n\tgetItemLabel: (item: T) => string;\n\tgetItemColor?: (item: T) => string | undefined;\n\t/** Label for the add button. @default \"Add\" */\n\taddLabel?: string;\n\t/** Label shown when nothing is assigned. @default \"None\" */\n\temptyLabel?: string;\n\t/** Whether to show a search input inside the popover. @default false */\n\tsearchable?: boolean;\n\tdisabled?: boolean;\n\tloading?: boolean;\n}\n\nfunction ChipPickerInner<T>(props: ChipPickerProps<T>) {\n\tconst {\n\t\tassigned,\n\t\tavailable,\n\t\tonAdd,\n\t\tonRemove,\n\t\tgetItemId,\n\t\tgetItemLabel,\n\t\tgetItemColor,\n\t\taddLabel = \"Add\",\n\t\temptyLabel = \"None\",\n\t\tsearchable = false,\n\t\tdisabled = false,\n\t} = props;\n\n\tconst [search, setSearch] = useState(\"\");\n\n\tconst assignedIds = new Set(assigned.map(getItemId));\n\tconst unassigned = available.filter(\n\t\t(item) => !assignedIds.has(getItemId(item)),\n\t);\n\n\tconst filteredUnassigned =\n\t\tsearchable && search.trim()\n\t\t\t? unassigned.filter((item) =>\n\t\t\t\t\tgetItemLabel(item).toLowerCase().includes(search.toLowerCase()),\n\t\t\t\t)\n\t\t\t: unassigned;\n\n\treturn (\n\t\t<Flex wrap=\"wrap\" gap={2} align=\"center\">\n\t\t\t{assigned.length === 0 && (\n\t\t\t\t<Text fontSize=\"sm\" color=\"fg.muted\">\n\t\t\t\t\t{emptyLabel}\n\t\t\t\t</Text>\n\t\t\t)}\n\n\t\t\t{assigned.map((item) => {\n\t\t\t\tconst id = getItemId(item);\n\t\t\t\tconst label = getItemLabel(item);\n\t\t\t\tconst color = getItemColor?.(item);\n\n\t\t\t\treturn (\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\tborderRadius=\"full\"\n\t\t\t\t\t\tpx={3}\n\t\t\t\t\t\tpy={1}\n\t\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\t\tdisplay=\"inline-flex\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tgap={1}\n\t\t\t\t\t\tbg={color ? `${color}33` : \"bg.muted\"}\n\t\t\t\t\t\tcolor={color ?? \"fg.default\"}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text as=\"span\" lineHeight=\"1\">\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tdisplay: \"inline-flex\",\n\t\t\t\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\t\t\t\tlineHeight: 1,\n\t\t\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\t\t\t\tcolor: \"inherit\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\taria-label={`Remove ${label}`}\n\t\t\t\t\t\t\t\tonClick={() => onRemove(item)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X size={12} />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Flex>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{unassigned.length > 0 && !disabled && (\n\t\t\t\t<Popover>\n\t\t\t\t\t<PopoverTrigger asChild>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\taria-label={addLabel}\n\t\t\t\t\t\t\tminWidth=\"44px\"\n\t\t\t\t\t\t\tminHeight=\"44px\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Plus size={14} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</PopoverTrigger>\n\t\t\t\t\t<PopoverContent portalled>\n\t\t\t\t\t\t<PopoverBody>\n\t\t\t\t\t\t\t{searchable && (\n\t\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tmb={2}\n\t\t\t\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n\t\t\t\t\t\t\t\t\t\tsetSearch(e.target.value)\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{filteredUnassigned.map((item) => (\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tkey={getItemId(item)}\n\t\t\t\t\t\t\t\t\tpx={2}\n\t\t\t\t\t\t\t\t\tpy={1.5}\n\t\t\t\t\t\t\t\t\trounded=\"md\"\n\t\t\t\t\t\t\t\t\tcursor=\"pointer\"\n\t\t\t\t\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\t\t\t\t\t_hover={{ bg: \"bg.subtle\" }}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tonAdd(item);\n\t\t\t\t\t\t\t\t\t\tsetSearch(\"\");\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\t\t{getItemLabel(item)}\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t{filteredUnassigned.length === 0 && (\n\t\t\t\t\t\t\t\t<Text fontSize=\"sm\" color=\"fg.muted\" px={2} py={1.5}>\n\t\t\t\t\t\t\t\t\tNo results\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</PopoverBody>\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t</Popover>\n\t\t\t)}\n\t\t</Flex>\n\t);\n}\n\nexport const ChipPicker = ChipPickerInner as <T>(\n\tprops: ChipPickerProps<T>,\n) => React.ReactElement;\n(ChipPicker as { displayName?: string }).displayName = \"ChipPicker\";\n","// src/components/context-rail/context-rail.tsx\nimport { ChevronRight, PanelRightClose, PanelRightOpen } from \"lucide-react\";\nimport type React from \"react\";\nimport { createContext, useContext, useEffect, useRef, useState } from \"react\";\nimport { IconButton } from \"../../atoms/button\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport { Heading, Text } from \"../../primitives/typography\";\n\nconst COLLAPSED_WIDTH = \"44px\";\nconst EXPANDED_WIDTH = \"360px\";\nconst COLLAPSE_BREAKPOINT = 1440;\n\n/**\n * Internal context that signals \"I am a `<ContextRail>` Root\". Used by\n * `<ContextRail.Header>` and `<ContextRail.Section>` to detect when they\n * are rendered outside the Root and emit a dev-mode warning.\n *\n * The value is intentionally minimal — presence is the signal.\n */\nconst RailRootContext = createContext<boolean>(false);\n\n/**\n * Dev-mode helper: warn once per component-mount when a rail child is\n * rendered without a `<ContextRail>` Root ancestor. No-op in production.\n */\nfunction isDevMode(): boolean {\n\t// `process` is a Node global; bundlers (Vite, tsup) replace\n\t// `process.env.NODE_ENV` at build time, so this works in both Node\n\t// (vitest, SSR) and browser bundles. We avoid `@types/node` by\n\t// reaching through `globalThis`.\n\tconst proc = (globalThis as { process?: { env?: { NODE_ENV?: string } } })\n\t\t.process;\n\treturn proc?.env?.NODE_ENV !== \"production\";\n}\n\nfunction useWarnIfOutsideRailRoot(componentName: string) {\n\tconst insideRoot = useContext(RailRootContext);\n\tconst warnedRef = useRef(false);\n\tuseEffect(() => {\n\t\tif (!insideRoot && !warnedRef.current && isDevMode()) {\n\t\t\twarnedRef.current = true;\n\t\t\tconsole.warn(\n\t\t\t\t`${componentName} was rendered outside <ContextRail>. Wrap rail content in <ContextRail> to get column width, collapse toggle, inner padding, and persistence. See docs/page-patterns.md.`,\n\t\t\t);\n\t\t}\n\t}, [insideRoot, componentName]);\n}\n\nfunction getInitialCollapsed(storageKey?: string): boolean {\n\tif (typeof window === \"undefined\") return false;\n\tif (storageKey) {\n\t\tconst stored = window.localStorage.getItem(storageKey);\n\t\tif (stored === \"true\") return true;\n\t\tif (stored === \"false\") return false;\n\t}\n\treturn window.innerWidth < COLLAPSE_BREAKPOINT;\n}\n\nexport interface ContextRailProps {\n\tstorageKey?: string;\n\tchildren: React.ReactNode;\n}\n\nconst ContextRailRoot = ({ storageKey, children }: ContextRailProps) => {\n\tconst [collapsed, setCollapsed] = useState(() =>\n\t\tgetInitialCollapsed(storageKey),\n\t);\n\n\tuseEffect(() => {\n\t\tif (storageKey) {\n\t\t\twindow.localStorage.setItem(storageKey, String(collapsed));\n\t\t}\n\t}, [collapsed, storageKey]);\n\n\treturn (\n\t\t<RailRootContext.Provider value={true}>\n\t\t\t<Box\n\t\t\t\tdata-testid=\"context-rail\"\n\t\t\t\tdata-collapsed={collapsed ? \"true\" : \"false\"}\n\t\t\t\tw={collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH}\n\t\t\t\tminH=\"100vh\"\n\t\t\t\ttransition=\"width 250ms ease-out\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tposition=\"relative\"\n\t\t\t>\n\t\t\t\t{collapsed ? (\n\t\t\t\t\t<Flex direction=\"column\" align=\"center\" pt=\"3\" gap=\"3\">\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tdata-testid=\"context-rail-toggle\"\n\t\t\t\t\t\t\taria-label=\"Expand context rail\"\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tonClick={() => setCollapsed(false)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PanelRightOpen size={16} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Flex>\n\t\t\t\t) : (\n\t\t\t\t\t<Flex direction=\"column\" h=\"full\">\n\t\t\t\t\t\t<Flex justify=\"flex-end\" px=\"3\" pt=\"3\">\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\tdata-testid=\"context-rail-toggle\"\n\t\t\t\t\t\t\t\taria-label=\"Collapse context rail\"\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tonClick={() => setCollapsed(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PanelRightClose size={16} />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t<Box flex=\"1\" overflowY=\"auto\" px=\"4\" pb=\"4\">\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Flex>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t</RailRootContext.Provider>\n\t);\n};\nContextRailRoot.displayName = \"ContextRail\";\n\n// Header\nexport interface ContextRailHeaderProps {\n\teyebrow?: React.ReactNode;\n\ttitle: React.ReactNode;\n}\n\nconst ContextRailHeader = ({ eyebrow, title }: ContextRailHeaderProps) => {\n\tuseWarnIfOutsideRailRoot(\"ContextRail.Header\");\n\treturn (\n\t\t<Box mb=\"4\" pb=\"3\" borderBottomWidth=\"1px\" borderBottomColor=\"border\">\n\t\t\t{eyebrow && (\n\t\t\t\t<Text\n\t\t\t\t\tfontSize=\"2xs\"\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tletterSpacing=\"wider\"\n\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\tmb=\"1\"\n\t\t\t\t>\n\t\t\t\t\t{eyebrow}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t<Heading\n\t\t\t\tas=\"h2\"\n\t\t\t\tfontSize=\"lg\"\n\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\tcolor=\"default\"\n\t\t\t\tletterSpacing=\"-0.01em\"\n\t\t\t>\n\t\t\t\t{title}\n\t\t\t</Heading>\n\t\t</Box>\n\t);\n};\nContextRailHeader.displayName = \"ContextRail.Header\";\n\n// Section\nexport interface ContextRailSectionProps {\n\tid: string;\n\ticon?: React.ReactNode;\n\tlabel: string;\n\tdefaultOpen?: boolean;\n\taction?: React.ReactNode;\n\tchildren: React.ReactNode;\n}\n\nconst ContextRailSection = ({\n\tid,\n\ticon,\n\tlabel,\n\tdefaultOpen = true,\n\taction,\n\tchildren,\n}: ContextRailSectionProps) => {\n\tuseWarnIfOutsideRailRoot(\"ContextRail.Section\");\n\tconst [open, setOpen] = useState(defaultOpen);\n\treturn (\n\t\t<Box\n\t\t\tdata-section-id={id}\n\t\t\tborderBottomWidth=\"1px\"\n\t\t\tborderBottomColor=\"border-muted\"\n\t\t>\n\t\t\t<Flex w=\"full\" align=\"center\" gap=\"2\">\n\t\t\t\t<Flex\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\t{...({ type: \"button\" } as object)}\n\t\t\t\t\tonClick={() => setOpen((o) => !o)}\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\tflex=\"1\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap=\"2\"\n\t\t\t\t\tpx=\"0\"\n\t\t\t\t\tpy=\"3\"\n\t\t\t\t\tbg=\"transparent\"\n\t\t\t\t\tborder=\"none\"\n\t\t\t\t\tcursor=\"pointer\"\n\t\t\t\t\ttextAlign=\"left\"\n\t\t\t\t\t_hover={{ bg: \"bg-subtle\" }}\n\t\t\t\t>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdisplay=\"inline-flex\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\t\ttransform={open ? \"rotate(90deg)\" : \"none\"}\n\t\t\t\t\t\ttransition=\"transform 120ms ease-out\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronRight size={12} aria-hidden />\n\t\t\t\t\t</Box>\n\t\t\t\t\t{icon && (\n\t\t\t\t\t\t<Box display=\"inline-flex\" alignItems=\"center\" color=\"muted\">\n\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t)}\n\t\t\t\t\t<Heading\n\t\t\t\t\t\tas=\"h3\"\n\t\t\t\t\t\tfontSize=\"2xs\"\n\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t\tletterSpacing=\"wider\"\n\t\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\t\tflex=\"1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Heading>\n\t\t\t\t</Flex>\n\t\t\t\t{action && <Box py=\"3\">{action}</Box>}\n\t\t\t</Flex>\n\t\t\t{open && <Box pb=\"3\">{children}</Box>}\n\t\t</Box>\n\t);\n};\nContextRailSection.displayName = \"ContextRail.Section\";\n\n// Footer\nconst ContextRailFooter = ({ children }: { children: React.ReactNode }) => (\n\t<Box mt=\"4\" pt=\"4\" borderTopWidth=\"1px\" borderTopColor=\"border-muted\">\n\t\t{children}\n\t</Box>\n);\nContextRailFooter.displayName = \"ContextRail.Footer\";\n\n// Compose\nexport const ContextRail = Object.assign(ContextRailRoot, {\n\tHeader: ContextRailHeader,\n\tSection: ContextRailSection,\n\tFooter: ContextRailFooter,\n});\n","import type React from \"react\";\nimport { IconButton, type IconButtonProps } from \"../../../atoms/button\";\nimport { HStack } from \"../../../primitives/layout\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\n\nexport interface ActionCellAction {\n\ticon: React.ElementType;\n\tlabel: string;\n\tonClick?: () => void;\n\t/** Renders the action as a link. Mutually exclusive with onClick. */\n\thref?: string;\n\t/** Adds a download attribute to the link. Only used with href. */\n\tdownload?: boolean | string;\n\t/** Link target (e.g., \"_blank\"). Only used with href. */\n\ttarget?: string;\n\tvariant?: IconButtonProps[\"variant\"];\n\tcolorPalette?: string;\n\tdisabled?: boolean;\n}\n\nexport interface ActionCellProps {\n\tactions: ActionCellAction[];\n}\n\nexport const ActionCell: React.FC<ActionCellProps> = ({ actions }) => {\n\treturn (\n\t\t<HStack gap={1}>\n\t\t\t{actions.map((action) => (\n\t\t\t\t<Tooltip key={action.label} content={action.label}>\n\t\t\t\t\t{action.href ? (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\taria-label={action.label}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tvariant={action.variant ?? \"ghost\"}\n\t\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\t\tasChild\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={action.href}\n\t\t\t\t\t\t\t\tdownload={action.download}\n\t\t\t\t\t\t\t\ttarget={action.target}\n\t\t\t\t\t\t\t\trel={\n\t\t\t\t\t\t\t\t\taction.target === \"_blank\" ? \"noopener noreferrer\" : undefined\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<action.icon size={16} />\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\taria-label={action.label}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tvariant={action.variant ?? \"ghost\"}\n\t\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<action.icon size={16} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t)}\n\t\t\t\t</Tooltip>\n\t\t\t))}\n\t\t</HStack>\n\t);\n};\nActionCell.displayName = \"ActionCell\";\n","/** Dash shown for null/undefined cell values. */\nexport const emptyCellValue = \"—\";\n\n/** Truncate text to maxLength, appending \"…\" if exceeded. */\nexport function truncateText(text: string, maxLength: number): string {\n\tif (text.length <= maxLength) return text;\n\treturn `${text.slice(0, maxLength)}…`;\n}\n\n/** Return singular or plural form based on count. */\nexport function pluralize(\n\tcount: number,\n\tsingular: string,\n\tplural: string,\n): string {\n\treturn count === 1 ? singular : plural;\n}\n","import type React from \"react\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface BooleanCellProps {\n\tvalue: boolean | null | undefined;\n\ttrueLabel?: string;\n\tfalseLabel?: string;\n}\n\nexport const BooleanCell: React.FC<BooleanCellProps> = ({\n\tvalue,\n\ttrueLabel = \"Yes\",\n\tfalseLabel = \"No\",\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\treturn <span>{value ? trueLabel : falseLabel}</span>;\n};\nBooleanCell.displayName = \"BooleanCell\";\n","import type React from \"react\";\nimport { Code } from \"../../../primitives/typography\";\nimport { emptyCellValue, truncateText } from \"./cell-utils\";\n\nexport interface CodeCellProps {\n\tvalue: string | null | undefined;\n\tmaxLength?: number;\n}\n\nexport const CodeCell: React.FC<CodeCellProps> = ({\n\tvalue,\n\tmaxLength = 80,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst display = truncateText(value, maxLength);\n\treturn (\n\t\t<Code title={value} fontSize=\"0.85em\">\n\t\t\t{display}\n\t\t</Code>\n\t);\n};\nCodeCell.displayName = \"CodeCell\";\n","import type React from \"react\";\nimport { Box, HStack } from \"../../../primitives/layout\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface ColorSwatchCellProps {\n\tvalue: string | null | undefined;\n}\n\nexport const ColorSwatchCell: React.FC<ColorSwatchCellProps> = ({ value }) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\treturn (\n\t\t<HStack gap={2}>\n\t\t\t<Box\n\t\t\t\twidth=\"1rem\"\n\t\t\t\theight=\"1rem\"\n\t\t\t\tborderRadius=\"full\"\n\t\t\t\tbg={value}\n\t\t\t\tborderWidth=\"1px\"\n\t\t\t\tborderColor=\"border\"\n\t\t\t\tflexShrink={0}\n\t\t\t/>\n\t\t\t<span>{value}</span>\n\t\t</HStack>\n\t);\n};\nColorSwatchCell.displayName = \"ColorSwatchCell\";\n","import type React from \"react\";\nimport { emptyCellValue, pluralize } from \"./cell-utils\";\n\nexport interface CountCellProps {\n\tvalue: unknown[] | Record<string, unknown> | number | null | undefined;\n\tsingular: string;\n\tplural: string;\n\tcountFn?: (value: unknown) => number;\n}\n\nexport const CountCell: React.FC<CountCellProps> = ({\n\tvalue,\n\tsingular,\n\tplural,\n\tcountFn,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\n\tlet count: number;\n\tif (countFn) {\n\t\tcount = countFn(value);\n\t\tif (!Number.isFinite(count)) return <span>{emptyCellValue}</span>;\n\t} else if (typeof value === \"number\") {\n\t\tcount = value;\n\t} else if (Array.isArray(value)) {\n\t\tcount = value.length;\n\t} else if (typeof value === \"object\") {\n\t\tcount = Object.keys(value).length;\n\t} else {\n\t\treturn <span>{emptyCellValue}</span>;\n\t}\n\n\treturn (\n\t\t<span>\n\t\t\t{count} {pluralize(count, singular, plural)}\n\t\t</span>\n\t);\n};\nCountCell.displayName = \"CountCell\";\n","import dayjs from \"dayjs\";\nimport type React from \"react\";\nimport { formatRelativeDateTime } from \"../../../atoms/datetime/utils/relative-date-time-utils\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface DateCellProps {\n\tvalue: string | Date | number | null | undefined;\n\tformat?: string;\n\tshowRelative?: boolean;\n}\n\nexport const DateCell: React.FC<DateCellProps> = ({\n\tvalue,\n\tformat = \"MMM D, YYYY\",\n\tshowRelative,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\n\tconst parsed = dayjs(value);\n\tif (!parsed.isValid()) return <span>{emptyCellValue}</span>;\n\n\tconst formatted = parsed.format(format);\n\n\tif (showRelative) {\n\t\tconst relative = formatRelativeDateTime(value);\n\t\treturn (\n\t\t\t<Tooltip content={formatted}>\n\t\t\t\t<span>{relative}</span>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\n\treturn <span>{formatted}</span>;\n};\nDateCell.displayName = \"DateCell\";\n","/**\n * Parse a User-Agent string into a coarse browser + OS label.\n *\n * Used by `DeviceCell` to render \"Chrome on macOS\" style labels in\n * sessions / device lists. The matchers are intentionally simple —\n * they cover the common power-user browsers (Chrome, Safari, Firefox,\n * Edge, Opera) on the common platforms (macOS, Windows, iOS, Android,\n * Linux). Unknown browsers return `\"Unknown\"`; unknown OSes return `\"\"`.\n */\nexport function parseUserAgent(ua: string | undefined | null): {\n\tbrowser: string;\n\tos: string;\n} {\n\tif (!ua) return { browser: \"Unknown\", os: \"\" };\n\n\t// Browser detection — order matters because Chromium-based browsers\n\t// also match the Chrome and Safari markers.\n\tlet browser = \"Unknown\";\n\tif (/Edg\\//.test(ua)) browser = \"Edge\";\n\telse if (/Firefox\\//.test(ua)) browser = \"Firefox\";\n\telse if (/OPR\\/|Opera/.test(ua)) browser = \"Opera\";\n\telse if (/Chrome\\//.test(ua)) browser = \"Chrome\";\n\telse if (/Safari\\//.test(ua)) browser = \"Safari\";\n\n\t// OS detection — iOS check precedes macOS so iPad/iPhone don't fall\n\t// through to the Macintosh matcher.\n\tlet os = \"\";\n\tif (/Windows NT/.test(ua)) os = \"Windows\";\n\telse if (/iPhone|iPad/.test(ua)) os = \"iOS\";\n\telse if (/Mac OS X|Macintosh/.test(ua)) os = \"macOS\";\n\telse if (/Android/.test(ua)) os = \"Android\";\n\telse if (/Linux/.test(ua)) os = \"Linux\";\n\n\treturn { browser, os };\n}\n\n/** Format a parsed UA into the \"Chrome on macOS\" style label. */\nexport function formatUserAgent(ua: string | undefined | null): string {\n\tconst { browser, os } = parseUserAgent(ua);\n\treturn os ? `${browser} on ${os}` : browser;\n}\n","import type React from \"react\";\nimport { Badge } from \"../../../primitives/badge\";\nimport { HStack, VStack } from \"../../../primitives/layout\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\nimport { Text } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\nimport { formatUserAgent } from \"./user-agent\";\n\nexport interface DeviceCellProps {\n\t/** Raw User-Agent string. Null/empty renders the empty cell value. */\n\tuserAgent: string | null | undefined;\n\t/** Optional badge displayed to the right of the primary line (e.g. \"Current\"). */\n\tbadge?: { label: string; colorPalette?: string };\n}\n\nexport const DeviceCell: React.FC<DeviceCellProps> = ({ userAgent, badge }) => {\n\tif (userAgent == null || userAgent === \"\") {\n\t\treturn <span>{emptyCellValue}</span>;\n\t}\n\tconst label = formatUserAgent(userAgent);\n\treturn (\n\t\t<Tooltip content={userAgent} showArrow>\n\t\t\t<VStack align=\"start\" gap={0}>\n\t\t\t\t<HStack gap={2} align=\"center\">\n\t\t\t\t\t<Text fontSize=\"sm\" fontWeight=\"medium\" lineClamp={1}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{badge && (\n\t\t\t\t\t\t<Badge colorPalette={badge.colorPalette} size=\"xs\">\n\t\t\t\t\t\t\t{badge.label}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t)}\n\t\t\t\t</HStack>\n\t\t\t\t<Text fontSize=\"xs\" color=\"fg.muted\" lineClamp={1}>\n\t\t\t\t\t{userAgent}\n\t\t\t\t</Text>\n\t\t\t</VStack>\n\t\t</Tooltip>\n\t);\n};\nDeviceCell.displayName = \"DeviceCell\";\n","import type React from \"react\";\nimport { Avatar } from \"../../../primitives/avatar\";\nimport { HStack, VStack } from \"../../../primitives/layout\";\nimport { Text } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface IdentityCellProps {\n\t/** Primary display name. Null/undefined renders the empty cell value. */\n\tname: string | null | undefined;\n\t/** Optional secondary line below the name (e.g., email, ID). */\n\tsubText?: React.ReactNode;\n\t/** Avatar image source URL. */\n\tavatarSrc?: string;\n\t/** Initials shown as the avatar fallback. Auto-derived from `name` when omitted. */\n\tavatarFallback?: string;\n\t/** Avatar size; defaults to \"sm\" to match table density. */\n\tsize?: \"sm\" | \"md\";\n}\n\nfunction deriveInitials(name: string): string {\n\tconst parts = name.trim().split(/\\s+/).filter(Boolean);\n\tif (parts.length === 0) return \"\";\n\tif (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n\treturn (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n}\n\nexport const IdentityCell: React.FC<IdentityCellProps> = ({\n\tname,\n\tsubText,\n\tavatarSrc,\n\tavatarFallback,\n\tsize = \"sm\",\n}) => {\n\tif (name == null) return <span>{emptyCellValue}</span>;\n\tconst initials = avatarFallback ?? deriveInitials(name);\n\treturn (\n\t\t<HStack gap={2} align=\"center\">\n\t\t\t<Avatar size={size} name={name} src={avatarSrc} fallback={initials} />\n\t\t\t<VStack align=\"start\" gap={0}>\n\t\t\t\t<Text fontSize=\"sm\" fontWeight=\"semibold\" lineClamp={1}>\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\t\t\t\t{subText != null && (\n\t\t\t\t\t<Text fontSize=\"xs\" color=\"fg.muted\" lineClamp={1}>\n\t\t\t\t\t\t{subText}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</VStack>\n\t\t</HStack>\n\t);\n};\nIdentityCell.displayName = \"IdentityCell\";\n","import type React from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { Link as ChakraLink } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface LinkCellProps {\n\t/** Route path for navigation. Renders em-dash when null/undefined. */\n\tto: string | null | undefined;\n\t/** Display text or node. Falls back to `to` value if not provided. */\n\tlabel?: React.ReactNode;\n}\n\nexport const LinkCell: React.FC<LinkCellProps> = ({ to, label }) => {\n\tif (to == null) return <span>{emptyCellValue}</span>;\n\treturn (\n\t\t<ChakraLink color=\"accent\" asChild>\n\t\t\t<RouterLink\n\t\t\t\tto={to}\n\t\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{label || to}\n\t\t\t</RouterLink>\n\t\t</ChakraLink>\n\t);\n};\nLinkCell.displayName = \"LinkCell\";\n","import { Ellipsis } from \"lucide-react\";\nimport type React from \"react\";\nimport { Button, IconButton } from \"../../../atoms/button\";\nimport { HStack } from \"../../../primitives/layout\";\nimport {\n\tMenuContent,\n\tMenuItem,\n\tMenuRoot,\n\tMenuTrigger,\n} from \"../../../primitives/menu\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\n\nexport interface MenuCellAction {\n\t/** Display label — shown as menu item text or as tooltip for inline buttons */\n\tlabel: string;\n\t/** Handler called when the action is triggered */\n\tonClick: () => void;\n\t/** Lucide icon component — shown in menu items and inline buttons */\n\ticon?: React.ElementType;\n\t/** Disables the action */\n\tdisabled?: boolean;\n\t/** Color palette override (e.g., \"red\" for destructive actions) */\n\tcolorPalette?: string;\n}\n\nexport interface MenuCellProps {\n\t/** List of actions to render */\n\tactions: MenuCellAction[];\n\t/**\n\t * Max number of actions to render inline.\n\t * If actions.length > menuThreshold, all actions collapse into a dropdown.\n\t * @default 1\n\t */\n\tmenuThreshold?: number;\n\t/** Override the default menu trigger icon (Ellipsis) */\n\tmenuIcon?: React.ElementType;\n\t/** Accessible label for the menu trigger button. @default \"Actions\" */\n\ttriggerLabel?: string;\n}\n\nexport const MenuCell: React.FC<MenuCellProps> = ({\n\tactions,\n\tmenuThreshold = 1,\n\tmenuIcon: MenuIcon = Ellipsis,\n\ttriggerLabel = \"Actions\",\n}) => {\n\tif (actions.length === 0) return null;\n\n\tconst useMenu = actions.length > menuThreshold;\n\n\tif (useMenu) {\n\t\treturn (\n\t\t\t<MenuRoot>\n\t\t\t\t<MenuTrigger asChild>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\taria-label={triggerLabel}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<MenuIcon size={16} />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</MenuTrigger>\n\t\t\t\t<MenuContent>\n\t\t\t\t\t{actions.map((action) => (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tkey={action.label}\n\t\t\t\t\t\t\tvalue={action.label}\n\t\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{action.icon && <action.icon size={16} />}\n\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</MenuContent>\n\t\t\t</MenuRoot>\n\t\t);\n\t}\n\n\treturn (\n\t\t<HStack gap={1} onClick={(e: React.MouseEvent) => e.stopPropagation()}>\n\t\t\t{actions.map((action) =>\n\t\t\t\taction.icon ? (\n\t\t\t\t\t<Tooltip key={action.label} content={action.label}>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\taria-label={action.label}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<action.icon size={16} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={action.label}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</Button>\n\t\t\t\t),\n\t\t\t)}\n\t\t</HStack>\n\t);\n};\nMenuCell.displayName = \"MenuCell\";\n","import type React from \"react\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface NumberCellProps {\n\tvalue: number | string | null | undefined;\n\tlocale?: string;\n}\n\nexport const NumberCell: React.FC<NumberCellProps> = ({ value, locale }) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst num = Number(value);\n\tconst display = Number.isNaN(num)\n\t\t? String(value)\n\t\t: num.toLocaleString(locale);\n\treturn <span>{display}</span>;\n};\nNumberCell.displayName = \"NumberCell\";\n","import type React from \"react\";\nimport { Code } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface SlugCellProps {\n\tvalue: string | null | undefined;\n}\n\nexport const SlugCell: React.FC<SlugCellProps> = ({ value }) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\treturn <Code>{value}</Code>;\n};\nSlugCell.displayName = \"SlugCell\";\n","import type React from \"react\";\nimport { StatusBadge } from \"../../../atoms/status-badge\";\nimport { VStack } from \"../../../primitives/layout\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\nimport { Text } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface StatusBadgeCellProps {\n\tvalue: string | null | undefined;\n\tcolorMap?: Record<string, string>;\n\t/** Fallback color when value has no entry in colorMap. @default \"gray\" */\n\tfallbackColor?: string;\n\t/** Optional detail text displayed below the badge (e.g., error message). */\n\tdetail?: string | null;\n\t/** Color for the detail text. @default \"fg.error\" */\n\tdetailColor?: string;\n\t/**\n\t * Optional tooltip content shown on hover/focus over the badge. Useful\n\t * for status descriptions, full JSON payloads, or contextual hints that\n\t * don't fit on the badge label.\n\t */\n\ttooltip?: React.ReactNode;\n}\n\nexport const StatusBadgeCell: React.FC<StatusBadgeCellProps> = ({\n\tvalue,\n\tcolorMap,\n\tfallbackColor = \"gray\",\n\tdetail,\n\tdetailColor = \"fg.error\",\n\ttooltip,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst color = colorMap?.[value] ?? fallbackColor;\n\tlet badge: React.ReactNode = <StatusBadge label={value} color={color} />;\n\n\tif (tooltip != null) {\n\t\tbadge = (\n\t\t\t<Tooltip content={tooltip} showArrow>\n\t\t\t\t<span>{badge}</span>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\n\tif (detail) {\n\t\treturn (\n\t\t\t<VStack align=\"start\" gap={0.5}>\n\t\t\t\t{badge}\n\t\t\t\t<Text fontSize=\"xs\" color={detailColor}>\n\t\t\t\t\t{detail}\n\t\t\t\t</Text>\n\t\t\t</VStack>\n\t\t);\n\t}\n\n\treturn <>{badge}</>;\n};\nStatusBadgeCell.displayName = \"StatusBadgeCell\";\n","import type React from \"react\";\nimport { Switch } from \"../../../primitives/switch\";\n\nexport interface SwitchCellProps {\n\tchecked: boolean;\n\tonChange: (checked: boolean) => void;\n\tdisabled?: boolean;\n\tcolorPalette?: string;\n\t/** Accessible label for screen readers. */\n\tlabel?: string;\n}\n\nexport const SwitchCell: React.FC<SwitchCellProps> = ({\n\tchecked,\n\tonChange,\n\tdisabled,\n\tcolorPalette = \"green\",\n\tlabel,\n}) => {\n\treturn (\n\t\t<Switch\n\t\t\tchecked={checked}\n\t\t\tonCheckedChange={(details) => onChange(!!details.checked)}\n\t\t\tdisabled={disabled}\n\t\t\tcolorPalette={colorPalette}\n\t\t\taria-label={label}\n\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t/>\n\t);\n};\nSwitchCell.displayName = \"SwitchCell\";\n","import type React from \"react\";\nimport { VStack } from \"../../../primitives/layout\";\nimport { Text } from \"../../../primitives/typography\";\nimport { emptyCellValue, truncateText } from \"./cell-utils\";\n\nexport interface TruncatedTextCellProps {\n\tvalue: string | null | undefined;\n\tmaxLength?: number;\n\t/**\n\t * Optional secondary line rendered below the primary value in smaller,\n\t * muted text (e.g. \"created 2 days ago\", target ID, contextual hint).\n\t * Sub-text is `lineClamp={1}` and is not affected by `maxLength`.\n\t */\n\tsubText?: React.ReactNode;\n}\n\nexport const TruncatedTextCell: React.FC<TruncatedTextCellProps> = ({\n\tvalue,\n\tmaxLength,\n\tsubText,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst isTruncated = maxLength != null && value.length > maxLength;\n\tconst display = isTruncated ? truncateText(value, maxLength) : value;\n\tconst primary = (\n\t\t<span title={isTruncated ? value : undefined}>{display}</span>\n\t);\n\n\tif (subText == null) return primary;\n\n\treturn (\n\t\t<VStack align=\"start\" gap={0}>\n\t\t\t{primary}\n\t\t\t<Text fontSize=\"xs\" color=\"fg.muted\" lineClamp={1}>\n\t\t\t\t{subText}\n\t\t\t</Text>\n\t\t</VStack>\n\t);\n};\nTruncatedTextCell.displayName = \"TruncatedTextCell\";\n","import type React from \"react\";\nimport { Link } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface UrlCellProps {\n\tvalue: string | null | undefined;\n\tlabel?: string;\n}\n\nexport const UrlCell: React.FC<UrlCellProps> = ({ value, label }) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\treturn (\n\t\t<Link\n\t\t\thref={value}\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\ttitle={value}\n\t\t\tcolor=\"accent\"\n\t\t>\n\t\t\t{label || value}\n\t\t</Link>\n\t);\n};\nUrlCell.displayName = \"UrlCell\";\n","import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport type React from \"react\";\nimport { Button, IconButton } from \"../atoms/button\";\nimport { HStack } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface PaginationProps {\n\t/** Current page (1-based). */\n\tpage: number;\n\t/** Total number of items. */\n\ttotal: number;\n\t/** Items per page. @default 10 */\n\tpageSize?: number;\n\t/** Called when the page changes. */\n\tonPageChange: (page: number) => void;\n\t/** Maximum page buttons to show. @default 5 */\n\tmaxVisiblePages?: number;\n\t/** Label for the previous button. @default \"Previous page\" */\n\tpreviousLabel?: string;\n\t/** Label for the next button. @default \"Next page\" */\n\tnextLabel?: string;\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n\tconst {\n\t\tpage,\n\t\ttotal,\n\t\tpageSize = 10,\n\t\tonPageChange,\n\t\tmaxVisiblePages = 5,\n\t\tpreviousLabel = \"Previous page\",\n\t\tnextLabel = \"Next page\",\n\t} = props;\n\n\tconst totalPages = Math.max(1, Math.ceil(total / pageSize));\n\tconst currentPage = Math.min(Math.max(1, page), totalPages);\n\n\tconst pages = getVisiblePages(currentPage, totalPages, maxVisiblePages);\n\n\treturn (\n\t\t<HStack gap={1}>\n\t\t\t<IconButton\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\taria-label={previousLabel}\n\t\t\t\tdisabled={currentPage <= 1}\n\t\t\t\tonClick={() => onPageChange(currentPage - 1)}\n\t\t\t>\n\t\t\t\t<ChevronLeft size={16} />\n\t\t\t</IconButton>\n\t\t\t{pages.map((p) =>\n\t\t\t\tp === \"ellipsis-start\" || p === \"ellipsis-end\" ? (\n\t\t\t\t\t<Text key={p} px={2} color=\"muted\" fontSize=\"sm\">\n\t\t\t\t\t\t…\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={p}\n\t\t\t\t\t\tvariant={p === currentPage ? \"solid\" : \"ghost\"}\n\t\t\t\t\t\tcolorPalette={p === currentPage ? \"primary\" : undefined}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tminW=\"36px\"\n\t\t\t\t\t\tonClick={() => onPageChange(p)}\n\t\t\t\t\t\taria-current={p === currentPage ? \"page\" : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t{p}\n\t\t\t\t\t</Button>\n\t\t\t\t),\n\t\t\t)}\n\t\t\t<IconButton\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\taria-label={nextLabel}\n\t\t\t\tdisabled={currentPage >= totalPages}\n\t\t\t\tonClick={() => onPageChange(currentPage + 1)}\n\t\t\t>\n\t\t\t\t<ChevronRight size={16} />\n\t\t\t</IconButton>\n\t\t</HStack>\n\t);\n};\n\nPagination.displayName = \"Pagination\";\n\nfunction getVisiblePages(\n\tcurrent: number,\n\ttotal: number,\n\tmax: number,\n): Array<number | \"ellipsis-start\" | \"ellipsis-end\"> {\n\tif (total <= max) {\n\t\treturn Array.from({ length: total }, (_, i) => i + 1);\n\t}\n\n\tconst pages: Array<number | \"ellipsis-start\" | \"ellipsis-end\"> = [];\n\tconst half = Math.floor((max - 2) / 2);\n\tlet start = Math.max(2, current - half);\n\tlet end = Math.min(total - 1, current + half);\n\n\tif (current - half <= 2) {\n\t\tend = Math.min(total - 1, max - 1);\n\t}\n\tif (current + half >= total - 1) {\n\t\tstart = Math.max(2, total - max + 2);\n\t}\n\n\tpages.push(1);\n\tif (start > 2) pages.push(\"ellipsis-start\");\n\tfor (let i = start; i <= end; i++) {\n\t\tpages.push(i);\n\t}\n\tif (end < total - 1) pages.push(\"ellipsis-end\");\n\tpages.push(total);\n\n\treturn pages;\n}\n","import { Checkbox } from \"@chakra-ui/react\";\nimport {\n\ttype ColumnDef,\n\tflexRender,\n\tgetCoreRowModel,\n\tgetSortedRowModel,\n\ttype OnChangeFn,\n\ttype Row,\n\ttype RowSelectionState,\n\ttype SortingState,\n\tuseReactTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDown, ArrowUp, ArrowUpDown } from \"lucide-react\";\nimport type React from \"react\";\nimport { useMemo } from \"react\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport { Skeleton } from \"../../primitives/skeleton\";\nimport { Table } from \"../../primitives/table\";\nimport { Text } from \"../../primitives/typography\";\nimport { Pagination } from \"../pagination\";\n\nexport interface DataTableProps<T extends Record<string, unknown>> {\n\t/** Column definitions for TanStack Table */\n\tcolumns: ColumnDef<T, unknown>[];\n\t/** Data array */\n\tdata: T[];\n\t/** Enable row selection */\n\tselectable?: boolean;\n\t/** Controlled row selection state */\n\trowSelection?: RowSelectionState;\n\t/** Row selection change handler */\n\tonRowSelectionChange?: OnChangeFn<RowSelectionState>;\n\t/** Controlled sorting state */\n\tsorting?: SortingState;\n\t/** Sorting change handler */\n\tonSortingChange?: OnChangeFn<SortingState>;\n\t/** Row click handler */\n\tonRowClick?: (row: T) => void;\n\t/** Loading state */\n\tloading?: boolean;\n\t/** Empty state content */\n\temptyState?: React.ReactNode;\n\t/** Pagination - total items */\n\ttotal?: number;\n\t/** Pagination - current page (1-based) */\n\tpage?: number;\n\t/** Pagination - items per page */\n\tpageSize?: number;\n\t/** Pagination - page change handler */\n\tonPageChange?: (page: number) => void;\n\t/** Table variant */\n\tvariant?: \"line\" | \"striped\" | \"hoverable\";\n\t/** Custom row ID extractor for stable selection across data changes. @default row index */\n\tgetRowId?: (originalRow: T, index: number, parent?: Row<T>) => string;\n}\n\nconst LOADING_ROW_COUNT = 5;\n\nfunction DataTableInner<T extends Record<string, unknown>>(\n\tprops: DataTableProps<T>,\n) {\n\tconst {\n\t\tcolumns,\n\t\tdata,\n\t\tselectable = false,\n\t\trowSelection,\n\t\tonRowSelectionChange,\n\t\tsorting,\n\t\tonSortingChange,\n\t\tonRowClick,\n\t\tloading = false,\n\t\temptyState,\n\t\ttotal,\n\t\tpage,\n\t\tpageSize,\n\t\tonPageChange,\n\t\tvariant = \"line\",\n\t\tgetRowId,\n\t} = props;\n\n\tconst selectionColumn = useMemo<ColumnDef<T, unknown>>(\n\t\t() => ({\n\t\t\tid: \"_select\",\n\t\t\tsize: 40,\n\t\t\tminSize: 40,\n\t\t\tmaxSize: 40,\n\t\t\theader: ({ table }) => (\n\t\t\t\t<Checkbox.Root\n\t\t\t\t\tchecked={\n\t\t\t\t\t\ttable.getIsAllPageRowsSelected()\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: table.getIsSomePageRowsSelected()\n\t\t\t\t\t\t\t\t? \"indeterminate\"\n\t\t\t\t\t\t\t\t: false\n\t\t\t\t\t}\n\t\t\t\t\tonCheckedChange={(details) =>\n\t\t\t\t\t\ttable.toggleAllPageRowsSelected(!!details.checked)\n\t\t\t\t\t}\n\t\t\t\t\taria-label=\"Select all rows\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t>\n\t\t\t\t\t<Checkbox.HiddenInput />\n\t\t\t\t\t<Checkbox.Control />\n\t\t\t\t</Checkbox.Root>\n\t\t\t),\n\t\t\tcell: ({ row }) => (\n\t\t\t\t<Checkbox.Root\n\t\t\t\t\tchecked={row.getIsSelected()}\n\t\t\t\t\tonCheckedChange={(details) => row.toggleSelected(!!details.checked)}\n\t\t\t\t\taria-label={`Select row ${String(row.index + 1)}`}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<Checkbox.HiddenInput />\n\t\t\t\t\t<Checkbox.Control />\n\t\t\t\t</Checkbox.Root>\n\t\t\t),\n\t\t\tenableSorting: false,\n\t\t}),\n\t\t[],\n\t);\n\n\tconst allColumns = useMemo(\n\t\t() => (selectable ? [selectionColumn, ...columns] : columns),\n\t\t[selectable, selectionColumn, columns],\n\t);\n\n\tconst table = useReactTable({\n\t\tdata,\n\t\tcolumns: allColumns,\n\t\tstate: {\n\t\t\t...(sorting !== undefined ? { sorting } : {}),\n\t\t\t...(rowSelection !== undefined ? { rowSelection } : {}),\n\t\t},\n\t\tonSortingChange,\n\t\tonRowSelectionChange,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\t...(onSortingChange === undefined\n\t\t\t? { getSortedRowModel: getSortedRowModel() }\n\t\t\t: {}),\n\t\tenableRowSelection: selectable,\n\t\tmanualSorting: onSortingChange !== undefined,\n\t\t...(getRowId !== undefined ? { getRowId } : {}),\n\t});\n\n\tconst hasPagination =\n\t\ttotal !== undefined &&\n\t\tpage !== undefined &&\n\t\tpageSize !== undefined &&\n\t\tonPageChange !== undefined;\n\n\tconst isEmpty = !loading && data.length === 0;\n\n\treturn (\n\t\t<Flex direction=\"column\" gap={4}>\n\t\t\t<Box overflowX=\"auto\">\n\t\t\t\t{/* Chakra v3's Table.Root types only include built-in variants.\n\t\t\t\t Our custom table recipe adds \"striped\" and \"hoverable\" variants\n\t\t\t\t that work at runtime but require a type cast. Module augmentation\n\t\t\t\t for slot recipe variants is not supported in Chakra v3. */}\n\t\t\t\t<Table.Root variant={variant as \"line\"}>\n\t\t\t\t\t<Table.Header>\n\t\t\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\n\t\t\t\t\t\t\t<Table.Row key={headerGroup.id}>\n\t\t\t\t\t\t\t\t{headerGroup.headers.map((header) => {\n\t\t\t\t\t\t\t\t\tconst canSort = header.column.getCanSort();\n\t\t\t\t\t\t\t\t\tconst sorted = header.column.getIsSorted();\n\t\t\t\t\t\t\t\t\tconst isSelectCol = header.column.id === \"_select\";\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Table.ColumnHeader\n\t\t\t\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\t\t\t\tcursor={canSort ? \"pointer\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t\t\t\tcanSort\n\t\t\t\t\t\t\t\t\t\t\t\t\t? header.column.getToggleSortingHandler()\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\t\t\tsorted === \"asc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t? \"ascending\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t: sorted === \"desc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"descending\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: canSort\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"none\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tuserSelect={canSort ? \"none\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\ttabIndex={canSort ? 0 : undefined}\n\t\t\t\t\t\t\t\t\t\t\trole={canSort ? \"button\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tcanSort\n\t\t\t\t\t\t\t\t\t\t\t\t\t? (e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.column.getToggleSortingHandler()?.(e);\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\tisSelectCol\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { width: header.column.getSize() }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Flex alignItems=\"center\" gap={1}>\n\t\t\t\t\t\t\t\t\t\t\t\t{header.isPlaceholder\n\t\t\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t\t\t: flexRender(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\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{canSort && sorted === \"asc\" && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowUp size={14} aria-hidden=\"true\" />\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\t{canSort && sorted === \"desc\" && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowDown size={14} aria-hidden=\"true\" />\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\t{canSort && !sorted && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowUpDown size={14} aria-hidden=\"true\" />\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</Flex>\n\t\t\t\t\t\t\t\t\t\t</Table.ColumnHeader>\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</Table.Row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Table.Header>\n\t\t\t\t\t<Table.Body>\n\t\t\t\t\t\t{loading &&\n\t\t\t\t\t\t\tArray.from({ length: LOADING_ROW_COUNT }).map((_, rowIdx) => (\n\t\t\t\t\t\t\t\t<Table.Row key={`loading-${String(rowIdx)}`} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t{allColumns.map((_, colIdx) => (\n\t\t\t\t\t\t\t\t\t\t<Table.Cell key={`loading-cell-${String(colIdx)}`}>\n\t\t\t\t\t\t\t\t\t\t\t<Skeleton height=\"4\" borderRadius=\"sm\" />\n\t\t\t\t\t\t\t\t\t\t</Table.Cell>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</Table.Row>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!loading &&\n\t\t\t\t\t\t\ttable.getRowModel().rows.map((row) => (\n\t\t\t\t\t\t\t\t<Table.Row\n\t\t\t\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\t\t\t\tdata-selected={row.getIsSelected() || undefined}\n\t\t\t\t\t\t\t\t\tcursor={onRowClick ? \"pointer\" : undefined}\n\t\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t\tonRowClick ? () => onRowClick(row.original) : undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttabIndex={onRowClick ? 0 : undefined}\n\t\t\t\t\t\t\t\t\trole={onRowClick ? \"button\" : undefined}\n\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\tonRowClick\n\t\t\t\t\t\t\t\t\t\t\t? (e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonRowClick(row.original);\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}\n\t\t\t\t\t\t\t\t\t\t\t: undefined\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\t\t{row.getVisibleCells().map((cell) => (\n\t\t\t\t\t\t\t\t\t\t<Table.Cell\n\t\t\t\t\t\t\t\t\t\t\tkey={cell.id}\n\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\tcell.column.id === \"_select\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { width: cell.column.getSize() }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{flexRender(\n\t\t\t\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\n\t\t\t\t\t\t\t\t\t\t\t\tcell.getContext(),\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</Table.Cell>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</Table.Row>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{isEmpty && (\n\t\t\t\t\t\t\t<Table.Row>\n\t\t\t\t\t\t\t\t<Table.Cell\n\t\t\t\t\t\t\t\t\tcolSpan={allColumns.length}\n\t\t\t\t\t\t\t\t\ttextAlign=\"center\"\n\t\t\t\t\t\t\t\t\tpy={8}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{emptyState ?? (\n\t\t\t\t\t\t\t\t\t\t<Text color=\"muted\" fontSize=\"sm\">\n\t\t\t\t\t\t\t\t\t\t\tNo data available\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Table.Cell>\n\t\t\t\t\t\t\t</Table.Row>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Table.Body>\n\t\t\t\t</Table.Root>\n\t\t\t</Box>\n\t\t\t{hasPagination && (\n\t\t\t\t<Flex justifyContent=\"center\">\n\t\t\t\t\t<Pagination\n\t\t\t\t\t\tpage={page}\n\t\t\t\t\t\ttotal={total}\n\t\t\t\t\t\tpageSize={pageSize}\n\t\t\t\t\t\tonPageChange={onPageChange}\n\t\t\t\t\t/>\n\t\t\t\t</Flex>\n\t\t\t)}\n\t\t</Flex>\n\t);\n}\n\nexport const DataTable = DataTableInner as typeof DataTableInner & {\n\tdisplayName: string;\n};\nDataTable.displayName = \"DataTable\";\n","import { Drawer, type DrawerRootProps, Portal } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"../atoms/button\";\nimport { Flex, Spacer } from \"../primitives/layout\";\n\nexport interface DrawerProps\n\textends Omit<DrawerRootProps, \"open\" | \"onOpenChange\"> {\n\t/** Whether the drawer is open. */\n\topen: boolean;\n\t/** Called when the drawer should close. */\n\tonClose(): void;\n\t/** Header title content. */\n\ttitle: string | React.ReactNode;\n\t/** Text displayed in the footer area (left side). */\n\tfooterText?: string | React.ReactNode;\n\t/** Drawer body content. */\n\tchildren: React.ReactNode;\n\t/** Label for the save button. @default \"Save\" */\n\tsaveLabel?: string;\n\t/** Label for the close button. @default \"Close\" */\n\tcloseLabel?: string;\n\t/** Whether the save button is disabled. */\n\tsaveButtonDisabled?: boolean;\n\t/** Whether the save action is in progress. Shows spinner on save button. */\n\tloading?: boolean;\n\t/** Extra buttons rendered before the save button. */\n\tadditionalButtons?: React.ReactNode;\n\t/** Called when the save button is clicked. If not provided, no save button is shown. */\n\tonSave?(): void;\n}\n\nexport const DrawerRoot: React.FC<DrawerProps> = ({\n\tchildren,\n\ttitle,\n\tfooterText,\n\tsaveLabel = \"Save\",\n\tcloseLabel = \"Close\",\n\tsaveButtonDisabled = false,\n\tloading = false,\n\tadditionalButtons,\n\tonSave,\n\topen,\n\tonClose,\n\t...rest\n}) => {\n\treturn (\n\t\t<Drawer.Root\n\t\t\t{...rest}\n\t\t\topen={open}\n\t\t\tonOpenChange={(details) => {\n\t\t\t\tif (!details.open) {\n\t\t\t\t\tonClose();\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<Portal>\n\t\t\t\t<Drawer.Backdrop />\n\t\t\t\t<Drawer.Positioner>\n\t\t\t\t\t<Drawer.Content>\n\t\t\t\t\t\t<Drawer.CloseTrigger asChild>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\t\t\t\ttop={2}\n\t\t\t\t\t\t\t\tinsetInlineEnd={2}\n\t\t\t\t\t\t\t\taria-label={closeLabel}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X size={16} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Drawer.CloseTrigger>\n\n\t\t\t\t\t\t<Drawer.Header\n\t\t\t\t\t\t\tbg=\"bg-surface\"\n\t\t\t\t\t\t\tborderBottom=\"1px solid\"\n\t\t\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Drawer.Title>{title}</Drawer.Title>\n\t\t\t\t\t\t</Drawer.Header>\n\n\t\t\t\t\t\t<Drawer.Body>{children}</Drawer.Body>\n\n\t\t\t\t\t\t<Drawer.Footer\n\t\t\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\t\t\tbg=\"bg-subtle\"\n\t\t\t\t\t\t\tborderTop=\"1px solid\"\n\t\t\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{footerText}\n\t\t\t\t\t\t\t<Spacer />\n\t\t\t\t\t\t\t<Flex gap={4}>\n\t\t\t\t\t\t\t\t{additionalButtons}\n\t\t\t\t\t\t\t\t{onSave && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"solid\"\n\t\t\t\t\t\t\t\t\t\tonClick={onSave}\n\t\t\t\t\t\t\t\t\t\tdisabled={saveButtonDisabled || loading}\n\t\t\t\t\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{saveLabel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t</Drawer.Footer>\n\t\t\t\t\t</Drawer.Content>\n\t\t\t\t</Drawer.Positioner>\n\t\t\t</Portal>\n\t\t</Drawer.Root>\n\t);\n};\nDrawerRoot.displayName = \"DrawerRoot\";\n","import { ButtonGroup, type CardRootProps } from \"@chakra-ui/react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport React, { type MouseEventHandler } from \"react\";\nimport { IconButton } from \"../atoms/button\";\nimport { Collapsible } from \"../primitives/collapsible\";\nimport { Box, Flex, HStack } from \"../primitives/layout\";\nimport {\n\tMenuContent,\n\tMenuItem,\n\tMenuRoot,\n\tMenuTrigger,\n} from \"../primitives/menu\";\nimport { Text } from \"../primitives/typography\";\nimport { Card } from \"./card\";\n\nexport interface FactBoxAction {\n\tid: number;\n\ttype: \"button\" | \"menuButton\";\n\tariaLabel: string;\n\ticon?: React.ReactElement;\n\tonClick?: MouseEventHandler<HTMLButtonElement>;\n\tonSelect?: VoidFunction;\n\titems?: FactBoxAction[];\n}\n\nexport interface FactBoxProps extends CardRootProps {\n\tname?: string | React.ReactNode;\n\tactions?: FactBoxAction[];\n\tchildren: React.ReactNode;\n\tcollapsible?: boolean;\n\t/** Label for collapse button when expanded. @default \"Collapse\" */\n\tcollapseLabel?: string;\n\t/** Label for collapse button when collapsed. @default \"Expand\" */\n\texpandLabel?: string;\n}\n\nexport const FactBox: React.FC<FactBoxProps> = (props) => {\n\tconst {\n\t\tname,\n\t\tactions,\n\t\tcollapsible = true,\n\t\tcollapseLabel = \"Collapse\",\n\t\texpandLabel = \"Expand\",\n\t\t...rest\n\t} = props;\n\n\tconst [show, setShow] = React.useState(true);\n\n\tconst handleToggle = () => {\n\t\tsetShow(!show);\n\t};\n\n\treturn (\n\t\t<Box w=\"full\">\n\t\t\t{collapsible ? (\n\t\t\t\t<Flex\n\t\t\t\t\tflexDirection=\"column\"\n\t\t\t\t\tmx=\"auto\"\n\t\t\t\t\tborderBottom=\"1px solid\"\n\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdisplay={{ md: \"flex\" }}\n\t\t\t\t\t\talignItems={{ md: \"center\" }}\n\t\t\t\t\t\tjustifyContent={{ md: \"space-between\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Box minW={0} flex=\"1 1 0%\">\n\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\taria-label={show ? collapseLabel : expandLabel}\n\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\thandleToggle();\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\t\t{show ? (\n\t\t\t\t\t\t\t\t\t\t<ChevronDown size={16} />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<ChevronRight size={16} />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t{typeof name === \"string\" ? <Text>{name}</Text> : name}\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t{actions ? (\n\t\t\t\t\t\t\t<Flex flexShrink={0} marginInlineStart={{ md: 4 }}>\n\t\t\t\t\t\t\t\t<ButtonGroup>\n\t\t\t\t\t\t\t\t\t{actions.map((action) =>\n\t\t\t\t\t\t\t\t\t\taction.type === \"button\" ? (\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tkey={action.id}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={action.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={action.onClick}\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{action.icon}\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<MenuRoot key={action.id}>\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuTrigger asChild>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={action.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\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{action.icon}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuContent>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{action.items?.map((item) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelect={item.onSelect}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={item.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={`action-${item.id}`}\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\t\t{item.icon}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\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</MenuContent>\n\t\t\t\t\t\t\t\t\t\t\t</MenuRoot>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</ButtonGroup>\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Box>\n\t\t\t\t</Flex>\n\t\t\t) : null}\n\t\t\t<Collapsible.Root open={show}>\n\t\t\t\t<Collapsible.Content>\n\t\t\t\t\t<Card {...rest}>{rest.children}</Card>\n\t\t\t\t</Collapsible.Content>\n\t\t\t</Collapsible.Root>\n\t\t</Box>\n\t);\n};\nFactBox.displayName = \"FactBox\";\n","import { Plus } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { TextInput } from \"../../atoms/text-input\";\nimport { Box, Flex, Stack } from \"../../primitives/layout\";\nimport { Text } from \"../../primitives/typography\";\n\nexport interface InlineCreatableListProps<T> {\n\titems: T[];\n\tactiveIds?: string[];\n\tonToggle?: (id: string) => void;\n\tonCreate?: (name: string) => Promise<void>;\n\tgetItemId: (item: T) => string;\n\tgetItemLabel: (item: T) => string;\n\tgetItemColor?: (item: T) => string | undefined;\n\t/** @default \"wrap\" */\n\tvariant?: \"wrap\" | \"list\";\n\t/** @default \"New item...\" */\n\tcreatePlaceholder?: string;\n\t/** @default \"New item\" */\n\tcreateLabel?: string;\n\t/** @default <Plus size={14} /> */\n\tcreateIcon?: React.ReactNode;\n\t/** @default \"No items\" */\n\temptyText?: string;\n\tdisabled?: boolean;\n}\n\nfunction InlineCreatableListInner<T>(props: InlineCreatableListProps<T>) {\n\tconst {\n\t\titems,\n\t\tactiveIds = [],\n\t\tonToggle,\n\t\tonCreate,\n\t\tgetItemId,\n\t\tgetItemLabel,\n\t\tgetItemColor,\n\t\tvariant = \"wrap\",\n\t\tcreatePlaceholder = \"New item...\",\n\t\tcreateLabel = \"New item\",\n\t\tcreateIcon = <Plus size={14} />,\n\t\temptyText = \"No items\",\n\t\tdisabled = false,\n\t} = props;\n\n\tconst [isCreating, setIsCreating] = useState(false);\n\tconst [isSubmitting, setIsSubmitting] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tuseEffect(() => {\n\t\tif (isCreating) {\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t}, [isCreating]);\n\n\tconst activeIdSet = new Set(activeIds);\n\n\tconst handleSubmit = async (value: string) => {\n\t\tconst trimmed = value.trim();\n\t\tif (!trimmed) {\n\t\t\tsetIsCreating(false);\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting(true);\n\t\ttry {\n\t\t\tawait onCreate?.(trimmed);\n\t\t\tsetIsCreating(false);\n\t\t} catch {\n\t\t\t// Stay in create mode on error\n\t\t} finally {\n\t\t\tsetIsSubmitting(false);\n\t\t}\n\t};\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (e.key === \"Enter\") {\n\t\t\te.preventDefault();\n\t\t\thandleSubmit((e.target as HTMLInputElement).value);\n\t\t} else if (e.key === \"Escape\") {\n\t\t\tsetIsCreating(false);\n\t\t}\n\t};\n\n\tconst handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n\t\tconst value = e.target.value.trim();\n\t\tif (value) {\n\t\t\thandleSubmit(value);\n\t\t} else {\n\t\t\tsetIsCreating(false);\n\t\t}\n\t};\n\n\tconst wrapItemBaseStyle: React.CSSProperties = {\n\t\tborderRadius: \"6px\",\n\t\tpaddingInline: \"12px\",\n\t\tpaddingBlock: \"4px\",\n\t\tfontSize: \"0.875rem\",\n\t\tcursor: \"pointer\",\n\t\ttransition: \"all 0.15s\",\n\t\tborder: \"none\",\n\t\tlineHeight: 1.5,\n\t};\n\n\tconst listItemBaseStyle: React.CSSProperties = {\n\t\tpaddingInline: \"8px\",\n\t\tpaddingBlock: \"6px\",\n\t\tborderRadius: \"6px\",\n\t\tcursor: \"pointer\",\n\t\tfontSize: \"0.875rem\",\n\t\ttransition: \"all 0.15s\",\n\t\tborder: \"none\",\n\t\ttextAlign: \"start\",\n\t\twidth: \"100%\",\n\t\tdisplay: \"block\",\n\t};\n\n\tconst disabledStyle: React.CSSProperties = disabled\n\t\t? { opacity: 0.5, cursor: \"not-allowed\" }\n\t\t: {};\n\n\tconst renderWrapItems = () =>\n\t\titems.map((item) => {\n\t\t\tconst id = getItemId(item);\n\t\t\tconst label = getItemLabel(item);\n\t\t\tconst color = getItemColor?.(item);\n\t\t\tconst isActive = activeIdSet.has(id);\n\n\t\t\tlet bgStyle: string;\n\t\t\tlet colorStyle: string;\n\n\t\t\tif (isActive) {\n\t\t\t\tbgStyle = color ? `${color}33` : \"var(--chakra-colors-primary-subtle)\";\n\t\t\t\tcolorStyle = color ?? \"var(--chakra-colors-primary-fg)\";\n\t\t\t} else {\n\t\t\t\tbgStyle = \"var(--chakra-colors-bg-muted)\";\n\t\t\t\tcolorStyle = \"var(--chakra-colors-fg-default)\";\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Box\n\t\t\t\t\tkey={id}\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\trounded=\"md\"\n\t\t\t\t\tpx={3}\n\t\t\t\t\tpy={1}\n\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\tcursor={disabled ? \"not-allowed\" : \"pointer\"}\n\t\t\t\t\ttransition=\"all 0.15s\"\n\t\t\t\t\topacity={disabled ? 0.5 : 1}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...wrapItemBaseStyle,\n\t\t\t\t\t\t...disabledStyle,\n\t\t\t\t\t\tbackground: bgStyle,\n\t\t\t\t\t\tcolor: colorStyle,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={!disabled ? () => onToggle?.(id) : undefined}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Box>\n\t\t\t);\n\t\t});\n\n\tconst renderListItems = () =>\n\t\titems.map((item) => {\n\t\t\tconst id = getItemId(item);\n\t\t\tconst label = getItemLabel(item);\n\t\t\tconst isActive = activeIdSet.has(id);\n\n\t\t\tconst bgStyle = isActive\n\t\t\t\t? \"var(--chakra-colors-primary-subtle)\"\n\t\t\t\t: \"transparent\";\n\t\t\tconst colorStyle = isActive\n\t\t\t\t? \"var(--chakra-colors-primary-fg)\"\n\t\t\t\t: \"var(--chakra-colors-fg-default)\";\n\n\t\t\treturn (\n\t\t\t\t<Box\n\t\t\t\t\tkey={id}\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\tpx={2}\n\t\t\t\t\tpy={1.5}\n\t\t\t\t\trounded=\"md\"\n\t\t\t\t\tcursor={disabled ? \"not-allowed\" : \"pointer\"}\n\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\topacity={disabled ? 0.5 : 1}\n\t\t\t\t\t_hover={{ bg: isActive ? \"primary.subtle\" : \"bg.subtle\" }}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...listItemBaseStyle,\n\t\t\t\t\t\t...disabledStyle,\n\t\t\t\t\t\tbackground: bgStyle,\n\t\t\t\t\t\tcolor: colorStyle,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={!disabled ? () => onToggle?.(id) : undefined}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Box>\n\t\t\t);\n\t\t});\n\n\tconst showEmpty = items.length === 0 && !isCreating;\n\tconst showCreateLink = !!onCreate && !isCreating && !disabled;\n\n\treturn (\n\t\t<Box>\n\t\t\t{variant === \"wrap\" ? (\n\t\t\t\t<Flex wrap=\"wrap\" gap={2}>\n\t\t\t\t\t{showEmpty && (\n\t\t\t\t\t\t<Text fontSize=\"sm\" color=\"fg.muted\">\n\t\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{renderWrapItems()}\n\t\t\t\t</Flex>\n\t\t\t) : (\n\t\t\t\t<Stack gap={0}>\n\t\t\t\t\t{showEmpty && (\n\t\t\t\t\t\t<Text fontSize=\"sm\" color=\"fg.muted\" px={2} py={1.5}>\n\t\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{renderListItems()}\n\t\t\t\t</Stack>\n\t\t\t)}\n\n\t\t\t{showCreateLink && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"inline-flex\",\n\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t\tgap: \"4px\",\n\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\tfontSize: \"0.875rem\",\n\t\t\t\t\t\tcolor: \"var(--chakra-colors-fg-muted)\",\n\t\t\t\t\t\tmarginBlockStart: items.length > 0 ? \"8px\" : \"4px\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={() => setIsCreating(true)}\n\t\t\t\t>\n\t\t\t\t\t{createIcon}\n\t\t\t\t\t<span>{createLabel}</span>\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t{isCreating && (\n\t\t\t\t<Box mt={items.length > 0 ? 2 : 1}>\n\t\t\t\t\t<TextInput\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tplaceholder={createPlaceholder}\n\t\t\t\t\t\tdisabled={isSubmitting}\n\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t/>\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t</Box>\n\t);\n}\n\nexport const InlineCreatableList = InlineCreatableListInner as <T>(\n\tprops: InlineCreatableListProps<T>,\n) => React.ReactElement;\n(InlineCreatableList as { displayName?: string }).displayName =\n\t\"InlineCreatableList\";\n","import type React from \"react\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Switch, type SwitchProps } from \"../primitives/switch\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface LabeledSwitchProps extends SwitchProps {\n\tname: string;\n\tlabel: string;\n}\n\nexport const LabeledSwitch = ({\n\tref,\n\t...props\n}: LabeledSwitchProps & { ref?: React.Ref<HTMLInputElement> }) => {\n\tconst { name, label, ...rest } = props;\n\n\treturn (\n\t\t<Box>\n\t\t\t<Text asChild>\n\t\t\t\t<Flex>{label}</Flex>\n\t\t\t</Text>\n\t\t\t<Switch id={name} ref={ref} {...rest} />\n\t\t</Box>\n\t);\n};\nLabeledSwitch.displayName = \"LabeledSwitch\";\n","import { Dialog, type DialogRootProps, Portal } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { Button, IconButton } from \"../atoms/button\";\nimport { Flex, Spacer } from \"../primitives/layout\";\nimport { Separator } from \"../primitives/separator\";\n\nexport interface ModalProps\n\textends Omit<DialogRootProps, \"open\" | \"onOpenChange\"> {\n\t/** Whether the modal is open. */\n\topen: boolean;\n\t/** Called when the modal should close. */\n\tonClose: () => void;\n\t/** Header content (string or ReactNode). */\n\theader: string | React.ReactNode;\n\t/** Modal body content. */\n\tchildren: React.ReactNode;\n\t/** Custom footer. If provided, replaces the default Cancel/Save buttons. */\n\tfooter?: React.ReactNode;\n\t/** Dialog size variant. */\n\tsize?: DialogRootProps[\"size\"];\n\t/** Label for the close button. */\n\tcloseLabel?: string;\n\t/** Label for the save button. */\n\tsaveLabel?: string;\n\t/** Label for the cancel button. */\n\tcancelLabel?: string;\n\t/** Called when the save button is clicked. If not provided, no default footer is shown. */\n\tonSave?: () => void;\n\t/** Whether the save button is disabled. */\n\tsaveDisabled?: boolean;\n\t/** Whether the save action is in progress. Shows spinner on save button. */\n\tloading?: boolean;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n\topen,\n\tonClose,\n\theader,\n\tchildren,\n\tfooter,\n\tsize = \"xl\",\n\tcloseLabel = \"Close\",\n\tsaveLabel = \"Save\",\n\tcancelLabel = \"Cancel\",\n\tonSave,\n\tsaveDisabled = false,\n\tloading = false,\n\t...rest\n}) => {\n\tconst defaultFooter = onSave ? (\n\t\t<Flex gap={3} justify=\"flex-end\" w=\"full\">\n\t\t\t<Button variant=\"outline\" onClick={onClose}>\n\t\t\t\t{cancelLabel}\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tvariant=\"solid\"\n\t\t\t\tonClick={onSave}\n\t\t\t\tdisabled={saveDisabled || loading}\n\t\t\t\tloading={loading}\n\t\t\t>\n\t\t\t\t{saveLabel}\n\t\t\t</Button>\n\t\t</Flex>\n\t) : null;\n\n\tconst footerContent = footer !== undefined ? footer : defaultFooter;\n\n\treturn (\n\t\t<Dialog.Root\n\t\t\t{...rest}\n\t\t\topen={open}\n\t\t\tsize={size}\n\t\t\tonOpenChange={(details) => {\n\t\t\t\tif (!details.open) {\n\t\t\t\t\tonClose();\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<Portal>\n\t\t\t\t<Dialog.Backdrop />\n\t\t\t\t<Dialog.Positioner>\n\t\t\t\t\t<Dialog.Content>\n\t\t\t\t\t\t<Dialog.Header>\n\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t<Spacer />\n\t\t\t\t\t\t\t<Dialog.CloseTrigger asChild>\n\t\t\t\t\t\t\t\t<IconButton variant=\"ghost\" size=\"sm\" aria-label={closeLabel}>\n\t\t\t\t\t\t\t\t\t<X size={16} />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Dialog.CloseTrigger>\n\t\t\t\t\t\t</Dialog.Header>\n\n\t\t\t\t\t\t<Separator />\n\n\t\t\t\t\t\t<Dialog.Body>{children}</Dialog.Body>\n\n\t\t\t\t\t\t{footerContent && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Separator />\n\t\t\t\t\t\t\t\t<Dialog.Footer>{footerContent}</Dialog.Footer>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Dialog.Content>\n\t\t\t\t</Dialog.Positioner>\n\t\t\t</Portal>\n\t\t</Dialog.Root>\n\t);\n};\nModal.displayName = \"Modal\";\n","import type React from \"react\";\nimport { Checkbox } from \"../../primitives/checkbox\";\nimport { Box, Flex } from \"../../primitives/layout\";\n\nexport interface SelectableCardProps {\n\t/** Whether the card is currently selected. */\n\tselected?: boolean;\n\t/** Whether the checkbox is always visible (e.g. when any card in the grid is selected). */\n\tselectionVisible?: boolean;\n\t/** Called when the checkbox is toggled. When provided, a checkbox is rendered. */\n\tonSelect?: () => void;\n\t/** Called when the card body area is clicked (for navigation). */\n\tonClick?: () => void;\n\t/** Disables interaction. */\n\tdisabled?: boolean;\n\tchildren: React.ReactNode;\n}\n\nexport interface SelectableCardThumbnailProps {\n\t/** Height of the thumbnail area. Defaults to \"160px\". */\n\theight?: string;\n\tchildren: React.ReactNode;\n}\n\nexport interface SelectableCardBodyProps {\n\tchildren: React.ReactNode;\n}\n\nexport interface SelectableCardFooterProps {\n\tchildren: React.ReactNode;\n}\n\nconst SelectableCardThumbnail = ({\n\theight = \"160px\",\n\tchildren,\n}: SelectableCardThumbnailProps) => (\n\t<Box\n\t\th={height}\n\t\toverflow=\"hidden\"\n\t\tbg=\"bg.subtle\"\n\t\tdisplay=\"flex\"\n\t\talignItems=\"center\"\n\t\tjustifyContent=\"center\"\n\t>\n\t\t{children}\n\t</Box>\n);\nSelectableCardThumbnail.displayName = \"SelectableCard.Thumbnail\";\n\nconst SelectableCardBody = ({ children }: SelectableCardBodyProps) => (\n\t<Box p={3}>{children}</Box>\n);\nSelectableCardBody.displayName = \"SelectableCard.Body\";\n\nconst SelectableCardFooter = ({ children }: SelectableCardFooterProps) => (\n\t<Flex\n\t\tp={3}\n\t\tborderTopWidth=\"1px\"\n\t\tborderColor=\"border\"\n\t\tjustify=\"space-between\"\n\t\talign=\"center\"\n\t>\n\t\t{children}\n\t</Flex>\n);\nSelectableCardFooter.displayName = \"SelectableCard.Footer\";\n\nexport const SelectableCard = ({\n\tselected,\n\tselectionVisible,\n\tonSelect,\n\tonClick,\n\tdisabled,\n\tchildren,\n}: SelectableCardProps) => {\n\treturn (\n\t\t<Box role=\"group\" position=\"relative\">\n\t\t\t<Box\n\t\t\t\trounded=\"lg\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tborderWidth=\"1px\"\n\t\t\t\tborderColor=\"border\"\n\t\t\t\tbg=\"bg.surface\"\n\t\t\t\tcursor={onClick ? \"pointer\" : undefined}\n\t\t\t\tonClick={disabled ? undefined : onClick}\n\t\t\t\toutline={selected ? \"2px solid\" : undefined}\n\t\t\t\toutlineColor={selected ? \"accent\" : undefined}\n\t\t\t\toutlineOffset={selected ? \"-2px\" : undefined}\n\t\t\t\topacity={disabled ? 0.5 : undefined}\n\t\t\t\ttransition=\"all 0.2s\"\n\t\t\t\t_hover={{ shadow: \"md\" }}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Box>\n\t\t\t{onSelect && (\n\t\t\t\t<Box\n\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\ttop={2}\n\t\t\t\t\tinsetInlineStart={2}\n\t\t\t\t\tzIndex={1}\n\t\t\t\t\topacity={selected || selectionVisible ? 1 : 0}\n\t\t\t\t\t_groupHover={{ opacity: 1 }}\n\t\t\t\t\ttransition=\"opacity 0.15s\"\n\t\t\t\t>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tchecked={selected}\n\t\t\t\t\t\tonCheckedChange={() => onSelect()}\n\t\t\t\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t/>\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t</Box>\n\t);\n};\nSelectableCard.displayName = \"SelectableCard\";\n\nSelectableCard.Thumbnail = SelectableCardThumbnail;\nSelectableCard.Body = SelectableCardBody;\nSelectableCard.Footer = SelectableCardFooter;\n","// src/components/sidebar/sidebar.tsx\n\nimport { PanelLeftClose, PanelLeftOpen } from \"lucide-react\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, IconButton } from \"../../atoms/button\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport {\n\tMenuContent,\n\tMenuItem,\n\tMenuRoot,\n\tMenuTrigger,\n} from \"../../primitives/menu\";\nimport { Tooltip } from \"../../primitives/tooltip\";\nimport { Heading, Text } from \"../../primitives/typography\";\n\nconst COLLAPSED_WIDTH = \"64px\";\nconst EXPANDED_WIDTH = \"240px\";\nconst COLLAPSE_BREAKPOINT = 1440;\n\ninterface SidebarContextValue {\n\tcollapsed: boolean;\n\ttoggle: () => void;\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null);\n\nexport function useSidebarContext(): SidebarContextValue {\n\tconst ctx = React.useContext(SidebarContext);\n\tif (!ctx) {\n\t\tthrow new Error(\"useSidebarContext must be used inside <Sidebar>\");\n\t}\n\treturn ctx;\n}\n\nfunction getInitialCollapsed(\n\tstorageKey: string | undefined,\n\tdefaultCollapsed: boolean | undefined,\n): boolean {\n\tif (typeof window === \"undefined\") return defaultCollapsed ?? false;\n\tif (storageKey) {\n\t\tconst stored = window.localStorage.getItem(storageKey);\n\t\tif (stored === \"true\") return true;\n\t\tif (stored === \"false\") return false;\n\t}\n\tif (defaultCollapsed !== undefined) return defaultCollapsed;\n\treturn window.innerWidth < COLLAPSE_BREAKPOINT;\n}\n\n// Root\nexport interface SidebarProps {\n\tstorageKey?: string;\n\tdefaultCollapsed?: boolean;\n\tchildren: React.ReactNode;\n}\n\nconst SidebarRoot = ({\n\tstorageKey,\n\tdefaultCollapsed,\n\tchildren,\n}: SidebarProps) => {\n\tconst [collapsed, setCollapsed] = useState(() =>\n\t\tgetInitialCollapsed(storageKey, defaultCollapsed),\n\t);\n\n\tuseEffect(() => {\n\t\tif (storageKey) {\n\t\t\twindow.localStorage.setItem(storageKey, String(collapsed));\n\t\t}\n\t}, [collapsed, storageKey]);\n\n\tconst ctx = useMemo<SidebarContextValue>(\n\t\t() => ({\n\t\t\tcollapsed,\n\t\t\ttoggle: () => setCollapsed((c) => !c),\n\t\t}),\n\t\t[collapsed],\n\t);\n\n\treturn (\n\t\t<SidebarContext.Provider value={ctx}>\n\t\t\t<Flex\n\t\t\t\tdata-testid=\"sidebar\"\n\t\t\t\tdata-collapsed={collapsed ? \"true\" : \"false\"}\n\t\t\t\tdirection=\"column\"\n\t\t\t\tw={collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH}\n\t\t\t\tminH=\"100vh\"\n\t\t\t\tbg=\"bg-canvas\"\n\t\t\t\tborderRightWidth=\"1px\"\n\t\t\t\tborderRightColor=\"border\"\n\t\t\t\ttransition=\"width 250ms ease-out\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tposition=\"relative\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Flex>\n\t\t</SidebarContext.Provider>\n\t);\n};\nSidebarRoot.displayName = \"Sidebar\";\n\n// Header / Body / Footer\nconst SidebarHeader = ({ children }: { children: React.ReactNode }) => (\n\t<Box p=\"4\" borderBottomWidth=\"1px\" borderBottomColor=\"border\">\n\t\t{children}\n\t</Box>\n);\nSidebarHeader.displayName = \"Sidebar.Header\";\n\nconst SidebarBody = ({ children }: { children?: React.ReactNode }) => (\n\t<Box flex=\"1\" overflowY=\"auto\" py=\"3\">\n\t\t{children}\n\t</Box>\n);\nSidebarBody.displayName = \"Sidebar.Body\";\n\nconst SidebarFooter = ({ children }: { children: React.ReactNode }) => (\n\t<Box p=\"3\" borderTopWidth=\"1px\" borderTopColor=\"border\">\n\t\t{children}\n\t</Box>\n);\nSidebarFooter.displayName = \"Sidebar.Footer\";\n\n// Logo\nexport interface SidebarLogoProps {\n\twordmark: string;\n\tsubtitle?: string;\n}\n\nconst SidebarLogo = ({ wordmark, subtitle }: SidebarLogoProps) => {\n\tconst { collapsed, toggle } = useSidebarContext();\n\n\tconst toggleButton = (\n\t\t<IconButton\n\t\t\tdata-testid=\"sidebar-toggle\"\n\t\t\taria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n\t\t\tvariant=\"ghost\"\n\t\t\tsize=\"sm\"\n\t\t\tonClick={toggle}\n\t\t>\n\t\t\t{collapsed ? <PanelLeftOpen size={16} /> : <PanelLeftClose size={16} />}\n\t\t</IconButton>\n\t);\n\n\tif (collapsed) {\n\t\treturn (\n\t\t\t<Flex direction=\"column\" align=\"center\" gap=\"2\">\n\t\t\t\t<Heading\n\t\t\t\t\tas=\"span\"\n\t\t\t\t\tfontSize=\"lg\"\n\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\tcolor=\"primary.700\"\n\t\t\t\t\tletterSpacing=\"tight\"\n\t\t\t\t>\n\t\t\t\t\t{wordmark.charAt(0)}\n\t\t\t\t</Heading>\n\t\t\t\t{toggleButton}\n\t\t\t</Flex>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Flex\n\t\t\tdirection=\"row\"\n\t\t\talign=\"center\"\n\t\t\tjustify=\"space-between\"\n\t\t\tgap=\"2\"\n\t\t\tw=\"full\"\n\t\t>\n\t\t\t<Box mb={subtitle ? \"0\" : \"0\"}>\n\t\t\t\t<Heading\n\t\t\t\t\tas=\"span\"\n\t\t\t\t\tfontSize=\"lg\"\n\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\tcolor=\"primary.700\"\n\t\t\t\t\tletterSpacing=\"tight\"\n\t\t\t\t>\n\t\t\t\t\t{wordmark}\n\t\t\t\t</Heading>\n\t\t\t\t{subtitle && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tfontSize=\"2xs\"\n\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t\tletterSpacing=\"wider\"\n\t\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\t\tmt=\"0.5\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t\t{toggleButton}\n\t\t</Flex>\n\t);\n};\nSidebarLogo.displayName = \"Sidebar.Logo\";\n\n// Slot\nconst SidebarSlot = ({ children }: { children: React.ReactNode }) => (\n\t<Box mt=\"3\">{children}</Box>\n);\nSidebarSlot.displayName = \"Sidebar.Slot\";\n\n// Section — nav group\nexport interface SidebarSectionProps {\n\tlabel: string;\n\tchildren: React.ReactNode;\n}\n\nconst SidebarSection = ({ label, children }: SidebarSectionProps) => {\n\tconst { collapsed } = useSidebarContext();\n\treturn (\n\t\t<Box mb=\"4\" px=\"3\">\n\t\t\t{!collapsed && (\n\t\t\t\t<Text\n\t\t\t\t\tfontSize=\"2xs\"\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tletterSpacing=\"wider\"\n\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\tpx=\"2\"\n\t\t\t\t\tmb=\"1\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t<Flex direction=\"column\" gap=\"0.5\">\n\t\t\t\t{children}\n\t\t\t</Flex>\n\t\t</Box>\n\t);\n};\nSidebarSection.displayName = \"Sidebar.Section\";\n\n// Item — nav link with active state\nexport interface SidebarItemProps {\n\ticon?: React.ReactNode;\n\tchildren: React.ReactNode;\n\tasChild?: boolean;\n\tactive?: boolean;\n\tlabel?: string; // NEW — overrides children for tooltip text when collapsed\n}\n\nconst SidebarItem = ({\n\ticon,\n\tchildren,\n\tasChild,\n\tactive,\n\tlabel,\n}: SidebarItemProps) => {\n\tconst { collapsed } = useSidebarContext();\n\n\t// Styles must be plain CSS so they survive `style={...}` inline styling on\n\t// the cloned asChild element (e.g. <NavLink>). Chakra prop shorthand like\n\t// `bg=\"primary.50\"` or `borderRadius=\"md\"` is silently dropped by the\n\t// browser when applied as inline CSS — it only resolves through Chakra\n\t// components. We reference Chakra's emitted CSS variables directly.\n\tconst itemStyle: React.CSSProperties = {\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: collapsed ? \"center\" : \"flex-start\",\n\t\tgap: \"var(--chakra-spacing-2)\",\n\t\tpaddingInline: \"var(--chakra-spacing-3)\",\n\t\tpaddingBlock: \"var(--chakra-spacing-2)\",\n\t\tborderRadius: \"var(--chakra-radii-sm)\",\n\t\tfontSize: \"var(--chakra-font-sizes-sm)\",\n\t\tfontWeight: active\n\t\t\t? \"var(--chakra-font-weights-medium)\"\n\t\t\t: \"var(--chakra-font-weights-normal)\",\n\t\tcolor: active\n\t\t\t? \"var(--chakra-colors-primary-700)\"\n\t\t\t: \"var(--chakra-colors-default)\",\n\t\tbackground: active ? \"var(--chakra-colors-bg-surface)\" : \"transparent\",\n\t\tboxShadow: active\n\t\t\t? \"inset 0 0 0 1px var(--chakra-colors-border), 0 1px 2px rgba(0,0,0,0.04)\"\n\t\t\t: undefined,\n\t\tposition: \"relative\",\n\t\ttextDecoration: \"none\",\n\t};\n\n\tconst iconEl = icon ? (\n\t\t<Box display=\"inline-flex\" alignItems=\"center\" flexShrink={0}>\n\t\t\t{icon}\n\t\t</Box>\n\t) : null;\n\n\t// Right-tab indicator on active items, matching the design handoff\n\t// (3px × 14px primary.700 pill at the trailing edge of the row).\n\t// Hidden when collapsed (no room).\n\tconst activeTab =\n\t\tactive && !collapsed ? (\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: 3,\n\t\t\t\t\theight: 14,\n\t\t\t\t\tbackground: \"var(--chakra-colors-primary-700)\",\n\t\t\t\t\tborderRadius: 999,\n\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\tmarginInlineStart: \"auto\",\n\t\t\t\t}}\n\t\t\t/>\n\t\t) : null;\n\n\tconst tooltipLabel = label || (typeof children === \"string\" ? children : \"\");\n\n\tconst wrapTooltip = (node: React.ReactElement) =>\n\t\tcollapsed && tooltipLabel ? (\n\t\t\t<Tooltip content={tooltipLabel} positioning={{ placement: \"right\" }}>\n\t\t\t\t{node}\n\t\t\t</Tooltip>\n\t\t) : (\n\t\t\tnode\n\t\t);\n\n\tif (asChild) {\n\t\tconst child = React.Children.only(children) as React.ReactElement<\n\t\t\tReact.HTMLAttributes<HTMLElement> & {\n\t\t\t\thref?: string;\n\t\t\t\t\"data-testid\"?: string;\n\t\t\t\t\"data-active\"?: string;\n\t\t\t\tchildren?: React.ReactNode;\n\t\t\t}\n\t\t>;\n\t\tconst cloned = React.cloneElement(\n\t\t\tchild,\n\t\t\t{\n\t\t\t\t\"data-active\": active ? \"true\" : \"false\",\n\t\t\t\tstyle: {\n\t\t\t\t\t...itemStyle,\n\t\t\t\t\t...(child.props.style as React.CSSProperties | undefined),\n\t\t\t\t},\n\t\t\t},\n\t\t\ticonEl,\n\t\t\tcollapsed ? null : child.props.children,\n\t\t\tactiveTab,\n\t\t);\n\t\treturn wrapTooltip(cloned);\n\t}\n\n\treturn wrapTooltip(\n\t\t<Box\n\t\t\tdata-testid=\"sidebar-item\"\n\t\t\tdata-active={active ? \"true\" : \"false\"}\n\t\t\tstyle={itemStyle}\n\t\t>\n\t\t\t{iconEl}\n\t\t\t{!collapsed && children}\n\t\t\t{activeTab}\n\t\t</Box>,\n\t);\n};\nSidebarItem.displayName = \"Sidebar.Item\";\n\n// UserMenu\nexport interface SidebarUserMenuProps {\n\tuser: { name?: string; email?: string };\n\tchildren: React.ReactNode;\n}\n\nconst SidebarUserMenu = ({ user, children }: SidebarUserMenuProps) => {\n\tconst { collapsed } = useSidebarContext();\n\tconst initials = (user.name ?? user.email ?? \"\")\n\t\t.split(/\\s+/)\n\t\t.slice(0, 2)\n\t\t.map((s) => s[0]?.toUpperCase() ?? \"\")\n\t\t.join(\"\");\n\n\treturn (\n\t\t<MenuRoot>\n\t\t\t<MenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tdata-testid=\"sidebar-user-menu-trigger\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tw=\"full\"\n\t\t\t\t\tjustifyContent={collapsed ? \"center\" : \"flex-start\"}\n\t\t\t\t\tpx=\"2\"\n\t\t\t\t>\n\t\t\t\t\t<Flex align=\"center\" gap=\"2\" w={collapsed ? \"auto\" : \"full\"}>\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\t\t\tw=\"32px\"\n\t\t\t\t\t\t\th=\"32px\"\n\t\t\t\t\t\t\tborderRadius=\"full\"\n\t\t\t\t\t\t\tbg=\"primary.700\"\n\t\t\t\t\t\t\tcolor=\"white\"\n\t\t\t\t\t\t\tfontSize=\"xs\"\n\t\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t\t\tflexShrink={0}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{initials || \"?\"}\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t{!collapsed && (\n\t\t\t\t\t\t\t<Box textAlign=\"start\" flex=\"1\" minW=\"0\">\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\t\t\t\t\tlineClamp={1}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{user.name ?? user.email}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{user.email && user.name && (\n\t\t\t\t\t\t\t\t\t<Text fontSize=\"xs\" color=\"muted\" lineClamp={1}>\n\t\t\t\t\t\t\t\t\t\t{user.email}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Flex>\n\t\t\t\t</Button>\n\t\t\t</MenuTrigger>\n\t\t\t<MenuContent portalled={false}>{children}</MenuContent>\n\t\t</MenuRoot>\n\t);\n};\nSidebarUserMenu.displayName = \"Sidebar.UserMenu\";\n\n// UserMenuItem\nexport interface SidebarUserMenuItemProps {\n\tasChild?: boolean;\n\tonClick?: () => void;\n\tchildren: React.ReactNode;\n}\n\nconst SidebarUserMenuItem = ({\n\tasChild,\n\tonClick,\n\tchildren,\n}: SidebarUserMenuItemProps) => {\n\tif (asChild) {\n\t\tconst child = React.Children.only(children) as React.ReactElement;\n\t\treturn (\n\t\t\t<MenuItem value=\"link\" onClick={onClick}>\n\t\t\t\t{React.cloneElement(child, {})}\n\t\t\t</MenuItem>\n\t\t);\n\t}\n\treturn (\n\t\t<MenuItem\n\t\t\tvalue={typeof children === \"string\" ? children : \"item\"}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t{children}\n\t\t</MenuItem>\n\t);\n};\nSidebarUserMenuItem.displayName = \"Sidebar.UserMenuItem\";\n\n// Compose\nexport const Sidebar = Object.assign(SidebarRoot, {\n\tHeader: SidebarHeader,\n\tBody: SidebarBody,\n\tFooter: SidebarFooter,\n\tLogo: SidebarLogo,\n\tSlot: SidebarSlot,\n\tSection: SidebarSection,\n\tItem: SidebarItem,\n\tUserMenu: SidebarUserMenu,\n\tUserMenuItem: SidebarUserMenuItem,\n});\n","import { X } from \"lucide-react\";\nimport type React from \"react\";\nimport { useState } from \"react\";\nimport { IconButton } from \"../atoms/button\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface SidebarSectionProps {\n\tlabel: string;\n\tchildren:\n\t\t| React.ReactNode\n\t\t| ((state: {\n\t\t\t\tisEditing: boolean;\n\t\t\t\tsetEditing: (v: boolean) => void;\n\t\t }) => React.ReactNode);\n\tactionIcon?: React.ReactNode;\n\tonAction?: () => void;\n\teditContent?: React.ReactNode;\n\temptyText?: string;\n\tdefaultEditing?: boolean;\n}\n\nexport const SidebarSection: React.FC<SidebarSectionProps> = ({\n\tlabel,\n\tchildren,\n\tactionIcon,\n\tonAction,\n\teditContent,\n\temptyText,\n\tdefaultEditing,\n}) => {\n\tconst [isEditing, setEditing] = useState(defaultEditing ?? false);\n\n\tconst hasActionButton = Boolean(actionIcon && (onAction || editContent));\n\n\tconst handleActionClick = () => {\n\t\tif (onAction) {\n\t\t\tonAction();\n\t\t} else if (editContent) {\n\t\t\tsetEditing((prev) => !prev);\n\t\t}\n\t};\n\n\tconst resolvedIcon =\n\t\tisEditing && !onAction && editContent ? <X size={14} /> : actionIcon;\n\n\tlet content: React.ReactNode;\n\tif (typeof children === \"function\") {\n\t\tcontent = children({ isEditing, setEditing });\n\t} else if (isEditing && editContent) {\n\t\tcontent = editContent;\n\t} else {\n\t\tcontent = children;\n\t}\n\n\tconst isEmpty =\n\t\tcontent === null ||\n\t\tcontent === undefined ||\n\t\tcontent === \"\" ||\n\t\tcontent === false;\n\n\treturn (\n\t\t<Box py={3}>\n\t\t\t<Flex justify=\"space-between\" align=\"center\">\n\t\t\t\t<Text\n\t\t\t\t\tfontSize=\"xs\"\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tcolor=\"fg.muted\"\n\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\tletterSpacing=\"wide\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Text>\n\t\t\t\t{hasActionButton && (\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\taria-label={isEditing && !onAction ? \"Cancel edit\" : label}\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tonClick={handleActionClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedIcon}\n\t\t\t\t\t</IconButton>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t\t<Box py={2}>\n\t\t\t\t{isEmpty && emptyText ? (\n\t\t\t\t\t<Text fontSize=\"sm\" color=\"fg.subtle\">\n\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\tcontent\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t</Box>\n\t);\n};\n\nSidebarSection.displayName = \"SidebarSection\";\n","import { createContext } from \"@chakra-ui/react\";\nimport React, { useCallback } from \"react\";\n\nexport const [StepperProvider, useStepperContext] =\n\tcreateContext<UseStepperReturn>({\n\t\tname: \"StepperContext\",\n\t\terrorMessage:\n\t\t\t\"useStepperContext: `context` is undefined. Seems you forgot to wrap stepper components in `<Stepper />`\",\n\t});\n\nexport interface UseStepperProps {\n\tstep?: number | string;\n\tisCompleted?: boolean;\n\tonChange?(index: number): void;\n}\n\nexport function useStepper(props: UseStepperProps) {\n\tconst { step, onChange } = props;\n\n\tconst [activeIndex, setIndex] = React.useState(-1); // Set to -1 by default to prevent any initial transitions.\n\n\tconst stepsRef = React.useRef<string[]>([]);\n\n\tconst registerStep = React.useCallback((name: string) => {\n\t\tconst newSteps = [...stepsRef.current];\n\n\t\tif (newSteps.indexOf(name) === -1) {\n\t\t\tnewSteps.push(name);\n\t\t}\n\n\t\tstepsRef.current = newSteps;\n\t}, []);\n\n\tconst unregisterStep = React.useCallback((name: string) => {\n\t\tstepsRef.current = stepsRef.current.filter((step) => step !== name);\n\t}, []);\n\n\tconst setStep = useCallback((name: string) => {\n\t\tconst i = stepsRef.current.indexOf(name);\n\t\tif (i !== -1) {\n\t\t\tsetIndex(i);\n\t\t}\n\t}, []);\n\n\tconst nextStep = () => {\n\t\tsetIndex(activeIndex + 1);\n\t};\n\n\tconst prevStep = () => {\n\t\tsetIndex(activeIndex - 1);\n\t};\n\n\tReact.useEffect(() => {\n\t\tif (typeof step === \"string\") {\n\t\t\tsetStep(step);\n\t\t} else if (typeof step === \"number\") {\n\t\t\tsetIndex(step);\n\t\t} else if (activeIndex === -1) {\n\t\t\tsetIndex(0); // initiate the stepper by activating the first step\n\t\t}\n\t}, [step, activeIndex, setStep]);\n\n\tReact.useEffect(() => {\n\t\tonChange?.(activeIndex);\n\t}, [activeIndex, onChange]);\n\n\tconst context = {\n\t\tstepsRef,\n\t\tactiveStep: stepsRef.current[activeIndex],\n\t\tactiveIndex,\n\t\tisFirstStep: activeIndex === 0,\n\t\tisLastStep: activeIndex === stepsRef.current.length - 1,\n\t\tisCompleted: activeIndex >= stepsRef.current.length,\n\t\tsetIndex,\n\t\tsetStep,\n\t\tnextStep,\n\t\tprevStep,\n\t\tregisterStep,\n\t\tunregisterStep,\n\t};\n\n\treturn context;\n}\n\nexport type UseStepperReturn = ReturnType<typeof useStepper>;\n\nexport interface UseStepProps {\n\tname?: string;\n\tisActive?: boolean;\n\tisCompleted?: boolean;\n}\n\nexport function useStep(props: UseStepProps) {\n\tconst { name, isActive, isCompleted } = props;\n\tconst { registerStep, unregisterStep, activeStep } = useStepperContext();\n\n\tReact.useEffect(() => {\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\t\tregisterStep(name);\n\n\t\treturn () => {\n\t\t\tunregisterStep(name);\n\t\t};\n\t}, [name, registerStep, unregisterStep]);\n\n\treturn {\n\t\tisActive: name ? activeStep === name : isActive,\n\t\tisCompleted,\n\t};\n}\n\n/**\n * Returns props for a Prev Button\n */\nexport function useStepperPrevButton({ label = \"Back\" } = {}) {\n\tconst { isFirstStep, prevStep } = useStepperContext();\n\n\treturn {\n\t\tdisabled: isFirstStep,\n\t\tonClick: prevStep,\n\t\tchildren: label,\n\t};\n}\n\n/**\n * Returns props for a Next Button\n */\nexport function useStepperNextButton({\n\tlabel = \"Next\",\n\tsubmitLabel = \"Submit\",\n} = {}) {\n\tconst { isLastStep, isCompleted, nextStep } = useStepperContext();\n\n\treturn {\n\t\tdisabled: isCompleted,\n\t\tonClick: nextStep,\n\t\tchildren: isLastStep ? submitLabel : label,\n\t};\n}\n","import {\n\tchakra,\n\ttype HTMLChakraProps,\n\ttype SystemStyleObject,\n\tuseSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { Check } from \"lucide-react\";\nimport React, { createContext, useContext } from \"react\";\nimport { Collapsible } from \"../../primitives/collapsible\";\nimport {\n\tStepperProvider,\n\ttype UseStepperProps,\n\tuseStep,\n\tuseStepper,\n\tuseStepperContext,\n} from \"./use-stepper\";\n\n// ---------------------------------------------------------------------------\n// Inlined helpers (from core utils)\n// ---------------------------------------------------------------------------\n\nfunction getChildOfType(children: React.ReactNode, type: React.ComponentType) {\n\treturn (React.Children.toArray(children) as React.ReactElement[]).find(\n\t\t(item) => item.type === type,\n\t);\n}\n\nfunction getChildrenOfType<P = Record<string, unknown>>(\n\tchildren: React.ReactNode,\n\ttype: React.ComponentType<P> | React.ComponentType<P>[],\n) {\n\treturn (React.Children.toArray(children) as React.ReactElement<P>[]).filter(\n\t\t(item) =>\n\t\t\tArray.isArray(type)\n\t\t\t\t? type.some((component) => component === item.type)\n\t\t\t\t: item.type === type,\n\t);\n}\n\n// Simple replacement for the removed dataAttr helper\nconst dataAttr = (condition: boolean | undefined) =>\n\tcondition ? \"\" : undefined;\n\n// Simple replacement for the removed cx helper\nconst cx = (...classes: (string | undefined)[]) =>\n\tclasses.filter(Boolean).join(\" \");\n\n// ---------------------------------------------------------------------------\n// Styles context -- populated by useSlotRecipe in StepperContainer\n// ---------------------------------------------------------------------------\n\ntype StepperStyles = Record<string, SystemStyleObject>;\n\nconst StylesContext = createContext<StepperStyles>({});\nconst useStyles = () => useContext(StylesContext);\n\n// ---------------------------------------------------------------------------\n\nexport interface StepperProps\n\textends UseStepperProps,\n\t\tOmit<HTMLChakraProps<\"div\">, \"onChange\"> {\n\torientation?: \"horizontal\" | \"vertical\";\n\tvariant?: \"subtle\" | \"solid\";\n\tsize?: \"md\" | \"lg\";\n}\n\n/**\n * Display progress in multi-step workflows.\n *\n * Can be controlled or uncontrolled.\n */\nexport const Stepper = ({\n\tref,\n\t...props\n}: StepperProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst { orientation, children, ...containerProps } = props;\n\treturn (\n\t\t<StepperContainer ref={ref} orientation={orientation} {...containerProps}>\n\t\t\t<StepperSteps orientation={orientation}>{children}</StepperSteps>\n\t\t</StepperContainer>\n\t);\n};\nStepper.displayName = \"Stepper\";\n\nexport const StepperContainer = ({\n\tref,\n\t...props\n}: StepperProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst {\n\t\tchildren,\n\t\torientation = \"horizontal\",\n\t\tvariant,\n\t\tsize,\n\t\tonChange,\n\t\t...rest\n\t} = props;\n\n\tconst context = useStepper(props);\n\n\tconst recipe = useSlotRecipe({ key: \"stepper\" });\n\tconst styles = recipe({ variant, size, orientation });\n\n\treturn (\n\t\t<StylesContext.Provider value={styles}>\n\t\t\t<StepperProvider value={context}>\n\t\t\t\t<chakra.div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tcss={styles.container}\n\t\t\t\t\t{...rest}\n\t\t\t\t\tclassName={cx(\"stepper\", props.className)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</chakra.div>\n\t\t\t</StepperProvider>\n\t\t</StylesContext.Provider>\n\t);\n};\nStepperContainer.displayName = \"StepperContainer\";\n\nexport interface StepperStepsProps extends HTMLChakraProps<\"div\"> {\n\torientation?: \"horizontal\" | \"vertical\";\n\tstepComponent?: React.JSXElementConstructor<StepperStepProps>;\n}\n\n/**\n * Wrapper element containing the steps.\n */\nexport const StepperSteps: React.FC<StepperStepsProps> = (props) => {\n\tconst {\n\t\tchildren,\n\t\torientation = \"horizontal\",\n\t\tstepComponent,\n\t\t...rest\n\t} = props;\n\tconst styles = useStyles();\n\n\tconst { activeIndex } = useStepperContext();\n\n\tconst isVertical = orientation === \"vertical\";\n\n\tconst Step = stepComponent || StepperStep;\n\n\tconst steps = getChildrenOfType(children, Step);\n\n\tconst elements = steps.reduce<React.ReactElement[]>((memo, step, i, arr) => {\n\t\tmemo.push(\n\t\t\t<Step\n\t\t\t\tkey={step.key}\n\t\t\t\t{...step.props}\n\t\t\t\ticon={step.props.icon || i + 1}\n\t\t\t\tisActive={activeIndex === i}\n\t\t\t\tisCompleted={step.props.isCompleted || activeIndex > i}\n\t\t\t/>,\n\t\t);\n\n\t\tif (isVertical) {\n\t\t\tmemo.push(\n\t\t\t\t<StepperContent key={`content-${step.key}`} open={activeIndex === i}>\n\t\t\t\t\t{step.props.children}\n\t\t\t\t</StepperContent>,\n\t\t\t);\n\t\t}\n\n\t\tif (i < arr.length - 1) {\n\t\t\tmemo.push(\n\t\t\t\t<StepperSeparator\n\t\t\t\t\tkey={`separator-${step.key}`}\n\t\t\t\t\tisActive={i < activeIndex}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\treturn memo;\n\t}, []);\n\n\tconst completed = getChildOfType(children, StepperCompleted);\n\n\tconst content =\n\t\tactiveIndex >= steps.length ? (\n\t\t\tcompleted\n\t\t) : !isVertical ? (\n\t\t\t<StepperContent>{steps[activeIndex]?.props?.children}</StepperContent>\n\t\t) : null;\n\n\treturn (\n\t\t<>\n\t\t\t<chakra.div\n\t\t\t\tcss={styles.steps}\n\t\t\t\t{...rest}\n\t\t\t\tclassName={cx(\"stepper__steps\", props.className)}\n\t\t\t>\n\t\t\t\t{elements}\n\t\t\t</chakra.div>\n\t\t\t{content}\n\t\t</>\n\t);\n};\n\nStepperSteps.displayName = \"StepperSteps\";\n\nexport interface StepperContentProps extends HTMLChakraProps<\"div\"> {\n\t/**\n\t * Show or hide the content\n\t */\n\topen?: boolean;\n}\n\n/**\n * Renders the step content, is collapsible.\n */\nexport const StepperContent: React.FC<StepperContentProps> = (props) => {\n\tconst { children, open = true, ...rest } = props;\n\tconst styles = useStyles();\n\n\treturn (\n\t\t<chakra.div\n\t\t\tcss={styles.content}\n\t\t\t{...rest}\n\t\t\tclassName={cx(\"stepper__content\", props.className)}\n\t\t>\n\t\t\t<Collapsible.Root open={open}>\n\t\t\t\t<Collapsible.Content>{children}</Collapsible.Content>\n\t\t\t</Collapsible.Root>\n\t\t</chakra.div>\n\t);\n};\n\nStepperContent.displayName = \"StepperContent\";\n\nexport interface StepperIconProps extends HTMLChakraProps<\"div\"> {\n\ticon: React.ReactNode;\n\tisActive?: boolean;\n\tisCompleted?: boolean;\n}\n\n/**\n * Displays the current step or a completed icon.\n */\nexport const StepperIcon: React.FC<StepperIconProps> = (props) => {\n\tconst { icon, isActive, isCompleted, className, ...rest } = props;\n\n\tconst styles = useStyles();\n\n\tconst content: React.ReactNode = isCompleted ? <Check size={14} /> : icon;\n\n\treturn (\n\t\t<chakra.div\n\t\t\tcss={styles.icon}\n\t\t\t{...rest}\n\t\t\tclassName={cx(\"stepper__icon\", className)}\n\t\t\tdata-active={dataAttr(isActive)}\n\t\t>\n\t\t\t{content}\n\t\t</chakra.div>\n\t);\n};\n\nStepperIcon.displayName = \"StepperIcon\";\n\nexport interface StepperStepProps\n\textends Omit<HTMLChakraProps<\"div\">, \"title\"> {\n\t/**\n\t * The step title\n\t */\n\ttitle: React.ReactNode;\n\t/**\n\t * The step name, used for controlled steppers\n\t */\n\tname?: string;\n\t/**\n\t * Show an icon instead of the step number\n\t */\n\ticon?: React.ReactNode;\n\tisActive?: boolean;\n\tisCompleted?: boolean;\n}\n\n/**\n * Displays the icon and step title.\n */\nexport const StepperStep: React.FC<StepperStepProps> = (props) => {\n\tconst { title, icon, isActive, isCompleted, ...rest } = props;\n\tconst step = useStep(props);\n\tconst styles = useStyles();\n\n\treturn (\n\t\t<chakra.div\n\t\t\t{...rest}\n\t\t\tcss={styles.step}\n\t\t\tdata-active={dataAttr(step.isActive)}\n\t\t\tdata-completed={dataAttr(step.isCompleted)}\n\t\t\taria-current={step.isActive ? \"step\" : undefined}\n\t\t\tclassName={cx(\"stepper__step\", props.className)}\n\t\t>\n\t\t\t<StepperIcon icon={icon} isActive={isActive} isCompleted={isCompleted} />\n\t\t\t{title && <StepperStepTitle>{title}</StepperStepTitle>}\n\t\t</chakra.div>\n\t);\n};\n\nStepperStep.displayName = \"StepperStep\";\n\nexport interface StepperSeparatorProps extends HTMLChakraProps<\"div\"> {\n\tisActive?: boolean;\n}\n\n/**\n * The separator between steps.\n */\nexport const StepperSeparator: React.FC<StepperSeparatorProps> = (props) => {\n\tconst { isActive, ...rest } = props;\n\tconst styles = useStyles();\n\n\treturn (\n\t\t<chakra.div\n\t\t\t{...rest}\n\t\t\tdata-active={dataAttr(isActive)}\n\t\t\tclassName={cx(\"stepper__separator\", props.className)}\n\t\t\tcss={styles.separator}\n\t\t/>\n\t);\n};\n\nStepperSeparator.displayName = \"StepperSeparator\";\n\n/**\n * The step title.\n */\nexport const StepperStepTitle: React.FC<HTMLChakraProps<\"p\">> = (props) => {\n\tconst styles = useStyles();\n\treturn (\n\t\t<chakra.p\n\t\t\t{...props}\n\t\t\tcss={styles.title}\n\t\t\tclassName={cx(\"stepper__title\", props.className)}\n\t\t/>\n\t);\n};\n\nStepperStepTitle.displayName = \"StepperStepTitle\";\n\n/**\n * Shown when all steps have completed.\n */\nexport const StepperCompleted: React.FC<HTMLChakraProps<\"div\">> = (props) => {\n\tconst styles = useStyles();\n\treturn (\n\t\t<chakra.div\n\t\t\tcss={styles.completed}\n\t\t\t{...props}\n\t\t\tclassName={cx(\"stepper__completed\", props.className)}\n\t\t/>\n\t);\n};\n\nStepperCompleted.displayName = \"StepperCompleted\";\n","import { Timeline as ChakraTimeline } from \"@chakra-ui/react\";\n\n// Pass-through exports for full composition\nexport const TimelineRoot = ChakraTimeline.Root;\nTimelineRoot.displayName = \"TimelineRoot\";\n\nexport const TimelineItem = ChakraTimeline.Item;\nTimelineItem.displayName = \"TimelineItem\";\n\nexport const TimelineConnector = ChakraTimeline.Connector;\nTimelineConnector.displayName = \"TimelineConnector\";\n\nexport const TimelineSeparator = ChakraTimeline.Separator;\nTimelineSeparator.displayName = \"TimelineSeparator\";\n\nexport const TimelineIndicator = ChakraTimeline.Indicator;\nTimelineIndicator.displayName = \"TimelineIndicator\";\n\nexport const TimelineContent = ChakraTimeline.Content;\nTimelineContent.displayName = \"TimelineContent\";\n\nexport const TimelineTitle = ChakraTimeline.Title;\nTimelineTitle.displayName = \"TimelineTitle\";\n\nexport const TimelineDescription = ChakraTimeline.Description;\nTimelineDescription.displayName = \"TimelineDescription\";\n\nexport type TimelineRootProps = ChakraTimeline.RootProps;\nexport type TimelineItemProps = ChakraTimeline.ItemProps;\n","// src/components/toolbar.tsx\nimport { Search } from \"lucide-react\";\nimport type React from \"react\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\n// Root\nconst ToolbarRoot = ({ children }: { children: React.ReactNode }) => (\n\t<Flex\n\t\tdata-testid=\"toolbar\"\n\t\talign=\"center\"\n\t\tgap=\"4\"\n\t\tpx=\"4\"\n\t\th=\"48px\"\n\t\tbg=\"bg-subtle\"\n\t\tborderBottomWidth=\"1px\"\n\t\tborderBottomColor=\"border\"\n\t>\n\t\t{children}\n\t</Flex>\n);\nToolbarRoot.displayName = \"Toolbar\";\n\n// Search\nexport interface ToolbarSearchProps {\n\tplaceholder?: string;\n\tvalue: string;\n\tonChange: (next: string) => void;\n}\n\nconst ToolbarSearch = ({\n\tplaceholder,\n\tvalue,\n\tonChange,\n}: ToolbarSearchProps) => (\n\t<Flex align=\"center\" gap=\"2\" w=\"260px\" position=\"relative\">\n\t\t<Box position=\"absolute\" left=\"2\" color=\"muted\" pointerEvents=\"none\">\n\t\t\t<Search size={14} />\n\t\t</Box>\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\tplaceholder={placeholder}\n\t\t\tvalue={value}\n\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n\t\t\t\tonChange(e.target.value)\n\t\t\t}\n\t\t\tstyle={{\n\t\t\t\theight: \"32px\",\n\t\t\t\tpaddingLeft: \"2rem\",\n\t\t\t\tpaddingRight: \"0.5rem\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tborderWidth: \"1px\",\n\t\t\t\tborderStyle: \"solid\",\n\t\t\t\tborderRadius: \"var(--chakra-radii-md)\",\n\t\t\t\tfontSize: \"var(--chakra-font-sizes-sm)\",\n\t\t\t\tbackground: \"var(--chakra-colors-bg-surface, white)\",\n\t\t\t\toutline: \"none\",\n\t\t\t}}\n\t\t/>\n\t</Flex>\n);\nToolbarSearch.displayName = \"Toolbar.Search\";\n\n// Filters\nconst ToolbarFilters = ({ children }: { children: React.ReactNode }) => (\n\t<Flex align=\"center\" gap=\"2\">\n\t\t{children}\n\t</Flex>\n);\nToolbarFilters.displayName = \"Toolbar.Filters\";\n\n// FilterChip\nexport interface ToolbarFilterChipProps {\n\ticon?: React.ReactNode;\n\tactive?: boolean;\n\tonClick: () => void;\n\tchildren: React.ReactNode;\n}\n\nconst ToolbarFilterChip = ({\n\ticon,\n\tactive,\n\tonClick,\n\tchildren,\n}: ToolbarFilterChipProps) => (\n\t<button\n\t\ttype=\"button\"\n\t\tdata-testid=\"filter-chip\"\n\t\tdata-active={active ? \"true\" : \"false\"}\n\t\tonClick={onClick}\n\t\tstyle={{\n\t\t\tdisplay: \"inline-flex\",\n\t\t\talignItems: \"center\",\n\t\t\tgap: \"4px\",\n\t\t\tpadding: \"0 10px\",\n\t\t\theight: \"28px\",\n\t\t\tfontSize: \"var(--chakra-font-sizes-xs)\",\n\t\t\tfontWeight: \"var(--chakra-font-weights-medium)\",\n\t\t\tborderWidth: \"1px\",\n\t\t\tborderStyle: \"solid\",\n\t\t\tborderRadius: \"var(--chakra-radii-md)\",\n\t\t\tcursor: \"pointer\",\n\t\t}}\n\t>\n\t\t{icon && (\n\t\t\t<Box display=\"inline-flex\" alignItems=\"center\">\n\t\t\t\t{icon}\n\t\t\t</Box>\n\t\t)}\n\t\t{children}\n\t</button>\n);\nToolbarFilterChip.displayName = \"Toolbar.FilterChip\";\n\n// Right slot\nconst ToolbarRight = ({ children }: { children: React.ReactNode }) => (\n\t<Flex align=\"center\" gap=\"2\" ml=\"auto\">\n\t\t{children}\n\t</Flex>\n);\nToolbarRight.displayName = \"Toolbar.Right\";\n\n// Count\nconst ToolbarCount = ({ children }: { children: React.ReactNode }) => (\n\t<Text fontSize=\"xs\" color=\"muted\">\n\t\t{children}\n\t</Text>\n);\nToolbarCount.displayName = \"Toolbar.Count\";\n\n// Compose\nexport const Toolbar = Object.assign(ToolbarRoot, {\n\tSearch: ToolbarSearch,\n\tFilters: ToolbarFilters,\n\tFilterChip: ToolbarFilterChip,\n\tRight: ToolbarRight,\n\tCount: ToolbarCount,\n});\n","import {\n\tTreeView as ChakraTreeView,\n\tcreateTreeCollection,\n} from \"@chakra-ui/react\";\n\nexport { createTreeCollection };\nexport type { TreeCollection } from \"@chakra-ui/react\";\n\n// Pass-through exports for full composition\nexport const TreeViewRoot = ChakraTreeView.Root;\nTreeViewRoot.displayName = \"TreeViewRoot\";\n\nexport const TreeViewTree = ChakraTreeView.Tree;\nTreeViewTree.displayName = \"TreeViewTree\";\n\nexport const TreeViewBranch = ChakraTreeView.Branch;\nTreeViewBranch.displayName = \"TreeViewBranch\";\n\nexport const TreeViewBranchContent = ChakraTreeView.BranchContent;\nTreeViewBranchContent.displayName = \"TreeViewBranchContent\";\n\nexport const TreeViewBranchControl = ChakraTreeView.BranchControl;\nTreeViewBranchControl.displayName = \"TreeViewBranchControl\";\n\nexport const TreeViewBranchTrigger = ChakraTreeView.BranchTrigger;\nTreeViewBranchTrigger.displayName = \"TreeViewBranchTrigger\";\n\nexport const TreeViewBranchText = ChakraTreeView.BranchText;\nTreeViewBranchText.displayName = \"TreeViewBranchText\";\n\nexport const TreeViewBranchIndicator = ChakraTreeView.BranchIndicator;\nTreeViewBranchIndicator.displayName = \"TreeViewBranchIndicator\";\n\nexport const TreeViewItem = ChakraTreeView.Item;\nTreeViewItem.displayName = \"TreeViewItem\";\n\nexport const TreeViewItemText = ChakraTreeView.ItemText;\nTreeViewItemText.displayName = \"TreeViewItemText\";\n\nexport const TreeViewItemIndicator = ChakraTreeView.ItemIndicator;\nTreeViewItemIndicator.displayName = \"TreeViewItemIndicator\";\n\nexport const TreeViewNode = ChakraTreeView.Node;\n(TreeViewNode as { displayName?: string }).displayName = \"TreeViewNode\";\n\nexport const TreeViewLabel = ChakraTreeView.Label;\nTreeViewLabel.displayName = \"TreeViewLabel\";\n\nexport type TreeViewRootProps = ChakraTreeView.RootProps;\nexport type TreeViewBranchProps = ChakraTreeView.BranchProps;\nexport type TreeViewItemProps = ChakraTreeView.ItemProps;\n","import { Upload } from \"lucide-react\";\nimport type React from \"react\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"../atoms/button\";\nimport { Box, HStack, Stack } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface UploadDropZoneProps {\n\tonFiles: (files: File[]) => void;\n\tonError?: (error: { file: File; reason: \"size\" | \"type\" }) => void;\n\taccept?: string;\n\tmultiple?: boolean;\n\tcompact?: boolean;\n\tdisabled?: boolean;\n\tchildren?: React.ReactNode;\n\tmaxSize?: number;\n\tdragActiveText?: string;\n\tdropHintText?: string;\n\tbuttonLabel?: string;\n}\n\nfunction matchesAccept(file: File, accept: string): boolean {\n\tconst tokens = accept.split(\",\").map((t) => t.trim());\n\tfor (const token of tokens) {\n\t\tif (token.startsWith(\".\")) {\n\t\t\tif (file.name.toLowerCase().endsWith(token.toLowerCase())) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (token.includes(\"/*\")) {\n\t\t\tconst prefix = token.slice(0, token.indexOf(\"/*\"));\n\t\t\tif (file.type.startsWith(prefix)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (file.type === token) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\nexport const UploadDropZone = ({\n\tonFiles,\n\tonError,\n\taccept,\n\tmultiple = true,\n\tcompact = false,\n\tdisabled = false,\n\tchildren,\n\tmaxSize,\n\tdragActiveText = \"Release to upload\",\n\tdropHintText = \"Drag and drop files here\",\n\tbuttonLabel = \"Browse Files\",\n}: UploadDropZoneProps) => {\n\tconst [isDragActive, setIsDragActive] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tconst processFiles = (fileList: FileList | File[]) => {\n\t\tconst files = Array.from(fileList);\n\t\tconst accepted: File[] = [];\n\n\t\tfor (const file of files) {\n\t\t\tif (maxSize !== undefined && file.size > maxSize) {\n\t\t\t\tonError?.({ file, reason: \"size\" });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (accept && !matchesAccept(file, accept)) {\n\t\t\t\tonError?.({ file, reason: \"type\" });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\taccepted.push(file);\n\t\t}\n\n\t\tif (accepted.length > 0) {\n\t\t\tonFiles(multiple ? accepted : [accepted[0]]);\n\t\t}\n\t};\n\n\tconst handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t\tif (!disabled) {\n\t\t\tsetIsDragActive(true);\n\t\t}\n\t};\n\n\tconst handleDragLeave = () => {\n\t\tsetIsDragActive(false);\n\t};\n\n\tconst handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t\tsetIsDragActive(false);\n\t\tif (disabled) return;\n\t\tif (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n\t\t\tprocessFiles(e.dataTransfer.files);\n\t\t}\n\t};\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tif (e.target.files && e.target.files.length > 0) {\n\t\t\tprocessFiles(e.target.files);\n\t\t}\n\t\te.target.value = \"\";\n\t};\n\n\tconst handleBrowseClick = () => {\n\t\tif (!disabled) {\n\t\t\tinputRef.current?.click();\n\t\t}\n\t};\n\n\tconst defaultContent = isDragActive ? (\n\t\t<Text color=\"fg.muted\" fontSize=\"sm\">\n\t\t\t{dragActiveText}\n\t\t</Text>\n\t) : compact ? (\n\t\t<HStack gap={3} align=\"center\">\n\t\t\t<Upload size={24} />\n\t\t\t<Text color=\"fg.muted\" fontSize=\"sm\">\n\t\t\t\t{dropHintText}\n\t\t\t</Text>\n\t\t\t<Button\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tonClick={handleBrowseClick}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t{buttonLabel}\n\t\t\t</Button>\n\t\t</HStack>\n\t) : (\n\t\t<Stack align=\"center\" gap={3}>\n\t\t\t<Upload size={48} />\n\t\t\t<Text color=\"fg.muted\" fontSize=\"sm\">\n\t\t\t\t{dropHintText}\n\t\t\t</Text>\n\t\t\t<Button\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tonClick={handleBrowseClick}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t{buttonLabel}\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n\n\treturn (\n\t\t<Box\n\t\t\tborderStyle=\"dashed\"\n\t\t\tborderWidth=\"2px\"\n\t\t\tborderColor={isDragActive ? \"accent\" : \"border\"}\n\t\t\tbg={isDragActive ? \"bg.accent-subtle\" : \"bg.subtle\"}\n\t\t\trounded=\"lg\"\n\t\t\ttextAlign=\"center\"\n\t\t\ttransition=\"all 0.2s\"\n\t\t\tp={compact ? 3 : 6}\n\t\t\topacity={disabled ? 0.5 : 1}\n\t\t\tcursor={disabled ? \"not-allowed\" : \"default\"}\n\t\t\tonDragOver={handleDragOver}\n\t\t\tonDragLeave={handleDragLeave}\n\t\t\tonDrop={handleDrop}\n\t\t>\n\t\t\t<input\n\t\t\t\tref={inputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept={accept}\n\t\t\t\tmultiple={multiple}\n\t\t\t\tstyle={{ display: \"none\" }}\n\t\t\t\tonChange={handleInputChange}\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\t\t\t{children !== undefined ? children : defaultContent}\n\t\t</Box>\n\t);\n};\n\nUploadDropZone.displayName = \"UploadDropZone\";\n","import { Card } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface WidgetProps {\n\theading: string;\n\tsubHeading?: string;\n\t/** Icon element (e.g. a lucide-react icon component). */\n\ticon: React.ReactNode;\n\tchildren: React.ReactNode;\n}\n\nexport const Widget: React.FC<WidgetProps> = ({\n\theading,\n\tsubHeading,\n\ticon,\n\tchildren,\n}) => {\n\treturn (\n\t\t<Card.Root height=\"100%\" maxW=\"auto\" overflow=\"hidden\" bg=\"bg-surface\">\n\t\t\t<Card.Body>\n\t\t\t\t<Box marginBlockEnd=\"6\">\n\t\t\t\t\t<Flex justifyContent=\"space-between\" alignItems=\"center\">\n\t\t\t\t\t\t<Text fontWeight=\"semibold\">{heading}</Text>\n\t\t\t\t\t\t<Box color=\"subtle\">{icon}</Box>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{subHeading && (\n\t\t\t\t\t\t<Text fontWeight=\"medium\" fontSize=\"xs\" color=\"muted\">\n\t\t\t\t\t\t\t{subHeading}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t\t{children}\n\t\t\t</Card.Body>\n\t\t</Card.Root>\n\t);\n};\nWidget.displayName = \"Widget\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/bulk-action-bar/bulk-action-bar.tsx","../../src/components/card.tsx","../../src/components/card-list.tsx","../../src/components/card-list-data.tsx","../../src/components/card-list-item.tsx","../../src/components/chip-picker/chip-picker.tsx","../../src/components/context-rail/context-rail.tsx","../../src/components/data-table/cells/action-cell.tsx","../../src/components/data-table/cells/cell-utils.ts","../../src/components/data-table/cells/boolean-cell.tsx","../../src/components/data-table/cells/code-cell.tsx","../../src/components/data-table/cells/color-swatch-cell.tsx","../../src/components/data-table/cells/count-cell.tsx","../../src/components/data-table/cells/date-cell.tsx","../../src/components/data-table/cells/user-agent.ts","../../src/components/data-table/cells/device-cell.tsx","../../src/components/data-table/cells/identity-cell.tsx","../../src/components/data-table/cells/link-cell.tsx","../../src/components/data-table/cells/menu-cell.tsx","../../src/components/data-table/cells/number-cell.tsx","../../src/components/data-table/cells/slug-cell.tsx","../../src/components/data-table/cells/status-badge-cell.tsx","../../src/components/data-table/cells/switch-cell.tsx","../../src/components/data-table/cells/truncated-text-cell.tsx","../../src/components/data-table/cells/url-cell.tsx","../../src/components/pagination.tsx","../../src/components/data-table/data-table.tsx","../../src/components/drawer.tsx","../../src/components/fact-box.tsx","../../src/components/inline-creatable-list/inline-creatable-list.tsx","../../src/components/labeled-switch.tsx","../../src/components/modal.tsx","../../src/components/selectable-card/selectable-card.tsx","../../src/components/sidebar/sidebar.tsx","../../src/components/sidebar-section.tsx","../../src/components/stepper/use-stepper.tsx","../../src/components/stepper/stepper.tsx","../../src/components/timeline.tsx","../../src/components/toolbar.tsx","../../src/components/tree-view.tsx","../../src/components/upload-drop-zone.tsx","../../src/components/widget.tsx"],"names":["jsxs","ChakraCard","jsx","Children","X","useState","RouterLink","Ellipsis","ChevronRight","table","Checkbox","_","Portal","React","Plus","useRef","useEffect","Fragment","COLLAPSED_WIDTH","EXPANDED_WIDTH","COLLAPSE_BREAKPOINT","getInitialCollapsed","useMemo","SidebarSection","createContext","step","useContext","ChakraTimeline","ChakraTreeView","Card"],"mappings":"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","file":"index.js","sourcesContent":["import { X } from \"lucide-react\";\nimport type React from \"react\";\nimport { Button, IconButton } from \"../../atoms/button\";\nimport { Collapsible } from \"../../primitives/collapsible\";\nimport { Flex, HStack } from \"../../primitives/layout\";\nimport {\n\tPopover,\n\tPopoverContent,\n\tPopoverTrigger,\n} from \"../../primitives/popover\";\nimport { Text } from \"../../primitives/typography\";\n\nexport interface BulkActionBarProps {\n\t/** Number of currently selected items. */\n\tselectedCount: number;\n\t/** Called when the user clicks the clear-selection button. */\n\tonClear: () => void;\n\t/** Explicitly control visibility. Defaults to `selectedCount > 0`. */\n\tvisible?: boolean;\n\t/** CSS position for the bar. @default \"fixed\" */\n\tposition?: \"fixed\" | \"sticky\";\n\t/** Action buttons / popover actions to display. */\n\tchildren: React.ReactNode;\n\t/** Custom label renderer. Defaults to `\"{n} items selected\"`. */\n\tcountLabel?: (count: number) => string;\n}\n\nexport interface BulkActionProps {\n\t/** Visible button label. */\n\tlabel: string;\n\t/** Optional icon rendered before the label. */\n\ticon?: React.ReactNode;\n\t/** Called when the button is clicked. */\n\tonClick: () => void;\n\t/** Chakra color palette for the button. */\n\tcolorPalette?: string;\n\t/** Whether the button is disabled. */\n\tdisabled?: boolean;\n\t/** Whether the button shows a loading spinner. */\n\tloading?: boolean;\n}\n\nexport interface BulkPopoverActionProps {\n\t/** Visible trigger label. */\n\tlabel: string;\n\t/** Optional icon rendered before the label. */\n\ticon?: React.ReactNode;\n\t/** Content rendered inside the popover. */\n\tchildren: React.ReactNode;\n\t/** Whether the trigger button is disabled. */\n\tdisabled?: boolean;\n}\n\nconst BulkAction = ({\n\tlabel,\n\ticon,\n\tonClick,\n\tcolorPalette,\n\tdisabled,\n\tloading,\n}: BulkActionProps) => (\n\t<Button\n\t\tsize=\"sm\"\n\t\tonClick={onClick}\n\t\tcolorPalette={colorPalette}\n\t\tdisabled={disabled}\n\t\tloading={loading}\n\t>\n\t\t{icon}\n\t\t{label}\n\t</Button>\n);\nBulkAction.displayName = \"BulkActionBar.Action\";\n\nconst BulkPopoverAction = ({\n\tlabel,\n\ticon,\n\tchildren,\n\tdisabled,\n}: BulkPopoverActionProps) => (\n\t<Popover>\n\t\t<PopoverTrigger asChild>\n\t\t\t<Button size=\"sm\" disabled={disabled}>\n\t\t\t\t{icon}\n\t\t\t\t{label}\n\t\t\t</Button>\n\t\t</PopoverTrigger>\n\t\t<PopoverContent>{children}</PopoverContent>\n\t</Popover>\n);\nBulkPopoverAction.displayName = \"BulkActionBar.PopoverAction\";\n\nexport const BulkActionBar = ({\n\tselectedCount,\n\tonClear,\n\tvisible,\n\tposition = \"fixed\",\n\tchildren,\n\tcountLabel,\n}: BulkActionBarProps) => {\n\tconst isVisible = visible ?? selectedCount > 0;\n\tconst label = countLabel\n\t\t? countLabel(selectedCount)\n\t\t: `${selectedCount} items selected`;\n\n\treturn (\n\t\t<Collapsible.Root open={isVisible}>\n\t\t\t<Collapsible.Content>\n\t\t\t\t<Flex\n\t\t\t\t\tposition={position}\n\t\t\t\t\tbottom={0}\n\t\t\t\t\tinsetInline={0}\n\t\t\t\t\tzIndex=\"sticky\"\n\t\t\t\t\tbg=\"bg.surface\"\n\t\t\t\t\tborderTopWidth=\"1px\"\n\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\tshadow=\"lg\"\n\t\t\t\t\tpx={4}\n\t\t\t\t\tpy={3}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t>\n\t\t\t\t\t<HStack gap={2}>\n\t\t\t\t\t\t<Text fontWeight=\"medium\" fontSize=\"sm\">\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\taria-label=\"Clear selection\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tonClick={onClear}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X size={14} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<HStack gap={2}>{children}</HStack>\n\t\t\t\t</Flex>\n\t\t\t</Collapsible.Content>\n\t\t</Collapsible.Root>\n\t);\n};\nBulkActionBar.displayName = \"BulkActionBar\";\n\nBulkActionBar.Action = BulkAction;\nBulkActionBar.PopoverAction = BulkPopoverAction;\n","import { type CardRootProps, Card as ChakraCard } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { Heading } from \"../primitives/typography\";\n\nexport interface CardProps extends Omit<CardRootProps, \"title\"> {\n\tmaxW?: CardRootProps[\"maxW\"];\n\t/** Card title rendered in Card.Header. */\n\ttitle?: React.ReactNode;\n\t/** Custom header content. Overrides title if both provided. */\n\theader?: React.ReactNode;\n\t/** Footer content rendered in Card.Footer. */\n\tfooter?: React.ReactNode;\n\tchildren: React.ReactNode;\n}\n\nexport const Card = ({\n\tref,\n\tmaxW = \"full\",\n\ttitle,\n\theader,\n\tfooter,\n\tchildren,\n\t...props\n}: CardProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\treturn (\n\t\t<ChakraCard.Root\n\t\t\tref={ref}\n\t\t\tbg=\"bg-surface\"\n\t\t\tw=\"full\"\n\t\t\theight=\"full\"\n\t\t\tmaxW={maxW}\n\t\t\tmarginInline=\"auto\"\n\t\t\toverflow=\"hidden\"\n\t\t\t{...props}\n\t\t>\n\t\t\t{(header || title) && (\n\t\t\t\t<ChakraCard.Header>\n\t\t\t\t\t{header ?? <Heading size=\"md\">{title}</Heading>}\n\t\t\t\t</ChakraCard.Header>\n\t\t\t)}\n\t\t\t<ChakraCard.Body overflow=\"hidden\">{children}</ChakraCard.Body>\n\t\t\t{footer && <ChakraCard.Footer>{footer}</ChakraCard.Footer>}\n\t\t</ChakraCard.Root>\n\t);\n};\nCard.displayName = \"Card\";\n","import { Children } from \"react\";\nimport { Box, Flex, Grid, GridItem } from \"../primitives/layout\";\n\nexport interface CardListProps {\n\t/** Column header labels displayed above the grid. */\n\theaders: string[];\n\t/** Whether rows have a left-side component slot (e.g., avatar). */\n\thasComponentLeft?: boolean;\n\t/** Whether rows have a right-side menu slot. */\n\thasMenu?: boolean;\n\t/** CardListItem children to render as rows. */\n\tchildren?: React.ReactNode;\n\t/** Total number of grid columns. Defaults to 12. */\n\tcolumnCount?: number;\n\t/** Content to display when there are no rows. */\n\temptyState?: React.ReactNode;\n}\n\nexport const CardList: React.FC<CardListProps> = ({\n\tchildren,\n\theaders,\n\thasComponentLeft,\n\thasMenu,\n\tcolumnCount = 12,\n\temptyState,\n}) => {\n\tconst colSpan = Math.floor(columnCount / headers.length);\n\tconst isEmpty = Children.count(children) === 0;\n\n\treturn (\n\t\t<Box role=\"grid\" aria-colcount={headers.length}>\n\t\t\t<Flex pb={2} px={hasComponentLeft ? 0 : 6}>\n\t\t\t\t{hasComponentLeft && <Box minWidth={75} px={6} />}\n\t\t\t\t<Grid\n\t\t\t\t\tw=\"100%\"\n\t\t\t\t\ttemplateRows=\"repeat(1, 1fr)\"\n\t\t\t\t\ttemplateColumns={`repeat(${columnCount}, 1fr)`}\n\t\t\t\t\tgap={4}\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t>\n\t\t\t\t\t{headers.map((header) => (\n\t\t\t\t\t\t<GridItem key={header} colSpan={colSpan} role=\"columnheader\">\n\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t</GridItem>\n\t\t\t\t\t))}\n\t\t\t\t</Grid>\n\t\t\t\t{hasMenu && <Box minWidth=\"80px\" px={6} />}\n\t\t\t</Flex>\n\n\t\t\t<Flex direction=\"column\" gap=\"3\">\n\t\t\t\t{isEmpty && emptyState ? emptyState : children}\n\t\t\t</Flex>\n\t\t</Box>\n\t);\n};\nCardList.displayName = \"CardList\";\n","import { Tooltip } from \"../primitives/tooltip\";\nimport { Text, type TextProps } from \"../primitives/typography\";\n\nexport interface CardListDataProps extends TextProps {\n\t/** Cell content. Strings are shown in a tooltip on overflow. */\n\tchildren: React.ReactNode;\n}\n\nexport const CardListData: React.FC<CardListDataProps> = ({\n\tchildren,\n\t...restProps\n}) => {\n\tconst textContent =\n\t\ttypeof children === \"string\" || typeof children === \"number\"\n\t\t\t? String(children)\n\t\t\t: null;\n\n\treturn (\n\t\t<Tooltip content={textContent ?? \"\"} disabled={!textContent}>\n\t\t\t<Text lineClamp={1} color=\"muted\" {...restProps}>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</Tooltip>\n\t);\n};\nCardListData.displayName = \"CardListData\";\n","import { Menu, Portal } from \"@chakra-ui/react\";\nimport { Ellipsis } from \"lucide-react\";\nimport type React from \"react\";\nimport { Children } from \"react\";\nimport { Box, Flex, Grid, GridItem } from \"../primitives/layout\";\n\nexport interface CardListMenuItem<T = string> {\n\t/** Text label for the menu item. */\n\tlabel: string;\n\t/** Callback fired when the menu item is clicked. */\n\tonClick: () => void;\n\t/** Icon rendered before the label. */\n\ticon?: React.ReactNode;\n\t/** Text color override for the menu item. */\n\tcolor?: string;\n\t/** Value associated with the menu item. */\n\tvalue?: T;\n}\n\nexport interface CardListItemProps<T = string> {\n\t/** Whether the item is visually selected. */\n\tisActive?: boolean;\n\t/** Callback fired when the row is clicked. */\n\thandleItemClick?: () => void;\n\t/** Callback fired when the row is double-clicked. */\n\thandleItemDoubleClick?: () => void;\n\t/** Menu items rendered in the row's action menu. */\n\tmenuItems?: CardListMenuItem<T>[];\n\t/** Component rendered on the left side of the row (e.g., avatar). */\n\tcomponentLeft?: React.ReactNode;\n\t/** CardListData children to render as cells. */\n\tchildren: React.ReactNode;\n\t/** Total number of grid columns. Defaults to 12. */\n\tcolumnCount?: number;\n}\n\nexport const CardListItem = <T extends string = string>({\n\tisActive,\n\thandleItemClick,\n\thandleItemDoubleClick,\n\tmenuItems,\n\tcomponentLeft,\n\tchildren,\n\tcolumnCount = 12,\n}: CardListItemProps<T>) => {\n\tconst colSpan = Math.floor(columnCount / Children.count(children));\n\n\treturn (\n\t\t<Flex\n\t\t\trole=\"row\"\n\t\t\tboxShadow={isActive ? \"0 0 0 2px token(colors.accent)\" : \"sm\"}\n\t\t\tbg=\"bg-surface\"\n\t\t\tborderRadius=\"lg\"\n\t\t\talignItems=\"stretch\"\n\t\t\toverflow=\"hidden\"\n\t\t\ttransition=\"all 200ms ease\"\n\t\t>\n\t\t\t<Flex\n\t\t\t\twidth=\"100%\"\n\t\t\t\ttransition=\"all 200ms ease\"\n\t\t\t\t_hover={{ bg: \"bg-subtle\", cursor: \"pointer\" }}\n\t\t\t\talignItems=\"stretch\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tonClick={handleItemClick}\n\t\t\t\tonDoubleClick={handleItemDoubleClick}\n\t\t\t\t{...(handleItemClick && {\n\t\t\t\t\trole: \"button\",\n\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\tonKeyDown: (e: React.KeyboardEvent) => {\n\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\thandleItemClick();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{componentLeft && (\n\t\t\t\t\t<Box\n\t\t\t\t\t\twidth={75}\n\t\t\t\t\t\tpx={6}\n\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{componentLeft}\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\n\t\t\t\t<Grid\n\t\t\t\t\tpx={componentLeft === undefined ? 6 : 0}\n\t\t\t\t\tpy={4}\n\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\ttemplateRows=\"repeat(1, 1fr)\"\n\t\t\t\t\ttemplateColumns={`repeat(${columnCount}, 1fr)`}\n\t\t\t\t\tgap={4}\n\t\t\t\t>\n\t\t\t\t\t{Children.map(children, (child, index) => (\n\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: no alternative for key\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tcolSpan={colSpan}\n\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{child}\n\t\t\t\t\t\t</GridItem>\n\t\t\t\t\t))}\n\t\t\t\t</Grid>\n\t\t\t</Flex>\n\t\t\t{menuItems && (\n\t\t\t\t<Menu.Root>\n\t\t\t\t\t<Menu.Trigger\n\t\t\t\t\t\twidth=\"80px\"\n\t\t\t\t\t\tpx={6}\n\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\tbg=\"accent\"\n\t\t\t\t\t\tcolor=\"on-accent\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\t_hover={{ opacity: 0.9 }}\n\t\t\t\t\t\taria-label=\"Row actions\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Ellipsis size={20} />\n\t\t\t\t\t</Menu.Trigger>\n\t\t\t\t\t<Portal>\n\t\t\t\t\t\t<Menu.Positioner>\n\t\t\t\t\t\t\t<Menu.Content>\n\t\t\t\t\t\t\t\t{menuItems.map((menuItem) => (\n\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\tkey={menuItem.label}\n\t\t\t\t\t\t\t\t\t\tonClick={menuItem.onClick}\n\t\t\t\t\t\t\t\t\t\tcolor={menuItem.color}\n\t\t\t\t\t\t\t\t\t\tvalue={menuItem.value ?? menuItem.label}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{menuItem.icon}\n\t\t\t\t\t\t\t\t\t\t{menuItem.label}\n\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</Menu.Content>\n\t\t\t\t\t\t</Menu.Positioner>\n\t\t\t\t\t</Portal>\n\t\t\t\t</Menu.Root>\n\t\t\t)}\n\t\t</Flex>\n\t);\n};\n(CardListItem as { displayName?: string }).displayName = \"CardListItem\";\n","import { Plus, X } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { useState } from \"react\";\nimport { IconButton } from \"../../atoms/button\";\nimport { TextInput } from \"../../atoms/text-input\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport {\n\tPopover,\n\tPopoverBody,\n\tPopoverContent,\n\tPopoverTrigger,\n} from \"../../primitives/popover\";\nimport { Text } from \"../../primitives/typography\";\n\nexport interface ChipPickerProps<T> {\n\tassigned: T[];\n\tavailable: T[];\n\tonAdd: (item: T) => void;\n\tonRemove: (item: T) => void;\n\tgetItemId: (item: T) => string;\n\tgetItemLabel: (item: T) => string;\n\tgetItemColor?: (item: T) => string | undefined;\n\t/** Label for the add button. @default \"Add\" */\n\taddLabel?: string;\n\t/** Label shown when nothing is assigned. @default \"None\" */\n\temptyLabel?: string;\n\t/** Whether to show a search input inside the popover. @default false */\n\tsearchable?: boolean;\n\tdisabled?: boolean;\n\tloading?: boolean;\n}\n\nfunction ChipPickerInner<T>(props: ChipPickerProps<T>) {\n\tconst {\n\t\tassigned,\n\t\tavailable,\n\t\tonAdd,\n\t\tonRemove,\n\t\tgetItemId,\n\t\tgetItemLabel,\n\t\tgetItemColor,\n\t\taddLabel = \"Add\",\n\t\temptyLabel = \"None\",\n\t\tsearchable = false,\n\t\tdisabled = false,\n\t} = props;\n\n\tconst [search, setSearch] = useState(\"\");\n\n\tconst assignedIds = new Set(assigned.map(getItemId));\n\tconst unassigned = available.filter(\n\t\t(item) => !assignedIds.has(getItemId(item)),\n\t);\n\n\tconst filteredUnassigned =\n\t\tsearchable && search.trim()\n\t\t\t? unassigned.filter((item) =>\n\t\t\t\t\tgetItemLabel(item).toLowerCase().includes(search.toLowerCase()),\n\t\t\t\t)\n\t\t\t: unassigned;\n\n\treturn (\n\t\t<Flex wrap=\"wrap\" gap={2} align=\"center\">\n\t\t\t{assigned.length === 0 && (\n\t\t\t\t<Text fontSize=\"sm\" color=\"fg.muted\">\n\t\t\t\t\t{emptyLabel}\n\t\t\t\t</Text>\n\t\t\t)}\n\n\t\t\t{assigned.map((item) => {\n\t\t\t\tconst id = getItemId(item);\n\t\t\t\tconst label = getItemLabel(item);\n\t\t\t\tconst color = getItemColor?.(item);\n\n\t\t\t\treturn (\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\tborderRadius=\"full\"\n\t\t\t\t\t\tpx={3}\n\t\t\t\t\t\tpy={1}\n\t\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\t\tdisplay=\"inline-flex\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tgap={1}\n\t\t\t\t\t\tbg={color ? `${color}33` : \"bg.muted\"}\n\t\t\t\t\t\tcolor={color ?? \"fg.default\"}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text as=\"span\" lineHeight=\"1\">\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tdisplay: \"inline-flex\",\n\t\t\t\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\t\t\t\tlineHeight: 1,\n\t\t\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\t\t\t\tcolor: \"inherit\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\taria-label={`Remove ${label}`}\n\t\t\t\t\t\t\t\tonClick={() => onRemove(item)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X size={12} />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Flex>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{unassigned.length > 0 && !disabled && (\n\t\t\t\t<Popover>\n\t\t\t\t\t<PopoverTrigger asChild>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\taria-label={addLabel}\n\t\t\t\t\t\t\tminWidth=\"44px\"\n\t\t\t\t\t\t\tminHeight=\"44px\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Plus size={14} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</PopoverTrigger>\n\t\t\t\t\t<PopoverContent portalled>\n\t\t\t\t\t\t<PopoverBody>\n\t\t\t\t\t\t\t{searchable && (\n\t\t\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tmb={2}\n\t\t\t\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n\t\t\t\t\t\t\t\t\t\tsetSearch(e.target.value)\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{filteredUnassigned.map((item) => (\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tkey={getItemId(item)}\n\t\t\t\t\t\t\t\t\tpx={2}\n\t\t\t\t\t\t\t\t\tpy={1.5}\n\t\t\t\t\t\t\t\t\trounded=\"md\"\n\t\t\t\t\t\t\t\t\tcursor=\"pointer\"\n\t\t\t\t\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\t\t\t\t\t_hover={{ bg: \"bg.subtle\" }}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tonAdd(item);\n\t\t\t\t\t\t\t\t\t\tsetSearch(\"\");\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\t\t{getItemLabel(item)}\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t{filteredUnassigned.length === 0 && (\n\t\t\t\t\t\t\t\t<Text fontSize=\"sm\" color=\"fg.muted\" px={2} py={1.5}>\n\t\t\t\t\t\t\t\t\tNo results\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</PopoverBody>\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t</Popover>\n\t\t\t)}\n\t\t</Flex>\n\t);\n}\n\nexport const ChipPicker = ChipPickerInner as <T>(\n\tprops: ChipPickerProps<T>,\n) => React.ReactElement;\n(ChipPicker as { displayName?: string }).displayName = \"ChipPicker\";\n","// src/components/context-rail/context-rail.tsx\nimport { ChevronRight, PanelRightClose, PanelRightOpen } from \"lucide-react\";\nimport type React from \"react\";\nimport { createContext, useContext, useEffect, useRef, useState } from \"react\";\nimport { IconButton } from \"../../atoms/button\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport { Heading, Text } from \"../../primitives/typography\";\n\nconst COLLAPSED_WIDTH = \"44px\";\nconst EXPANDED_WIDTH = \"360px\";\nconst COLLAPSE_BREAKPOINT = 1440;\n\n/**\n * Internal context that signals \"I am a `<ContextRail>` Root\". Used by\n * `<ContextRail.Header>` and `<ContextRail.Section>` to detect when they\n * are rendered outside the Root and emit a dev-mode warning.\n *\n * The value is intentionally minimal — presence is the signal.\n */\nconst RailRootContext = createContext<boolean>(false);\n\n/**\n * Dev-mode helper: warn once per component-mount when a rail child is\n * rendered without a `<ContextRail>` Root ancestor. No-op in production.\n */\nfunction isDevMode(): boolean {\n\t// `process` is a Node global; bundlers (Vite, tsup) replace\n\t// `process.env.NODE_ENV` at build time, so this works in both Node\n\t// (vitest, SSR) and browser bundles. We avoid `@types/node` by\n\t// reaching through `globalThis`.\n\tconst proc = (globalThis as { process?: { env?: { NODE_ENV?: string } } })\n\t\t.process;\n\treturn proc?.env?.NODE_ENV !== \"production\";\n}\n\nfunction useWarnIfOutsideRailRoot(componentName: string) {\n\tconst insideRoot = useContext(RailRootContext);\n\tconst warnedRef = useRef(false);\n\tuseEffect(() => {\n\t\tif (!insideRoot && !warnedRef.current && isDevMode()) {\n\t\t\twarnedRef.current = true;\n\t\t\tconsole.warn(\n\t\t\t\t`${componentName} was rendered outside <ContextRail>. Wrap rail content in <ContextRail> to get column width, collapse toggle, inner padding, and persistence. See docs/page-patterns.md.`,\n\t\t\t);\n\t\t}\n\t}, [insideRoot, componentName]);\n}\n\nfunction getInitialCollapsed(storageKey?: string): boolean {\n\tif (typeof window === \"undefined\") return false;\n\tif (storageKey) {\n\t\tconst stored = window.localStorage.getItem(storageKey);\n\t\tif (stored === \"true\") return true;\n\t\tif (stored === \"false\") return false;\n\t}\n\treturn window.innerWidth < COLLAPSE_BREAKPOINT;\n}\n\nexport interface ContextRailProps {\n\tstorageKey?: string;\n\tchildren: React.ReactNode;\n}\n\nconst ContextRailRoot = ({ storageKey, children }: ContextRailProps) => {\n\tconst [collapsed, setCollapsed] = useState(() =>\n\t\tgetInitialCollapsed(storageKey),\n\t);\n\n\tuseEffect(() => {\n\t\tif (storageKey) {\n\t\t\twindow.localStorage.setItem(storageKey, String(collapsed));\n\t\t}\n\t}, [collapsed, storageKey]);\n\n\treturn (\n\t\t<RailRootContext.Provider value={true}>\n\t\t\t<Box\n\t\t\t\tdata-testid=\"context-rail\"\n\t\t\t\tdata-collapsed={collapsed ? \"true\" : \"false\"}\n\t\t\t\tw={collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH}\n\t\t\t\tminH=\"100vh\"\n\t\t\t\ttransition=\"width 250ms ease-out\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tposition=\"relative\"\n\t\t\t>\n\t\t\t\t{collapsed ? (\n\t\t\t\t\t<Flex direction=\"column\" align=\"center\" pt=\"3\" gap=\"3\">\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tdata-testid=\"context-rail-toggle\"\n\t\t\t\t\t\t\taria-label=\"Expand context rail\"\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tonClick={() => setCollapsed(false)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PanelRightOpen size={16} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Flex>\n\t\t\t\t) : (\n\t\t\t\t\t<Flex direction=\"column\" h=\"full\">\n\t\t\t\t\t\t<Flex justify=\"flex-end\" px=\"3\" pt=\"3\">\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\tdata-testid=\"context-rail-toggle\"\n\t\t\t\t\t\t\t\taria-label=\"Collapse context rail\"\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tonClick={() => setCollapsed(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PanelRightClose size={16} />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t<Box flex=\"1\" overflowY=\"auto\" px=\"4\" pb=\"4\">\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Flex>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t</RailRootContext.Provider>\n\t);\n};\nContextRailRoot.displayName = \"ContextRail\";\n\n// Header\nexport interface ContextRailHeaderProps {\n\teyebrow?: React.ReactNode;\n\ttitle: React.ReactNode;\n}\n\nconst ContextRailHeader = ({ eyebrow, title }: ContextRailHeaderProps) => {\n\tuseWarnIfOutsideRailRoot(\"ContextRail.Header\");\n\treturn (\n\t\t<Box mb=\"4\" pb=\"3\" borderBottomWidth=\"1px\" borderBottomColor=\"border\">\n\t\t\t{eyebrow && (\n\t\t\t\t<Text\n\t\t\t\t\tfontSize=\"2xs\"\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tletterSpacing=\"wider\"\n\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\tmb=\"1\"\n\t\t\t\t>\n\t\t\t\t\t{eyebrow}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t<Heading\n\t\t\t\tas=\"h2\"\n\t\t\t\tfontSize=\"lg\"\n\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\tcolor=\"default\"\n\t\t\t\tletterSpacing=\"-0.01em\"\n\t\t\t>\n\t\t\t\t{title}\n\t\t\t</Heading>\n\t\t</Box>\n\t);\n};\nContextRailHeader.displayName = \"ContextRail.Header\";\n\n// Section\nexport interface ContextRailSectionProps {\n\tid: string;\n\ticon?: React.ReactNode;\n\tlabel: string;\n\tdefaultOpen?: boolean;\n\taction?: React.ReactNode;\n\tchildren: React.ReactNode;\n}\n\nconst ContextRailSection = ({\n\tid,\n\ticon,\n\tlabel,\n\tdefaultOpen = true,\n\taction,\n\tchildren,\n}: ContextRailSectionProps) => {\n\tuseWarnIfOutsideRailRoot(\"ContextRail.Section\");\n\tconst [open, setOpen] = useState(defaultOpen);\n\treturn (\n\t\t<Box\n\t\t\tdata-section-id={id}\n\t\t\tborderBottomWidth=\"1px\"\n\t\t\tborderBottomColor=\"border-muted\"\n\t\t>\n\t\t\t<Flex w=\"full\" align=\"center\" gap=\"2\">\n\t\t\t\t<Flex\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\t{...({ type: \"button\" } as object)}\n\t\t\t\t\tonClick={() => setOpen((o) => !o)}\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\tflex=\"1\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap=\"2\"\n\t\t\t\t\tpx=\"0\"\n\t\t\t\t\tpy=\"3\"\n\t\t\t\t\tbg=\"transparent\"\n\t\t\t\t\tborder=\"none\"\n\t\t\t\t\tcursor=\"pointer\"\n\t\t\t\t\ttextAlign=\"left\"\n\t\t\t\t\t_hover={{ bg: \"bg-subtle\" }}\n\t\t\t\t>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdisplay=\"inline-flex\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\t\ttransform={open ? \"rotate(90deg)\" : \"none\"}\n\t\t\t\t\t\ttransition=\"transform 120ms ease-out\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronRight size={12} aria-hidden />\n\t\t\t\t\t</Box>\n\t\t\t\t\t{icon && (\n\t\t\t\t\t\t<Box display=\"inline-flex\" alignItems=\"center\" color=\"muted\">\n\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t)}\n\t\t\t\t\t<Heading\n\t\t\t\t\t\tas=\"h3\"\n\t\t\t\t\t\tfontSize=\"2xs\"\n\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t\tletterSpacing=\"wider\"\n\t\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\t\tflex=\"1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Heading>\n\t\t\t\t</Flex>\n\t\t\t\t{action && <Box py=\"3\">{action}</Box>}\n\t\t\t</Flex>\n\t\t\t{open && <Box pb=\"3\">{children}</Box>}\n\t\t</Box>\n\t);\n};\nContextRailSection.displayName = \"ContextRail.Section\";\n\n// Footer\nconst ContextRailFooter = ({ children }: { children: React.ReactNode }) => (\n\t<Box mt=\"4\" pt=\"4\" borderTopWidth=\"1px\" borderTopColor=\"border-muted\">\n\t\t{children}\n\t</Box>\n);\nContextRailFooter.displayName = \"ContextRail.Footer\";\n\n// Compose\nexport const ContextRail = Object.assign(ContextRailRoot, {\n\tHeader: ContextRailHeader,\n\tSection: ContextRailSection,\n\tFooter: ContextRailFooter,\n});\n","import type React from \"react\";\nimport { IconButton, type IconButtonProps } from \"../../../atoms/button\";\nimport { HStack } from \"../../../primitives/layout\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\n\nexport interface ActionCellAction {\n\ticon: React.ElementType;\n\tlabel: string;\n\tonClick?: () => void;\n\t/** Renders the action as a link. Mutually exclusive with onClick. */\n\thref?: string;\n\t/** Adds a download attribute to the link. Only used with href. */\n\tdownload?: boolean | string;\n\t/** Link target (e.g., \"_blank\"). Only used with href. */\n\ttarget?: string;\n\tvariant?: IconButtonProps[\"variant\"];\n\tcolorPalette?: string;\n\tdisabled?: boolean;\n}\n\nexport interface ActionCellProps {\n\tactions: ActionCellAction[];\n}\n\nexport const ActionCell: React.FC<ActionCellProps> = ({ actions }) => {\n\treturn (\n\t\t<HStack gap={1}>\n\t\t\t{actions.map((action) => (\n\t\t\t\t<Tooltip key={action.label} content={action.label}>\n\t\t\t\t\t{action.href ? (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\taria-label={action.label}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tvariant={action.variant ?? \"ghost\"}\n\t\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\t\tasChild\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={action.href}\n\t\t\t\t\t\t\t\tdownload={action.download}\n\t\t\t\t\t\t\t\ttarget={action.target}\n\t\t\t\t\t\t\t\trel={\n\t\t\t\t\t\t\t\t\taction.target === \"_blank\" ? \"noopener noreferrer\" : undefined\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<action.icon size={16} />\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\taria-label={action.label}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tvariant={action.variant ?? \"ghost\"}\n\t\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<action.icon size={16} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t)}\n\t\t\t\t</Tooltip>\n\t\t\t))}\n\t\t</HStack>\n\t);\n};\nActionCell.displayName = \"ActionCell\";\n","/** Dash shown for null/undefined cell values. */\nexport const emptyCellValue = \"—\";\n\n/** Truncate text to maxLength, appending \"…\" if exceeded. */\nexport function truncateText(text: string, maxLength: number): string {\n\tif (text.length <= maxLength) return text;\n\treturn `${text.slice(0, maxLength)}…`;\n}\n\n/** Return singular or plural form based on count. */\nexport function pluralize(\n\tcount: number,\n\tsingular: string,\n\tplural: string,\n): string {\n\treturn count === 1 ? singular : plural;\n}\n","import type React from \"react\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface BooleanCellProps {\n\tvalue: boolean | null | undefined;\n\ttrueLabel?: string;\n\tfalseLabel?: string;\n}\n\nexport const BooleanCell: React.FC<BooleanCellProps> = ({\n\tvalue,\n\ttrueLabel = \"Yes\",\n\tfalseLabel = \"No\",\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\treturn <span>{value ? trueLabel : falseLabel}</span>;\n};\nBooleanCell.displayName = \"BooleanCell\";\n","import type React from \"react\";\nimport { Code } from \"../../../primitives/typography\";\nimport { emptyCellValue, truncateText } from \"./cell-utils\";\n\nexport interface CodeCellProps {\n\tvalue: string | null | undefined;\n\tmaxLength?: number;\n}\n\nexport const CodeCell: React.FC<CodeCellProps> = ({\n\tvalue,\n\tmaxLength = 80,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst display = truncateText(value, maxLength);\n\treturn (\n\t\t<Code title={value} fontSize=\"0.85em\">\n\t\t\t{display}\n\t\t</Code>\n\t);\n};\nCodeCell.displayName = \"CodeCell\";\n","import type React from \"react\";\nimport { Box, HStack } from \"../../../primitives/layout\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface ColorSwatchCellProps {\n\tvalue: string | null | undefined;\n}\n\nexport const ColorSwatchCell: React.FC<ColorSwatchCellProps> = ({ value }) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\treturn (\n\t\t<HStack gap={2}>\n\t\t\t<Box\n\t\t\t\twidth=\"1rem\"\n\t\t\t\theight=\"1rem\"\n\t\t\t\tborderRadius=\"full\"\n\t\t\t\tbg={value}\n\t\t\t\tborderWidth=\"1px\"\n\t\t\t\tborderColor=\"border\"\n\t\t\t\tflexShrink={0}\n\t\t\t/>\n\t\t\t<span>{value}</span>\n\t\t</HStack>\n\t);\n};\nColorSwatchCell.displayName = \"ColorSwatchCell\";\n","import type React from \"react\";\nimport { emptyCellValue, pluralize } from \"./cell-utils\";\n\nexport interface CountCellProps {\n\tvalue: unknown[] | Record<string, unknown> | number | null | undefined;\n\tsingular: string;\n\tplural: string;\n\tcountFn?: (value: unknown) => number;\n}\n\nexport const CountCell: React.FC<CountCellProps> = ({\n\tvalue,\n\tsingular,\n\tplural,\n\tcountFn,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\n\tlet count: number;\n\tif (countFn) {\n\t\tcount = countFn(value);\n\t\tif (!Number.isFinite(count)) return <span>{emptyCellValue}</span>;\n\t} else if (typeof value === \"number\") {\n\t\tcount = value;\n\t} else if (Array.isArray(value)) {\n\t\tcount = value.length;\n\t} else if (typeof value === \"object\") {\n\t\tcount = Object.keys(value).length;\n\t} else {\n\t\treturn <span>{emptyCellValue}</span>;\n\t}\n\n\treturn (\n\t\t<span>\n\t\t\t{count} {pluralize(count, singular, plural)}\n\t\t</span>\n\t);\n};\nCountCell.displayName = \"CountCell\";\n","import dayjs from \"dayjs\";\nimport type React from \"react\";\nimport { formatRelativeDateTime } from \"../../../atoms/datetime/utils/relative-date-time-utils\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface DateCellProps {\n\tvalue: string | Date | number | null | undefined;\n\tformat?: string;\n\tshowRelative?: boolean;\n}\n\nexport const DateCell: React.FC<DateCellProps> = ({\n\tvalue,\n\tformat = \"MMM D, YYYY\",\n\tshowRelative,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\n\tconst parsed = dayjs(value);\n\tif (!parsed.isValid()) return <span>{emptyCellValue}</span>;\n\n\tconst formatted = parsed.format(format);\n\n\tif (showRelative) {\n\t\tconst relative = formatRelativeDateTime(value);\n\t\treturn (\n\t\t\t<Tooltip content={formatted}>\n\t\t\t\t<span>{relative}</span>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\n\treturn <span>{formatted}</span>;\n};\nDateCell.displayName = \"DateCell\";\n","/**\n * Parse a User-Agent string into a coarse browser + OS label.\n *\n * Used by `DeviceCell` to render \"Chrome on macOS\" style labels in\n * sessions / device lists. The matchers are intentionally simple —\n * they cover the common power-user browsers (Chrome, Safari, Firefox,\n * Edge, Opera) on the common platforms (macOS, Windows, iOS, Android,\n * Linux). Unknown browsers return `\"Unknown\"`; unknown OSes return `\"\"`.\n */\nexport function parseUserAgent(ua: string | undefined | null): {\n\tbrowser: string;\n\tos: string;\n} {\n\tif (!ua) return { browser: \"Unknown\", os: \"\" };\n\n\t// Browser detection — order matters because Chromium-based browsers\n\t// also match the Chrome and Safari markers.\n\tlet browser = \"Unknown\";\n\tif (/Edg\\//.test(ua)) browser = \"Edge\";\n\telse if (/Firefox\\//.test(ua)) browser = \"Firefox\";\n\telse if (/OPR\\/|Opera/.test(ua)) browser = \"Opera\";\n\telse if (/Chrome\\//.test(ua)) browser = \"Chrome\";\n\telse if (/Safari\\//.test(ua)) browser = \"Safari\";\n\n\t// OS detection — iOS check precedes macOS so iPad/iPhone don't fall\n\t// through to the Macintosh matcher.\n\tlet os = \"\";\n\tif (/Windows NT/.test(ua)) os = \"Windows\";\n\telse if (/iPhone|iPad/.test(ua)) os = \"iOS\";\n\telse if (/Mac OS X|Macintosh/.test(ua)) os = \"macOS\";\n\telse if (/Android/.test(ua)) os = \"Android\";\n\telse if (/Linux/.test(ua)) os = \"Linux\";\n\n\treturn { browser, os };\n}\n\n/** Format a parsed UA into the \"Chrome on macOS\" style label. */\nexport function formatUserAgent(ua: string | undefined | null): string {\n\tconst { browser, os } = parseUserAgent(ua);\n\treturn os ? `${browser} on ${os}` : browser;\n}\n","import type React from \"react\";\nimport { Badge } from \"../../../primitives/badge\";\nimport { HStack, VStack } from \"../../../primitives/layout\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\nimport { Text } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\nimport { formatUserAgent } from \"./user-agent\";\n\nexport interface DeviceCellProps {\n\t/** Raw User-Agent string. Null/empty renders the empty cell value. */\n\tuserAgent: string | null | undefined;\n\t/** Optional badge displayed to the right of the primary line (e.g. \"Current\"). */\n\tbadge?: { label: string; colorPalette?: string };\n}\n\nexport const DeviceCell: React.FC<DeviceCellProps> = ({ userAgent, badge }) => {\n\tif (userAgent == null || userAgent === \"\") {\n\t\treturn <span>{emptyCellValue}</span>;\n\t}\n\tconst label = formatUserAgent(userAgent);\n\treturn (\n\t\t<Tooltip content={userAgent} showArrow>\n\t\t\t<VStack align=\"start\" gap={0}>\n\t\t\t\t<HStack gap={2} align=\"center\">\n\t\t\t\t\t<Text fontSize=\"sm\" fontWeight=\"medium\" lineClamp={1}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{badge && (\n\t\t\t\t\t\t<Badge colorPalette={badge.colorPalette} size=\"xs\">\n\t\t\t\t\t\t\t{badge.label}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t)}\n\t\t\t\t</HStack>\n\t\t\t\t<Text fontSize=\"xs\" color=\"fg.muted\" lineClamp={1}>\n\t\t\t\t\t{userAgent}\n\t\t\t\t</Text>\n\t\t\t</VStack>\n\t\t</Tooltip>\n\t);\n};\nDeviceCell.displayName = \"DeviceCell\";\n","import type React from \"react\";\nimport { Avatar } from \"../../../primitives/avatar\";\nimport { HStack, VStack } from \"../../../primitives/layout\";\nimport { Text } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface IdentityCellProps {\n\t/** Primary display name. Null/undefined renders the empty cell value. */\n\tname: string | null | undefined;\n\t/** Optional secondary line below the name (e.g., email, ID). */\n\tsubText?: React.ReactNode;\n\t/** Avatar image source URL. */\n\tavatarSrc?: string;\n\t/** Initials shown as the avatar fallback. Auto-derived from `name` when omitted. */\n\tavatarFallback?: string;\n\t/** Avatar size; defaults to \"sm\" to match table density. */\n\tsize?: \"sm\" | \"md\";\n\t/**\n\t * Optional Chakra `colorPalette` forwarded to the underlying `Avatar`\n\t * primitive (e.g. `\"primary\"`, `\"secondary\"`). Tints the fallback circle\n\t * with the chosen palette. Omit for the default neutral-gray look.\n\t */\n\tcolorPalette?: string;\n}\n\nfunction deriveInitials(name: string): string {\n\tconst parts = name.trim().split(/\\s+/).filter(Boolean);\n\tif (parts.length === 0) return \"\";\n\tif (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n\treturn (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n}\n\nexport const IdentityCell: React.FC<IdentityCellProps> = ({\n\tname,\n\tsubText,\n\tavatarSrc,\n\tavatarFallback,\n\tsize = \"sm\",\n\tcolorPalette,\n}) => {\n\tif (name == null) return <span>{emptyCellValue}</span>;\n\tconst initials = avatarFallback ?? deriveInitials(name);\n\treturn (\n\t\t<HStack gap={2} align=\"center\">\n\t\t\t<Avatar\n\t\t\t\tsize={size}\n\t\t\t\tname={name}\n\t\t\t\tsrc={avatarSrc}\n\t\t\t\tfallback={initials}\n\t\t\t\tcolorPalette={colorPalette}\n\t\t\t/>\n\t\t\t<VStack align=\"start\" gap={0}>\n\t\t\t\t<Text fontSize=\"sm\" fontWeight=\"semibold\" lineClamp={1}>\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\t\t\t\t{subText != null && (\n\t\t\t\t\t<Text fontSize=\"xs\" color=\"fg.muted\" lineClamp={1}>\n\t\t\t\t\t\t{subText}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</VStack>\n\t\t</HStack>\n\t);\n};\nIdentityCell.displayName = \"IdentityCell\";\n","import type React from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { Link as ChakraLink } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface LinkCellProps {\n\t/** Route path for navigation. Renders em-dash when null/undefined. */\n\tto: string | null | undefined;\n\t/** Display text or node. Falls back to `to` value if not provided. */\n\tlabel?: React.ReactNode;\n}\n\nexport const LinkCell: React.FC<LinkCellProps> = ({ to, label }) => {\n\tif (to == null) return <span>{emptyCellValue}</span>;\n\treturn (\n\t\t<ChakraLink color=\"accent\" asChild>\n\t\t\t<RouterLink\n\t\t\t\tto={to}\n\t\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{label || to}\n\t\t\t</RouterLink>\n\t\t</ChakraLink>\n\t);\n};\nLinkCell.displayName = \"LinkCell\";\n","import { Ellipsis } from \"lucide-react\";\nimport type React from \"react\";\nimport { Button, IconButton } from \"../../../atoms/button\";\nimport { HStack } from \"../../../primitives/layout\";\nimport {\n\tMenuContent,\n\tMenuItem,\n\tMenuRoot,\n\tMenuTrigger,\n} from \"../../../primitives/menu\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\n\nexport interface MenuCellAction {\n\t/** Display label — shown as menu item text or as tooltip for inline buttons */\n\tlabel: string;\n\t/** Handler called when the action is triggered */\n\tonClick: () => void;\n\t/** Lucide icon component — shown in menu items and inline buttons */\n\ticon?: React.ElementType;\n\t/** Disables the action */\n\tdisabled?: boolean;\n\t/** Color palette override (e.g., \"red\" for destructive actions) */\n\tcolorPalette?: string;\n}\n\nexport interface MenuCellProps {\n\t/** List of actions to render */\n\tactions: MenuCellAction[];\n\t/**\n\t * Max number of actions to render inline.\n\t * If actions.length > menuThreshold, all actions collapse into a dropdown.\n\t * @default 1\n\t */\n\tmenuThreshold?: number;\n\t/** Override the default menu trigger icon (Ellipsis) */\n\tmenuIcon?: React.ElementType;\n\t/** Accessible label for the menu trigger button. @default \"Actions\" */\n\ttriggerLabel?: string;\n}\n\nexport const MenuCell: React.FC<MenuCellProps> = ({\n\tactions,\n\tmenuThreshold = 1,\n\tmenuIcon: MenuIcon = Ellipsis,\n\ttriggerLabel = \"Actions\",\n}) => {\n\tif (actions.length === 0) return null;\n\n\tconst useMenu = actions.length > menuThreshold;\n\n\tif (useMenu) {\n\t\treturn (\n\t\t\t<MenuRoot>\n\t\t\t\t<MenuTrigger asChild>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\taria-label={triggerLabel}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<MenuIcon size={16} />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</MenuTrigger>\n\t\t\t\t<MenuContent>\n\t\t\t\t\t{actions.map((action) => (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tkey={action.label}\n\t\t\t\t\t\t\tvalue={action.label}\n\t\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{action.icon && <action.icon size={16} />}\n\t\t\t\t\t\t\t{action.label}\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</MenuContent>\n\t\t\t</MenuRoot>\n\t\t);\n\t}\n\n\treturn (\n\t\t<HStack gap={1} onClick={(e: React.MouseEvent) => e.stopPropagation()}>\n\t\t\t{actions.map((action) =>\n\t\t\t\taction.icon ? (\n\t\t\t\t\t<Tooltip key={action.label} content={action.label}>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\taria-label={action.label}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<action.icon size={16} />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={action.label}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tcolorPalette={action.colorPalette}\n\t\t\t\t\t\tonClick={action.onClick}\n\t\t\t\t\t\tdisabled={action.disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</Button>\n\t\t\t\t),\n\t\t\t)}\n\t\t</HStack>\n\t);\n};\nMenuCell.displayName = \"MenuCell\";\n","import type React from \"react\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface NumberCellProps {\n\tvalue: number | string | null | undefined;\n\tlocale?: string;\n}\n\nexport const NumberCell: React.FC<NumberCellProps> = ({ value, locale }) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst num = Number(value);\n\tconst display = Number.isNaN(num)\n\t\t? String(value)\n\t\t: num.toLocaleString(locale);\n\treturn <span>{display}</span>;\n};\nNumberCell.displayName = \"NumberCell\";\n","import type React from \"react\";\nimport { Code } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface SlugCellProps {\n\tvalue: string | null | undefined;\n}\n\nexport const SlugCell: React.FC<SlugCellProps> = ({ value }) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\treturn <Code>{value}</Code>;\n};\nSlugCell.displayName = \"SlugCell\";\n","import type React from \"react\";\nimport { StatusBadge } from \"../../../atoms/status-badge\";\nimport { VStack } from \"../../../primitives/layout\";\nimport { Tooltip } from \"../../../primitives/tooltip\";\nimport { Text } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface StatusBadgeCellProps {\n\tvalue: string | null | undefined;\n\tcolorMap?: Record<string, string>;\n\t/** Fallback color when value has no entry in colorMap. @default \"gray\" */\n\tfallbackColor?: string;\n\t/** Optional detail text displayed below the badge (e.g., error message). */\n\tdetail?: string | null;\n\t/** Color for the detail text. @default \"fg.error\" */\n\tdetailColor?: string;\n\t/**\n\t * Optional tooltip content shown on hover/focus over the badge. Useful\n\t * for status descriptions, full JSON payloads, or contextual hints that\n\t * don't fit on the badge label.\n\t */\n\ttooltip?: React.ReactNode;\n\t/**\n\t * Optional icon rendered inline before the label inside the badge (e.g.\n\t * a `lucide-react` glyph). A small gap separates it from the label.\n\t */\n\ticon?: React.ReactNode;\n}\n\nexport const StatusBadgeCell: React.FC<StatusBadgeCellProps> = ({\n\tvalue,\n\tcolorMap,\n\tfallbackColor = \"gray\",\n\tdetail,\n\tdetailColor = \"fg.error\",\n\ttooltip,\n\ticon,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst color = colorMap?.[value] ?? fallbackColor;\n\tlet badge: React.ReactNode = (\n\t\t<StatusBadge label={value} color={color} icon={icon} />\n\t);\n\n\tif (tooltip != null) {\n\t\tbadge = (\n\t\t\t<Tooltip content={tooltip} showArrow>\n\t\t\t\t<span>{badge}</span>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\n\tif (detail) {\n\t\treturn (\n\t\t\t<VStack align=\"start\" gap={0.5}>\n\t\t\t\t{badge}\n\t\t\t\t<Text fontSize=\"xs\" color={detailColor}>\n\t\t\t\t\t{detail}\n\t\t\t\t</Text>\n\t\t\t</VStack>\n\t\t);\n\t}\n\n\treturn <>{badge}</>;\n};\nStatusBadgeCell.displayName = \"StatusBadgeCell\";\n","import type React from \"react\";\nimport { Switch } from \"../../../primitives/switch\";\n\nexport interface SwitchCellProps {\n\tchecked: boolean;\n\tonChange: (checked: boolean) => void;\n\tdisabled?: boolean;\n\tcolorPalette?: string;\n\t/** Accessible label for screen readers. */\n\tlabel?: string;\n}\n\nexport const SwitchCell: React.FC<SwitchCellProps> = ({\n\tchecked,\n\tonChange,\n\tdisabled,\n\tcolorPalette = \"green\",\n\tlabel,\n}) => {\n\treturn (\n\t\t<Switch\n\t\t\tchecked={checked}\n\t\t\tonCheckedChange={(details) => onChange(!!details.checked)}\n\t\t\tdisabled={disabled}\n\t\t\tcolorPalette={colorPalette}\n\t\t\taria-label={label}\n\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t/>\n\t);\n};\nSwitchCell.displayName = \"SwitchCell\";\n","import type React from \"react\";\nimport { VStack } from \"../../../primitives/layout\";\nimport { Text } from \"../../../primitives/typography\";\nimport { emptyCellValue, truncateText } from \"./cell-utils\";\n\nexport interface TruncatedTextCellProps {\n\tvalue: string | null | undefined;\n\tmaxLength?: number;\n\t/**\n\t * Optional secondary line rendered below the primary value in smaller,\n\t * muted text (e.g. \"created 2 days ago\", target ID, contextual hint).\n\t * Sub-text is `lineClamp={1}` and is not affected by `maxLength`.\n\t */\n\tsubText?: React.ReactNode;\n}\n\nexport const TruncatedTextCell: React.FC<TruncatedTextCellProps> = ({\n\tvalue,\n\tmaxLength,\n\tsubText,\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst isTruncated = maxLength != null && value.length > maxLength;\n\tconst display = isTruncated ? truncateText(value, maxLength) : value;\n\tconst primary = (\n\t\t<span title={isTruncated ? value : undefined}>{display}</span>\n\t);\n\n\tif (subText == null) return primary;\n\n\treturn (\n\t\t<VStack align=\"start\" gap={0}>\n\t\t\t{primary}\n\t\t\t<Text fontSize=\"xs\" color=\"fg.muted\" lineClamp={1}>\n\t\t\t\t{subText}\n\t\t\t</Text>\n\t\t</VStack>\n\t);\n};\nTruncatedTextCell.displayName = \"TruncatedTextCell\";\n","import type React from \"react\";\nimport { Link } from \"../../../primitives/typography\";\nimport { emptyCellValue } from \"./cell-utils\";\n\nexport interface UrlCellProps {\n\tvalue: string | null | undefined;\n\tlabel?: string;\n}\n\nexport const UrlCell: React.FC<UrlCellProps> = ({ value, label }) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\treturn (\n\t\t<Link\n\t\t\thref={value}\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\ttitle={value}\n\t\t\tcolor=\"accent\"\n\t\t>\n\t\t\t{label || value}\n\t\t</Link>\n\t);\n};\nUrlCell.displayName = \"UrlCell\";\n","import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport type React from \"react\";\nimport { Button, IconButton } from \"../atoms/button\";\nimport { HStack } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface PaginationProps {\n\t/** Current page (1-based). */\n\tpage: number;\n\t/** Total number of items. */\n\ttotal: number;\n\t/** Items per page. @default 10 */\n\tpageSize?: number;\n\t/** Called when the page changes. */\n\tonPageChange: (page: number) => void;\n\t/** Maximum page buttons to show. @default 5 */\n\tmaxVisiblePages?: number;\n\t/** Label for the previous button. @default \"Previous page\" */\n\tpreviousLabel?: string;\n\t/** Label for the next button. @default \"Next page\" */\n\tnextLabel?: string;\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n\tconst {\n\t\tpage,\n\t\ttotal,\n\t\tpageSize = 10,\n\t\tonPageChange,\n\t\tmaxVisiblePages = 5,\n\t\tpreviousLabel = \"Previous page\",\n\t\tnextLabel = \"Next page\",\n\t} = props;\n\n\tconst totalPages = Math.max(1, Math.ceil(total / pageSize));\n\tconst currentPage = Math.min(Math.max(1, page), totalPages);\n\n\tconst pages = getVisiblePages(currentPage, totalPages, maxVisiblePages);\n\n\treturn (\n\t\t<HStack gap={1}>\n\t\t\t<IconButton\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\taria-label={previousLabel}\n\t\t\t\tdisabled={currentPage <= 1}\n\t\t\t\tonClick={() => onPageChange(currentPage - 1)}\n\t\t\t>\n\t\t\t\t<ChevronLeft size={16} />\n\t\t\t</IconButton>\n\t\t\t{pages.map((p) =>\n\t\t\t\tp === \"ellipsis-start\" || p === \"ellipsis-end\" ? (\n\t\t\t\t\t<Text key={p} px={2} color=\"muted\" fontSize=\"sm\">\n\t\t\t\t\t\t…\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={p}\n\t\t\t\t\t\tvariant={p === currentPage ? \"solid\" : \"ghost\"}\n\t\t\t\t\t\tcolorPalette={p === currentPage ? \"primary\" : undefined}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tminW=\"36px\"\n\t\t\t\t\t\tonClick={() => onPageChange(p)}\n\t\t\t\t\t\taria-current={p === currentPage ? \"page\" : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t{p}\n\t\t\t\t\t</Button>\n\t\t\t\t),\n\t\t\t)}\n\t\t\t<IconButton\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\taria-label={nextLabel}\n\t\t\t\tdisabled={currentPage >= totalPages}\n\t\t\t\tonClick={() => onPageChange(currentPage + 1)}\n\t\t\t>\n\t\t\t\t<ChevronRight size={16} />\n\t\t\t</IconButton>\n\t\t</HStack>\n\t);\n};\n\nPagination.displayName = \"Pagination\";\n\nfunction getVisiblePages(\n\tcurrent: number,\n\ttotal: number,\n\tmax: number,\n): Array<number | \"ellipsis-start\" | \"ellipsis-end\"> {\n\tif (total <= max) {\n\t\treturn Array.from({ length: total }, (_, i) => i + 1);\n\t}\n\n\tconst pages: Array<number | \"ellipsis-start\" | \"ellipsis-end\"> = [];\n\tconst half = Math.floor((max - 2) / 2);\n\tlet start = Math.max(2, current - half);\n\tlet end = Math.min(total - 1, current + half);\n\n\tif (current - half <= 2) {\n\t\tend = Math.min(total - 1, max - 1);\n\t}\n\tif (current + half >= total - 1) {\n\t\tstart = Math.max(2, total - max + 2);\n\t}\n\n\tpages.push(1);\n\tif (start > 2) pages.push(\"ellipsis-start\");\n\tfor (let i = start; i <= end; i++) {\n\t\tpages.push(i);\n\t}\n\tif (end < total - 1) pages.push(\"ellipsis-end\");\n\tpages.push(total);\n\n\treturn pages;\n}\n","import { Checkbox } from \"@chakra-ui/react\";\nimport {\n\ttype ColumnDef,\n\tflexRender,\n\tgetCoreRowModel,\n\tgetSortedRowModel,\n\ttype OnChangeFn,\n\ttype Row,\n\ttype RowSelectionState,\n\ttype SortingState,\n\tuseReactTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDown, ArrowUp, ArrowUpDown } from \"lucide-react\";\nimport type React from \"react\";\nimport { useMemo } from \"react\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport { Skeleton } from \"../../primitives/skeleton\";\nimport { Table } from \"../../primitives/table\";\nimport { Text } from \"../../primitives/typography\";\nimport { Pagination } from \"../pagination\";\n\nexport interface DataTableProps<T extends Record<string, unknown>> {\n\t/** Column definitions for TanStack Table */\n\tcolumns: ColumnDef<T, unknown>[];\n\t/** Data array */\n\tdata: T[];\n\t/** Enable row selection */\n\tselectable?: boolean;\n\t/** Controlled row selection state */\n\trowSelection?: RowSelectionState;\n\t/** Row selection change handler */\n\tonRowSelectionChange?: OnChangeFn<RowSelectionState>;\n\t/** Controlled sorting state */\n\tsorting?: SortingState;\n\t/** Sorting change handler */\n\tonSortingChange?: OnChangeFn<SortingState>;\n\t/** Row click handler */\n\tonRowClick?: (row: T) => void;\n\t/** Loading state */\n\tloading?: boolean;\n\t/** Empty state content */\n\temptyState?: React.ReactNode;\n\t/** Pagination - total items */\n\ttotal?: number;\n\t/** Pagination - current page (1-based) */\n\tpage?: number;\n\t/** Pagination - items per page */\n\tpageSize?: number;\n\t/** Pagination - page change handler */\n\tonPageChange?: (page: number) => void;\n\t/** Table variant */\n\tvariant?: \"line\" | \"striped\" | \"hoverable\";\n\t/** Custom row ID extractor for stable selection across data changes. @default row index */\n\tgetRowId?: (originalRow: T, index: number, parent?: Row<T>) => string;\n}\n\nconst LOADING_ROW_COUNT = 5;\n\nfunction DataTableInner<T extends Record<string, unknown>>(\n\tprops: DataTableProps<T>,\n) {\n\tconst {\n\t\tcolumns,\n\t\tdata,\n\t\tselectable = false,\n\t\trowSelection,\n\t\tonRowSelectionChange,\n\t\tsorting,\n\t\tonSortingChange,\n\t\tonRowClick,\n\t\tloading = false,\n\t\temptyState,\n\t\ttotal,\n\t\tpage,\n\t\tpageSize,\n\t\tonPageChange,\n\t\tvariant = \"line\",\n\t\tgetRowId,\n\t} = props;\n\n\tconst selectionColumn = useMemo<ColumnDef<T, unknown>>(\n\t\t() => ({\n\t\t\tid: \"_select\",\n\t\t\tsize: 40,\n\t\t\tminSize: 40,\n\t\t\tmaxSize: 40,\n\t\t\theader: ({ table }) => (\n\t\t\t\t<Checkbox.Root\n\t\t\t\t\tchecked={\n\t\t\t\t\t\ttable.getIsAllPageRowsSelected()\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: table.getIsSomePageRowsSelected()\n\t\t\t\t\t\t\t\t? \"indeterminate\"\n\t\t\t\t\t\t\t\t: false\n\t\t\t\t\t}\n\t\t\t\t\tonCheckedChange={(details) =>\n\t\t\t\t\t\ttable.toggleAllPageRowsSelected(!!details.checked)\n\t\t\t\t\t}\n\t\t\t\t\taria-label=\"Select all rows\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t>\n\t\t\t\t\t<Checkbox.HiddenInput />\n\t\t\t\t\t<Checkbox.Control />\n\t\t\t\t</Checkbox.Root>\n\t\t\t),\n\t\t\tcell: ({ row }) => (\n\t\t\t\t<Checkbox.Root\n\t\t\t\t\tchecked={row.getIsSelected()}\n\t\t\t\t\tonCheckedChange={(details) => row.toggleSelected(!!details.checked)}\n\t\t\t\t\taria-label={`Select row ${String(row.index + 1)}`}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t<Checkbox.HiddenInput />\n\t\t\t\t\t<Checkbox.Control />\n\t\t\t\t</Checkbox.Root>\n\t\t\t),\n\t\t\tenableSorting: false,\n\t\t}),\n\t\t[],\n\t);\n\n\tconst allColumns = useMemo(\n\t\t() => (selectable ? [selectionColumn, ...columns] : columns),\n\t\t[selectable, selectionColumn, columns],\n\t);\n\n\tconst table = useReactTable({\n\t\tdata,\n\t\tcolumns: allColumns,\n\t\tstate: {\n\t\t\t...(sorting !== undefined ? { sorting } : {}),\n\t\t\t...(rowSelection !== undefined ? { rowSelection } : {}),\n\t\t},\n\t\tonSortingChange,\n\t\tonRowSelectionChange,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\t...(onSortingChange === undefined\n\t\t\t? { getSortedRowModel: getSortedRowModel() }\n\t\t\t: {}),\n\t\tenableRowSelection: selectable,\n\t\tmanualSorting: onSortingChange !== undefined,\n\t\t...(getRowId !== undefined ? { getRowId } : {}),\n\t});\n\n\tconst hasPagination =\n\t\ttotal !== undefined &&\n\t\tpage !== undefined &&\n\t\tpageSize !== undefined &&\n\t\tonPageChange !== undefined;\n\n\tconst isEmpty = !loading && data.length === 0;\n\n\treturn (\n\t\t<Flex direction=\"column\" gap={4}>\n\t\t\t<Box overflowX=\"auto\">\n\t\t\t\t{/* Chakra v3's Table.Root types only include built-in variants.\n\t\t\t\t Our custom table recipe adds \"striped\" and \"hoverable\" variants\n\t\t\t\t that work at runtime but require a type cast. Module augmentation\n\t\t\t\t for slot recipe variants is not supported in Chakra v3. */}\n\t\t\t\t<Table.Root variant={variant as \"line\"}>\n\t\t\t\t\t<Table.Header>\n\t\t\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\n\t\t\t\t\t\t\t<Table.Row key={headerGroup.id}>\n\t\t\t\t\t\t\t\t{headerGroup.headers.map((header) => {\n\t\t\t\t\t\t\t\t\tconst canSort = header.column.getCanSort();\n\t\t\t\t\t\t\t\t\tconst sorted = header.column.getIsSorted();\n\t\t\t\t\t\t\t\t\tconst isSelectCol = header.column.id === \"_select\";\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Table.ColumnHeader\n\t\t\t\t\t\t\t\t\t\t\tkey={header.id}\n\t\t\t\t\t\t\t\t\t\t\tcursor={canSort ? \"pointer\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t\t\t\tcanSort\n\t\t\t\t\t\t\t\t\t\t\t\t\t? header.column.getToggleSortingHandler()\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\t\t\tsorted === \"asc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t? \"ascending\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t: sorted === \"desc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"descending\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: canSort\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"none\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tuserSelect={canSort ? \"none\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\ttabIndex={canSort ? 0 : undefined}\n\t\t\t\t\t\t\t\t\t\t\trole={canSort ? \"button\" : undefined}\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tcanSort\n\t\t\t\t\t\t\t\t\t\t\t\t\t? (e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.column.getToggleSortingHandler()?.(e);\n\t\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\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\tisSelectCol\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { width: header.column.getSize() }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Flex alignItems=\"center\" gap={1}>\n\t\t\t\t\t\t\t\t\t\t\t\t{header.isPlaceholder\n\t\t\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t\t\t: flexRender(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\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{canSort && sorted === \"asc\" && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowUp size={14} aria-hidden=\"true\" />\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\t{canSort && sorted === \"desc\" && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowDown size={14} aria-hidden=\"true\" />\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\t{canSort && !sorted && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ArrowUpDown size={14} aria-hidden=\"true\" />\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</Flex>\n\t\t\t\t\t\t\t\t\t\t</Table.ColumnHeader>\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</Table.Row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Table.Header>\n\t\t\t\t\t<Table.Body>\n\t\t\t\t\t\t{loading &&\n\t\t\t\t\t\t\tArray.from({ length: LOADING_ROW_COUNT }).map((_, rowIdx) => (\n\t\t\t\t\t\t\t\t<Table.Row key={`loading-${String(rowIdx)}`} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t{allColumns.map((_, colIdx) => (\n\t\t\t\t\t\t\t\t\t\t<Table.Cell key={`loading-cell-${String(colIdx)}`}>\n\t\t\t\t\t\t\t\t\t\t\t<Skeleton height=\"4\" borderRadius=\"sm\" />\n\t\t\t\t\t\t\t\t\t\t</Table.Cell>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</Table.Row>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!loading &&\n\t\t\t\t\t\t\ttable.getRowModel().rows.map((row) => (\n\t\t\t\t\t\t\t\t<Table.Row\n\t\t\t\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\t\t\t\tdata-selected={row.getIsSelected() || undefined}\n\t\t\t\t\t\t\t\t\tcursor={onRowClick ? \"pointer\" : undefined}\n\t\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t\tonRowClick ? () => onRowClick(row.original) : undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttabIndex={onRowClick ? 0 : undefined}\n\t\t\t\t\t\t\t\t\trole={onRowClick ? \"button\" : undefined}\n\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\tonRowClick\n\t\t\t\t\t\t\t\t\t\t\t? (e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonRowClick(row.original);\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}\n\t\t\t\t\t\t\t\t\t\t\t: undefined\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\t\t{row.getVisibleCells().map((cell) => (\n\t\t\t\t\t\t\t\t\t\t<Table.Cell\n\t\t\t\t\t\t\t\t\t\t\tkey={cell.id}\n\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\tcell.column.id === \"_select\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { width: cell.column.getSize() }\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{flexRender(\n\t\t\t\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\n\t\t\t\t\t\t\t\t\t\t\t\tcell.getContext(),\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</Table.Cell>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</Table.Row>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{isEmpty && (\n\t\t\t\t\t\t\t<Table.Row>\n\t\t\t\t\t\t\t\t<Table.Cell\n\t\t\t\t\t\t\t\t\tcolSpan={allColumns.length}\n\t\t\t\t\t\t\t\t\ttextAlign=\"center\"\n\t\t\t\t\t\t\t\t\tpy={8}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{emptyState ?? (\n\t\t\t\t\t\t\t\t\t\t<Text color=\"muted\" fontSize=\"sm\">\n\t\t\t\t\t\t\t\t\t\t\tNo data available\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Table.Cell>\n\t\t\t\t\t\t\t</Table.Row>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Table.Body>\n\t\t\t\t</Table.Root>\n\t\t\t</Box>\n\t\t\t{hasPagination && (\n\t\t\t\t<Flex justifyContent=\"center\">\n\t\t\t\t\t<Pagination\n\t\t\t\t\t\tpage={page}\n\t\t\t\t\t\ttotal={total}\n\t\t\t\t\t\tpageSize={pageSize}\n\t\t\t\t\t\tonPageChange={onPageChange}\n\t\t\t\t\t/>\n\t\t\t\t</Flex>\n\t\t\t)}\n\t\t</Flex>\n\t);\n}\n\nexport const DataTable = DataTableInner as typeof DataTableInner & {\n\tdisplayName: string;\n};\nDataTable.displayName = \"DataTable\";\n","import { Drawer, type DrawerRootProps, Portal } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"../atoms/button\";\nimport { Flex, Spacer } from \"../primitives/layout\";\n\nexport interface DrawerProps\n\textends Omit<DrawerRootProps, \"open\" | \"onOpenChange\"> {\n\t/** Whether the drawer is open. */\n\topen: boolean;\n\t/** Called when the drawer should close. */\n\tonClose(): void;\n\t/** Header title content. */\n\ttitle: string | React.ReactNode;\n\t/** Text displayed in the footer area (left side). */\n\tfooterText?: string | React.ReactNode;\n\t/** Drawer body content. */\n\tchildren: React.ReactNode;\n\t/** Label for the save button. @default \"Save\" */\n\tsaveLabel?: string;\n\t/** Label for the close button. @default \"Close\" */\n\tcloseLabel?: string;\n\t/** Whether the save button is disabled. */\n\tsaveButtonDisabled?: boolean;\n\t/** Whether the save action is in progress. Shows spinner on save button. */\n\tloading?: boolean;\n\t/** Extra buttons rendered before the save button. */\n\tadditionalButtons?: React.ReactNode;\n\t/** Called when the save button is clicked. If not provided, no save button is shown. */\n\tonSave?(): void;\n}\n\nexport const DrawerRoot: React.FC<DrawerProps> = ({\n\tchildren,\n\ttitle,\n\tfooterText,\n\tsaveLabel = \"Save\",\n\tcloseLabel = \"Close\",\n\tsaveButtonDisabled = false,\n\tloading = false,\n\tadditionalButtons,\n\tonSave,\n\topen,\n\tonClose,\n\t...rest\n}) => {\n\treturn (\n\t\t<Drawer.Root\n\t\t\t{...rest}\n\t\t\topen={open}\n\t\t\tonOpenChange={(details) => {\n\t\t\t\tif (!details.open) {\n\t\t\t\t\tonClose();\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<Portal>\n\t\t\t\t<Drawer.Backdrop />\n\t\t\t\t<Drawer.Positioner>\n\t\t\t\t\t<Drawer.Content>\n\t\t\t\t\t\t<Drawer.CloseTrigger asChild>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\t\t\t\ttop={2}\n\t\t\t\t\t\t\t\tinsetInlineEnd={2}\n\t\t\t\t\t\t\t\taria-label={closeLabel}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X size={16} />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Drawer.CloseTrigger>\n\n\t\t\t\t\t\t<Drawer.Header\n\t\t\t\t\t\t\tbg=\"bg-surface\"\n\t\t\t\t\t\t\tborderBottom=\"1px solid\"\n\t\t\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Drawer.Title>{title}</Drawer.Title>\n\t\t\t\t\t\t</Drawer.Header>\n\n\t\t\t\t\t\t<Drawer.Body>{children}</Drawer.Body>\n\n\t\t\t\t\t\t<Drawer.Footer\n\t\t\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\t\t\tbg=\"bg-subtle\"\n\t\t\t\t\t\t\tborderTop=\"1px solid\"\n\t\t\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{footerText}\n\t\t\t\t\t\t\t<Spacer />\n\t\t\t\t\t\t\t<Flex gap={4}>\n\t\t\t\t\t\t\t\t{additionalButtons}\n\t\t\t\t\t\t\t\t{onSave && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"solid\"\n\t\t\t\t\t\t\t\t\t\tonClick={onSave}\n\t\t\t\t\t\t\t\t\t\tdisabled={saveButtonDisabled || loading}\n\t\t\t\t\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{saveLabel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t</Drawer.Footer>\n\t\t\t\t\t</Drawer.Content>\n\t\t\t\t</Drawer.Positioner>\n\t\t\t</Portal>\n\t\t</Drawer.Root>\n\t);\n};\nDrawerRoot.displayName = \"DrawerRoot\";\n","import { ButtonGroup, type CardRootProps } from \"@chakra-ui/react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport React, { type MouseEventHandler } from \"react\";\nimport { IconButton } from \"../atoms/button\";\nimport { Collapsible } from \"../primitives/collapsible\";\nimport { Box, Flex, HStack } from \"../primitives/layout\";\nimport {\n\tMenuContent,\n\tMenuItem,\n\tMenuRoot,\n\tMenuTrigger,\n} from \"../primitives/menu\";\nimport { Text } from \"../primitives/typography\";\nimport { Card } from \"./card\";\n\nexport interface FactBoxAction {\n\tid: number;\n\ttype: \"button\" | \"menuButton\";\n\tariaLabel: string;\n\ticon?: React.ReactElement;\n\tonClick?: MouseEventHandler<HTMLButtonElement>;\n\tonSelect?: VoidFunction;\n\titems?: FactBoxAction[];\n}\n\nexport interface FactBoxProps extends CardRootProps {\n\tname?: string | React.ReactNode;\n\tactions?: FactBoxAction[];\n\tchildren: React.ReactNode;\n\tcollapsible?: boolean;\n\t/** Label for collapse button when expanded. @default \"Collapse\" */\n\tcollapseLabel?: string;\n\t/** Label for collapse button when collapsed. @default \"Expand\" */\n\texpandLabel?: string;\n}\n\nexport const FactBox: React.FC<FactBoxProps> = (props) => {\n\tconst {\n\t\tname,\n\t\tactions,\n\t\tcollapsible = true,\n\t\tcollapseLabel = \"Collapse\",\n\t\texpandLabel = \"Expand\",\n\t\t...rest\n\t} = props;\n\n\tconst [show, setShow] = React.useState(true);\n\n\tconst handleToggle = () => {\n\t\tsetShow(!show);\n\t};\n\n\treturn (\n\t\t<Box w=\"full\">\n\t\t\t{collapsible ? (\n\t\t\t\t<Flex\n\t\t\t\t\tflexDirection=\"column\"\n\t\t\t\t\tmx=\"auto\"\n\t\t\t\t\tborderBottom=\"1px solid\"\n\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdisplay={{ md: \"flex\" }}\n\t\t\t\t\t\talignItems={{ md: \"center\" }}\n\t\t\t\t\t\tjustifyContent={{ md: \"space-between\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Box minW={0} flex=\"1 1 0%\">\n\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\taria-label={show ? collapseLabel : expandLabel}\n\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\thandleToggle();\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\t\t{show ? (\n\t\t\t\t\t\t\t\t\t\t<ChevronDown size={16} />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<ChevronRight size={16} />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t{typeof name === \"string\" ? <Text>{name}</Text> : name}\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t{actions ? (\n\t\t\t\t\t\t\t<Flex flexShrink={0} marginInlineStart={{ md: 4 }}>\n\t\t\t\t\t\t\t\t<ButtonGroup>\n\t\t\t\t\t\t\t\t\t{actions.map((action) =>\n\t\t\t\t\t\t\t\t\t\taction.type === \"button\" ? (\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tkey={action.id}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={action.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={action.onClick}\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{action.icon}\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<MenuRoot key={action.id}>\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuTrigger asChild>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={action.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\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{action.icon}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuContent>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{action.items?.map((item) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelect={item.onSelect}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={item.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={`action-${item.id}`}\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\t\t{item.icon}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.ariaLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\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</MenuContent>\n\t\t\t\t\t\t\t\t\t\t\t</MenuRoot>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</ButtonGroup>\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Box>\n\t\t\t\t</Flex>\n\t\t\t) : null}\n\t\t\t<Collapsible.Root open={show}>\n\t\t\t\t<Collapsible.Content>\n\t\t\t\t\t<Card {...rest}>{rest.children}</Card>\n\t\t\t\t</Collapsible.Content>\n\t\t\t</Collapsible.Root>\n\t\t</Box>\n\t);\n};\nFactBox.displayName = \"FactBox\";\n","import { Plus } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { TextInput } from \"../../atoms/text-input\";\nimport { Box, Flex, Stack } from \"../../primitives/layout\";\nimport { Text } from \"../../primitives/typography\";\n\nexport interface InlineCreatableListProps<T> {\n\titems: T[];\n\tactiveIds?: string[];\n\tonToggle?: (id: string) => void;\n\tonCreate?: (name: string) => Promise<void>;\n\tgetItemId: (item: T) => string;\n\tgetItemLabel: (item: T) => string;\n\tgetItemColor?: (item: T) => string | undefined;\n\t/** @default \"wrap\" */\n\tvariant?: \"wrap\" | \"list\";\n\t/** @default \"New item...\" */\n\tcreatePlaceholder?: string;\n\t/** @default \"New item\" */\n\tcreateLabel?: string;\n\t/** @default <Plus size={14} /> */\n\tcreateIcon?: React.ReactNode;\n\t/** @default \"No items\" */\n\temptyText?: string;\n\tdisabled?: boolean;\n}\n\nfunction InlineCreatableListInner<T>(props: InlineCreatableListProps<T>) {\n\tconst {\n\t\titems,\n\t\tactiveIds = [],\n\t\tonToggle,\n\t\tonCreate,\n\t\tgetItemId,\n\t\tgetItemLabel,\n\t\tgetItemColor,\n\t\tvariant = \"wrap\",\n\t\tcreatePlaceholder = \"New item...\",\n\t\tcreateLabel = \"New item\",\n\t\tcreateIcon = <Plus size={14} />,\n\t\temptyText = \"No items\",\n\t\tdisabled = false,\n\t} = props;\n\n\tconst [isCreating, setIsCreating] = useState(false);\n\tconst [isSubmitting, setIsSubmitting] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tuseEffect(() => {\n\t\tif (isCreating) {\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t}, [isCreating]);\n\n\tconst activeIdSet = new Set(activeIds);\n\n\tconst handleSubmit = async (value: string) => {\n\t\tconst trimmed = value.trim();\n\t\tif (!trimmed) {\n\t\t\tsetIsCreating(false);\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting(true);\n\t\ttry {\n\t\t\tawait onCreate?.(trimmed);\n\t\t\tsetIsCreating(false);\n\t\t} catch {\n\t\t\t// Stay in create mode on error\n\t\t} finally {\n\t\t\tsetIsSubmitting(false);\n\t\t}\n\t};\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (e.key === \"Enter\") {\n\t\t\te.preventDefault();\n\t\t\thandleSubmit((e.target as HTMLInputElement).value);\n\t\t} else if (e.key === \"Escape\") {\n\t\t\tsetIsCreating(false);\n\t\t}\n\t};\n\n\tconst handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n\t\tconst value = e.target.value.trim();\n\t\tif (value) {\n\t\t\thandleSubmit(value);\n\t\t} else {\n\t\t\tsetIsCreating(false);\n\t\t}\n\t};\n\n\tconst wrapItemBaseStyle: React.CSSProperties = {\n\t\tborderRadius: \"6px\",\n\t\tpaddingInline: \"12px\",\n\t\tpaddingBlock: \"4px\",\n\t\tfontSize: \"0.875rem\",\n\t\tcursor: \"pointer\",\n\t\ttransition: \"all 0.15s\",\n\t\tborder: \"none\",\n\t\tlineHeight: 1.5,\n\t};\n\n\tconst listItemBaseStyle: React.CSSProperties = {\n\t\tpaddingInline: \"8px\",\n\t\tpaddingBlock: \"6px\",\n\t\tborderRadius: \"6px\",\n\t\tcursor: \"pointer\",\n\t\tfontSize: \"0.875rem\",\n\t\ttransition: \"all 0.15s\",\n\t\tborder: \"none\",\n\t\ttextAlign: \"start\",\n\t\twidth: \"100%\",\n\t\tdisplay: \"block\",\n\t};\n\n\tconst disabledStyle: React.CSSProperties = disabled\n\t\t? { opacity: 0.5, cursor: \"not-allowed\" }\n\t\t: {};\n\n\tconst renderWrapItems = () =>\n\t\titems.map((item) => {\n\t\t\tconst id = getItemId(item);\n\t\t\tconst label = getItemLabel(item);\n\t\t\tconst color = getItemColor?.(item);\n\t\t\tconst isActive = activeIdSet.has(id);\n\n\t\t\tlet bgStyle: string;\n\t\t\tlet colorStyle: string;\n\n\t\t\tif (isActive) {\n\t\t\t\tbgStyle = color ? `${color}33` : \"var(--chakra-colors-primary-subtle)\";\n\t\t\t\tcolorStyle = color ?? \"var(--chakra-colors-primary-fg)\";\n\t\t\t} else {\n\t\t\t\tbgStyle = \"var(--chakra-colors-bg-muted)\";\n\t\t\t\tcolorStyle = \"var(--chakra-colors-fg-default)\";\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Box\n\t\t\t\t\tkey={id}\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\trounded=\"md\"\n\t\t\t\t\tpx={3}\n\t\t\t\t\tpy={1}\n\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\tcursor={disabled ? \"not-allowed\" : \"pointer\"}\n\t\t\t\t\ttransition=\"all 0.15s\"\n\t\t\t\t\topacity={disabled ? 0.5 : 1}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...wrapItemBaseStyle,\n\t\t\t\t\t\t...disabledStyle,\n\t\t\t\t\t\tbackground: bgStyle,\n\t\t\t\t\t\tcolor: colorStyle,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={!disabled ? () => onToggle?.(id) : undefined}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Box>\n\t\t\t);\n\t\t});\n\n\tconst renderListItems = () =>\n\t\titems.map((item) => {\n\t\t\tconst id = getItemId(item);\n\t\t\tconst label = getItemLabel(item);\n\t\t\tconst isActive = activeIdSet.has(id);\n\n\t\t\tconst bgStyle = isActive\n\t\t\t\t? \"var(--chakra-colors-primary-subtle)\"\n\t\t\t\t: \"transparent\";\n\t\t\tconst colorStyle = isActive\n\t\t\t\t? \"var(--chakra-colors-primary-fg)\"\n\t\t\t\t: \"var(--chakra-colors-fg-default)\";\n\n\t\t\treturn (\n\t\t\t\t<Box\n\t\t\t\t\tkey={id}\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\tpx={2}\n\t\t\t\t\tpy={1.5}\n\t\t\t\t\trounded=\"md\"\n\t\t\t\t\tcursor={disabled ? \"not-allowed\" : \"pointer\"}\n\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\topacity={disabled ? 0.5 : 1}\n\t\t\t\t\t_hover={{ bg: isActive ? \"primary.subtle\" : \"bg.subtle\" }}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...listItemBaseStyle,\n\t\t\t\t\t\t...disabledStyle,\n\t\t\t\t\t\tbackground: bgStyle,\n\t\t\t\t\t\tcolor: colorStyle,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={!disabled ? () => onToggle?.(id) : undefined}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Box>\n\t\t\t);\n\t\t});\n\n\tconst showEmpty = items.length === 0 && !isCreating;\n\tconst showCreateLink = !!onCreate && !isCreating && !disabled;\n\n\treturn (\n\t\t<Box>\n\t\t\t{variant === \"wrap\" ? (\n\t\t\t\t<Flex wrap=\"wrap\" gap={2}>\n\t\t\t\t\t{showEmpty && (\n\t\t\t\t\t\t<Text fontSize=\"sm\" color=\"fg.muted\">\n\t\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{renderWrapItems()}\n\t\t\t\t</Flex>\n\t\t\t) : (\n\t\t\t\t<Stack gap={0}>\n\t\t\t\t\t{showEmpty && (\n\t\t\t\t\t\t<Text fontSize=\"sm\" color=\"fg.muted\" px={2} py={1.5}>\n\t\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t{renderListItems()}\n\t\t\t\t</Stack>\n\t\t\t)}\n\n\t\t\t{showCreateLink && (\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"inline-flex\",\n\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t\tgap: \"4px\",\n\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\tfontSize: \"0.875rem\",\n\t\t\t\t\t\tcolor: \"var(--chakra-colors-fg-muted)\",\n\t\t\t\t\t\tmarginBlockStart: items.length > 0 ? \"8px\" : \"4px\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={() => setIsCreating(true)}\n\t\t\t\t>\n\t\t\t\t\t{createIcon}\n\t\t\t\t\t<span>{createLabel}</span>\n\t\t\t\t</button>\n\t\t\t)}\n\n\t\t\t{isCreating && (\n\t\t\t\t<Box mt={items.length > 0 ? 2 : 1}>\n\t\t\t\t\t<TextInput\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tplaceholder={createPlaceholder}\n\t\t\t\t\t\tdisabled={isSubmitting}\n\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t\t/>\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t</Box>\n\t);\n}\n\nexport const InlineCreatableList = InlineCreatableListInner as <T>(\n\tprops: InlineCreatableListProps<T>,\n) => React.ReactElement;\n(InlineCreatableList as { displayName?: string }).displayName =\n\t\"InlineCreatableList\";\n","import type React from \"react\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Switch, type SwitchProps } from \"../primitives/switch\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface LabeledSwitchProps extends SwitchProps {\n\tname: string;\n\tlabel: string;\n}\n\nexport const LabeledSwitch = ({\n\tref,\n\t...props\n}: LabeledSwitchProps & { ref?: React.Ref<HTMLInputElement> }) => {\n\tconst { name, label, ...rest } = props;\n\n\treturn (\n\t\t<Box>\n\t\t\t<Text asChild>\n\t\t\t\t<Flex>{label}</Flex>\n\t\t\t</Text>\n\t\t\t<Switch id={name} ref={ref} {...rest} />\n\t\t</Box>\n\t);\n};\nLabeledSwitch.displayName = \"LabeledSwitch\";\n","import { Dialog, type DialogRootProps, Portal } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { Button, IconButton } from \"../atoms/button\";\nimport { Flex, Spacer } from \"../primitives/layout\";\nimport { Separator } from \"../primitives/separator\";\n\nexport interface ModalProps\n\textends Omit<DialogRootProps, \"open\" | \"onOpenChange\"> {\n\t/** Whether the modal is open. */\n\topen: boolean;\n\t/** Called when the modal should close. */\n\tonClose: () => void;\n\t/** Header content (string or ReactNode). */\n\theader: string | React.ReactNode;\n\t/** Modal body content. */\n\tchildren: React.ReactNode;\n\t/** Custom footer. If provided, replaces the default Cancel/Save buttons. */\n\tfooter?: React.ReactNode;\n\t/** Dialog size variant. */\n\tsize?: DialogRootProps[\"size\"];\n\t/** Label for the close button. */\n\tcloseLabel?: string;\n\t/** Label for the save button. */\n\tsaveLabel?: string;\n\t/** Label for the cancel button. */\n\tcancelLabel?: string;\n\t/** Called when the save button is clicked. If not provided, no default footer is shown. */\n\tonSave?: () => void;\n\t/** Whether the save button is disabled. */\n\tsaveDisabled?: boolean;\n\t/** Whether the save action is in progress. Shows spinner on save button. */\n\tloading?: boolean;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n\topen,\n\tonClose,\n\theader,\n\tchildren,\n\tfooter,\n\tsize = \"xl\",\n\tcloseLabel = \"Close\",\n\tsaveLabel = \"Save\",\n\tcancelLabel = \"Cancel\",\n\tonSave,\n\tsaveDisabled = false,\n\tloading = false,\n\t...rest\n}) => {\n\tconst defaultFooter = onSave ? (\n\t\t<Flex gap={3} justify=\"flex-end\" w=\"full\">\n\t\t\t<Button variant=\"outline\" onClick={onClose}>\n\t\t\t\t{cancelLabel}\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tvariant=\"solid\"\n\t\t\t\tonClick={onSave}\n\t\t\t\tdisabled={saveDisabled || loading}\n\t\t\t\tloading={loading}\n\t\t\t>\n\t\t\t\t{saveLabel}\n\t\t\t</Button>\n\t\t</Flex>\n\t) : null;\n\n\tconst footerContent = footer !== undefined ? footer : defaultFooter;\n\n\treturn (\n\t\t<Dialog.Root\n\t\t\t{...rest}\n\t\t\topen={open}\n\t\t\tsize={size}\n\t\t\tonOpenChange={(details) => {\n\t\t\t\tif (!details.open) {\n\t\t\t\t\tonClose();\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<Portal>\n\t\t\t\t<Dialog.Backdrop />\n\t\t\t\t<Dialog.Positioner>\n\t\t\t\t\t<Dialog.Content>\n\t\t\t\t\t\t<Dialog.Header>\n\t\t\t\t\t\t\t{header}\n\t\t\t\t\t\t\t<Spacer />\n\t\t\t\t\t\t\t<Dialog.CloseTrigger asChild>\n\t\t\t\t\t\t\t\t<IconButton variant=\"ghost\" size=\"sm\" aria-label={closeLabel}>\n\t\t\t\t\t\t\t\t\t<X size={16} />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Dialog.CloseTrigger>\n\t\t\t\t\t\t</Dialog.Header>\n\n\t\t\t\t\t\t<Separator />\n\n\t\t\t\t\t\t<Dialog.Body>{children}</Dialog.Body>\n\n\t\t\t\t\t\t{footerContent && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Separator />\n\t\t\t\t\t\t\t\t<Dialog.Footer>{footerContent}</Dialog.Footer>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Dialog.Content>\n\t\t\t\t</Dialog.Positioner>\n\t\t\t</Portal>\n\t\t</Dialog.Root>\n\t);\n};\nModal.displayName = \"Modal\";\n","import type React from \"react\";\nimport { Checkbox } from \"../../primitives/checkbox\";\nimport { Box, Flex } from \"../../primitives/layout\";\n\nexport interface SelectableCardProps {\n\t/** Whether the card is currently selected. */\n\tselected?: boolean;\n\t/** Whether the checkbox is always visible (e.g. when any card in the grid is selected). */\n\tselectionVisible?: boolean;\n\t/** Called when the checkbox is toggled. When provided, a checkbox is rendered. */\n\tonSelect?: () => void;\n\t/** Called when the card body area is clicked (for navigation). */\n\tonClick?: () => void;\n\t/** Disables interaction. */\n\tdisabled?: boolean;\n\tchildren: React.ReactNode;\n}\n\nexport interface SelectableCardThumbnailProps {\n\t/** Height of the thumbnail area. Defaults to \"160px\". */\n\theight?: string;\n\tchildren: React.ReactNode;\n}\n\nexport interface SelectableCardBodyProps {\n\tchildren: React.ReactNode;\n}\n\nexport interface SelectableCardFooterProps {\n\tchildren: React.ReactNode;\n}\n\nconst SelectableCardThumbnail = ({\n\theight = \"160px\",\n\tchildren,\n}: SelectableCardThumbnailProps) => (\n\t<Box\n\t\th={height}\n\t\toverflow=\"hidden\"\n\t\tbg=\"bg.subtle\"\n\t\tdisplay=\"flex\"\n\t\talignItems=\"center\"\n\t\tjustifyContent=\"center\"\n\t>\n\t\t{children}\n\t</Box>\n);\nSelectableCardThumbnail.displayName = \"SelectableCard.Thumbnail\";\n\nconst SelectableCardBody = ({ children }: SelectableCardBodyProps) => (\n\t<Box p={3}>{children}</Box>\n);\nSelectableCardBody.displayName = \"SelectableCard.Body\";\n\nconst SelectableCardFooter = ({ children }: SelectableCardFooterProps) => (\n\t<Flex\n\t\tp={3}\n\t\tborderTopWidth=\"1px\"\n\t\tborderColor=\"border\"\n\t\tjustify=\"space-between\"\n\t\talign=\"center\"\n\t>\n\t\t{children}\n\t</Flex>\n);\nSelectableCardFooter.displayName = \"SelectableCard.Footer\";\n\nexport const SelectableCard = ({\n\tselected,\n\tselectionVisible,\n\tonSelect,\n\tonClick,\n\tdisabled,\n\tchildren,\n}: SelectableCardProps) => {\n\treturn (\n\t\t<Box role=\"group\" position=\"relative\">\n\t\t\t<Box\n\t\t\t\trounded=\"lg\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tborderWidth=\"1px\"\n\t\t\t\tborderColor=\"border\"\n\t\t\t\tbg=\"bg.surface\"\n\t\t\t\tcursor={onClick ? \"pointer\" : undefined}\n\t\t\t\tonClick={disabled ? undefined : onClick}\n\t\t\t\toutline={selected ? \"2px solid\" : undefined}\n\t\t\t\toutlineColor={selected ? \"accent\" : undefined}\n\t\t\t\toutlineOffset={selected ? \"-2px\" : undefined}\n\t\t\t\topacity={disabled ? 0.5 : undefined}\n\t\t\t\ttransition=\"all 0.2s\"\n\t\t\t\t_hover={{ shadow: \"md\" }}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Box>\n\t\t\t{onSelect && (\n\t\t\t\t<Box\n\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\ttop={2}\n\t\t\t\t\tinsetInlineStart={2}\n\t\t\t\t\tzIndex={1}\n\t\t\t\t\topacity={selected || selectionVisible ? 1 : 0}\n\t\t\t\t\t_groupHover={{ opacity: 1 }}\n\t\t\t\t\ttransition=\"opacity 0.15s\"\n\t\t\t\t>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tchecked={selected}\n\t\t\t\t\t\tonCheckedChange={() => onSelect()}\n\t\t\t\t\t\tonClick={(e: React.MouseEvent) => e.stopPropagation()}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t/>\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t</Box>\n\t);\n};\nSelectableCard.displayName = \"SelectableCard\";\n\nSelectableCard.Thumbnail = SelectableCardThumbnail;\nSelectableCard.Body = SelectableCardBody;\nSelectableCard.Footer = SelectableCardFooter;\n","// src/components/sidebar/sidebar.tsx\n\nimport { PanelLeftClose, PanelLeftOpen } from \"lucide-react\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, IconButton } from \"../../atoms/button\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport {\n\tMenuContent,\n\tMenuItem,\n\tMenuRoot,\n\tMenuTrigger,\n} from \"../../primitives/menu\";\nimport { Tooltip } from \"../../primitives/tooltip\";\nimport { Heading, Text } from \"../../primitives/typography\";\n\nconst COLLAPSED_WIDTH = \"64px\";\nconst EXPANDED_WIDTH = \"240px\";\nconst COLLAPSE_BREAKPOINT = 1440;\n\ninterface SidebarContextValue {\n\tcollapsed: boolean;\n\ttoggle: () => void;\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null);\n\nexport function useSidebarContext(): SidebarContextValue {\n\tconst ctx = React.useContext(SidebarContext);\n\tif (!ctx) {\n\t\tthrow new Error(\"useSidebarContext must be used inside <Sidebar>\");\n\t}\n\treturn ctx;\n}\n\nfunction getInitialCollapsed(\n\tstorageKey: string | undefined,\n\tdefaultCollapsed: boolean | undefined,\n): boolean {\n\tif (typeof window === \"undefined\") return defaultCollapsed ?? false;\n\tif (storageKey) {\n\t\tconst stored = window.localStorage.getItem(storageKey);\n\t\tif (stored === \"true\") return true;\n\t\tif (stored === \"false\") return false;\n\t}\n\tif (defaultCollapsed !== undefined) return defaultCollapsed;\n\treturn window.innerWidth < COLLAPSE_BREAKPOINT;\n}\n\n// Root\nexport interface SidebarProps {\n\tstorageKey?: string;\n\tdefaultCollapsed?: boolean;\n\tchildren: React.ReactNode;\n}\n\nconst SidebarRoot = ({\n\tstorageKey,\n\tdefaultCollapsed,\n\tchildren,\n}: SidebarProps) => {\n\tconst [collapsed, setCollapsed] = useState(() =>\n\t\tgetInitialCollapsed(storageKey, defaultCollapsed),\n\t);\n\n\tuseEffect(() => {\n\t\tif (storageKey) {\n\t\t\twindow.localStorage.setItem(storageKey, String(collapsed));\n\t\t}\n\t}, [collapsed, storageKey]);\n\n\tconst ctx = useMemo<SidebarContextValue>(\n\t\t() => ({\n\t\t\tcollapsed,\n\t\t\ttoggle: () => setCollapsed((c) => !c),\n\t\t}),\n\t\t[collapsed],\n\t);\n\n\treturn (\n\t\t<SidebarContext.Provider value={ctx}>\n\t\t\t<Flex\n\t\t\t\tdata-testid=\"sidebar\"\n\t\t\t\tdata-collapsed={collapsed ? \"true\" : \"false\"}\n\t\t\t\tdirection=\"column\"\n\t\t\t\tw={collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH}\n\t\t\t\tminH=\"100vh\"\n\t\t\t\tbg=\"bg-canvas\"\n\t\t\t\tborderRightWidth=\"1px\"\n\t\t\t\tborderRightColor=\"border\"\n\t\t\t\ttransition=\"width 250ms ease-out\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tposition=\"relative\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Flex>\n\t\t</SidebarContext.Provider>\n\t);\n};\nSidebarRoot.displayName = \"Sidebar\";\n\n// Header / Body / Footer\nconst SidebarHeader = ({ children }: { children: React.ReactNode }) => (\n\t<Box p=\"4\" borderBottomWidth=\"1px\" borderBottomColor=\"border\">\n\t\t{children}\n\t</Box>\n);\nSidebarHeader.displayName = \"Sidebar.Header\";\n\nconst SidebarBody = ({ children }: { children?: React.ReactNode }) => (\n\t<Box flex=\"1\" overflowY=\"auto\" py=\"3\">\n\t\t{children}\n\t</Box>\n);\nSidebarBody.displayName = \"Sidebar.Body\";\n\nconst SidebarFooter = ({ children }: { children: React.ReactNode }) => (\n\t<Box p=\"3\" borderTopWidth=\"1px\" borderTopColor=\"border\">\n\t\t{children}\n\t</Box>\n);\nSidebarFooter.displayName = \"Sidebar.Footer\";\n\n// Logo\nexport interface SidebarLogoProps {\n\twordmark: string;\n\tsubtitle?: string;\n}\n\nconst SidebarLogo = ({ wordmark, subtitle }: SidebarLogoProps) => {\n\tconst { collapsed, toggle } = useSidebarContext();\n\n\tconst toggleButton = (\n\t\t<IconButton\n\t\t\tdata-testid=\"sidebar-toggle\"\n\t\t\taria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n\t\t\tvariant=\"ghost\"\n\t\t\tsize=\"sm\"\n\t\t\tonClick={toggle}\n\t\t>\n\t\t\t{collapsed ? <PanelLeftOpen size={16} /> : <PanelLeftClose size={16} />}\n\t\t</IconButton>\n\t);\n\n\tif (collapsed) {\n\t\treturn (\n\t\t\t<Flex direction=\"column\" align=\"center\" gap=\"2\">\n\t\t\t\t<Heading\n\t\t\t\t\tas=\"span\"\n\t\t\t\t\tfontSize=\"lg\"\n\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\tcolor=\"primary.700\"\n\t\t\t\t\tletterSpacing=\"tight\"\n\t\t\t\t>\n\t\t\t\t\t{wordmark.charAt(0)}\n\t\t\t\t</Heading>\n\t\t\t\t{toggleButton}\n\t\t\t</Flex>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Flex\n\t\t\tdirection=\"row\"\n\t\t\talign=\"center\"\n\t\t\tjustify=\"space-between\"\n\t\t\tgap=\"2\"\n\t\t\tw=\"full\"\n\t\t>\n\t\t\t<Box mb={subtitle ? \"0\" : \"0\"}>\n\t\t\t\t<Heading\n\t\t\t\t\tas=\"span\"\n\t\t\t\t\tfontSize=\"lg\"\n\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\tcolor=\"primary.700\"\n\t\t\t\t\tletterSpacing=\"tight\"\n\t\t\t\t>\n\t\t\t\t\t{wordmark}\n\t\t\t\t</Heading>\n\t\t\t\t{subtitle && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tfontSize=\"2xs\"\n\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t\tletterSpacing=\"wider\"\n\t\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\t\tmt=\"0.5\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t\t{toggleButton}\n\t\t</Flex>\n\t);\n};\nSidebarLogo.displayName = \"Sidebar.Logo\";\n\n// Slot\nconst SidebarSlot = ({ children }: { children: React.ReactNode }) => (\n\t<Box mt=\"3\">{children}</Box>\n);\nSidebarSlot.displayName = \"Sidebar.Slot\";\n\n// Section — nav group\nexport interface SidebarSectionProps {\n\tlabel: string;\n\tchildren: React.ReactNode;\n}\n\nconst SidebarSection = ({ label, children }: SidebarSectionProps) => {\n\tconst { collapsed } = useSidebarContext();\n\treturn (\n\t\t<Box mb=\"4\" px=\"3\">\n\t\t\t{!collapsed && (\n\t\t\t\t<Text\n\t\t\t\t\tfontSize=\"2xs\"\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tletterSpacing=\"wider\"\n\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\tpx=\"2\"\n\t\t\t\t\tmb=\"1\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t<Flex direction=\"column\" gap=\"0.5\">\n\t\t\t\t{children}\n\t\t\t</Flex>\n\t\t</Box>\n\t);\n};\nSidebarSection.displayName = \"Sidebar.Section\";\n\n// Item — nav link with active state\nexport interface SidebarItemProps {\n\ticon?: React.ReactNode;\n\tchildren: React.ReactNode;\n\tasChild?: boolean;\n\tactive?: boolean;\n\tlabel?: string; // NEW — overrides children for tooltip text when collapsed\n}\n\nconst SidebarItem = ({\n\ticon,\n\tchildren,\n\tasChild,\n\tactive,\n\tlabel,\n}: SidebarItemProps) => {\n\tconst { collapsed } = useSidebarContext();\n\n\t// Styles must be plain CSS so they survive `style={...}` inline styling on\n\t// the cloned asChild element (e.g. <NavLink>). Chakra prop shorthand like\n\t// `bg=\"primary.50\"` or `borderRadius=\"md\"` is silently dropped by the\n\t// browser when applied as inline CSS — it only resolves through Chakra\n\t// components. We reference Chakra's emitted CSS variables directly.\n\tconst itemStyle: React.CSSProperties = {\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: collapsed ? \"center\" : \"flex-start\",\n\t\tgap: \"var(--chakra-spacing-2)\",\n\t\tpaddingInline: \"var(--chakra-spacing-3)\",\n\t\tpaddingBlock: \"var(--chakra-spacing-2)\",\n\t\tborderRadius: \"var(--chakra-radii-sm)\",\n\t\tfontSize: \"var(--chakra-font-sizes-sm)\",\n\t\tfontWeight: active\n\t\t\t? \"var(--chakra-font-weights-medium)\"\n\t\t\t: \"var(--chakra-font-weights-normal)\",\n\t\tcolor: active\n\t\t\t? \"var(--chakra-colors-primary-700)\"\n\t\t\t: \"var(--chakra-colors-default)\",\n\t\tbackground: active ? \"var(--chakra-colors-bg-surface)\" : \"transparent\",\n\t\tboxShadow: active\n\t\t\t? \"inset 0 0 0 1px var(--chakra-colors-border), 0 1px 2px rgba(0,0,0,0.04)\"\n\t\t\t: undefined,\n\t\tposition: \"relative\",\n\t\ttextDecoration: \"none\",\n\t};\n\n\tconst iconEl = icon ? (\n\t\t<Box display=\"inline-flex\" alignItems=\"center\" flexShrink={0}>\n\t\t\t{icon}\n\t\t</Box>\n\t) : null;\n\n\t// Right-tab indicator on active items, matching the design handoff\n\t// (3px × 14px primary.700 pill at the trailing edge of the row).\n\t// Hidden when collapsed (no room).\n\tconst activeTab =\n\t\tactive && !collapsed ? (\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: 3,\n\t\t\t\t\theight: 14,\n\t\t\t\t\tbackground: \"var(--chakra-colors-primary-700)\",\n\t\t\t\t\tborderRadius: 999,\n\t\t\t\t\tflexShrink: 0,\n\t\t\t\t\tmarginInlineStart: \"auto\",\n\t\t\t\t}}\n\t\t\t/>\n\t\t) : null;\n\n\tconst tooltipLabel = label || (typeof children === \"string\" ? children : \"\");\n\n\tconst wrapTooltip = (node: React.ReactElement) =>\n\t\tcollapsed && tooltipLabel ? (\n\t\t\t<Tooltip content={tooltipLabel} positioning={{ placement: \"right\" }}>\n\t\t\t\t{node}\n\t\t\t</Tooltip>\n\t\t) : (\n\t\t\tnode\n\t\t);\n\n\tif (asChild) {\n\t\tconst child = React.Children.only(children) as React.ReactElement<\n\t\t\tReact.HTMLAttributes<HTMLElement> & {\n\t\t\t\thref?: string;\n\t\t\t\t\"data-testid\"?: string;\n\t\t\t\t\"data-active\"?: string;\n\t\t\t\tchildren?: React.ReactNode;\n\t\t\t}\n\t\t>;\n\t\tconst cloned = React.cloneElement(\n\t\t\tchild,\n\t\t\t{\n\t\t\t\t\"data-active\": active ? \"true\" : \"false\",\n\t\t\t\tstyle: {\n\t\t\t\t\t...itemStyle,\n\t\t\t\t\t...(child.props.style as React.CSSProperties | undefined),\n\t\t\t\t},\n\t\t\t},\n\t\t\ticonEl,\n\t\t\tcollapsed ? null : child.props.children,\n\t\t\tactiveTab,\n\t\t);\n\t\treturn wrapTooltip(cloned);\n\t}\n\n\treturn wrapTooltip(\n\t\t<Box\n\t\t\tdata-testid=\"sidebar-item\"\n\t\t\tdata-active={active ? \"true\" : \"false\"}\n\t\t\tstyle={itemStyle}\n\t\t>\n\t\t\t{iconEl}\n\t\t\t{!collapsed && children}\n\t\t\t{activeTab}\n\t\t</Box>,\n\t);\n};\nSidebarItem.displayName = \"Sidebar.Item\";\n\n// UserMenu\nexport interface SidebarUserMenuProps {\n\tuser: { name?: string; email?: string };\n\tchildren: React.ReactNode;\n}\n\nconst SidebarUserMenu = ({ user, children }: SidebarUserMenuProps) => {\n\tconst { collapsed } = useSidebarContext();\n\tconst initials = (user.name ?? user.email ?? \"\")\n\t\t.split(/\\s+/)\n\t\t.slice(0, 2)\n\t\t.map((s) => s[0]?.toUpperCase() ?? \"\")\n\t\t.join(\"\");\n\n\treturn (\n\t\t<MenuRoot>\n\t\t\t<MenuTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tdata-testid=\"sidebar-user-menu-trigger\"\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tw=\"full\"\n\t\t\t\t\tjustifyContent={collapsed ? \"center\" : \"flex-start\"}\n\t\t\t\t\tpx=\"2\"\n\t\t\t\t>\n\t\t\t\t\t<Flex align=\"center\" gap=\"2\" w={collapsed ? \"auto\" : \"full\"}>\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\t\t\tw=\"32px\"\n\t\t\t\t\t\t\th=\"32px\"\n\t\t\t\t\t\t\tborderRadius=\"full\"\n\t\t\t\t\t\t\tbg=\"primary.700\"\n\t\t\t\t\t\t\tcolor=\"white\"\n\t\t\t\t\t\t\tfontSize=\"xs\"\n\t\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t\t\tflexShrink={0}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{initials || \"?\"}\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t{!collapsed && (\n\t\t\t\t\t\t\t<Box textAlign=\"start\" flex=\"1\" minW=\"0\">\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tfontSize=\"sm\"\n\t\t\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\t\t\t\t\tlineClamp={1}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{user.name ?? user.email}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{user.email && user.name && (\n\t\t\t\t\t\t\t\t\t<Text fontSize=\"xs\" color=\"muted\" lineClamp={1}>\n\t\t\t\t\t\t\t\t\t\t{user.email}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Flex>\n\t\t\t\t</Button>\n\t\t\t</MenuTrigger>\n\t\t\t<MenuContent portalled={false}>{children}</MenuContent>\n\t\t</MenuRoot>\n\t);\n};\nSidebarUserMenu.displayName = \"Sidebar.UserMenu\";\n\n// UserMenuItem\nexport interface SidebarUserMenuItemProps {\n\tasChild?: boolean;\n\tonClick?: () => void;\n\tchildren: React.ReactNode;\n}\n\nconst SidebarUserMenuItem = ({\n\tasChild,\n\tonClick,\n\tchildren,\n}: SidebarUserMenuItemProps) => {\n\tif (asChild) {\n\t\tconst child = React.Children.only(children) as React.ReactElement;\n\t\treturn (\n\t\t\t<MenuItem value=\"link\" onClick={onClick}>\n\t\t\t\t{React.cloneElement(child, {})}\n\t\t\t</MenuItem>\n\t\t);\n\t}\n\treturn (\n\t\t<MenuItem\n\t\t\tvalue={typeof children === \"string\" ? children : \"item\"}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t{children}\n\t\t</MenuItem>\n\t);\n};\nSidebarUserMenuItem.displayName = \"Sidebar.UserMenuItem\";\n\n// Compose\nexport const Sidebar = Object.assign(SidebarRoot, {\n\tHeader: SidebarHeader,\n\tBody: SidebarBody,\n\tFooter: SidebarFooter,\n\tLogo: SidebarLogo,\n\tSlot: SidebarSlot,\n\tSection: SidebarSection,\n\tItem: SidebarItem,\n\tUserMenu: SidebarUserMenu,\n\tUserMenuItem: SidebarUserMenuItem,\n});\n","import { X } from \"lucide-react\";\nimport type React from \"react\";\nimport { useState } from \"react\";\nimport { IconButton } from \"../atoms/button\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface SidebarSectionProps {\n\tlabel: string;\n\tchildren:\n\t\t| React.ReactNode\n\t\t| ((state: {\n\t\t\t\tisEditing: boolean;\n\t\t\t\tsetEditing: (v: boolean) => void;\n\t\t }) => React.ReactNode);\n\tactionIcon?: React.ReactNode;\n\tonAction?: () => void;\n\teditContent?: React.ReactNode;\n\temptyText?: string;\n\tdefaultEditing?: boolean;\n}\n\nexport const SidebarSection: React.FC<SidebarSectionProps> = ({\n\tlabel,\n\tchildren,\n\tactionIcon,\n\tonAction,\n\teditContent,\n\temptyText,\n\tdefaultEditing,\n}) => {\n\tconst [isEditing, setEditing] = useState(defaultEditing ?? false);\n\n\tconst hasActionButton = Boolean(actionIcon && (onAction || editContent));\n\n\tconst handleActionClick = () => {\n\t\tif (onAction) {\n\t\t\tonAction();\n\t\t} else if (editContent) {\n\t\t\tsetEditing((prev) => !prev);\n\t\t}\n\t};\n\n\tconst resolvedIcon =\n\t\tisEditing && !onAction && editContent ? <X size={14} /> : actionIcon;\n\n\tlet content: React.ReactNode;\n\tif (typeof children === \"function\") {\n\t\tcontent = children({ isEditing, setEditing });\n\t} else if (isEditing && editContent) {\n\t\tcontent = editContent;\n\t} else {\n\t\tcontent = children;\n\t}\n\n\tconst isEmpty =\n\t\tcontent === null ||\n\t\tcontent === undefined ||\n\t\tcontent === \"\" ||\n\t\tcontent === false;\n\n\treturn (\n\t\t<Box py={3}>\n\t\t\t<Flex justify=\"space-between\" align=\"center\">\n\t\t\t\t<Text\n\t\t\t\t\tfontSize=\"xs\"\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tcolor=\"fg.muted\"\n\t\t\t\t\ttextTransform=\"uppercase\"\n\t\t\t\t\tletterSpacing=\"wide\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Text>\n\t\t\t\t{hasActionButton && (\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\taria-label={isEditing && !onAction ? \"Cancel edit\" : label}\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tonClick={handleActionClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedIcon}\n\t\t\t\t\t</IconButton>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t\t<Box py={2}>\n\t\t\t\t{isEmpty && emptyText ? (\n\t\t\t\t\t<Text fontSize=\"sm\" color=\"fg.subtle\">\n\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t</Text>\n\t\t\t\t) : (\n\t\t\t\t\tcontent\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t</Box>\n\t);\n};\n\nSidebarSection.displayName = \"SidebarSection\";\n","import { createContext } from \"@chakra-ui/react\";\nimport React, { useCallback } from \"react\";\n\nexport const [StepperProvider, useStepperContext] =\n\tcreateContext<UseStepperReturn>({\n\t\tname: \"StepperContext\",\n\t\terrorMessage:\n\t\t\t\"useStepperContext: `context` is undefined. Seems you forgot to wrap stepper components in `<Stepper />`\",\n\t});\n\nexport interface UseStepperProps {\n\tstep?: number | string;\n\tisCompleted?: boolean;\n\tonChange?(index: number): void;\n}\n\nexport function useStepper(props: UseStepperProps) {\n\tconst { step, onChange } = props;\n\n\tconst [activeIndex, setIndex] = React.useState(-1); // Set to -1 by default to prevent any initial transitions.\n\n\tconst stepsRef = React.useRef<string[]>([]);\n\n\tconst registerStep = React.useCallback((name: string) => {\n\t\tconst newSteps = [...stepsRef.current];\n\n\t\tif (newSteps.indexOf(name) === -1) {\n\t\t\tnewSteps.push(name);\n\t\t}\n\n\t\tstepsRef.current = newSteps;\n\t}, []);\n\n\tconst unregisterStep = React.useCallback((name: string) => {\n\t\tstepsRef.current = stepsRef.current.filter((step) => step !== name);\n\t}, []);\n\n\tconst setStep = useCallback((name: string) => {\n\t\tconst i = stepsRef.current.indexOf(name);\n\t\tif (i !== -1) {\n\t\t\tsetIndex(i);\n\t\t}\n\t}, []);\n\n\tconst nextStep = () => {\n\t\tsetIndex(activeIndex + 1);\n\t};\n\n\tconst prevStep = () => {\n\t\tsetIndex(activeIndex - 1);\n\t};\n\n\tReact.useEffect(() => {\n\t\tif (typeof step === \"string\") {\n\t\t\tsetStep(step);\n\t\t} else if (typeof step === \"number\") {\n\t\t\tsetIndex(step);\n\t\t} else if (activeIndex === -1) {\n\t\t\tsetIndex(0); // initiate the stepper by activating the first step\n\t\t}\n\t}, [step, activeIndex, setStep]);\n\n\tReact.useEffect(() => {\n\t\tonChange?.(activeIndex);\n\t}, [activeIndex, onChange]);\n\n\tconst context = {\n\t\tstepsRef,\n\t\tactiveStep: stepsRef.current[activeIndex],\n\t\tactiveIndex,\n\t\tisFirstStep: activeIndex === 0,\n\t\tisLastStep: activeIndex === stepsRef.current.length - 1,\n\t\tisCompleted: activeIndex >= stepsRef.current.length,\n\t\tsetIndex,\n\t\tsetStep,\n\t\tnextStep,\n\t\tprevStep,\n\t\tregisterStep,\n\t\tunregisterStep,\n\t};\n\n\treturn context;\n}\n\nexport type UseStepperReturn = ReturnType<typeof useStepper>;\n\nexport interface UseStepProps {\n\tname?: string;\n\tisActive?: boolean;\n\tisCompleted?: boolean;\n}\n\nexport function useStep(props: UseStepProps) {\n\tconst { name, isActive, isCompleted } = props;\n\tconst { registerStep, unregisterStep, activeStep } = useStepperContext();\n\n\tReact.useEffect(() => {\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\t\tregisterStep(name);\n\n\t\treturn () => {\n\t\t\tunregisterStep(name);\n\t\t};\n\t}, [name, registerStep, unregisterStep]);\n\n\treturn {\n\t\tisActive: name ? activeStep === name : isActive,\n\t\tisCompleted,\n\t};\n}\n\n/**\n * Returns props for a Prev Button\n */\nexport function useStepperPrevButton({ label = \"Back\" } = {}) {\n\tconst { isFirstStep, prevStep } = useStepperContext();\n\n\treturn {\n\t\tdisabled: isFirstStep,\n\t\tonClick: prevStep,\n\t\tchildren: label,\n\t};\n}\n\n/**\n * Returns props for a Next Button\n */\nexport function useStepperNextButton({\n\tlabel = \"Next\",\n\tsubmitLabel = \"Submit\",\n} = {}) {\n\tconst { isLastStep, isCompleted, nextStep } = useStepperContext();\n\n\treturn {\n\t\tdisabled: isCompleted,\n\t\tonClick: nextStep,\n\t\tchildren: isLastStep ? submitLabel : label,\n\t};\n}\n","import {\n\tchakra,\n\ttype HTMLChakraProps,\n\ttype SystemStyleObject,\n\tuseSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { Check } from \"lucide-react\";\nimport React, { createContext, useContext } from \"react\";\nimport { Collapsible } from \"../../primitives/collapsible\";\nimport {\n\tStepperProvider,\n\ttype UseStepperProps,\n\tuseStep,\n\tuseStepper,\n\tuseStepperContext,\n} from \"./use-stepper\";\n\n// ---------------------------------------------------------------------------\n// Inlined helpers (from core utils)\n// ---------------------------------------------------------------------------\n\nfunction getChildOfType(children: React.ReactNode, type: React.ComponentType) {\n\treturn (React.Children.toArray(children) as React.ReactElement[]).find(\n\t\t(item) => item.type === type,\n\t);\n}\n\nfunction getChildrenOfType<P = Record<string, unknown>>(\n\tchildren: React.ReactNode,\n\ttype: React.ComponentType<P> | React.ComponentType<P>[],\n) {\n\treturn (React.Children.toArray(children) as React.ReactElement<P>[]).filter(\n\t\t(item) =>\n\t\t\tArray.isArray(type)\n\t\t\t\t? type.some((component) => component === item.type)\n\t\t\t\t: item.type === type,\n\t);\n}\n\n// Simple replacement for the removed dataAttr helper\nconst dataAttr = (condition: boolean | undefined) =>\n\tcondition ? \"\" : undefined;\n\n// Simple replacement for the removed cx helper\nconst cx = (...classes: (string | undefined)[]) =>\n\tclasses.filter(Boolean).join(\" \");\n\n// ---------------------------------------------------------------------------\n// Styles context -- populated by useSlotRecipe in StepperContainer\n// ---------------------------------------------------------------------------\n\ntype StepperStyles = Record<string, SystemStyleObject>;\n\nconst StylesContext = createContext<StepperStyles>({});\nconst useStyles = () => useContext(StylesContext);\n\n// ---------------------------------------------------------------------------\n\nexport interface StepperProps\n\textends UseStepperProps,\n\t\tOmit<HTMLChakraProps<\"div\">, \"onChange\"> {\n\torientation?: \"horizontal\" | \"vertical\";\n\tvariant?: \"subtle\" | \"solid\";\n\tsize?: \"md\" | \"lg\";\n}\n\n/**\n * Display progress in multi-step workflows.\n *\n * Can be controlled or uncontrolled.\n */\nexport const Stepper = ({\n\tref,\n\t...props\n}: StepperProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst { orientation, children, ...containerProps } = props;\n\treturn (\n\t\t<StepperContainer ref={ref} orientation={orientation} {...containerProps}>\n\t\t\t<StepperSteps orientation={orientation}>{children}</StepperSteps>\n\t\t</StepperContainer>\n\t);\n};\nStepper.displayName = \"Stepper\";\n\nexport const StepperContainer = ({\n\tref,\n\t...props\n}: StepperProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst {\n\t\tchildren,\n\t\torientation = \"horizontal\",\n\t\tvariant,\n\t\tsize,\n\t\tonChange,\n\t\t...rest\n\t} = props;\n\n\tconst context = useStepper(props);\n\n\tconst recipe = useSlotRecipe({ key: \"stepper\" });\n\tconst styles = recipe({ variant, size, orientation });\n\n\treturn (\n\t\t<StylesContext.Provider value={styles}>\n\t\t\t<StepperProvider value={context}>\n\t\t\t\t<chakra.div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tcss={styles.container}\n\t\t\t\t\t{...rest}\n\t\t\t\t\tclassName={cx(\"stepper\", props.className)}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</chakra.div>\n\t\t\t</StepperProvider>\n\t\t</StylesContext.Provider>\n\t);\n};\nStepperContainer.displayName = \"StepperContainer\";\n\nexport interface StepperStepsProps extends HTMLChakraProps<\"div\"> {\n\torientation?: \"horizontal\" | \"vertical\";\n\tstepComponent?: React.JSXElementConstructor<StepperStepProps>;\n}\n\n/**\n * Wrapper element containing the steps.\n */\nexport const StepperSteps: React.FC<StepperStepsProps> = (props) => {\n\tconst {\n\t\tchildren,\n\t\torientation = \"horizontal\",\n\t\tstepComponent,\n\t\t...rest\n\t} = props;\n\tconst styles = useStyles();\n\n\tconst { activeIndex } = useStepperContext();\n\n\tconst isVertical = orientation === \"vertical\";\n\n\tconst Step = stepComponent || StepperStep;\n\n\tconst steps = getChildrenOfType(children, Step);\n\n\tconst elements = steps.reduce<React.ReactElement[]>((memo, step, i, arr) => {\n\t\tmemo.push(\n\t\t\t<Step\n\t\t\t\tkey={step.key}\n\t\t\t\t{...step.props}\n\t\t\t\ticon={step.props.icon || i + 1}\n\t\t\t\tisActive={activeIndex === i}\n\t\t\t\tisCompleted={step.props.isCompleted || activeIndex > i}\n\t\t\t/>,\n\t\t);\n\n\t\tif (isVertical) {\n\t\t\tmemo.push(\n\t\t\t\t<StepperContent key={`content-${step.key}`} open={activeIndex === i}>\n\t\t\t\t\t{step.props.children}\n\t\t\t\t</StepperContent>,\n\t\t\t);\n\t\t}\n\n\t\tif (i < arr.length - 1) {\n\t\t\tmemo.push(\n\t\t\t\t<StepperSeparator\n\t\t\t\t\tkey={`separator-${step.key}`}\n\t\t\t\t\tisActive={i < activeIndex}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\treturn memo;\n\t}, []);\n\n\tconst completed = getChildOfType(children, StepperCompleted);\n\n\tconst content =\n\t\tactiveIndex >= steps.length ? (\n\t\t\tcompleted\n\t\t) : !isVertical ? (\n\t\t\t<StepperContent>{steps[activeIndex]?.props?.children}</StepperContent>\n\t\t) : null;\n\n\treturn (\n\t\t<>\n\t\t\t<chakra.div\n\t\t\t\tcss={styles.steps}\n\t\t\t\t{...rest}\n\t\t\t\tclassName={cx(\"stepper__steps\", props.className)}\n\t\t\t>\n\t\t\t\t{elements}\n\t\t\t</chakra.div>\n\t\t\t{content}\n\t\t</>\n\t);\n};\n\nStepperSteps.displayName = \"StepperSteps\";\n\nexport interface StepperContentProps extends HTMLChakraProps<\"div\"> {\n\t/**\n\t * Show or hide the content\n\t */\n\topen?: boolean;\n}\n\n/**\n * Renders the step content, is collapsible.\n */\nexport const StepperContent: React.FC<StepperContentProps> = (props) => {\n\tconst { children, open = true, ...rest } = props;\n\tconst styles = useStyles();\n\n\treturn (\n\t\t<chakra.div\n\t\t\tcss={styles.content}\n\t\t\t{...rest}\n\t\t\tclassName={cx(\"stepper__content\", props.className)}\n\t\t>\n\t\t\t<Collapsible.Root open={open}>\n\t\t\t\t<Collapsible.Content>{children}</Collapsible.Content>\n\t\t\t</Collapsible.Root>\n\t\t</chakra.div>\n\t);\n};\n\nStepperContent.displayName = \"StepperContent\";\n\nexport interface StepperIconProps extends HTMLChakraProps<\"div\"> {\n\ticon: React.ReactNode;\n\tisActive?: boolean;\n\tisCompleted?: boolean;\n}\n\n/**\n * Displays the current step or a completed icon.\n */\nexport const StepperIcon: React.FC<StepperIconProps> = (props) => {\n\tconst { icon, isActive, isCompleted, className, ...rest } = props;\n\n\tconst styles = useStyles();\n\n\tconst content: React.ReactNode = isCompleted ? <Check size={14} /> : icon;\n\n\treturn (\n\t\t<chakra.div\n\t\t\tcss={styles.icon}\n\t\t\t{...rest}\n\t\t\tclassName={cx(\"stepper__icon\", className)}\n\t\t\tdata-active={dataAttr(isActive)}\n\t\t>\n\t\t\t{content}\n\t\t</chakra.div>\n\t);\n};\n\nStepperIcon.displayName = \"StepperIcon\";\n\nexport interface StepperStepProps\n\textends Omit<HTMLChakraProps<\"div\">, \"title\"> {\n\t/**\n\t * The step title\n\t */\n\ttitle: React.ReactNode;\n\t/**\n\t * The step name, used for controlled steppers\n\t */\n\tname?: string;\n\t/**\n\t * Show an icon instead of the step number\n\t */\n\ticon?: React.ReactNode;\n\tisActive?: boolean;\n\tisCompleted?: boolean;\n}\n\n/**\n * Displays the icon and step title.\n */\nexport const StepperStep: React.FC<StepperStepProps> = (props) => {\n\tconst { title, icon, isActive, isCompleted, ...rest } = props;\n\tconst step = useStep(props);\n\tconst styles = useStyles();\n\n\treturn (\n\t\t<chakra.div\n\t\t\t{...rest}\n\t\t\tcss={styles.step}\n\t\t\tdata-active={dataAttr(step.isActive)}\n\t\t\tdata-completed={dataAttr(step.isCompleted)}\n\t\t\taria-current={step.isActive ? \"step\" : undefined}\n\t\t\tclassName={cx(\"stepper__step\", props.className)}\n\t\t>\n\t\t\t<StepperIcon icon={icon} isActive={isActive} isCompleted={isCompleted} />\n\t\t\t{title && <StepperStepTitle>{title}</StepperStepTitle>}\n\t\t</chakra.div>\n\t);\n};\n\nStepperStep.displayName = \"StepperStep\";\n\nexport interface StepperSeparatorProps extends HTMLChakraProps<\"div\"> {\n\tisActive?: boolean;\n}\n\n/**\n * The separator between steps.\n */\nexport const StepperSeparator: React.FC<StepperSeparatorProps> = (props) => {\n\tconst { isActive, ...rest } = props;\n\tconst styles = useStyles();\n\n\treturn (\n\t\t<chakra.div\n\t\t\t{...rest}\n\t\t\tdata-active={dataAttr(isActive)}\n\t\t\tclassName={cx(\"stepper__separator\", props.className)}\n\t\t\tcss={styles.separator}\n\t\t/>\n\t);\n};\n\nStepperSeparator.displayName = \"StepperSeparator\";\n\n/**\n * The step title.\n */\nexport const StepperStepTitle: React.FC<HTMLChakraProps<\"p\">> = (props) => {\n\tconst styles = useStyles();\n\treturn (\n\t\t<chakra.p\n\t\t\t{...props}\n\t\t\tcss={styles.title}\n\t\t\tclassName={cx(\"stepper__title\", props.className)}\n\t\t/>\n\t);\n};\n\nStepperStepTitle.displayName = \"StepperStepTitle\";\n\n/**\n * Shown when all steps have completed.\n */\nexport const StepperCompleted: React.FC<HTMLChakraProps<\"div\">> = (props) => {\n\tconst styles = useStyles();\n\treturn (\n\t\t<chakra.div\n\t\t\tcss={styles.completed}\n\t\t\t{...props}\n\t\t\tclassName={cx(\"stepper__completed\", props.className)}\n\t\t/>\n\t);\n};\n\nStepperCompleted.displayName = \"StepperCompleted\";\n","import { Timeline as ChakraTimeline } from \"@chakra-ui/react\";\n\n// Pass-through exports for full composition\nexport const TimelineRoot = ChakraTimeline.Root;\nTimelineRoot.displayName = \"TimelineRoot\";\n\nexport const TimelineItem = ChakraTimeline.Item;\nTimelineItem.displayName = \"TimelineItem\";\n\nexport const TimelineConnector = ChakraTimeline.Connector;\nTimelineConnector.displayName = \"TimelineConnector\";\n\nexport const TimelineSeparator = ChakraTimeline.Separator;\nTimelineSeparator.displayName = \"TimelineSeparator\";\n\nexport const TimelineIndicator = ChakraTimeline.Indicator;\nTimelineIndicator.displayName = \"TimelineIndicator\";\n\nexport const TimelineContent = ChakraTimeline.Content;\nTimelineContent.displayName = \"TimelineContent\";\n\nexport const TimelineTitle = ChakraTimeline.Title;\nTimelineTitle.displayName = \"TimelineTitle\";\n\nexport const TimelineDescription = ChakraTimeline.Description;\nTimelineDescription.displayName = \"TimelineDescription\";\n\nexport type TimelineRootProps = ChakraTimeline.RootProps;\nexport type TimelineItemProps = ChakraTimeline.ItemProps;\n","// src/components/toolbar.tsx\nimport { Search } from \"lucide-react\";\nimport type React from \"react\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\n// Root\nconst ToolbarRoot = ({ children }: { children: React.ReactNode }) => (\n\t<Flex\n\t\tdata-testid=\"toolbar\"\n\t\talign=\"center\"\n\t\tgap=\"4\"\n\t\tpx=\"4\"\n\t\th=\"48px\"\n\t\tbg=\"bg-subtle\"\n\t\tborderBottomWidth=\"1px\"\n\t\tborderBottomColor=\"border\"\n\t>\n\t\t{children}\n\t</Flex>\n);\nToolbarRoot.displayName = \"Toolbar\";\n\n// Search\nexport interface ToolbarSearchProps {\n\tplaceholder?: string;\n\tvalue: string;\n\tonChange: (next: string) => void;\n}\n\nconst ToolbarSearch = ({\n\tplaceholder,\n\tvalue,\n\tonChange,\n}: ToolbarSearchProps) => (\n\t<Flex align=\"center\" gap=\"2\" w=\"260px\" position=\"relative\">\n\t\t<Box position=\"absolute\" left=\"2\" color=\"muted\" pointerEvents=\"none\">\n\t\t\t<Search size={14} />\n\t\t</Box>\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\tplaceholder={placeholder}\n\t\t\tvalue={value}\n\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n\t\t\t\tonChange(e.target.value)\n\t\t\t}\n\t\t\tstyle={{\n\t\t\t\theight: \"32px\",\n\t\t\t\tpaddingLeft: \"2rem\",\n\t\t\t\tpaddingRight: \"0.5rem\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tborderWidth: \"1px\",\n\t\t\t\tborderStyle: \"solid\",\n\t\t\t\tborderRadius: \"var(--chakra-radii-md)\",\n\t\t\t\tfontSize: \"var(--chakra-font-sizes-sm)\",\n\t\t\t\tbackground: \"var(--chakra-colors-bg-surface, white)\",\n\t\t\t\toutline: \"none\",\n\t\t\t}}\n\t\t/>\n\t</Flex>\n);\nToolbarSearch.displayName = \"Toolbar.Search\";\n\n// Filters\nconst ToolbarFilters = ({ children }: { children: React.ReactNode }) => (\n\t<Flex align=\"center\" gap=\"2\">\n\t\t{children}\n\t</Flex>\n);\nToolbarFilters.displayName = \"Toolbar.Filters\";\n\n// FilterChip\nexport interface ToolbarFilterChipProps {\n\ticon?: React.ReactNode;\n\tactive?: boolean;\n\tonClick: () => void;\n\tchildren: React.ReactNode;\n}\n\nconst ToolbarFilterChip = ({\n\ticon,\n\tactive,\n\tonClick,\n\tchildren,\n}: ToolbarFilterChipProps) => (\n\t<button\n\t\ttype=\"button\"\n\t\tdata-testid=\"filter-chip\"\n\t\tdata-active={active ? \"true\" : \"false\"}\n\t\tonClick={onClick}\n\t\tstyle={{\n\t\t\tdisplay: \"inline-flex\",\n\t\t\talignItems: \"center\",\n\t\t\tgap: \"4px\",\n\t\t\tpadding: \"0 10px\",\n\t\t\theight: \"28px\",\n\t\t\tfontSize: \"var(--chakra-font-sizes-xs)\",\n\t\t\tfontWeight: \"var(--chakra-font-weights-medium)\",\n\t\t\tborderWidth: \"1px\",\n\t\t\tborderStyle: \"solid\",\n\t\t\tborderRadius: \"var(--chakra-radii-md)\",\n\t\t\tcursor: \"pointer\",\n\t\t}}\n\t>\n\t\t{icon && (\n\t\t\t<Box display=\"inline-flex\" alignItems=\"center\">\n\t\t\t\t{icon}\n\t\t\t</Box>\n\t\t)}\n\t\t{children}\n\t</button>\n);\nToolbarFilterChip.displayName = \"Toolbar.FilterChip\";\n\n// Right slot\nconst ToolbarRight = ({ children }: { children: React.ReactNode }) => (\n\t<Flex align=\"center\" gap=\"2\" ml=\"auto\">\n\t\t{children}\n\t</Flex>\n);\nToolbarRight.displayName = \"Toolbar.Right\";\n\n// Count\nconst ToolbarCount = ({ children }: { children: React.ReactNode }) => (\n\t<Text fontSize=\"xs\" color=\"muted\">\n\t\t{children}\n\t</Text>\n);\nToolbarCount.displayName = \"Toolbar.Count\";\n\n// Compose\nexport const Toolbar = Object.assign(ToolbarRoot, {\n\tSearch: ToolbarSearch,\n\tFilters: ToolbarFilters,\n\tFilterChip: ToolbarFilterChip,\n\tRight: ToolbarRight,\n\tCount: ToolbarCount,\n});\n","import {\n\tTreeView as ChakraTreeView,\n\tcreateTreeCollection,\n} from \"@chakra-ui/react\";\n\nexport { createTreeCollection };\nexport type { TreeCollection } from \"@chakra-ui/react\";\n\n// Pass-through exports for full composition\nexport const TreeViewRoot = ChakraTreeView.Root;\nTreeViewRoot.displayName = \"TreeViewRoot\";\n\nexport const TreeViewTree = ChakraTreeView.Tree;\nTreeViewTree.displayName = \"TreeViewTree\";\n\nexport const TreeViewBranch = ChakraTreeView.Branch;\nTreeViewBranch.displayName = \"TreeViewBranch\";\n\nexport const TreeViewBranchContent = ChakraTreeView.BranchContent;\nTreeViewBranchContent.displayName = \"TreeViewBranchContent\";\n\nexport const TreeViewBranchControl = ChakraTreeView.BranchControl;\nTreeViewBranchControl.displayName = \"TreeViewBranchControl\";\n\nexport const TreeViewBranchTrigger = ChakraTreeView.BranchTrigger;\nTreeViewBranchTrigger.displayName = \"TreeViewBranchTrigger\";\n\nexport const TreeViewBranchText = ChakraTreeView.BranchText;\nTreeViewBranchText.displayName = \"TreeViewBranchText\";\n\nexport const TreeViewBranchIndicator = ChakraTreeView.BranchIndicator;\nTreeViewBranchIndicator.displayName = \"TreeViewBranchIndicator\";\n\nexport const TreeViewItem = ChakraTreeView.Item;\nTreeViewItem.displayName = \"TreeViewItem\";\n\nexport const TreeViewItemText = ChakraTreeView.ItemText;\nTreeViewItemText.displayName = \"TreeViewItemText\";\n\nexport const TreeViewItemIndicator = ChakraTreeView.ItemIndicator;\nTreeViewItemIndicator.displayName = \"TreeViewItemIndicator\";\n\nexport const TreeViewNode = ChakraTreeView.Node;\n(TreeViewNode as { displayName?: string }).displayName = \"TreeViewNode\";\n\nexport const TreeViewLabel = ChakraTreeView.Label;\nTreeViewLabel.displayName = \"TreeViewLabel\";\n\nexport type TreeViewRootProps = ChakraTreeView.RootProps;\nexport type TreeViewBranchProps = ChakraTreeView.BranchProps;\nexport type TreeViewItemProps = ChakraTreeView.ItemProps;\n","import { Upload } from \"lucide-react\";\nimport type React from \"react\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"../atoms/button\";\nimport { Box, HStack, Stack } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface UploadDropZoneProps {\n\tonFiles: (files: File[]) => void;\n\tonError?: (error: { file: File; reason: \"size\" | \"type\" }) => void;\n\taccept?: string;\n\tmultiple?: boolean;\n\tcompact?: boolean;\n\tdisabled?: boolean;\n\tchildren?: React.ReactNode;\n\tmaxSize?: number;\n\tdragActiveText?: string;\n\tdropHintText?: string;\n\tbuttonLabel?: string;\n}\n\nfunction matchesAccept(file: File, accept: string): boolean {\n\tconst tokens = accept.split(\",\").map((t) => t.trim());\n\tfor (const token of tokens) {\n\t\tif (token.startsWith(\".\")) {\n\t\t\tif (file.name.toLowerCase().endsWith(token.toLowerCase())) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (token.includes(\"/*\")) {\n\t\t\tconst prefix = token.slice(0, token.indexOf(\"/*\"));\n\t\t\tif (file.type.startsWith(prefix)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (file.type === token) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\nexport const UploadDropZone = ({\n\tonFiles,\n\tonError,\n\taccept,\n\tmultiple = true,\n\tcompact = false,\n\tdisabled = false,\n\tchildren,\n\tmaxSize,\n\tdragActiveText = \"Release to upload\",\n\tdropHintText = \"Drag and drop files here\",\n\tbuttonLabel = \"Browse Files\",\n}: UploadDropZoneProps) => {\n\tconst [isDragActive, setIsDragActive] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tconst processFiles = (fileList: FileList | File[]) => {\n\t\tconst files = Array.from(fileList);\n\t\tconst accepted: File[] = [];\n\n\t\tfor (const file of files) {\n\t\t\tif (maxSize !== undefined && file.size > maxSize) {\n\t\t\t\tonError?.({ file, reason: \"size\" });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (accept && !matchesAccept(file, accept)) {\n\t\t\t\tonError?.({ file, reason: \"type\" });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\taccepted.push(file);\n\t\t}\n\n\t\tif (accepted.length > 0) {\n\t\t\tonFiles(multiple ? accepted : [accepted[0]]);\n\t\t}\n\t};\n\n\tconst handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t\tif (!disabled) {\n\t\t\tsetIsDragActive(true);\n\t\t}\n\t};\n\n\tconst handleDragLeave = () => {\n\t\tsetIsDragActive(false);\n\t};\n\n\tconst handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n\t\te.preventDefault();\n\t\tsetIsDragActive(false);\n\t\tif (disabled) return;\n\t\tif (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n\t\t\tprocessFiles(e.dataTransfer.files);\n\t\t}\n\t};\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tif (e.target.files && e.target.files.length > 0) {\n\t\t\tprocessFiles(e.target.files);\n\t\t}\n\t\te.target.value = \"\";\n\t};\n\n\tconst handleBrowseClick = () => {\n\t\tif (!disabled) {\n\t\t\tinputRef.current?.click();\n\t\t}\n\t};\n\n\tconst defaultContent = isDragActive ? (\n\t\t<Text color=\"fg.muted\" fontSize=\"sm\">\n\t\t\t{dragActiveText}\n\t\t</Text>\n\t) : compact ? (\n\t\t<HStack gap={3} align=\"center\">\n\t\t\t<Upload size={24} />\n\t\t\t<Text color=\"fg.muted\" fontSize=\"sm\">\n\t\t\t\t{dropHintText}\n\t\t\t</Text>\n\t\t\t<Button\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tonClick={handleBrowseClick}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t{buttonLabel}\n\t\t\t</Button>\n\t\t</HStack>\n\t) : (\n\t\t<Stack align=\"center\" gap={3}>\n\t\t\t<Upload size={48} />\n\t\t\t<Text color=\"fg.muted\" fontSize=\"sm\">\n\t\t\t\t{dropHintText}\n\t\t\t</Text>\n\t\t\t<Button\n\t\t\t\tvariant=\"outline\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tonClick={handleBrowseClick}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t{buttonLabel}\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n\n\treturn (\n\t\t<Box\n\t\t\tborderStyle=\"dashed\"\n\t\t\tborderWidth=\"2px\"\n\t\t\tborderColor={isDragActive ? \"accent\" : \"border\"}\n\t\t\tbg={isDragActive ? \"bg.accent-subtle\" : \"bg.subtle\"}\n\t\t\trounded=\"lg\"\n\t\t\ttextAlign=\"center\"\n\t\t\ttransition=\"all 0.2s\"\n\t\t\tp={compact ? 3 : 6}\n\t\t\topacity={disabled ? 0.5 : 1}\n\t\t\tcursor={disabled ? \"not-allowed\" : \"default\"}\n\t\t\tonDragOver={handleDragOver}\n\t\t\tonDragLeave={handleDragLeave}\n\t\t\tonDrop={handleDrop}\n\t\t>\n\t\t\t<input\n\t\t\t\tref={inputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept={accept}\n\t\t\t\tmultiple={multiple}\n\t\t\t\tstyle={{ display: \"none\" }}\n\t\t\t\tonChange={handleInputChange}\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\t\t\t{children !== undefined ? children : defaultContent}\n\t\t</Box>\n\t);\n};\n\nUploadDropZone.displayName = \"UploadDropZone\";\n","import { Card } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Text } from \"../primitives/typography\";\n\nexport interface WidgetProps {\n\theading: string;\n\tsubHeading?: string;\n\t/** Icon element (e.g. a lucide-react icon component). */\n\ticon: React.ReactNode;\n\tchildren: React.ReactNode;\n}\n\nexport const Widget: React.FC<WidgetProps> = ({\n\theading,\n\tsubHeading,\n\ticon,\n\tchildren,\n}) => {\n\treturn (\n\t\t<Card.Root height=\"100%\" maxW=\"auto\" overflow=\"hidden\" bg=\"bg-surface\">\n\t\t\t<Card.Body>\n\t\t\t\t<Box marginBlockEnd=\"6\">\n\t\t\t\t\t<Flex justifyContent=\"space-between\" alignItems=\"center\">\n\t\t\t\t\t\t<Text fontWeight=\"semibold\">{heading}</Text>\n\t\t\t\t\t\t<Box color=\"subtle\">{icon}</Box>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{subHeading && (\n\t\t\t\t\t\t<Text fontWeight=\"medium\" fontSize=\"xs\" color=\"muted\">\n\t\t\t\t\t\t\t{subHeading}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t\t{children}\n\t\t\t</Card.Body>\n\t\t</Card.Root>\n\t);\n};\nWidget.displayName = \"Widget\";\n"]}
|