@knkcs/anker 1.9.4 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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/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","COLLAPSED_WIDTH","EXPANDED_WIDTH","COLLAPSE_BREAKPOINT","getInitialCollapsed","useMemo","SidebarSection","createContext","step","useContext","Fragment","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","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 { 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}\n\nexport const StatusBadgeCell: React.FC<StatusBadgeCellProps> = ({\n\tvalue,\n\tcolorMap,\n\tfallbackColor = \"gray\",\n\tdetail,\n\tdetailColor = \"fg.error\",\n}) => {\n\tif (value == null) return <span>{emptyCellValue}</span>;\n\tconst color = colorMap?.[value] ?? fallbackColor;\n\tconst badge = <StatusBadge label={value} color={color} />;\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 { emptyCellValue, truncateText } from \"./cell-utils\";\n\nexport interface TruncatedTextCellProps {\n\tvalue: string | null | undefined;\n\tmaxLength?: number;\n}\n\nexport const TruncatedTextCell: React.FC<TruncatedTextCellProps> = ({\n\tvalue,\n\tmaxLength,\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\treturn <span title={isTruncated ? value : undefined}>{display}</span>;\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/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","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"]}