@knkcs/anker 1.0.0 → 1.1.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.
@@ -6,6 +6,37 @@ export { TreeCollection, createTreeCollection } from '@chakra-ui/react';
6
6
  import { ColumnDef, RowSelectionState, OnChangeFn, SortingState, Row } from '@tanstack/react-table';
7
7
  import { a as SwitchProps } from '../switch-B0o6G2XE.js';
8
8
 
9
+ interface AuthCardProps {
10
+ /** Logo or wordmark, far-left of the topbar. */
11
+ logo?: React__default.ReactNode;
12
+ /** Right-side topbar content (help link, locale switcher, etc.). */
13
+ topBarRight?: React__default.ReactNode;
14
+ /** Hide the topbar entirely (rare — e.g. embedded preview). */
15
+ hideTopBar?: boolean;
16
+ /** Hide the dot-grid background (rare — e.g. printable). */
17
+ hideBackground?: boolean;
18
+ /** Small uppercase eyebrow above the title. */
19
+ eyebrow?: React__default.ReactNode;
20
+ /**
21
+ * Card title. Accepts a string or inline element — the component wraps
22
+ * it in an `<h3>` (semantic heading, 24px, semibold, default color).
23
+ * Avoid passing block elements (e.g. `<div>`) or pre-built headings.
24
+ */
25
+ title?: React__default.ReactNode;
26
+ /** Subtitle below title (14px, muted color, centered). */
27
+ subtitle?: React__default.ReactNode;
28
+ /** Card width preset. md = 440px (default), lg = 480px. */
29
+ size?: "md" | "lg";
30
+ /** Card footer slot. Bottom-bordered inside the card. */
31
+ footer?: React__default.ReactNode;
32
+ /** Page content inside the card body. */
33
+ children: React__default.ReactNode;
34
+ }
35
+ declare const AuthCard: {
36
+ ({ logo, topBarRight, hideTopBar, hideBackground, eyebrow, title, subtitle, size, footer, children, }: AuthCardProps): react_jsx_runtime.JSX.Element;
37
+ displayName: string;
38
+ };
39
+
9
40
  interface BulkActionBarProps {
10
41
  /** Number of currently selected items. */
11
42
  selectedCount: number;
@@ -727,4 +758,4 @@ interface WidgetProps {
727
758
  }
728
759
  declare const Widget: React__default.FC<WidgetProps>;
729
760
 
730
- export { ActionCell, type ActionCellAction, type ActionCellProps, BooleanCell, type BooleanCellProps, BulkActionBar, type BulkActionBarProps, type BulkActionProps, type BulkPopoverActionProps, Card, CardList, CardListData, type CardListDataProps, CardListItem, type CardListItemProps, type CardListMenuItem, type CardListProps, type CardProps, ChipPicker, type ChipPickerProps, CodeCell, type CodeCellProps, ColorSwatchCell, type ColorSwatchCellProps, CountCell, type CountCellProps, DataTable, type DataTableProps, DateCell, type DateCellProps, type DrawerProps, DrawerRoot, FactBox, type FactBoxAction, type FactBoxProps, InlineCreatableList, type InlineCreatableListProps, LabeledSwitch, type LabeledSwitchProps, LinkCell, type LinkCellProps, MenuCell, type MenuCellAction, type MenuCellProps, Modal, type ModalProps, NumberCell, type NumberCellProps, Pagination, type PaginationProps, SelectableCard, type SelectableCardBodyProps, type SelectableCardFooterProps, type SelectableCardProps, type SelectableCardThumbnailProps, SidebarSection, type SidebarSectionProps, SlugCell, type SlugCellProps, StatusBadgeCell, type StatusBadgeCellProps, Stepper, StepperCompleted, StepperContainer, StepperContent, type StepperContentProps, StepperIcon, type StepperIconProps, type StepperProps, StepperProvider, StepperSeparator, type StepperSeparatorProps, StepperStep, type StepperStepProps, StepperStepTitle, StepperSteps, type StepperStepsProps, SwitchCell, type SwitchCellProps, CardList as Table, CardListData as TableData, type CardListDataProps as TableDataProps, CardListItem as TableItem, type CardListItemProps as TableItemProps, type CardListMenuItem as TableMenuItem, type CardListProps as TableProps, TimelineConnector, TimelineContent, TimelineDescription, TimelineIndicator, TimelineItem, type TimelineItemProps, TimelineRoot, type TimelineRootProps, TimelineSeparator, TimelineTitle, TreeViewBranch, TreeViewBranchContent, TreeViewBranchControl, TreeViewBranchIndicator, type TreeViewBranchProps, TreeViewBranchText, TreeViewBranchTrigger, TreeViewItem, TreeViewItemIndicator, type TreeViewItemProps, TreeViewItemText, TreeViewLabel, TreeViewNode, TreeViewRoot, type TreeViewRootProps, TreeViewTree, TruncatedTextCell, type TruncatedTextCellProps, UploadDropZone, type UploadDropZoneProps, UrlCell, type UrlCellProps, type UseStepProps, type UseStepperProps, type UseStepperReturn, Widget, type WidgetProps, emptyCellValue, pluralize, truncateText, useStep, useStepper, useStepperContext, useStepperNextButton, useStepperPrevButton };
761
+ export { ActionCell, type ActionCellAction, type ActionCellProps, AuthCard, type AuthCardProps, BooleanCell, type BooleanCellProps, BulkActionBar, type BulkActionBarProps, type BulkActionProps, type BulkPopoverActionProps, Card, CardList, CardListData, type CardListDataProps, CardListItem, type CardListItemProps, type CardListMenuItem, type CardListProps, type CardProps, ChipPicker, type ChipPickerProps, CodeCell, type CodeCellProps, ColorSwatchCell, type ColorSwatchCellProps, CountCell, type CountCellProps, DataTable, type DataTableProps, DateCell, type DateCellProps, type DrawerProps, DrawerRoot, FactBox, type FactBoxAction, type FactBoxProps, InlineCreatableList, type InlineCreatableListProps, LabeledSwitch, type LabeledSwitchProps, LinkCell, type LinkCellProps, MenuCell, type MenuCellAction, type MenuCellProps, Modal, type ModalProps, NumberCell, type NumberCellProps, Pagination, type PaginationProps, SelectableCard, type SelectableCardBodyProps, type SelectableCardFooterProps, type SelectableCardProps, type SelectableCardThumbnailProps, SidebarSection, type SidebarSectionProps, SlugCell, type SlugCellProps, StatusBadgeCell, type StatusBadgeCellProps, Stepper, StepperCompleted, StepperContainer, StepperContent, type StepperContentProps, StepperIcon, type StepperIconProps, type StepperProps, StepperProvider, StepperSeparator, type StepperSeparatorProps, StepperStep, type StepperStepProps, StepperStepTitle, StepperSteps, type StepperStepsProps, SwitchCell, type SwitchCellProps, CardList as Table, CardListData as TableData, type CardListDataProps as TableDataProps, CardListItem as TableItem, type CardListItemProps as TableItemProps, type CardListMenuItem as TableMenuItem, type CardListProps as TableProps, TimelineConnector, TimelineContent, TimelineDescription, TimelineIndicator, TimelineItem, type TimelineItemProps, TimelineRoot, type TimelineRootProps, TimelineSeparator, TimelineTitle, TreeViewBranch, TreeViewBranchContent, TreeViewBranchControl, TreeViewBranchIndicator, type TreeViewBranchProps, TreeViewBranchText, TreeViewBranchTrigger, TreeViewItem, TreeViewItemIndicator, type TreeViewItemProps, TreeViewItemText, TreeViewLabel, TreeViewNode, TreeViewRoot, type TreeViewRootProps, TreeViewTree, TruncatedTextCell, type TruncatedTextCellProps, UploadDropZone, type UploadDropZoneProps, UrlCell, type UrlCellProps, type UseStepProps, type UseStepperProps, type UseStepperReturn, Widget, type WidgetProps, emptyCellValue, pluralize, truncateText, useStep, useStepper, useStepperContext, useStepperNextButton, useStepperPrevButton };
@@ -4,9 +4,9 @@ import { Tooltip, MenuRoot, MenuTrigger, MenuContent, MenuItem, Table } from '..
4
4
  import { Popover, PopoverTrigger, PopoverContent, PopoverBody, Switch } from '../chunk-WQIEF5N3.js';
5
5
  import { text_input_default } from '../chunk-OU6H3KU4.js';
6
6
  import { Button, IconButton } from '../chunk-SJ6YXNZW.js';
7
- import { Box, Flex, HStack, Text, Heading, Grid, GridItem, Code, Link, VStack, Spacer, Stack } from '../chunk-G4QMIXLC.js';
8
- import { X, Ellipsis, Plus, ChevronLeft, ChevronRight, ArrowUp, ArrowDown, ArrowUpDown, ChevronDown, Check, Upload } from 'lucide-react';
7
+ import { Box, Flex, Text, Heading, HStack, Grid, GridItem, Code, Link, VStack, Spacer, Stack } from '../chunk-G4QMIXLC.js';
9
8
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
9
+ import { X, Ellipsis, Plus, ChevronLeft, ChevronRight, ArrowUp, ArrowDown, ArrowUpDown, ChevronDown, Check, Upload } from 'lucide-react';
10
10
  import { createContext, Timeline, TreeView, Card as Card$1, Menu, Portal, Checkbox, Drawer, ButtonGroup, Dialog, useSlotRecipe, chakra } from '@chakra-ui/react';
11
11
  export { createTreeCollection } from '@chakra-ui/react';
12
12
  import React2, { createContext as createContext$1, Children, useState, useMemo, useRef, useEffect, useCallback, useContext } from 'react';
@@ -14,6 +14,106 @@ import dayjs from 'dayjs';
14
14
  import { Link as Link$1 } from 'react-router-dom';
15
15
  import { useReactTable, getSortedRowModel, getCoreRowModel, flexRender } from '@tanstack/react-table';
16
16
 
17
+ var SIZE_TO_WIDTH = {
18
+ md: "440px",
19
+ lg: "480px"
20
+ };
21
+ var DOT_PATTERN_BG = "radial-gradient(var(--chakra-colors-primary-200) 1px, transparent 1px)";
22
+ var AuthCard = ({
23
+ logo,
24
+ topBarRight,
25
+ hideTopBar = false,
26
+ hideBackground = false,
27
+ eyebrow,
28
+ title,
29
+ subtitle,
30
+ size = "md",
31
+ footer,
32
+ children
33
+ }) => {
34
+ return /* @__PURE__ */ jsx(Box, { "data-testid": "auth-card", "data-size": size, minH: "100vh", bg: "bg-canvas", children: /* @__PURE__ */ jsxs(
35
+ Box,
36
+ {
37
+ "data-testid": "auth-card-canvas",
38
+ "data-background": hideBackground ? "hidden" : "visible",
39
+ minH: "100vh",
40
+ bgImage: hideBackground ? void 0 : DOT_PATTERN_BG,
41
+ bgSize: "24px 24px",
42
+ children: [
43
+ !hideTopBar && /* @__PURE__ */ jsxs(
44
+ Flex,
45
+ {
46
+ align: "center",
47
+ justify: "space-between",
48
+ px: "8",
49
+ py: "4",
50
+ bg: "bg-surface/85",
51
+ backdropFilter: "blur(4px)",
52
+ borderBottom: "1px solid",
53
+ borderColor: "border",
54
+ children: [
55
+ /* @__PURE__ */ jsx(Box, { children: logo }),
56
+ /* @__PURE__ */ jsx(Flex, { gap: "4", fontSize: "xs", color: "muted", children: topBarRight })
57
+ ]
58
+ }
59
+ ),
60
+ /* @__PURE__ */ jsx(Flex, { justify: "center", pt: "16", px: "4", children: /* @__PURE__ */ jsxs(
61
+ Box,
62
+ {
63
+ w: "full",
64
+ maxW: SIZE_TO_WIDTH[size],
65
+ bg: "bg-surface",
66
+ borderRadius: "lg",
67
+ shadow: "md",
68
+ p: "8",
69
+ children: [
70
+ eyebrow && /* @__PURE__ */ jsx(
71
+ Text,
72
+ {
73
+ textStyle: "overline",
74
+ color: "muted",
75
+ textAlign: "center",
76
+ mb: "2",
77
+ children: eyebrow
78
+ }
79
+ ),
80
+ title && /* @__PURE__ */ jsx(
81
+ Heading,
82
+ {
83
+ as: "h3",
84
+ size: "2xl",
85
+ fontWeight: "semibold",
86
+ color: "default",
87
+ textAlign: "center",
88
+ mb: "2",
89
+ letterSpacing: "-0.02em",
90
+ children: title
91
+ }
92
+ ),
93
+ subtitle && /* @__PURE__ */ jsx(Text, { color: "muted", textAlign: "center", fontSize: "sm", mb: "6", children: subtitle }),
94
+ children,
95
+ footer && /* @__PURE__ */ jsx(
96
+ Box,
97
+ {
98
+ "data-testid": "auth-card-footer",
99
+ mt: "6",
100
+ pt: "4",
101
+ borderTop: "1px solid",
102
+ borderColor: "border",
103
+ textAlign: "center",
104
+ fontSize: "xs",
105
+ color: "emphasized",
106
+ children: footer
107
+ }
108
+ )
109
+ ]
110
+ }
111
+ ) })
112
+ ]
113
+ }
114
+ ) });
115
+ };
116
+ AuthCard.displayName = "AuthCard";
17
117
  var BulkAction = ({
18
118
  label,
19
119
  icon,
@@ -1968,6 +2068,6 @@ var Widget = ({
1968
2068
  };
1969
2069
  Widget.displayName = "Widget";
1970
2070
 
1971
- export { ActionCell, BooleanCell, BulkActionBar, Card, CardList, CardListData, CardListItem, ChipPicker, CodeCell, ColorSwatchCell, CountCell, DataTable, DateCell, DrawerRoot, FactBox, InlineCreatableList, LabeledSwitch, LinkCell, MenuCell, Modal, NumberCell, Pagination, SelectableCard, SidebarSection, SlugCell, StatusBadgeCell, Stepper, StepperCompleted, StepperContainer, StepperContent, StepperIcon, StepperProvider, StepperSeparator, StepperStep, StepperStepTitle, StepperSteps, SwitchCell, CardList as Table, CardListData as TableData, CardListItem as TableItem, TimelineConnector, TimelineContent, TimelineDescription, TimelineIndicator, TimelineItem, TimelineRoot, TimelineSeparator, TimelineTitle, TreeViewBranch, TreeViewBranchContent, TreeViewBranchControl, TreeViewBranchIndicator, TreeViewBranchText, TreeViewBranchTrigger, TreeViewItem, TreeViewItemIndicator, TreeViewItemText, TreeViewLabel, TreeViewNode, TreeViewRoot, TreeViewTree, TruncatedTextCell, UploadDropZone, UrlCell, Widget, emptyCellValue, pluralize, truncateText, useStep, useStepper, useStepperContext, useStepperNextButton, useStepperPrevButton };
2071
+ export { ActionCell, AuthCard, BooleanCell, BulkActionBar, Card, CardList, CardListData, CardListItem, ChipPicker, CodeCell, ColorSwatchCell, CountCell, DataTable, DateCell, DrawerRoot, FactBox, InlineCreatableList, LabeledSwitch, LinkCell, MenuCell, Modal, NumberCell, Pagination, SelectableCard, SidebarSection, SlugCell, StatusBadgeCell, Stepper, StepperCompleted, StepperContainer, StepperContent, StepperIcon, StepperProvider, StepperSeparator, StepperStep, StepperStepTitle, StepperSteps, SwitchCell, CardList as Table, CardListData as TableData, CardListItem as TableItem, TimelineConnector, TimelineContent, TimelineDescription, TimelineIndicator, TimelineItem, TimelineRoot, TimelineSeparator, TimelineTitle, TreeViewBranch, TreeViewBranchContent, TreeViewBranchControl, TreeViewBranchIndicator, TreeViewBranchText, TreeViewBranchTrigger, TreeViewItem, TreeViewItemIndicator, TreeViewItemText, TreeViewLabel, TreeViewNode, TreeViewRoot, TreeViewTree, TruncatedTextCell, UploadDropZone, UrlCell, Widget, emptyCellValue, pluralize, truncateText, useStep, useStepper, useStepperContext, useStepperNextButton, useStepperPrevButton };
1972
2072
  //# sourceMappingURL=index.js.map
1973
2073
  //# sourceMappingURL=index.js.map
@@ -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/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-section.tsx","../../src/components/stepper/use-stepper.tsx","../../src/components/stepper/stepper.tsx","../../src/components/timeline.tsx","../../src/components/tree-view.tsx","../../src/components/upload-drop-zone.tsx","../../src/components/widget.tsx"],"names":["jsxs","ChakraCard","jsx","Children","X","RouterLink","Ellipsis","table","Checkbox","_","Portal","React","ChevronRight","Plus","useState","step","createContext","Fragment","ChakraTimeline","ChakraTreeView","useRef","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","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\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\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>\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 key={cell.id}>\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","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","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/auth-card.tsx","../../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/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-section.tsx","../../src/components/stepper/use-stepper.tsx","../../src/components/stepper/stepper.tsx","../../src/components/timeline.tsx","../../src/components/tree-view.tsx","../../src/components/upload-drop-zone.tsx","../../src/components/widget.tsx"],"names":["jsxs","jsx","ChakraCard","Children","X","RouterLink","Ellipsis","table","Checkbox","_","Portal","React","ChevronRight","Plus","useState","step","createContext","Fragment","ChakraTimeline","ChakraTreeView","useRef","Card"],"mappings":"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","file":"index.js","sourcesContent":["// src/components/auth-card.tsx\nimport type React from \"react\";\nimport { Box, Flex } from \"../primitives/layout\";\nimport { Heading, Text } from \"../primitives/typography\";\n\nexport interface AuthCardProps {\n\t/** Logo or wordmark, far-left of the topbar. */\n\tlogo?: React.ReactNode;\n\t/** Right-side topbar content (help link, locale switcher, etc.). */\n\ttopBarRight?: React.ReactNode;\n\t/** Hide the topbar entirely (rare — e.g. embedded preview). */\n\thideTopBar?: boolean;\n\t/** Hide the dot-grid background (rare — e.g. printable). */\n\thideBackground?: boolean;\n\t/** Small uppercase eyebrow above the title. */\n\teyebrow?: React.ReactNode;\n\t/**\n\t * Card title. Accepts a string or inline element — the component wraps\n\t * it in an `<h3>` (semantic heading, 24px, semibold, default color).\n\t * Avoid passing block elements (e.g. `<div>`) or pre-built headings.\n\t */\n\ttitle?: React.ReactNode;\n\t/** Subtitle below title (14px, muted color, centered). */\n\tsubtitle?: React.ReactNode;\n\t/** Card width preset. md = 440px (default), lg = 480px. */\n\tsize?: \"md\" | \"lg\";\n\t/** Card footer slot. Bottom-bordered inside the card. */\n\tfooter?: React.ReactNode;\n\t/** Page content inside the card body. */\n\tchildren: React.ReactNode;\n}\n\nconst SIZE_TO_WIDTH: Record<NonNullable<AuthCardProps[\"size\"]>, string> = {\n\tmd: \"440px\",\n\tlg: \"480px\",\n};\n\nconst DOT_PATTERN_BG =\n\t\"radial-gradient(var(--chakra-colors-primary-200) 1px, transparent 1px)\";\n\nexport const AuthCard = ({\n\tlogo,\n\ttopBarRight,\n\thideTopBar = false,\n\thideBackground = false,\n\teyebrow,\n\ttitle,\n\tsubtitle,\n\tsize = \"md\",\n\tfooter,\n\tchildren,\n}: AuthCardProps) => {\n\treturn (\n\t\t<Box data-testid=\"auth-card\" data-size={size} minH=\"100vh\" bg=\"bg-canvas\">\n\t\t\t<Box\n\t\t\t\tdata-testid=\"auth-card-canvas\"\n\t\t\t\tdata-background={hideBackground ? \"hidden\" : \"visible\"}\n\t\t\t\tminH=\"100vh\"\n\t\t\t\tbgImage={hideBackground ? undefined : DOT_PATTERN_BG}\n\t\t\t\tbgSize=\"24px 24px\"\n\t\t\t>\n\t\t\t\t{!hideTopBar && (\n\t\t\t\t\t<Flex\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\t\tpx=\"8\"\n\t\t\t\t\t\tpy=\"4\"\n\t\t\t\t\t\tbg=\"bg-surface/85\"\n\t\t\t\t\t\tbackdropFilter=\"blur(4px)\"\n\t\t\t\t\t\tborderBottom=\"1px solid\"\n\t\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Box>{logo}</Box>\n\t\t\t\t\t\t<Flex gap=\"4\" fontSize=\"xs\" color=\"muted\">\n\t\t\t\t\t\t\t{topBarRight}\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t</Flex>\n\t\t\t\t)}\n\n\t\t\t\t<Flex justify=\"center\" pt=\"16\" px=\"4\">\n\t\t\t\t\t<Box\n\t\t\t\t\t\tw=\"full\"\n\t\t\t\t\t\tmaxW={SIZE_TO_WIDTH[size]}\n\t\t\t\t\t\tbg=\"bg-surface\"\n\t\t\t\t\t\tborderRadius=\"lg\"\n\t\t\t\t\t\tshadow=\"md\"\n\t\t\t\t\t\tp=\"8\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{eyebrow && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttextStyle=\"overline\"\n\t\t\t\t\t\t\t\tcolor=\"muted\"\n\t\t\t\t\t\t\t\ttextAlign=\"center\"\n\t\t\t\t\t\t\t\tmb=\"2\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{eyebrow}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{title && (\n\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\tas=\"h3\"\n\t\t\t\t\t\t\t\tsize=\"2xl\"\n\t\t\t\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\t\t\t\ttextAlign=\"center\"\n\t\t\t\t\t\t\t\tmb=\"2\"\n\t\t\t\t\t\t\t\tletterSpacing=\"-0.02em\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{subtitle && (\n\t\t\t\t\t\t\t<Text color=\"muted\" textAlign=\"center\" fontSize=\"sm\" mb=\"6\">\n\t\t\t\t\t\t\t\t{subtitle}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{children}\n\n\t\t\t\t\t\t{footer && (\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tdata-testid=\"auth-card-footer\"\n\t\t\t\t\t\t\t\tmt=\"6\"\n\t\t\t\t\t\t\t\tpt=\"4\"\n\t\t\t\t\t\t\t\tborderTop=\"1px solid\"\n\t\t\t\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\t\t\t\ttextAlign=\"center\"\n\t\t\t\t\t\t\t\tfontSize=\"xs\"\n\t\t\t\t\t\t\t\tcolor=\"emphasized\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{footer}\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Box>\n\t\t\t\t</Flex>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n};\nAuthCard.displayName = \"AuthCard\";\n","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","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\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\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>\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 key={cell.id}>\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","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","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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knkcs/anker",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "UI component library for the knk software group",
5
5
  "repository": {
6
6
  "type": "git",