@knkcs/anker 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atoms/index.d.ts +16 -3
- package/dist/atoms/index.js +89 -6
- package/dist/atoms/index.js.map +1 -1
- package/dist/chunk-5YDCDC4B.js +12 -0
- package/dist/chunk-5YDCDC4B.js.map +1 -0
- package/dist/{chunk-C4JI3JNA.js → chunk-6H4LQUMM.js} +4 -33
- package/dist/chunk-6H4LQUMM.js.map +1 -0
- package/dist/{chunk-PZCL4M6I.js → chunk-E7KRPPCQ.js} +5 -18
- package/dist/chunk-E7KRPPCQ.js.map +1 -0
- package/dist/{chunk-GJTQLZ4O.js → chunk-KVPN6T6J.js} +6 -28
- package/dist/chunk-KVPN6T6J.js.map +1 -0
- package/dist/chunk-OU6H3KU4.js +21 -0
- package/dist/chunk-OU6H3KU4.js.map +1 -0
- package/dist/chunk-SJ6YXNZW.js +30 -0
- package/dist/chunk-SJ6YXNZW.js.map +1 -0
- package/dist/chunk-SJIYWHIV.js +51 -0
- package/dist/chunk-SJIYWHIV.js.map +1 -0
- package/dist/chunk-WEP2AIQ5.js +37 -0
- package/dist/chunk-WEP2AIQ5.js.map +1 -0
- package/dist/chunk-WQIEF5N3.js +52 -0
- package/dist/chunk-WQIEF5N3.js.map +1 -0
- package/dist/{chunk-QU3FF5WI.js → chunk-ZFBDVERP.js} +4 -8
- package/dist/chunk-ZFBDVERP.js.map +1 -0
- package/dist/components/index.d.ts +171 -3
- package/dist/components/index.js +685 -11
- package/dist/components/index.js.map +1 -1
- package/dist/feedback/index.d.ts +20 -1
- package/dist/feedback/index.js +121 -4
- package/dist/feedback/index.js.map +1 -1
- package/dist/forms/index.d.ts +23 -15
- package/dist/forms/index.js +71 -47
- package/dist/forms/index.js.map +1 -1
- package/dist/primitives/index.js +8 -49
- package/dist/primitives/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-7UJ4QEUW.js +0 -37
- package/dist/chunk-7UJ4QEUW.js.map +0 -1
- package/dist/chunk-C4JI3JNA.js.map +0 -1
- package/dist/chunk-GJTQLZ4O.js.map +0 -1
- package/dist/chunk-PZCL4M6I.js.map +0 -1
- package/dist/chunk-QU3FF5WI.js.map +0 -1
- package/dist/chunk-RJPEVNMJ.js +0 -23
- package/dist/chunk-RJPEVNMJ.js.map +0 -1
package/dist/atoms/index.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as React$1 from 'react';
|
|
3
3
|
import React__default, { ReactNode } from 'react';
|
|
4
|
-
import { ButtonProps, IconButtonProps, BoxProps, useCheckboxGroup, StackProps, UseCheckboxGroupProps, Clipboard, InputProps, DataList as DataList$1, HTMLChakraProps, TextProps, BadgeProps } from '@chakra-ui/react';
|
|
5
|
-
export {
|
|
4
|
+
import { ButtonProps as ButtonProps$1, IconButtonProps, BoxProps, useCheckboxGroup, StackProps, UseCheckboxGroupProps, Clipboard, InputProps, DataList as DataList$1, HTMLChakraProps, TextProps, BadgeProps } from '@chakra-ui/react';
|
|
5
|
+
export { IconButtonProps } from '@chakra-ui/react';
|
|
6
6
|
import { b as AvatarProps } from '../avatar-DhqkKdqc.js';
|
|
7
7
|
export { S as SearchInput, a as SearchInputProps } from '../search-input-C_Cl2OEx.js';
|
|
8
8
|
import { Props, GroupBase, MultiValue, SingleValue, ActionMeta, SelectInstance, MenuListProps, OptionProps } from 'chakra-react-select';
|
|
9
9
|
export { ActionMeta, Select as ChakraReactSelect, ChakraStylesConfig, CreatableSelect, GroupBase, MenuListProps, MultiValue, OptionProps, SelectInstance, SingleValue, SingleValueProps, StylesConfig, chakraComponents } from 'chakra-react-select';
|
|
10
10
|
|
|
11
|
+
type ButtonProps = Omit<ButtonProps$1, "variant"> & {
|
|
12
|
+
variant?: "solid" | "subtle" | "surface" | "outline" | "ghost" | "plain" | "primary" | "secondary" | "link" | "link-gray" | undefined;
|
|
13
|
+
};
|
|
11
14
|
declare const Button: {
|
|
12
15
|
({ ref, ...props }: ButtonProps & {
|
|
13
16
|
ref?: React.Ref<HTMLButtonElement>;
|
|
@@ -141,6 +144,16 @@ declare const ClipboardLink: {
|
|
|
141
144
|
displayName: string;
|
|
142
145
|
};
|
|
143
146
|
|
|
147
|
+
interface ColorSwatchPickerProps {
|
|
148
|
+
value?: string;
|
|
149
|
+
onChange: (color: string) => void;
|
|
150
|
+
presets?: string[];
|
|
151
|
+
showHexInput?: boolean;
|
|
152
|
+
showPreview?: boolean;
|
|
153
|
+
size?: "sm" | "md" | "lg";
|
|
154
|
+
}
|
|
155
|
+
declare const ColorSwatchPicker: React__default.FC<ColorSwatchPickerProps>;
|
|
156
|
+
|
|
144
157
|
type DateType = Date | string | number;
|
|
145
158
|
type DateFormat = "fullWithSeconds" | "full" | "time" | "day" | "weekday";
|
|
146
159
|
|
|
@@ -569,4 +582,4 @@ interface TypeBadgeProps extends Omit<BadgeProps, "children"> {
|
|
|
569
582
|
}
|
|
570
583
|
declare const TypeBadge: React__default.FC<TypeBadgeProps>;
|
|
571
584
|
|
|
572
|
-
export { Action, type ActionProps, type BaseOption, BaseSelect, type BaseSelectProps, Button, CheckboxCard, CheckboxCardGroup, type CheckboxCardGroupProps, type CheckboxCardProps, ClipboardButton, type ClipboardButtonProps, ClipboardInput, type ClipboardInputProps, ClipboardLink, type ClipboardLinkProps, Collapse, type CollapseProps, Comment, CommentAction, type CommentActionProps, type CommentFooterProps, type CommentHeaderProps, type CommentProps, CommentReplyBox, type CommentReplyBoxProps, type CreateTableMenuComponentsOptions, DataList, DataListItem, DataListItemLabel, type DataListItemType, DataListItemValue, type DataListProps, type DataListRootProps, type DateFormat, DateInput, type DateInputProps, type DateType, Edit, type EditProps, EmptyState, type EmptyStateProps, Filter, type FilterProps, Handle, type HandleProps, IconButton, Persona, PersonaAvatar, PersonaContainer, type PersonaContainerProps, PersonaDetails, PersonaLabel, type PersonaProps, RelativeDateTime, type RelativeDateTimeProps, Remove, type RemoveProps, SplitButton, type SplitButtonMenuItem, type SplitButtonProps, Stat, type StatProps, StatusBadge, type StatusBadgeProps, type TableMenuColumn, TableMenuList, type TableMenuListProps, TableOption, TextInput, type TextInputProps, TextOverflow, type TextOverflowProps, TypeBadge, type TypeBadgeProps, createTableMenuComponents, formatDate, formatDateAndTime, formatMachineReadableDateTime, formatRelativeDateTime, formatRelativeToCurrentWeekDateTime, formatTime, formatWeekdayDate };
|
|
585
|
+
export { Action, type ActionProps, type BaseOption, BaseSelect, type BaseSelectProps, Button, type ButtonProps, CheckboxCard, CheckboxCardGroup, type CheckboxCardGroupProps, type CheckboxCardProps, ClipboardButton, type ClipboardButtonProps, ClipboardInput, type ClipboardInputProps, ClipboardLink, type ClipboardLinkProps, Collapse, type CollapseProps, ColorSwatchPicker, type ColorSwatchPickerProps, Comment, CommentAction, type CommentActionProps, type CommentFooterProps, type CommentHeaderProps, type CommentProps, CommentReplyBox, type CommentReplyBoxProps, type CreateTableMenuComponentsOptions, DataList, DataListItem, DataListItemLabel, type DataListItemType, DataListItemValue, type DataListProps, type DataListRootProps, type DateFormat, DateInput, type DateInputProps, type DateType, Edit, type EditProps, EmptyState, type EmptyStateProps, Filter, type FilterProps, Handle, type HandleProps, IconButton, Persona, PersonaAvatar, PersonaContainer, type PersonaContainerProps, PersonaDetails, PersonaLabel, type PersonaProps, RelativeDateTime, type RelativeDateTimeProps, Remove, type RemoveProps, SplitButton, type SplitButtonMenuItem, type SplitButtonProps, Stat, type StatProps, StatusBadge, type StatusBadgeProps, type TableMenuColumn, TableMenuList, type TableMenuListProps, TableOption, TextInput, type TextInputProps, TextOverflow, type TextOverflowProps, TypeBadge, type TypeBadgeProps, createTableMenuComponents, formatDate, formatDateAndTime, formatMachineReadableDateTime, formatRelativeDateTime, formatRelativeToCurrentWeekDateTime, formatTime, formatWeekdayDate };
|
package/dist/atoms/index.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { Prose, Avatar
|
|
2
|
-
import {
|
|
3
|
-
export {
|
|
1
|
+
import { Prose, Avatar } from '../chunk-ZFBDVERP.js';
|
|
2
|
+
import { formatRelativeToCurrentWeekDateTime, formatRelativeDateTime } from '../chunk-KVPN6T6J.js';
|
|
3
|
+
export { StatusBadge, formatRelativeDateTime, formatRelativeToCurrentWeekDateTime } from '../chunk-KVPN6T6J.js';
|
|
4
4
|
import { Tooltip, MenuRoot, MenuTrigger, MenuContent, MenuItem } from '../chunk-NJFF6S77.js';
|
|
5
|
-
export { SearchInput
|
|
6
|
-
import {
|
|
5
|
+
export { SearchInput } from '../chunk-E7KRPPCQ.js';
|
|
6
|
+
import { text_input_default } from '../chunk-OU6H3KU4.js';
|
|
7
|
+
export { text_input_default as TextInput } from '../chunk-OU6H3KU4.js';
|
|
8
|
+
import { Spinner } from '../chunk-5YDCDC4B.js';
|
|
9
|
+
import { IconButton, Button } from '../chunk-SJ6YXNZW.js';
|
|
10
|
+
export { Button, IconButton } from '../chunk-SJ6YXNZW.js';
|
|
11
|
+
import { DataList as DataList$1, Text, Box, Icon, Circle, useCheckboxGroup, Stack, Clipboard, IconButton as IconButton$1, Input, Flex, HStack, chakra, Textarea, ButtonGroup, Button as Button$1, Heading, Table, Square, Badge } from '@chakra-ui/react';
|
|
7
12
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
13
|
import { ChevronRight, ChevronDown, Pencil, Filter as Filter$1, GripVertical, X, Clipboard as Clipboard$1, Check, Link, Plus } from 'lucide-react';
|
|
9
14
|
import React, { createContext, memo, useRef, useState, useCallback, useEffect, useMemo, useContext } from 'react';
|
|
@@ -173,6 +178,84 @@ var ClipboardLink = function ClipboardLink2({
|
|
|
173
178
|
return /* @__PURE__ */ jsx(Clipboard.Root, { ref, ...rest, children: /* @__PURE__ */ jsx(Clipboard.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(IconButton$1, { variant: "ghost", size: "xs", "aria-label": label, children: /* @__PURE__ */ jsx(Clipboard.Indicator, { copied: /* @__PURE__ */ jsx(Check, { size: 14 }), children: /* @__PURE__ */ jsx(Link, { size: 14 }) }) }) }) });
|
|
174
179
|
};
|
|
175
180
|
ClipboardLink.displayName = "ClipboardLink";
|
|
181
|
+
var DEFAULT_PRESETS = [
|
|
182
|
+
"#3b82f6",
|
|
183
|
+
"#10b981",
|
|
184
|
+
"#f59e0b",
|
|
185
|
+
"#ef4444",
|
|
186
|
+
"#8b5cf6",
|
|
187
|
+
"#ec4899",
|
|
188
|
+
"#14b8a6",
|
|
189
|
+
"#6b7280"
|
|
190
|
+
];
|
|
191
|
+
var SWATCH_SIZES = { sm: 4, md: 5, lg: 7 };
|
|
192
|
+
var ColorSwatchPicker = ({
|
|
193
|
+
value,
|
|
194
|
+
onChange,
|
|
195
|
+
presets = DEFAULT_PRESETS,
|
|
196
|
+
showHexInput = false,
|
|
197
|
+
showPreview = false,
|
|
198
|
+
size = "md"
|
|
199
|
+
}) => {
|
|
200
|
+
const [hexInput, setHexInput] = useState(value ?? "");
|
|
201
|
+
useEffect(() => {
|
|
202
|
+
setHexInput(value ?? "");
|
|
203
|
+
}, [value]);
|
|
204
|
+
const swatchSize = SWATCH_SIZES[size];
|
|
205
|
+
const handleHexSubmit = () => {
|
|
206
|
+
const trimmed = hexInput.trim();
|
|
207
|
+
if (/^#[0-9a-fA-F]{6}$/.test(trimmed)) {
|
|
208
|
+
onChange(trimmed);
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: 3, children: [
|
|
212
|
+
/* @__PURE__ */ jsx(Flex, { wrap: "wrap", gap: 2, children: presets.map((color) => /* @__PURE__ */ jsx(
|
|
213
|
+
Box,
|
|
214
|
+
{
|
|
215
|
+
w: swatchSize,
|
|
216
|
+
h: swatchSize,
|
|
217
|
+
rounded: "sm",
|
|
218
|
+
bg: color,
|
|
219
|
+
cursor: "pointer",
|
|
220
|
+
borderWidth: "2px",
|
|
221
|
+
borderColor: value === color ? "border.emphasized" : "transparent",
|
|
222
|
+
onClick: () => onChange(color),
|
|
223
|
+
_hover: { transform: "scale(1.1)" },
|
|
224
|
+
transition: "transform 0.1s"
|
|
225
|
+
},
|
|
226
|
+
color
|
|
227
|
+
)) }),
|
|
228
|
+
(showHexInput || showPreview) && /* @__PURE__ */ jsxs(HStack, { gap: 2, children: [
|
|
229
|
+
showPreview && /* @__PURE__ */ jsx(
|
|
230
|
+
Box,
|
|
231
|
+
{
|
|
232
|
+
w: 9,
|
|
233
|
+
h: 9,
|
|
234
|
+
rounded: "md",
|
|
235
|
+
bg: value || "transparent",
|
|
236
|
+
borderWidth: "1px",
|
|
237
|
+
borderColor: "border",
|
|
238
|
+
flexShrink: 0
|
|
239
|
+
}
|
|
240
|
+
),
|
|
241
|
+
showHexInput && /* @__PURE__ */ jsx(
|
|
242
|
+
text_input_default,
|
|
243
|
+
{
|
|
244
|
+
value: hexInput,
|
|
245
|
+
onChange: (e) => setHexInput(e.target.value),
|
|
246
|
+
onBlur: handleHexSubmit,
|
|
247
|
+
onKeyDown: (e) => {
|
|
248
|
+
if (e.key === "Enter") handleHexSubmit();
|
|
249
|
+
},
|
|
250
|
+
placeholder: "#000000",
|
|
251
|
+
size: "sm",
|
|
252
|
+
maxW: "120px"
|
|
253
|
+
}
|
|
254
|
+
)
|
|
255
|
+
] })
|
|
256
|
+
] });
|
|
257
|
+
};
|
|
258
|
+
ColorSwatchPicker.displayName = "ColorSwatchPicker";
|
|
176
259
|
dayjs2.extend(utcPlugin);
|
|
177
260
|
function formatDateAndTime(date, format = "full") {
|
|
178
261
|
let template;
|
|
@@ -868,6 +951,6 @@ var TypeBadge = ({
|
|
|
868
951
|
};
|
|
869
952
|
TypeBadge.displayName = "TypeBadge";
|
|
870
953
|
|
|
871
|
-
export { Action, BaseSelect, CheckboxCard, CheckboxCardGroup, ClipboardButton, ClipboardInput, ClipboardLink, Collapse, Comment, CommentAction, CommentReplyBox, DataList, DataListItem, DataListItemLabel, DataListItemValue, date_input_default as DateInput, Edit, EmptyState, Filter, Handle, Persona, PersonaAvatar, PersonaContainer, PersonaDetails, PersonaLabel, RelativeDateTime, Remove, SplitButton, Stat, TableMenuList, TableOption, TextOverflow, TypeBadge, createTableMenuComponents, formatDate, formatDateAndTime, formatMachineReadableDateTime, formatTime, formatWeekdayDate };
|
|
954
|
+
export { Action, BaseSelect, CheckboxCard, CheckboxCardGroup, ClipboardButton, ClipboardInput, ClipboardLink, Collapse, ColorSwatchPicker, Comment, CommentAction, CommentReplyBox, DataList, DataListItem, DataListItemLabel, DataListItemValue, date_input_default as DateInput, Edit, EmptyState, Filter, Handle, Persona, PersonaAvatar, PersonaContainer, PersonaDetails, PersonaLabel, RelativeDateTime, Remove, SplitButton, Stat, TableMenuList, TableOption, TextOverflow, TypeBadge, createTableMenuComponents, formatDate, formatDateAndTime, formatMachineReadableDateTime, formatTime, formatWeekdayDate };
|
|
872
955
|
//# sourceMappingURL=index.js.map
|
|
873
956
|
//# sourceMappingURL=index.js.map
|
package/dist/atoms/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/atoms/actions/action.tsx","../../src/atoms/actions/collapse.tsx","../../src/atoms/actions/edit.tsx","../../src/atoms/actions/filter.tsx","../../src/atoms/actions/handle.tsx","../../src/atoms/actions/remove.tsx","../../src/atoms/checkbox-card/checkbox-card.tsx","../../src/atoms/clipboard/clipboard.tsx","../../src/atoms/datetime/utils/format-date-time-utils.ts","../../src/atoms/datetime/relative-datetime.tsx","../../src/atoms/comment/comment.tsx","../../src/atoms/comment/comment-reply-box.tsx","../../src/atoms/data-list/data-list.tsx","../../src/atoms/date-input/date-input.tsx","../../src/atoms/empty-state/empty-state.tsx","../../src/atoms/persona/persona.tsx","../../src/atoms/select/base-select.tsx","../../src/atoms/select/table-menu-list.tsx","../../src/atoms/split-button/split-button.tsx","../../src/atoms/stat/stat.tsx","../../src/atoms/text-overflow/text-overflow.tsx","../../src/atoms/type-badge/type-badge.tsx"],"names":["jsx","Icon","Box","FilterIcon","jsxs","ClipboardButton","ChakraClipboard","IconButton","Clipboard","ClipboardInput","ClipboardLink","dayjs","utcPlugin","Stack","e","Button","DataList","ChakraDataList","Input","Text","createContext","useContext","chakra","HStack","Circle","chakraComponents","ChevronDown","Heading","useRef","useState"],"mappings":"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","file":"index.js","sourcesContent":["import { Box } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface ActionProps extends React.HTMLAttributes<HTMLButtonElement> {\n\tcursor?: string;\n}\n\nexport const Action = ({\n\tref,\n\tcursor,\n\tcolor,\n\t...props\n}: ActionProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\treturn (\n\t\t<Box\n\t\t\tdisplay=\"flex\"\n\t\t\talignItems={\"center\"}\n\t\t\tjustifyContent={\"center\"}\n\t\t\tborderRadius={\"5px\"}\n\t\t\tp={\"15px\"}\n\t\t\ttabIndex={0}\n\t\t\tcursor={cursor}\n\t\t\ttransition={\"background-color 150ms, color 150ms, opacity 150ms\"}\n\t\t\tbg={color}\n\t\t\tasChild\n\t\t>\n\t\t\t<button type=\"button\" ref={ref} {...props} />\n\t\t</Box>\n\t);\n};\nAction.displayName = \"Action\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport type React from \"react\";\nimport { Action, type ActionProps } from \"./action\";\n\nexport interface CollapseProps extends ActionProps {\n\tcollapsed: boolean;\n\t/** Accessible label for the collapse button */\n\tcollapseLabel?: string;\n}\n\nexport const Collapse = ({\n\tref,\n\tcollapseLabel = \"Collapse\",\n\t...props\n}: CollapseProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\tconst { collapsed, ...rest } = props;\n\n\treturn (\n\t\t<Action ref={ref} cursor=\"pointer\" aria-label={collapseLabel} {...rest}>\n\t\t\t<Icon color=\"subtle\">\n\t\t\t\t{collapsed ? <ChevronRight /> : <ChevronDown />}\n\t\t\t</Icon>\n\t\t</Action>\n\t);\n};\nCollapse.displayName = \"Collapse\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { Pencil } from \"lucide-react\";\nimport type React from \"react\";\nimport { Action, type ActionProps } from \"./action\";\n\nexport interface EditProps extends ActionProps {\n\t/** Accessible label for the edit button */\n\teditLabel?: string;\n}\n\nexport const Edit = ({\n\tref,\n\teditLabel = \"Edit\",\n\t...props\n}: EditProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\treturn (\n\t\t<Action ref={ref} cursor=\"pointer\" aria-label={editLabel} {...props}>\n\t\t\t<Icon color=\"subtle\" asChild>\n\t\t\t\t<Pencil />\n\t\t\t</Icon>\n\t\t</Action>\n\t);\n};\nEdit.displayName = \"Edit\";\n","import { Box, Circle, Text } from \"@chakra-ui/react\";\nimport { Filter as FilterIcon } from \"lucide-react\";\nimport type React from \"react\";\nimport { IconButton, type IconButtonProps } from \"../button\";\n\nexport type FilterProps = Omit<\n\tIconButtonProps,\n\t\"aria-label\" | \"cursor\" | \"icon\"\n> & {\n\tactiveFilterCount?: number;\n\t/** Accessible label for the filter button */\n\tfilterLabel?: string;\n};\n\nexport const Filter = ({\n\tref,\n\tfilterLabel = \"Filter\",\n\t...props\n}: FilterProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\tconst { activeFilterCount, ...rest } = props;\n\n\treturn (\n\t\t<Box position=\"relative\">\n\t\t\t<IconButton\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tcursor=\"pointer\"\n\t\t\t\tref={ref}\n\t\t\t\taria-label={filterLabel}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t<FilterIcon />\n\t\t\t</IconButton>\n\t\t\t{activeFilterCount && activeFilterCount > 0 ? (\n\t\t\t\t<Circle\n\t\t\t\t\tsize=\"24px\"\n\t\t\t\t\tbg=\"accent\"\n\t\t\t\t\tcolor=\"on-accent\"\n\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\ttop={5}\n\t\t\t\t\tinsetInlineEnd={-1.5}\n\t\t\t\t>\n\t\t\t\t\t<Text fontSize=\"xs\" fontWeight={800}>\n\t\t\t\t\t\t{activeFilterCount}\n\t\t\t\t\t</Text>\n\t\t\t\t</Circle>\n\t\t\t) : null}\n\t\t</Box>\n\t);\n};\nFilter.displayName = \"Filter\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { GripVertical } from \"lucide-react\";\nimport type React from \"react\";\nimport { Action, type ActionProps } from \"./action\";\n\nexport interface HandleProps extends ActionProps {\n\t/** Accessible label for the drag handle */\n\thandleLabel?: string;\n}\n\nexport const Handle = ({\n\tref,\n\thandleLabel = \"Drag to reorder\",\n\t...props\n}: HandleProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\treturn (\n\t\t<Action ref={ref} cursor=\"grab\" aria-label={handleLabel} {...props}>\n\t\t\t<Icon color=\"subtle\" asChild>\n\t\t\t\t<GripVertical />\n\t\t\t</Icon>\n\t\t</Action>\n\t);\n};\nHandle.displayName = \"Handle\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport type React from \"react\";\nimport { Action, type ActionProps } from \"./action\";\n\nexport interface RemoveProps extends ActionProps {\n\t/** Accessible label for the remove button */\n\tremoveLabel?: string;\n}\n\nexport const Remove = ({\n\tref,\n\tremoveLabel = \"Remove\",\n\t...props\n}: RemoveProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\treturn (\n\t\t<Action ref={ref} aria-label={removeLabel} {...props}>\n\t\t\t<Icon color=\"subtle\" asChild>\n\t\t\t\t<X />\n\t\t\t</Icon>\n\t\t</Action>\n\t);\n};\nRemove.displayName = \"Remove\";\n","import {\n\tBox,\n\ttype BoxProps,\n\tStack,\n\ttype StackProps,\n\ttype UseCheckboxGroupProps,\n\tuseCheckboxGroup,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type CheckboxCardGroupProps = StackProps & {\n\tdefaultValue?: UseCheckboxGroupProps[\"defaultValue\"];\n\tvalue?: UseCheckboxGroupProps[\"value\"];\n\tonValueChange?: (value: string[]) => void;\n};\n\nexport const CheckboxCardGroup = (props: CheckboxCardGroupProps) => {\n\tconst { children, defaultValue, value, onValueChange, ...rest } = props;\n\tconst group = useCheckboxGroup({\n\t\tdefaultValue,\n\t\tvalue,\n\t\tonValueChange,\n\t});\n\n\tconst cards = React.useMemo(\n\t\t() =>\n\t\t\tReact.Children.toArray(children)\n\t\t\t\t.filter<React.ReactElement<CheckboxCardProps>>(React.isValidElement)\n\t\t\t\t.map((card) => {\n\t\t\t\t\treturn React.cloneElement(card, {\n\t\t\t\t\t\tcheckboxProps: group.getItemProps({\n\t\t\t\t\t\t\tvalue: card.props.value,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t[children, group],\n\t);\n\n\treturn <Stack {...rest}>{cards}</Stack>;\n};\n\nCheckboxCardGroup.displayName = \"CheckboxCardGroup\";\n\n// Infer the item props type directly from the hook to avoid invalid imports\ntype CheckboxItemProps = ReturnType<\n\tReturnType<typeof useCheckboxGroup>[\"getItemProps\"]\n>;\n\nexport interface CheckboxCardProps extends BoxProps {\n\tvalue: string;\n\tcheckboxProps?: CheckboxItemProps;\n}\n\nexport const CheckboxCard = (props: CheckboxCardProps) => {\n\tconst { checkboxProps, children, ...rest } = props;\n\n\tconst id = React.useId();\n\n\treturn (\n\t\t<Box\n\t\t\tcursor=\"pointer\"\n\t\t\tcss={{\n\t\t\t\t\"& .focus-visible + [data-focus]\": {\n\t\t\t\t\tboxShadow: \"outline\",\n\t\t\t\t\tzIndex: 1,\n\t\t\t\t},\n\t\t\t}}\n\t\t\tasChild\n\t\t>\n\t\t\t<label>\n\t\t\t\t<input type=\"checkbox\" aria-labelledby={id} {...checkboxProps} />\n\t\t\t\t<Box {...rest}>\n\t\t\t\t\t<Stack direction=\"row\">\n\t\t\t\t\t\t<Box flex=\"1\" id={id}>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Box>\n\t\t\t</label>\n\t\t</Box>\n\t);\n};\n\nCheckboxCard.displayName = \"CheckboxCard\";\n","import {\n\tClipboard as ChakraClipboard,\n\tIconButton,\n\tInput,\n\ttype InputProps,\n} from \"@chakra-ui/react\";\nimport { Check, Clipboard, Link } from \"lucide-react\";\nimport type * as React from \"react\";\n\nexport interface ClipboardButtonProps extends ChakraClipboard.RootProps {\n\t/** Label for the copy button. @default \"Copy\" */\n\tlabel?: string;\n}\n\nexport const ClipboardButton = function ClipboardButton({\n\tref,\n\t...props\n}: ClipboardButtonProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { label = \"Copy\", ...rest } = props;\n\treturn (\n\t\t<ChakraClipboard.Root ref={ref} {...rest}>\n\t\t\t<ChakraClipboard.Trigger asChild>\n\t\t\t\t<IconButton variant=\"ghost\" size=\"sm\" aria-label={label}>\n\t\t\t\t\t<ChakraClipboard.Indicator copied={<Check size={16} />}>\n\t\t\t\t\t\t<Clipboard size={16} />\n\t\t\t\t\t</ChakraClipboard.Indicator>\n\t\t\t\t</IconButton>\n\t\t\t</ChakraClipboard.Trigger>\n\t\t</ChakraClipboard.Root>\n\t);\n};\nClipboardButton.displayName = \"ClipboardButton\";\n\nexport interface ClipboardInputProps extends ChakraClipboard.RootProps {\n\t/** Props passed to the input element. */\n\tinputProps?: InputProps;\n\t/** Label for the copy button. @default \"Copy\" */\n\tlabel?: string;\n}\n\nexport const ClipboardInput = function ClipboardInput({\n\tref,\n\t...props\n}: ClipboardInputProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { inputProps, label = \"Copy\", ...rest } = props;\n\treturn (\n\t\t<ChakraClipboard.Root ref={ref} {...rest}>\n\t\t\t<ChakraClipboard.Control>\n\t\t\t\t<ChakraClipboard.Input asChild>\n\t\t\t\t\t<Input readOnly {...inputProps} />\n\t\t\t\t</ChakraClipboard.Input>\n\t\t\t\t<ChakraClipboard.Trigger asChild>\n\t\t\t\t\t<IconButton variant=\"outline\" size=\"sm\" aria-label={label}>\n\t\t\t\t\t\t<ChakraClipboard.Indicator copied={<Check size={16} />}>\n\t\t\t\t\t\t\t<Clipboard size={16} />\n\t\t\t\t\t\t</ChakraClipboard.Indicator>\n\t\t\t\t\t</IconButton>\n\t\t\t\t</ChakraClipboard.Trigger>\n\t\t\t</ChakraClipboard.Control>\n\t\t</ChakraClipboard.Root>\n\t);\n};\nClipboardInput.displayName = \"ClipboardInput\";\n\nexport interface ClipboardLinkProps extends ChakraClipboard.RootProps {\n\t/** Label for the copy link button. @default \"Copy Link\" */\n\tlabel?: string;\n}\n\nexport const ClipboardLink = function ClipboardLink({\n\tref,\n\t...props\n}: ClipboardLinkProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { label = \"Copy Link\", ...rest } = props;\n\treturn (\n\t\t<ChakraClipboard.Root ref={ref} {...rest}>\n\t\t\t<ChakraClipboard.Trigger asChild>\n\t\t\t\t<IconButton variant=\"ghost\" size=\"xs\" aria-label={label}>\n\t\t\t\t\t<ChakraClipboard.Indicator copied={<Check size={14} />}>\n\t\t\t\t\t\t<Link size={14} />\n\t\t\t\t\t</ChakraClipboard.Indicator>\n\t\t\t\t</IconButton>\n\t\t\t</ChakraClipboard.Trigger>\n\t\t</ChakraClipboard.Root>\n\t);\n};\nClipboardLink.displayName = \"ClipboardLink\";\n","import dayjs from \"dayjs\";\nimport utcPlugin from \"dayjs/plugin/utc.js\";\n\ndayjs.extend(utcPlugin);\n\nimport type { DateFormat, DateType } from \"../types\";\n\n/**\n * A function that will return a formatted date string. The format will depend on the option\n * passed in the second argument.\n * By default, it will return a string with \"full\" format (e.g. Tue, 17 Aug 2021 at 3:45 PM)\n *\n * @param date - the date to be formatted\n * @param format - the desired format (\"full\", \"day\", \"weekday\", or \"time\")\n * @returns a formatted date\n *\n * @example\n * formatDateAndTime('2021-08-17T15:45:00') // returns \"Tue, 17 Aug 2021 at 3:45 PM\"\n *\n * @example\n * formatDateAndTime('2021-08-17T15:45:00', 'day') // returns \"17 Aug 2021\"\n */\nexport function formatDateAndTime(\n\tdate: DateType,\n\tformat: DateFormat = \"full\",\n): string {\n\tlet template: string;\n\n\tswitch (format) {\n\t\tcase \"day\":\n\t\t\ttemplate = \"DD MMM YYYY\"; // 17 Aug 2021\n\t\t\tbreak;\n\t\tcase \"weekday\":\n\t\t\ttemplate = \"ddd, DD MMM\"; // Tue, 17 Aug\n\t\t\tbreak;\n\t\tcase \"time\":\n\t\t\ttemplate = \"h:mm A\"; // 3:45 PM\n\t\t\tbreak;\n\t\tcase \"fullWithSeconds\":\n\t\t\ttemplate = \"ddd, DD MMM YYYY [at] h:mm:ss A\"; // Tue, 17 Aug 2021 at 3:45:67 PM\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ttemplate = \"ddd, DD MMM YYYY [at] h:mm A\"; // Tue, 17 Aug 2021 at 3:45 PM\n\t}\n\n\treturn dayjs(date).format(template);\n}\n\n/**\n * A function that will return a machine-readable date string that should be passed to the `datetime` attribute of a `<time>` tag\n * By default, it will return a string with \"YYYY-MM-DDTHH:mm:ss.SSS[Z]\" format\n *\n * @param date - the date to be formatted\n * @param format - the desired format (\"full\", \"day\", \"weekday\", or \"time\")\n * @returns a formatted date\n *\n * @example\n * formatMachineReadableDateTime(date) // returns 2019-08-13T10:00:00.000Z\n *\n * @example\n * formatMachineReadableDateTime(date, 'day') // returns 2019-08-13\n */\nexport function formatMachineReadableDateTime(\n\tdate: DateType,\n\tformat: DateFormat = \"full\",\n): string {\n\tlet template: string;\n\n\tswitch (format) {\n\t\tcase \"day\":\n\t\t\ttemplate = \"YYYY-MM-DD\"; // 2019-08-24\n\t\t\tbreak;\n\t\tcase \"weekday\":\n\t\t\ttemplate = \"MM-DD\"; // 08-24\n\t\t\tbreak;\n\t\tcase \"time\":\n\t\t\ttemplate = \"HH:mm:ss.SSS\"; // 15:44:07.000\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ttemplate = \"YYYY-MM-DDTHH:mm:ss.SSS[Z]\"; // 2019-08-24T15:44:07.000Z\n\t}\n\n\treturn dayjs(date).utc().format(template);\n}\n\n/**\n * @example\n * > formatDate(date)\n * 13 Aug 2019\n */\nexport const formatDate = (date: DateType): string => {\n\treturn formatDateAndTime(date, \"day\");\n};\n\n/**\n * @example\n * > formatTime(date)\n * 8:00 AM\n */\nexport const formatTime = (date: DateType): string => {\n\treturn formatDateAndTime(date, \"time\");\n};\n\n/**\n * @example\n * > formatWeekdayDate(date)\n * Mon, 12 Aug\n */\nexport const formatWeekdayDate = (date: DateType): string => {\n\treturn formatDateAndTime(date, \"weekday\");\n};\n","import dayjs from \"dayjs\";\nimport calendarPlugin from \"dayjs/plugin/calendar.js\";\nimport relativeTime from \"dayjs/plugin/relativeTime.js\";\nimport utcPlugin from \"dayjs/plugin/utc.js\";\nimport type React from \"react\";\nimport type { DateType } from \"./types\";\nimport { formatMachineReadableDateTime } from \"./utils/format-date-time-utils\";\nimport {\n\tformatRelativeDateTime,\n\tformatRelativeToCurrentWeekDateTime,\n} from \"./utils/relative-date-time-utils\";\n\ndayjs.extend(utcPlugin);\ndayjs.extend(relativeTime);\ndayjs.extend(calendarPlugin);\n\nexport interface RelativeDateTimeProps {\n\t/**\n\t * The date that will be displayed. It accepts a JS Date, an ISO8601 Timestamp string, or Unix Epoch Milliseconds number\n\t */\n\tdate: DateType;\n\t/**\n\t * If a value is passed to baseDate, then the component will compare both dates and return the time between them.\n\t * If no value is passed then the date will be compared to \"now\"\n\t *\n\t * @default \"Now\"\n\t */\n\tbaseDate?: DateType;\n\t/**\n\t * Sets the date to be relative only if it is in the current week\n\t * @default false\n\t */\n\tisRelativeToCurrentWeek?: boolean;\n}\n\nexport const RelativeDateTime: React.FC<RelativeDateTimeProps> = (props) => {\n\tconst { date, baseDate, isRelativeToCurrentWeek, ...otherProps } = props;\n\n\tconst now = new Date();\n\tconst referenceDate = baseDate ?? now;\n\tconst dayjsDate = dayjs(date);\n\tconst machineReadableDate = formatMachineReadableDateTime(date);\n\n\tlet relativeDate: string;\n\n\tif (isRelativeToCurrentWeek && !dayjsDate.isSame(referenceDate, \"day\")) {\n\t\trelativeDate = formatRelativeToCurrentWeekDateTime(date, referenceDate);\n\t} else {\n\t\trelativeDate = formatRelativeDateTime(date, referenceDate);\n\t}\n\n\treturn (\n\t\t<time dateTime={machineReadableDate} {...otherProps}>\n\t\t\t{relativeDate}\n\t\t</time>\n\t);\n};\nRelativeDateTime.displayName = \"RelativeDateTime\";\n","import { chakra, HStack, Stack } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { Prose } from \"../../primitives/prose\";\nimport { Button, type ButtonProps } from \"../button\";\nimport { RelativeDateTime } from \"../datetime/relative-datetime\";\nimport type {\n\tCommentFooterProps,\n\tCommentHeaderProps,\n\tCommentProps,\n} from \"./types\";\n\ntype CommentStyles = Record<string, React.CSSProperties | object>;\n\nconst CommentStylesContext = createContext<CommentStyles>({});\nconst useStyles = () => useContext(CommentStylesContext);\n\nexport const Comment: React.FC<CommentProps> = (props) => {\n\tconst {\n\t\tavatar,\n\t\tcontent,\n\t\tchildren,\n\t\tauthor,\n\t\tcommentedAt,\n\t\tactions,\n\t\tid,\n\t\tisDeleted,\n\t\tdeletedLabel = \"This comment has been deleted\",\n\t\t...rest\n\t} = props;\n\n\tconst styles: CommentStyles = {};\n\n\tconst headerProps = {\n\t\tauthor,\n\t\tcommentedAt,\n\t};\n\n\tconst footerProps = {\n\t\tactions,\n\t};\n\n\treturn (\n\t\t<chakra.div css={styles.container} data-id={id} {...rest}>\n\t\t\t<CommentStylesContext.Provider value={styles}>\n\t\t\t\t{avatar && <AvatarSlot>{avatar}</AvatarSlot>}\n\t\t\t\t{(content || isDeleted) && (\n\t\t\t\t\t<ContentContainer>\n\t\t\t\t\t\t<Stack gap={3}>\n\t\t\t\t\t\t\t<Stack gap={2}>\n\t\t\t\t\t\t\t\t<CommentHeader {...headerProps} />\n\t\t\t\t\t\t\t\t<Prose\n\t\t\t\t\t\t\t\t\tcss={{\n\t\t\t\t\t\t\t\t\t\t\"& p\": {\n\t\t\t\t\t\t\t\t\t\t\tfontSize: \"inherit!important\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"& *:first-child\": {\n\t\t\t\t\t\t\t\t\t\t\tmarginTop: 0,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"& *:last-child\": {\n\t\t\t\t\t\t\t\t\t\t\tmarginBottom: 0,\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>\n\t\t\t\t\t\t\t\t\t{isDeleted ? (\n\t\t\t\t\t\t\t\t\t\t<chakra.span css={styles.deletedText}>\n\t\t\t\t\t\t\t\t\t\t\t{deletedLabel}\n\t\t\t\t\t\t\t\t\t\t</chakra.span>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tcontent\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Prose>\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t<CommentFooter {...footerProps} />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</ContentContainer>\n\t\t\t\t)}\n\t\t\t\t{children && (\n\t\t\t\t\t<Stack gap={4} css={styles.children}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</CommentStylesContext.Provider>\n\t\t</chakra.div>\n\t);\n};\n\nComment.displayName = \"Comment\";\n\nconst AvatarSlot: React.FC<{\n\tchildren: React.ReactNode;\n}> = ({ children }) => {\n\tconst styles = useStyles();\n\n\treturn <chakra.div css={styles.avatar}>{children}</chakra.div>;\n};\n\nconst ContentContainer = ({ children }: { children: React.ReactNode }) => {\n\tconst styles = useStyles();\n\n\treturn <chakra.div css={styles.contentContainer}>{children}</chakra.div>;\n};\n\nconst CommentHeader: React.FC<CommentHeaderProps> = (props) => {\n\tconst { author, commentedAt } = props;\n\n\tconst shouldRender = !!author || !!commentedAt;\n\n\treturn shouldRender ? (\n\t\t<HStack>\n\t\t\t{author && <Author>{author.name}</Author>}\n\t\t\t{commentedAt && <RelativeDateTime date={commentedAt} />}\n\t\t</HStack>\n\t) : null;\n};\n\nconst Author: React.FC<{\n\tchildren: React.ReactNode;\n}> = (props) => {\n\tconst { children } = props;\n\tconst styles = useStyles();\n\n\treturn <chakra.span css={styles.field}>{children}</chakra.span>;\n};\n\nconst CommentFooter: React.FC<CommentFooterProps> = (props) => {\n\tconst { actions } = props;\n\treturn (\n\t\t<HStack alignItems=\"center\" gap={4} flexWrap=\"wrap\">\n\t\t\t{actions?.map((item, key) => Object.assign({}, item, { key }))}\n\t\t</HStack>\n\t);\n};\n\nexport interface CommentActionProps extends ButtonProps {\n\tchildren: React.ReactNode;\n}\n\nexport const CommentAction: React.FC<CommentActionProps> = (props) => {\n\treturn <Button variant=\"outline\" size=\"xs\" {...props} />;\n};\nCommentAction.displayName = \"CommentAction\";\n","import { Box, Button, ButtonGroup, Flex, Textarea } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { useRef, useState } from \"react\";\n\nexport interface CommentReplyBoxProps {\n\tonReply: (value: string) => Promise<void>;\n\tonCancel?: () => void;\n\t/** Placeholder text for the reply textarea */\n\tplaceholder?: string;\n\t/** Label for the cancel button */\n\tcancelLabel?: string;\n\t/** Label for the reply/submit button */\n\treplyLabel?: string;\n}\n\nexport const CommentReplyBox = ({\n\tref,\n\t...props\n}: CommentReplyBoxProps & { ref?: React.Ref<HTMLTextAreaElement> }) => {\n\tconst {\n\t\tonReply,\n\t\tonCancel,\n\t\tplaceholder = \"Write a reply...\",\n\t\tcancelLabel = \"Cancel\",\n\t\treplyLabel = \"Reply\",\n\t} = props;\n\n\tconst textBoxRef = useRef<HTMLTextAreaElement>(null);\n\n\tconst mergedRef = (node: HTMLTextAreaElement | null) => {\n\t\t(textBoxRef as React.MutableRefObject<HTMLTextAreaElement | null>).current =\n\t\t\tnode;\n\t\tif (typeof ref === \"function\") {\n\t\t\tref(node);\n\t\t} else if (ref) {\n\t\t\t(ref as React.MutableRefObject<HTMLTextAreaElement | null>).current =\n\t\t\t\tnode;\n\t\t}\n\t};\n\n\tconst [isFocused, setIsFocused] = useState<boolean>(false);\n\tconst [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\tconst [value, setValue] = useState<string>(\"\");\n\n\tconst handleReply = async (e: React.FormEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (!value || !value.trim() || value === \"\") {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tsetIsSubmitting(true);\n\t\t\tawait onReply?.(value);\n\t\t\tsetValue(\"\");\n\t\t\tsetIsFocused(false);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t}\n\n\t\tsetIsSubmitting(false);\n\t};\n\n\tconst handleCancel = () => {\n\t\tsetValue(\"\");\n\t\tsetIsFocused(false);\n\t\tonCancel?.();\n\t};\n\n\treturn (\n\t\t<Box w=\"full\" onFocus={() => setIsFocused(true)}>\n\t\t\t<form onSubmit={handleReply}>\n\t\t\t\t<Textarea\n\t\t\t\t\tvalue={String(value)}\n\t\t\t\t\tonChange={(e) => setValue(e.target.value)}\n\t\t\t\t\tminH={isFocused ? undefined : \"2.5rem\"}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tref={mergedRef}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t// modifier + enter\n\t\t\t\t\t\tif ((e.ctrlKey || e.metaKey) && e.key === \"Enter\") {\n\t\t\t\t\t\t\thandleReply(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tdisabled={isSubmitting}\n\t\t\t\t/>\n\n\t\t\t\t<Flex\n\t\t\t\t\tmt={2}\n\t\t\t\t\tdisplay={isFocused ? \"flex\" : \"none\"}\n\t\t\t\t\tjustifyContent=\"flex-end\"\n\t\t\t\t>\n\t\t\t\t\t<ButtonGroup marginInlineStart=\"auto\" size=\"sm\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\tloading={isSubmitting}\n\t\t\t\t\t\t\tonClick={handleCancel}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cancelLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button type=\"submit\" variant=\"solid\" loading={isSubmitting}>\n\t\t\t\t\t\t\t{replyLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</ButtonGroup>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Box>\n\t);\n};\nCommentReplyBox.displayName = \"CommentReplyBox\";\n","import { DataList as ChakraDataList } from \"@chakra-ui/react\";\nimport type * as React from \"react\";\n\nexport interface DataListItemType {\n\tlabel: React.ReactNode;\n\tvalue: React.ReactNode;\n}\n\nexport interface DataListProps extends ChakraDataList.RootProps {\n\t/** Items to render as label-value pairs. If provided, renders automatically. */\n\titems?: DataListItemType[];\n}\n\nexport const DataList = function DataList({\n\tref,\n\t...props\n}: DataListProps & { ref?: React.Ref<HTMLDListElement> }) {\n\tconst { items, children, ...rest } = props;\n\treturn (\n\t\t<ChakraDataList.Root ref={ref} {...rest}>\n\t\t\t{items\n\t\t\t\t? items.map((item) => (\n\t\t\t\t\t\t<ChakraDataList.Item key={String(item.label)}>\n\t\t\t\t\t\t\t<ChakraDataList.ItemLabel>{item.label}</ChakraDataList.ItemLabel>\n\t\t\t\t\t\t\t<ChakraDataList.ItemValue>{item.value}</ChakraDataList.ItemValue>\n\t\t\t\t\t\t</ChakraDataList.Item>\n\t\t\t\t\t))\n\t\t\t\t: children}\n\t\t</ChakraDataList.Root>\n\t);\n};\nDataList.displayName = \"DataList\";\n\n// Pass-through exports for manual composition\nexport const DataListItem = ChakraDataList.Item;\nDataListItem.displayName = \"DataListItem\";\n\nexport const DataListItemLabel = ChakraDataList.ItemLabel;\nDataListItemLabel.displayName = \"DataListItemLabel\";\n\nexport const DataListItemValue = ChakraDataList.ItemValue;\nDataListItemValue.displayName = \"DataListItemValue\";\n\nexport type DataListRootProps = ChakraDataList.RootProps;\n","import { Input, type InputProps } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface DateInputProps\n\textends Omit<InputProps, \"type\" | \"value\" | \"onChange\"> {\n\t/** The date value as an ISO date string (YYYY-MM-DD) or ISO datetime string */\n\tvalue?: string;\n\t/** Called when the date value changes */\n\tonChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n\t/** Minimum date in YYYY-MM-DD format */\n\tminDate?: string;\n\t/** Maximum date in YYYY-MM-DD format */\n\tmaxDate?: string;\n}\n\nconst datePattern = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n/**\n * Extracts a YYYY-MM-DD date string from various input formats.\n */\nfunction toDateString(value: string): string {\n\tif (!value) return \"\";\n\tif (datePattern.test(value)) return value;\n\t// Try to parse ISO datetime strings\n\ttry {\n\t\tconst date = new Date(value);\n\t\tif (Number.isNaN(date.getTime())) return \"\";\n\t\treturn date.toISOString().slice(0, 10);\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n\nconst DateInput = ({\n\tref,\n\t...props\n}: DateInputProps & { ref?: React.Ref<HTMLInputElement> }) => {\n\tconst { value, minDate, maxDate, onChange, ...rest } = props;\n\n\tconst dateValue = value ? toDateString(value) : \"\";\n\n\treturn (\n\t\t<Input\n\t\t\ttype=\"date\"\n\t\t\tvalue={dateValue}\n\t\t\tmin={minDate}\n\t\t\tmax={maxDate}\n\t\t\tonChange={onChange}\n\t\t\tref={ref}\n\t\t\t{...rest}\n\t\t/>\n\t);\n};\nDateInput.displayName = \"DateInput\";\n\nexport default DateInput;\n","import { Heading, Stack, Text } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface EmptyStateProps {\n\t/** Main heading text. */\n\theader: string;\n\t/** Description text or rich content. */\n\tdescription?: React.ReactNode;\n\t/** Optional icon displayed above the heading. */\n\ticon?: React.ReactNode;\n\t/** Optional action buttons below the description. */\n\tactions?: React.ReactNode;\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = (props) => {\n\tconst { header, description, icon, actions } = props;\n\n\treturn (\n\t\t<Stack\n\t\t\tjustifyContent=\"center\"\n\t\t\talignItems=\"center\"\n\t\t\ttextAlign=\"center\"\n\t\t\tgap={4}\n\t\t\tp={16}\n\t\t\tborderRadius=\"lg\"\n\t\t>\n\t\t\t{icon}\n\t\t\t<Heading size=\"lg\">{header}</Heading>\n\t\t\t{description && (\n\t\t\t\t<Text color=\"muted\" fontSize=\"sm\">\n\t\t\t\t\t{description}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{actions && (\n\t\t\t\t<Stack pt={4} gap={2}>\n\t\t\t\t\t{actions}\n\t\t\t\t</Stack>\n\t\t\t)}\n\t\t</Stack>\n\t);\n};\n\nEmptyState.displayName = \"EmptyState\";\n","import { chakra, type HTMLChakraProps } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { Avatar, type AvatarProps } from \"../../primitives/avatar\";\n\nexport interface PersonaProps {\n\t/**\n\t * The name of the person in the avatar.\n\t *\n\t * - if `src` has loaded, the name will be used as the `alt` attribute of the `img`\n\t * - If `src` is not loaded, the name will be used to create the initials\n\t */\n\tname?: string;\n\n\t/**\n\t * Primary label of the persona, defaults to the name\n\t */\n\tlabel?: React.ReactNode;\n\t/**\n\t * Hide the persona details next to the avatar.\n\t */\n\thideDetails?: boolean;\n\t/**\n\t * The size of the persona, from 2xs to 2xl.\n\t */\n\tsize?: \"2xs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\t/**\n\t * When true, adds hover styling and pointer cursor for clickable personas.\n\t */\n\tinteractive?: boolean;\n}\n\ninterface PersonaStyles {\n\tcontainer?: React.CSSProperties;\n\tdetails?: React.CSSProperties;\n\tlabel?: React.CSSProperties;\n}\n\nconst PersonaStylesContext = createContext<PersonaStyles>({});\nconst usePersonaStyles = () => useContext(PersonaStylesContext);\n\nexport const Persona: React.FC<PersonaProps> = (props) => {\n\tconst { name, size = \"sm\", hideDetails, label, interactive } = props;\n\n\treturn (\n\t\t<PersonaContainer interactive={interactive}>\n\t\t\t<PersonaAvatar name={name} size={size} />\n\t\t\t{!hideDetails && (\n\t\t\t\t<PersonaDetails>\n\t\t\t\t\t<PersonaLabel>{label || name}</PersonaLabel>\n\t\t\t\t</PersonaDetails>\n\t\t\t)}\n\t\t</PersonaContainer>\n\t);\n};\n\nPersona.displayName = \"Persona\";\n\nexport interface PersonaContainerProps extends HTMLChakraProps<\"div\"> {\n\tchildren: React.ReactNode;\n\t/**\n\t * Optional style overrides passed down to child components via context.\n\t */\n\tstyles?: PersonaStyles;\n\t/**\n\t * When true, adds hover styling and pointer cursor for clickable personas.\n\t */\n\tinteractive?: boolean;\n}\n\nexport const PersonaContainer = ({\n\tref,\n\t...props\n}: PersonaContainerProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst { children, styles = {}, interactive, ...rest } = props;\n\n\treturn (\n\t\t<PersonaStylesContext.Provider value={styles}>\n\t\t\t<chakra.div\n\t\t\t\tref={ref}\n\t\t\t\tdisplay=\"flex\"\n\t\t\t\tflexDirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\t{...(interactive && {\n\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\tborderRadius: \"md\",\n\t\t\t\t\ttransition: \"background-color 150ms\",\n\t\t\t\t\t_hover: { bg: \"bg-subtle\" },\n\t\t\t\t\tpx: 2,\n\t\t\t\t\tpy: 1,\n\t\t\t\t})}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</chakra.div>\n\t\t</PersonaStylesContext.Provider>\n\t);\n};\n\ninterface PersonaAvatarOptions extends Pick<PersonaProps, \"name\" | \"size\"> {}\n\ninterface PersonaAvatarProps\n\textends PersonaAvatarOptions,\n\t\tOmit<AvatarProps, \"size\"> {}\n\nexport const PersonaAvatar = ({\n\tref,\n\t...props\n}: PersonaAvatarProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst { name, size, ...rest } = props;\n\n\treturn <Avatar ref={ref} name={name} size={size} {...rest} />;\n};\nPersonaAvatar.displayName = \"PersonaAvatar\";\n\nexport const PersonaDetails = ({\n\tref,\n\t...props\n}: HTMLChakraProps<\"div\"> & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst { children, ...rest } = props;\n\tconst styles = usePersonaStyles();\n\n\treturn (\n\t\t<chakra.div\n\t\t\tref={ref}\n\t\t\tdisplay=\"flex\"\n\t\t\tflexDirection=\"column\"\n\t\t\tstyle={styles.details}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</chakra.div>\n\t);\n};\nPersonaDetails.displayName = \"PersonaDetails\";\n\nexport const PersonaLabel = ({\n\tref,\n\t...props\n}: HTMLChakraProps<\"span\"> & { ref?: React.Ref<HTMLSpanElement> }) => {\n\tconst styles = usePersonaStyles();\n\n\treturn <chakra.span ref={ref} style={styles.label} {...props} />;\n};\nPersonaLabel.displayName = \"PersonaLabel\";\n","import { Circle, HStack, Text } from \"@chakra-ui/react\";\nimport {\n\ttype ActionMeta,\n\tchakraComponents,\n\ttype GroupBase,\n\ttype MultiValue,\n\ttype MultiValueProps,\n\ttype OptionProps,\n\ttype Props,\n\tSelect,\n\ttype SelectInstance,\n\ttype SingleValue,\n\ttype SingleValueProps,\n} from \"chakra-react-select\";\nimport type React from \"react\";\nimport { Avatar } from \"../../primitives/avatar\";\nimport type { BaseOption } from \"./types\";\n\nexport interface BaseSelectProps<T extends BaseOption>\n\textends Omit<\n\t\tProps<T, boolean, GroupBase<T>>,\n\t\t\"value\" | \"onChange\" | \"isLoading\" | \"isDisabled\"\n\t> {\n\tvalue: T | T[] | null;\n\tonChange?: (\n\t\tnewValue: MultiValue<T> | SingleValue<T>,\n\t\tactionMeta: ActionMeta<T>,\n\t) => void;\n\tloading?: boolean;\n\tdisabled?: boolean;\n}\n\nconst BaseSingleValue = <T extends BaseOption>({\n\tdata,\n\t...props\n}: SingleValueProps<T, boolean, GroupBase<T>>) => {\n\treturn (\n\t\t<chakraComponents.SingleValue data={data} {...props}>\n\t\t\t<HStack gap={2}>\n\t\t\t\t{data.avatar && <Avatar name={data.avatar} size=\"xs\" />}\n\t\t\t\t{data.color && <Circle bg={data.color} size={5} />}\n\t\t\t\t{data.icon && data.icon}\n\t\t\t\t<Text>{data.label}</Text>\n\t\t\t</HStack>\n\t\t</chakraComponents.SingleValue>\n\t);\n};\n\nconst BaseMultiValue = <T extends BaseOption>({\n\tchildren,\n\t...props\n}: MultiValueProps<T, boolean, GroupBase<T>>) => {\n\tconst { data } = props;\n\n\treturn (\n\t\t// @ts-expect-error -- strict mode: duplicate property\n\t\t<chakraComponents.MultiValue data={data} {...props}>\n\t\t\t<HStack gap={2}>\n\t\t\t\t{data.avatar && <Avatar name={data.avatar} size=\"xs\" />}\n\t\t\t\t{data.color && <Circle bg={data.color} size={5} />}\n\t\t\t\t{data.icon && data.icon}\n\t\t\t\t<Text>{data.label}</Text>\n\t\t\t</HStack>\n\t\t</chakraComponents.MultiValue>\n\t);\n};\n\nconst BaseSelectOption = <T extends BaseOption>({\n\tdata,\n\t...props\n}: OptionProps<T, boolean, GroupBase<T>>) => {\n\treturn (\n\t\t<chakraComponents.Option data={data} {...props}>\n\t\t\t<HStack gap={2}>\n\t\t\t\t{data.avatar && <Avatar name={data.avatar} size=\"xs\" />}\n\t\t\t\t{data.color && <Circle bg={data.color} size={5} />}\n\t\t\t\t{data.icon && data.icon}\n\t\t\t\t<Text>{data.label}</Text>\n\t\t\t</HStack>\n\t\t</chakraComponents.Option>\n\t);\n};\n\nconst getSelectComponents = (\n\tvariant?: string,\n\tcustomComponents?: Record<string, React.ComponentType<unknown>>,\n) => ({\n\t...(variant === \"link\"\n\t\t? {\n\t\t\t\tDropdownIndicator: null,\n\t\t\t\tIndicatorSeparator: null,\n\t\t\t}\n\t\t: {}),\n\tSingleValue: BaseSingleValue,\n\tMultiValue: BaseMultiValue,\n\tOption: BaseSelectOption,\n\t...customComponents,\n});\n\nexport const BaseSelect = <T extends BaseOption>({\n\tref,\n\tvalue,\n\tonChange,\n\toptions,\n\tisMulti = false,\n\tloading = false,\n\tdisabled = false,\n\tisClearable = true,\n\tplaceholder,\n\tmenuPortalTarget = document.body,\n\tvariant = \"outline\",\n\tstyles,\n\t...restSelectProps\n}: BaseSelectProps<T> & {\n\tref?: React.Ref<SelectInstance<T, boolean, GroupBase<T>>>;\n}) => {\n\treturn (\n\t\t<Select<T, boolean, GroupBase<T>>\n\t\t\t{...restSelectProps}\n\t\t\tref={ref}\n\t\t\tvalue={value}\n\t\t\tvariant={variant}\n\t\t\tonChange={onChange}\n\t\t\toptions={options}\n\t\t\tisMulti={isMulti}\n\t\t\tisLoading={loading}\n\t\t\tisDisabled={disabled}\n\t\t\tisClearable={isClearable}\n\t\t\tplaceholder={placeholder}\n\t\t\tmenuPortalTarget={menuPortalTarget}\n\t\t\tstyles={{\n\t\t\t\tmenuPortal: (provided) => ({\n\t\t\t\t\t...provided,\n\t\t\t\t\tzIndex: 1800,\n\t\t\t\t\tpointerEvents: \"auto\" as const,\n\t\t\t\t}),\n\t\t\t\t...styles,\n\t\t\t}}\n\t\t\tgetOptionValue={(option) => option.id}\n\t\t\tgetOptionLabel={(option) => option.label}\n\t\t\tcomponents={getSelectComponents(\n\t\t\t\tvariant as string,\n\t\t\t\t// @ts-expect-error -- strict mode: argument type\n\t\t\t\trestSelectProps.components,\n\t\t\t)}\n\t\t/>\n\t);\n};\n(BaseSelect as { displayName?: string }).displayName = \"BaseSelect\";\n","import { Box, Table } from \"@chakra-ui/react\";\nimport {\n\tchakraComponents,\n\ttype GroupBase,\n\ttype MenuListProps,\n\ttype OptionProps,\n} from \"chakra-react-select\";\nimport type React from \"react\";\nimport { useMemo } from \"react\";\nimport type { BaseOption } from \"./types\";\n\nexport interface TableMenuColumn {\n\tkey: string;\n\theader: string;\n\twidth?: string;\n}\n\nexport interface TableMenuListProps<T extends BaseOption>\n\textends MenuListProps<T, boolean, GroupBase<T>> {\n\tcolumns?: TableMenuColumn[];\n\t/** Minimum width of the table menu. Defaults to \"400px\" */\n\tminWidth?: string;\n\t/** Maximum width of the table menu. Defaults to \"600px\" */\n\tmaxWidth?: string;\n}\n\n/**\n * A custom MenuList component that renders options as table rows.\n *\n * Use with BaseSelect by passing it via the `components` prop:\n * ```tsx\n * <BaseSelect\n * components={{\n * MenuList: (props) => (\n * <TableMenuList\n * {...props}\n * columns={[\n * { key: \"label\", header: \"Name\" },\n * { key: \"valid_from\", header: \"Valid From\" },\n * ]}\n * />\n * ),\n * Option: TableOption,\n * }}\n * />\n * ```\n */\nexport const TableMenuList = <T extends BaseOption>({\n\tchildren,\n\tcolumns,\n\tminWidth = \"400px\",\n\tmaxWidth = \"600px\",\n\t...props\n}: TableMenuListProps<T>) => {\n\tconst { options } = props;\n\n\t// If no columns specified, derive from first option's data keys\n\tconst derivedColumns = useMemo<TableMenuColumn[]>(() => {\n\t\tif (columns) return columns;\n\n\t\tconst firstOption = options?.[0] as T | undefined;\n\t\tif (!firstOption?.data) {\n\t\t\treturn [{ key: \"label\", header: \"Name\" }];\n\t\t}\n\n\t\treturn [\n\t\t\t{ key: \"label\", header: \"Name\" },\n\t\t\t...Object.keys(firstOption.data).map((key) => ({\n\t\t\t\tkey,\n\t\t\t\theader: key.charAt(0).toUpperCase() + key.slice(1).replace(/_/g, \" \"),\n\t\t\t})),\n\t\t];\n\t}, [columns, options]);\n\n\treturn (\n\t\t<chakraComponents.MenuList {...props}>\n\t\t\t<Box\n\t\t\t\toverflowX=\"auto\"\n\t\t\t\tminWidth={minWidth}\n\t\t\t\tmaxWidth={maxWidth}\n\t\t\t\twidth=\"max-content\"\n\t\t\t>\n\t\t\t\t<Table.Root size=\"sm\">\n\t\t\t\t\t<Table.Header>\n\t\t\t\t\t\t<Table.Row>\n\t\t\t\t\t\t\t{derivedColumns.map((col) => (\n\t\t\t\t\t\t\t\t<Table.ColumnHeader\n\t\t\t\t\t\t\t\t\tkey={col.key}\n\t\t\t\t\t\t\t\t\twidth={col.width}\n\t\t\t\t\t\t\t\t\twhiteSpace=\"nowrap\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{col.header}\n\t\t\t\t\t\t\t\t</Table.ColumnHeader>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</Table.Row>\n\t\t\t\t\t</Table.Header>\n\t\t\t\t\t<Table.Body>{children}</Table.Body>\n\t\t\t\t</Table.Root>\n\t\t\t</Box>\n\t\t</chakraComponents.MenuList>\n\t);\n};\n(TableMenuList as { displayName?: string }).displayName = \"TableMenuList\";\n\n/**\n * A custom Option component that renders as a table row.\n * Use together with TableMenuList.\n */\nexport const TableOption = <T extends BaseOption>({\n\tdata,\n\tinnerProps,\n\tisSelected,\n\tisFocused,\n\tcolumns,\n}: OptionProps<T, boolean, GroupBase<T>> & { columns?: TableMenuColumn[] }) => {\n\t// Derive columns from data if not provided\n\tconst derivedColumns = useMemo<TableMenuColumn[]>(() => {\n\t\tif (columns) return columns;\n\n\t\tif (!data.data) {\n\t\t\treturn [{ key: \"label\", header: \"Name\" }];\n\t\t}\n\n\t\treturn [\n\t\t\t{ key: \"label\", header: \"Name\" },\n\t\t\t...Object.keys(data.data).map((key) => ({\n\t\t\t\tkey,\n\t\t\t\theader: key,\n\t\t\t})),\n\t\t];\n\t}, [columns, data.data]);\n\n\tconst getCellValue = (col: TableMenuColumn): React.ReactNode => {\n\t\tif (col.key === \"label\") {\n\t\t\treturn data.label;\n\t\t}\n\t\tif (col.key === \"id\") {\n\t\t\treturn data.id;\n\t\t}\n\t\tif (data.data && col.key in data.data) {\n\t\t\tconst value = data.data[col.key];\n\t\t\tif (value === null || value === undefined) return \"-\";\n\t\t\treturn String(value);\n\t\t}\n\t\treturn \"-\";\n\t};\n\n\t// Extract only the event handlers and data attributes from innerProps\n\t// The ref is incompatible with table rows, so we exclude it\n\tconst { ref: _ref, ...rowProps } = innerProps;\n\n\treturn (\n\t\t<Table.Row\n\t\t\t{...rowProps}\n\t\t\t_hover={{ bg: isFocused ? \"bg-muted\" : \"bg-subtle\" }}\n\t\t\tcursor=\"pointer\"\n\t\t\t_even={{\n\t\t\t\tbg: isSelected ? \"primary.subtle\" : isFocused ? \"bg-muted\" : undefined,\n\t\t\t}}\n\t\t>\n\t\t\t{derivedColumns.map((col) => (\n\t\t\t\t<Table.Cell key={col.key} width={col.width} whiteSpace=\"nowrap\">\n\t\t\t\t\t{getCellValue(col)}\n\t\t\t\t</Table.Cell>\n\t\t\t))}\n\t\t</Table.Row>\n\t);\n};\n(TableOption as { displayName?: string }).displayName = \"TableOption\";\n\nexport interface CreateTableMenuComponentsOptions {\n\tcolumns: TableMenuColumn[];\n\t/** Minimum width of the table menu. Defaults to \"400px\" */\n\tminWidth?: string;\n\t/** Maximum width of the table menu. Defaults to \"600px\" */\n\tmaxWidth?: string;\n}\n\n/**\n * Helper to create table menu components with predefined columns.\n *\n * Usage:\n * ```tsx\n * const { MenuList, Option } = createTableMenuComponents({\n * columns: [\n * { key: \"label\", header: \"Release\" },\n * { key: \"valid_from\", header: \"Valid From\" },\n * { key: \"valid_until\", header: \"Valid Until\" },\n * ],\n * minWidth: \"500px\",\n * maxWidth: \"800px\",\n * });\n *\n * <BaseSelect components={{ MenuList, Option }} />\n * ```\n */\nexport const createTableMenuComponents = <T extends BaseOption>(\n\toptions: CreateTableMenuComponentsOptions,\n) => ({\n\tMenuList: (props: MenuListProps<T, boolean, GroupBase<T>>) => (\n\t\t<TableMenuList\n\t\t\t{...props}\n\t\t\tcolumns={options.columns}\n\t\t\tminWidth={options.minWidth}\n\t\t\tmaxWidth={options.maxWidth}\n\t\t/>\n\t),\n\tOption: (props: OptionProps<T, boolean, GroupBase<T>>) => (\n\t\t<TableOption {...props} columns={options.columns} />\n\t),\n});\n","import { HStack } from \"@chakra-ui/react\";\nimport { ChevronDown, Plus } from \"lucide-react\";\nimport type React from \"react\";\nimport {\n\tMenuContent,\n\tMenuItem,\n\tMenuRoot,\n\tMenuTrigger,\n} from \"../../primitives/menu\";\nimport { Button, type ButtonProps } from \"../button\";\n\nexport interface SplitButtonMenuItem {\n\tlabel: string;\n\tonClick: () => void;\n\ticon?: React.ReactNode;\n\tcolor?: string;\n}\n\nexport interface SplitButtonProps extends ButtonProps {\n\tlabel: string;\n\tmenuItems?: SplitButtonMenuItem[];\n}\n\nexport const SplitButton: React.FC<SplitButtonProps> = (props) => {\n\tconst { label, menuItems, onClick, ...rest } = props;\n\tconst hasMenuItems = menuItems && menuItems.length > 0;\n\n\treturn (\n\t\t<HStack gap={0.5}>\n\t\t\t{onClick && (\n\t\t\t\t<Button\n\t\t\t\t\t{...rest}\n\t\t\t\t\tcolorPalette=\"blue\"\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\tborderEndRadius={hasMenuItems ? \"none\" : undefined}\n\t\t\t\t>\n\t\t\t\t\t<Plus size={16} />\n\t\t\t\t\t{label}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{hasMenuItems && (\n\t\t\t\t<MenuRoot>\n\t\t\t\t\t<MenuTrigger asChild>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\tcolorPalette=\"blue\"\n\t\t\t\t\t\t\tborderStartRadius={onClick ? \"none\" : undefined}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ChevronDown size={16} />\n\t\t\t\t\t\t\t{onClick ? null : label}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</MenuTrigger>\n\t\t\t\t\t<MenuContent>\n\t\t\t\t\t\t{menuItems.map((menuItem) => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tkey={menuItem.label}\n\t\t\t\t\t\t\t\tvalue={menuItem.label}\n\t\t\t\t\t\t\t\tonClick={menuItem.onClick}\n\t\t\t\t\t\t\t\tcolor={menuItem.color}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{menuItem.icon}\n\t\t\t\t\t\t\t\t{menuItem.label}\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</MenuContent>\n\t\t\t\t</MenuRoot>\n\t\t\t)}\n\t\t</HStack>\n\t);\n};\nSplitButton.displayName = \"SplitButton\";\n","import {\n\tBox,\n\ttype BoxProps,\n\tHeading,\n\tHStack,\n\tSquare,\n\tStack,\n\tText,\n} from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { Spinner } from \"../../primitives/spinner\";\n\nexport interface StatProps extends BoxProps {\n\t/** An icon element rendered as React node (e.g., a lucide-react icon) */\n\ticon?: React.ReactNode;\n\tlabel: string;\n\tvalue?: React.ReactNode;\n\tloading?: boolean;\n}\n\nexport const Stat: React.FC<StatProps> = (props) => {\n\tconst { label, value, icon, loading, ...boxProps } = props;\n\n\treturn (\n\t\t<Box\n\t\t\tpx={{ base: \"4\", md: \"6\" }}\n\t\t\tpy={{ base: \"5\", md: \"6\" }}\n\t\t\tbg=\"bg-surface\"\n\t\t\tborderRadius=\"lg\"\n\t\t\tboxShadow=\"sm\"\n\t\t\t{...boxProps}\n\t\t>\n\t\t\t<Stack gap={{ base: \"5\", md: \"6\" }}>\n\t\t\t\t<Stack direction=\"row\" justify=\"space-between\">\n\t\t\t\t\t<HStack gap=\"4\">\n\t\t\t\t\t\t{icon && (\n\t\t\t\t\t\t\t<Square size=\"8\" bg=\"bg-accent-subtle\" borderRadius=\"md\">\n\t\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t\t</Square>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text fontWeight=\"medium\">{label}</Text>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Stack>\n\t\t\t\t<Stack gap=\"4\">\n\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Heading size={{ base: \"sm\", md: \"md\" }}>{value ?? 0}</Heading>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</Box>\n\t);\n};\n\nStat.displayName = \"Stat\";\n","import { Text, type TextProps } from \"@chakra-ui/react\";\nimport { memo, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"../../primitives/tooltip\";\n\nexport interface TextOverflowProps extends TextProps {}\n\nexport const TextOverflow: React.FC<TextOverflowProps> = memo((props) => {\n\tconst { children, ...rest } = props;\n\tconst textElementRef = useRef<HTMLDivElement>(null);\n\tconst [isOverflown, setIsOverflown] = useState(false);\n\n\tconst compareSize = useCallback(() => {\n\t\tconst element = textElementRef.current;\n\n\t\tconst compare = element\n\t\t\t? element.scrollWidth > element.clientWidth ||\n\t\t\t\telement.offsetWidth < element.scrollWidth ||\n\t\t\t\telement.offsetHeight < element.scrollHeight\n\t\t\t: false;\n\n\t\tsetIsOverflown(compare);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tcompareSize();\n\t\tconst element = textElementRef.current;\n\t\tif (!element) return;\n\t\tconst observer = new ResizeObserver(compareSize);\n\t\tobserver.observe(element);\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [compareSize]);\n\n\treturn (\n\t\t<Tooltip content={children} disabled={!isOverflown}>\n\t\t\t<Text\n\t\t\t\tas=\"div\"\n\t\t\t\tposition=\"relative\"\n\t\t\t\twhiteSpace={isOverflown ? \"nowrap\" : \"normal\"}\n\t\t\t\t{...rest}\n\t\t\t\tref={textElementRef}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</Tooltip>\n\t);\n});\n\nTextOverflow.displayName = \"TextOverflow\";\n","import { Badge, type BadgeProps } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface TypeBadgeProps extends Omit<BadgeProps, \"children\"> {\n\t/** Display name for the badge. */\n\tname: string;\n\t/** Chakra color palette for visual differentiation. @default \"gray\" */\n\tcolorPalette?: string;\n}\n\nexport const TypeBadge: React.FC<TypeBadgeProps> = ({\n\tname,\n\tcolorPalette = \"gray\",\n\t...rest\n}) => {\n\treturn (\n\t\t<Badge\n\t\t\trounded=\"base\"\n\t\t\tpx={2}\n\t\t\tmarginInlineStart={1}\n\t\t\tcolorPalette={colorPalette}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{name}\n\t\t</Badge>\n\t);\n};\nTypeBadge.displayName = \"TypeBadge\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/atoms/actions/action.tsx","../../src/atoms/actions/collapse.tsx","../../src/atoms/actions/edit.tsx","../../src/atoms/actions/filter.tsx","../../src/atoms/actions/handle.tsx","../../src/atoms/actions/remove.tsx","../../src/atoms/checkbox-card/checkbox-card.tsx","../../src/atoms/clipboard/clipboard.tsx","../../src/atoms/color-swatch-picker/color-swatch-picker.tsx","../../src/atoms/datetime/utils/format-date-time-utils.ts","../../src/atoms/datetime/relative-datetime.tsx","../../src/atoms/comment/comment.tsx","../../src/atoms/comment/comment-reply-box.tsx","../../src/atoms/data-list/data-list.tsx","../../src/atoms/date-input/date-input.tsx","../../src/atoms/empty-state/empty-state.tsx","../../src/atoms/persona/persona.tsx","../../src/atoms/select/base-select.tsx","../../src/atoms/select/table-menu-list.tsx","../../src/atoms/split-button/split-button.tsx","../../src/atoms/stat/stat.tsx","../../src/atoms/text-overflow/text-overflow.tsx","../../src/atoms/type-badge/type-badge.tsx"],"names":["jsx","Icon","Box","FilterIcon","jsxs","ClipboardButton","ChakraClipboard","IconButton","Clipboard","ClipboardInput","ClipboardLink","Stack","dayjs","utcPlugin","HStack","useState","e","Flex","Button","DataList","ChakraDataList","Input","Text","createContext","useContext","chakra","Circle","chakraComponents","ChevronDown","Heading","useRef","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { Box } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface ActionProps extends React.HTMLAttributes<HTMLButtonElement> {\n\tcursor?: string;\n}\n\nexport const Action = ({\n\tref,\n\tcursor,\n\tcolor,\n\t...props\n}: ActionProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\treturn (\n\t\t<Box\n\t\t\tdisplay=\"flex\"\n\t\t\talignItems={\"center\"}\n\t\t\tjustifyContent={\"center\"}\n\t\t\tborderRadius={\"5px\"}\n\t\t\tp={\"15px\"}\n\t\t\ttabIndex={0}\n\t\t\tcursor={cursor}\n\t\t\ttransition={\"background-color 150ms, color 150ms, opacity 150ms\"}\n\t\t\tbg={color}\n\t\t\tasChild\n\t\t>\n\t\t\t<button type=\"button\" ref={ref} {...props} />\n\t\t</Box>\n\t);\n};\nAction.displayName = \"Action\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport type React from \"react\";\nimport { Action, type ActionProps } from \"./action\";\n\nexport interface CollapseProps extends ActionProps {\n\tcollapsed: boolean;\n\t/** Accessible label for the collapse button */\n\tcollapseLabel?: string;\n}\n\nexport const Collapse = ({\n\tref,\n\tcollapseLabel = \"Collapse\",\n\t...props\n}: CollapseProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\tconst { collapsed, ...rest } = props;\n\n\treturn (\n\t\t<Action ref={ref} cursor=\"pointer\" aria-label={collapseLabel} {...rest}>\n\t\t\t<Icon color=\"subtle\">\n\t\t\t\t{collapsed ? <ChevronRight /> : <ChevronDown />}\n\t\t\t</Icon>\n\t\t</Action>\n\t);\n};\nCollapse.displayName = \"Collapse\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { Pencil } from \"lucide-react\";\nimport type React from \"react\";\nimport { Action, type ActionProps } from \"./action\";\n\nexport interface EditProps extends ActionProps {\n\t/** Accessible label for the edit button */\n\teditLabel?: string;\n}\n\nexport const Edit = ({\n\tref,\n\teditLabel = \"Edit\",\n\t...props\n}: EditProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\treturn (\n\t\t<Action ref={ref} cursor=\"pointer\" aria-label={editLabel} {...props}>\n\t\t\t<Icon color=\"subtle\" asChild>\n\t\t\t\t<Pencil />\n\t\t\t</Icon>\n\t\t</Action>\n\t);\n};\nEdit.displayName = \"Edit\";\n","import { Box, Circle, Text } from \"@chakra-ui/react\";\nimport { Filter as FilterIcon } from \"lucide-react\";\nimport type React from \"react\";\nimport { IconButton, type IconButtonProps } from \"../button\";\n\nexport type FilterProps = Omit<\n\tIconButtonProps,\n\t\"aria-label\" | \"cursor\" | \"icon\"\n> & {\n\tactiveFilterCount?: number;\n\t/** Accessible label for the filter button */\n\tfilterLabel?: string;\n};\n\nexport const Filter = ({\n\tref,\n\tfilterLabel = \"Filter\",\n\t...props\n}: FilterProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\tconst { activeFilterCount, ...rest } = props;\n\n\treturn (\n\t\t<Box position=\"relative\">\n\t\t\t<IconButton\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tcursor=\"pointer\"\n\t\t\t\tref={ref}\n\t\t\t\taria-label={filterLabel}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t<FilterIcon />\n\t\t\t</IconButton>\n\t\t\t{activeFilterCount && activeFilterCount > 0 ? (\n\t\t\t\t<Circle\n\t\t\t\t\tsize=\"24px\"\n\t\t\t\t\tbg=\"accent\"\n\t\t\t\t\tcolor=\"on-accent\"\n\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\ttop={5}\n\t\t\t\t\tinsetInlineEnd={-1.5}\n\t\t\t\t>\n\t\t\t\t\t<Text fontSize=\"xs\" fontWeight={800}>\n\t\t\t\t\t\t{activeFilterCount}\n\t\t\t\t\t</Text>\n\t\t\t\t</Circle>\n\t\t\t) : null}\n\t\t</Box>\n\t);\n};\nFilter.displayName = \"Filter\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { GripVertical } from \"lucide-react\";\nimport type React from \"react\";\nimport { Action, type ActionProps } from \"./action\";\n\nexport interface HandleProps extends ActionProps {\n\t/** Accessible label for the drag handle */\n\thandleLabel?: string;\n}\n\nexport const Handle = ({\n\tref,\n\thandleLabel = \"Drag to reorder\",\n\t...props\n}: HandleProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\treturn (\n\t\t<Action ref={ref} cursor=\"grab\" aria-label={handleLabel} {...props}>\n\t\t\t<Icon color=\"subtle\" asChild>\n\t\t\t\t<GripVertical />\n\t\t\t</Icon>\n\t\t</Action>\n\t);\n};\nHandle.displayName = \"Handle\";\n","import { Icon } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport type React from \"react\";\nimport { Action, type ActionProps } from \"./action\";\n\nexport interface RemoveProps extends ActionProps {\n\t/** Accessible label for the remove button */\n\tremoveLabel?: string;\n}\n\nexport const Remove = ({\n\tref,\n\tremoveLabel = \"Remove\",\n\t...props\n}: RemoveProps & { ref?: React.Ref<HTMLButtonElement> }) => {\n\treturn (\n\t\t<Action ref={ref} aria-label={removeLabel} {...props}>\n\t\t\t<Icon color=\"subtle\" asChild>\n\t\t\t\t<X />\n\t\t\t</Icon>\n\t\t</Action>\n\t);\n};\nRemove.displayName = \"Remove\";\n","import {\n\tBox,\n\ttype BoxProps,\n\tStack,\n\ttype StackProps,\n\ttype UseCheckboxGroupProps,\n\tuseCheckboxGroup,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type CheckboxCardGroupProps = StackProps & {\n\tdefaultValue?: UseCheckboxGroupProps[\"defaultValue\"];\n\tvalue?: UseCheckboxGroupProps[\"value\"];\n\tonValueChange?: (value: string[]) => void;\n};\n\nexport const CheckboxCardGroup = (props: CheckboxCardGroupProps) => {\n\tconst { children, defaultValue, value, onValueChange, ...rest } = props;\n\tconst group = useCheckboxGroup({\n\t\tdefaultValue,\n\t\tvalue,\n\t\tonValueChange,\n\t});\n\n\tconst cards = React.useMemo(\n\t\t() =>\n\t\t\tReact.Children.toArray(children)\n\t\t\t\t.filter<React.ReactElement<CheckboxCardProps>>(React.isValidElement)\n\t\t\t\t.map((card) => {\n\t\t\t\t\treturn React.cloneElement(card, {\n\t\t\t\t\t\tcheckboxProps: group.getItemProps({\n\t\t\t\t\t\t\tvalue: card.props.value,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t[children, group],\n\t);\n\n\treturn <Stack {...rest}>{cards}</Stack>;\n};\n\nCheckboxCardGroup.displayName = \"CheckboxCardGroup\";\n\n// Infer the item props type directly from the hook to avoid invalid imports\ntype CheckboxItemProps = ReturnType<\n\tReturnType<typeof useCheckboxGroup>[\"getItemProps\"]\n>;\n\nexport interface CheckboxCardProps extends BoxProps {\n\tvalue: string;\n\tcheckboxProps?: CheckboxItemProps;\n}\n\nexport const CheckboxCard = (props: CheckboxCardProps) => {\n\tconst { checkboxProps, children, ...rest } = props;\n\n\tconst id = React.useId();\n\n\treturn (\n\t\t<Box\n\t\t\tcursor=\"pointer\"\n\t\t\tcss={{\n\t\t\t\t\"& .focus-visible + [data-focus]\": {\n\t\t\t\t\tboxShadow: \"outline\",\n\t\t\t\t\tzIndex: 1,\n\t\t\t\t},\n\t\t\t}}\n\t\t\tasChild\n\t\t>\n\t\t\t<label>\n\t\t\t\t<input type=\"checkbox\" aria-labelledby={id} {...checkboxProps} />\n\t\t\t\t<Box {...rest}>\n\t\t\t\t\t<Stack direction=\"row\">\n\t\t\t\t\t\t<Box flex=\"1\" id={id}>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Box>\n\t\t\t</label>\n\t\t</Box>\n\t);\n};\n\nCheckboxCard.displayName = \"CheckboxCard\";\n","import {\n\tClipboard as ChakraClipboard,\n\tIconButton,\n\tInput,\n\ttype InputProps,\n} from \"@chakra-ui/react\";\nimport { Check, Clipboard, Link } from \"lucide-react\";\nimport type * as React from \"react\";\n\nexport interface ClipboardButtonProps extends ChakraClipboard.RootProps {\n\t/** Label for the copy button. @default \"Copy\" */\n\tlabel?: string;\n}\n\nexport const ClipboardButton = function ClipboardButton({\n\tref,\n\t...props\n}: ClipboardButtonProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { label = \"Copy\", ...rest } = props;\n\treturn (\n\t\t<ChakraClipboard.Root ref={ref} {...rest}>\n\t\t\t<ChakraClipboard.Trigger asChild>\n\t\t\t\t<IconButton variant=\"ghost\" size=\"sm\" aria-label={label}>\n\t\t\t\t\t<ChakraClipboard.Indicator copied={<Check size={16} />}>\n\t\t\t\t\t\t<Clipboard size={16} />\n\t\t\t\t\t</ChakraClipboard.Indicator>\n\t\t\t\t</IconButton>\n\t\t\t</ChakraClipboard.Trigger>\n\t\t</ChakraClipboard.Root>\n\t);\n};\nClipboardButton.displayName = \"ClipboardButton\";\n\nexport interface ClipboardInputProps extends ChakraClipboard.RootProps {\n\t/** Props passed to the input element. */\n\tinputProps?: InputProps;\n\t/** Label for the copy button. @default \"Copy\" */\n\tlabel?: string;\n}\n\nexport const ClipboardInput = function ClipboardInput({\n\tref,\n\t...props\n}: ClipboardInputProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { inputProps, label = \"Copy\", ...rest } = props;\n\treturn (\n\t\t<ChakraClipboard.Root ref={ref} {...rest}>\n\t\t\t<ChakraClipboard.Control>\n\t\t\t\t<ChakraClipboard.Input asChild>\n\t\t\t\t\t<Input readOnly {...inputProps} />\n\t\t\t\t</ChakraClipboard.Input>\n\t\t\t\t<ChakraClipboard.Trigger asChild>\n\t\t\t\t\t<IconButton variant=\"outline\" size=\"sm\" aria-label={label}>\n\t\t\t\t\t\t<ChakraClipboard.Indicator copied={<Check size={16} />}>\n\t\t\t\t\t\t\t<Clipboard size={16} />\n\t\t\t\t\t\t</ChakraClipboard.Indicator>\n\t\t\t\t\t</IconButton>\n\t\t\t\t</ChakraClipboard.Trigger>\n\t\t\t</ChakraClipboard.Control>\n\t\t</ChakraClipboard.Root>\n\t);\n};\nClipboardInput.displayName = \"ClipboardInput\";\n\nexport interface ClipboardLinkProps extends ChakraClipboard.RootProps {\n\t/** Label for the copy link button. @default \"Copy Link\" */\n\tlabel?: string;\n}\n\nexport const ClipboardLink = function ClipboardLink({\n\tref,\n\t...props\n}: ClipboardLinkProps & { ref?: React.Ref<HTMLDivElement> }) {\n\tconst { label = \"Copy Link\", ...rest } = props;\n\treturn (\n\t\t<ChakraClipboard.Root ref={ref} {...rest}>\n\t\t\t<ChakraClipboard.Trigger asChild>\n\t\t\t\t<IconButton variant=\"ghost\" size=\"xs\" aria-label={label}>\n\t\t\t\t\t<ChakraClipboard.Indicator copied={<Check size={14} />}>\n\t\t\t\t\t\t<Link size={14} />\n\t\t\t\t\t</ChakraClipboard.Indicator>\n\t\t\t\t</IconButton>\n\t\t\t</ChakraClipboard.Trigger>\n\t\t</ChakraClipboard.Root>\n\t);\n};\nClipboardLink.displayName = \"ClipboardLink\";\n","import { Box, Flex, HStack, Stack } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { TextInput } from \"../text-input\";\n\nconst DEFAULT_PRESETS = [\n\t\"#3b82f6\",\n\t\"#10b981\",\n\t\"#f59e0b\",\n\t\"#ef4444\",\n\t\"#8b5cf6\",\n\t\"#ec4899\",\n\t\"#14b8a6\",\n\t\"#6b7280\",\n];\n\nexport interface ColorSwatchPickerProps {\n\tvalue?: string;\n\tonChange: (color: string) => void;\n\tpresets?: string[];\n\tshowHexInput?: boolean;\n\tshowPreview?: boolean;\n\tsize?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst SWATCH_SIZES = { sm: 4, md: 5, lg: 7 } as const;\n\nexport const ColorSwatchPicker: React.FC<ColorSwatchPickerProps> = ({\n\tvalue,\n\tonChange,\n\tpresets = DEFAULT_PRESETS,\n\tshowHexInput = false,\n\tshowPreview = false,\n\tsize = \"md\",\n}) => {\n\tconst [hexInput, setHexInput] = useState(value ?? \"\");\n\n\tuseEffect(() => {\n\t\tsetHexInput(value ?? \"\");\n\t}, [value]);\n\n\tconst swatchSize = SWATCH_SIZES[size];\n\n\tconst handleHexSubmit = () => {\n\t\tconst trimmed = hexInput.trim();\n\t\tif (/^#[0-9a-fA-F]{6}$/.test(trimmed)) {\n\t\t\tonChange(trimmed);\n\t\t}\n\t};\n\n\treturn (\n\t\t<Stack gap={3}>\n\t\t\t<Flex wrap=\"wrap\" gap={2}>\n\t\t\t\t{presets.map((color) => (\n\t\t\t\t\t<Box\n\t\t\t\t\t\tkey={color}\n\t\t\t\t\t\tw={swatchSize}\n\t\t\t\t\t\th={swatchSize}\n\t\t\t\t\t\trounded=\"sm\"\n\t\t\t\t\t\tbg={color}\n\t\t\t\t\t\tcursor=\"pointer\"\n\t\t\t\t\t\tborderWidth=\"2px\"\n\t\t\t\t\t\tborderColor={value === color ? \"border.emphasized\" : \"transparent\"}\n\t\t\t\t\t\tonClick={() => onChange(color)}\n\t\t\t\t\t\t_hover={{ transform: \"scale(1.1)\" }}\n\t\t\t\t\t\ttransition=\"transform 0.1s\"\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</Flex>\n\t\t\t{(showHexInput || showPreview) && (\n\t\t\t\t<HStack gap={2}>\n\t\t\t\t\t{showPreview && (\n\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\tw={9}\n\t\t\t\t\t\t\th={9}\n\t\t\t\t\t\t\trounded=\"md\"\n\t\t\t\t\t\t\tbg={value || \"transparent\"}\n\t\t\t\t\t\t\tborderWidth=\"1px\"\n\t\t\t\t\t\t\tborderColor=\"border\"\n\t\t\t\t\t\t\tflexShrink={0}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{showHexInput && (\n\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\tvalue={hexInput}\n\t\t\t\t\t\t\tonChange={(e) => setHexInput(e.target.value)}\n\t\t\t\t\t\t\tonBlur={handleHexSubmit}\n\t\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\t\tif (e.key === \"Enter\") handleHexSubmit();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tplaceholder=\"#000000\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tmaxW=\"120px\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</HStack>\n\t\t\t)}\n\t\t</Stack>\n\t);\n};\nColorSwatchPicker.displayName = \"ColorSwatchPicker\";\n","import dayjs from \"dayjs\";\nimport utcPlugin from \"dayjs/plugin/utc.js\";\n\ndayjs.extend(utcPlugin);\n\nimport type { DateFormat, DateType } from \"../types\";\n\n/**\n * A function that will return a formatted date string. The format will depend on the option\n * passed in the second argument.\n * By default, it will return a string with \"full\" format (e.g. Tue, 17 Aug 2021 at 3:45 PM)\n *\n * @param date - the date to be formatted\n * @param format - the desired format (\"full\", \"day\", \"weekday\", or \"time\")\n * @returns a formatted date\n *\n * @example\n * formatDateAndTime('2021-08-17T15:45:00') // returns \"Tue, 17 Aug 2021 at 3:45 PM\"\n *\n * @example\n * formatDateAndTime('2021-08-17T15:45:00', 'day') // returns \"17 Aug 2021\"\n */\nexport function formatDateAndTime(\n\tdate: DateType,\n\tformat: DateFormat = \"full\",\n): string {\n\tlet template: string;\n\n\tswitch (format) {\n\t\tcase \"day\":\n\t\t\ttemplate = \"DD MMM YYYY\"; // 17 Aug 2021\n\t\t\tbreak;\n\t\tcase \"weekday\":\n\t\t\ttemplate = \"ddd, DD MMM\"; // Tue, 17 Aug\n\t\t\tbreak;\n\t\tcase \"time\":\n\t\t\ttemplate = \"h:mm A\"; // 3:45 PM\n\t\t\tbreak;\n\t\tcase \"fullWithSeconds\":\n\t\t\ttemplate = \"ddd, DD MMM YYYY [at] h:mm:ss A\"; // Tue, 17 Aug 2021 at 3:45:67 PM\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ttemplate = \"ddd, DD MMM YYYY [at] h:mm A\"; // Tue, 17 Aug 2021 at 3:45 PM\n\t}\n\n\treturn dayjs(date).format(template);\n}\n\n/**\n * A function that will return a machine-readable date string that should be passed to the `datetime` attribute of a `<time>` tag\n * By default, it will return a string with \"YYYY-MM-DDTHH:mm:ss.SSS[Z]\" format\n *\n * @param date - the date to be formatted\n * @param format - the desired format (\"full\", \"day\", \"weekday\", or \"time\")\n * @returns a formatted date\n *\n * @example\n * formatMachineReadableDateTime(date) // returns 2019-08-13T10:00:00.000Z\n *\n * @example\n * formatMachineReadableDateTime(date, 'day') // returns 2019-08-13\n */\nexport function formatMachineReadableDateTime(\n\tdate: DateType,\n\tformat: DateFormat = \"full\",\n): string {\n\tlet template: string;\n\n\tswitch (format) {\n\t\tcase \"day\":\n\t\t\ttemplate = \"YYYY-MM-DD\"; // 2019-08-24\n\t\t\tbreak;\n\t\tcase \"weekday\":\n\t\t\ttemplate = \"MM-DD\"; // 08-24\n\t\t\tbreak;\n\t\tcase \"time\":\n\t\t\ttemplate = \"HH:mm:ss.SSS\"; // 15:44:07.000\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ttemplate = \"YYYY-MM-DDTHH:mm:ss.SSS[Z]\"; // 2019-08-24T15:44:07.000Z\n\t}\n\n\treturn dayjs(date).utc().format(template);\n}\n\n/**\n * @example\n * > formatDate(date)\n * 13 Aug 2019\n */\nexport const formatDate = (date: DateType): string => {\n\treturn formatDateAndTime(date, \"day\");\n};\n\n/**\n * @example\n * > formatTime(date)\n * 8:00 AM\n */\nexport const formatTime = (date: DateType): string => {\n\treturn formatDateAndTime(date, \"time\");\n};\n\n/**\n * @example\n * > formatWeekdayDate(date)\n * Mon, 12 Aug\n */\nexport const formatWeekdayDate = (date: DateType): string => {\n\treturn formatDateAndTime(date, \"weekday\");\n};\n","import dayjs from \"dayjs\";\nimport calendarPlugin from \"dayjs/plugin/calendar.js\";\nimport relativeTime from \"dayjs/plugin/relativeTime.js\";\nimport utcPlugin from \"dayjs/plugin/utc.js\";\nimport type React from \"react\";\nimport type { DateType } from \"./types\";\nimport { formatMachineReadableDateTime } from \"./utils/format-date-time-utils\";\nimport {\n\tformatRelativeDateTime,\n\tformatRelativeToCurrentWeekDateTime,\n} from \"./utils/relative-date-time-utils\";\n\ndayjs.extend(utcPlugin);\ndayjs.extend(relativeTime);\ndayjs.extend(calendarPlugin);\n\nexport interface RelativeDateTimeProps {\n\t/**\n\t * The date that will be displayed. It accepts a JS Date, an ISO8601 Timestamp string, or Unix Epoch Milliseconds number\n\t */\n\tdate: DateType;\n\t/**\n\t * If a value is passed to baseDate, then the component will compare both dates and return the time between them.\n\t * If no value is passed then the date will be compared to \"now\"\n\t *\n\t * @default \"Now\"\n\t */\n\tbaseDate?: DateType;\n\t/**\n\t * Sets the date to be relative only if it is in the current week\n\t * @default false\n\t */\n\tisRelativeToCurrentWeek?: boolean;\n}\n\nexport const RelativeDateTime: React.FC<RelativeDateTimeProps> = (props) => {\n\tconst { date, baseDate, isRelativeToCurrentWeek, ...otherProps } = props;\n\n\tconst now = new Date();\n\tconst referenceDate = baseDate ?? now;\n\tconst dayjsDate = dayjs(date);\n\tconst machineReadableDate = formatMachineReadableDateTime(date);\n\n\tlet relativeDate: string;\n\n\tif (isRelativeToCurrentWeek && !dayjsDate.isSame(referenceDate, \"day\")) {\n\t\trelativeDate = formatRelativeToCurrentWeekDateTime(date, referenceDate);\n\t} else {\n\t\trelativeDate = formatRelativeDateTime(date, referenceDate);\n\t}\n\n\treturn (\n\t\t<time dateTime={machineReadableDate} {...otherProps}>\n\t\t\t{relativeDate}\n\t\t</time>\n\t);\n};\nRelativeDateTime.displayName = \"RelativeDateTime\";\n","import { chakra, HStack, Stack } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { Prose } from \"../../primitives/prose\";\nimport { Button, type ButtonProps } from \"../button\";\nimport { RelativeDateTime } from \"../datetime/relative-datetime\";\nimport type {\n\tCommentFooterProps,\n\tCommentHeaderProps,\n\tCommentProps,\n} from \"./types\";\n\ntype CommentStyles = Record<string, React.CSSProperties | object>;\n\nconst CommentStylesContext = createContext<CommentStyles>({});\nconst useStyles = () => useContext(CommentStylesContext);\n\nexport const Comment: React.FC<CommentProps> = (props) => {\n\tconst {\n\t\tavatar,\n\t\tcontent,\n\t\tchildren,\n\t\tauthor,\n\t\tcommentedAt,\n\t\tactions,\n\t\tid,\n\t\tisDeleted,\n\t\tdeletedLabel = \"This comment has been deleted\",\n\t\t...rest\n\t} = props;\n\n\tconst styles: CommentStyles = {};\n\n\tconst headerProps = {\n\t\tauthor,\n\t\tcommentedAt,\n\t};\n\n\tconst footerProps = {\n\t\tactions,\n\t};\n\n\treturn (\n\t\t<chakra.div css={styles.container} data-id={id} {...rest}>\n\t\t\t<CommentStylesContext.Provider value={styles}>\n\t\t\t\t{avatar && <AvatarSlot>{avatar}</AvatarSlot>}\n\t\t\t\t{(content || isDeleted) && (\n\t\t\t\t\t<ContentContainer>\n\t\t\t\t\t\t<Stack gap={3}>\n\t\t\t\t\t\t\t<Stack gap={2}>\n\t\t\t\t\t\t\t\t<CommentHeader {...headerProps} />\n\t\t\t\t\t\t\t\t<Prose\n\t\t\t\t\t\t\t\t\tcss={{\n\t\t\t\t\t\t\t\t\t\t\"& p\": {\n\t\t\t\t\t\t\t\t\t\t\tfontSize: \"inherit!important\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"& *:first-child\": {\n\t\t\t\t\t\t\t\t\t\t\tmarginTop: 0,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"& *:last-child\": {\n\t\t\t\t\t\t\t\t\t\t\tmarginBottom: 0,\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>\n\t\t\t\t\t\t\t\t\t{isDeleted ? (\n\t\t\t\t\t\t\t\t\t\t<chakra.span css={styles.deletedText}>\n\t\t\t\t\t\t\t\t\t\t\t{deletedLabel}\n\t\t\t\t\t\t\t\t\t\t</chakra.span>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tcontent\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Prose>\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t<CommentFooter {...footerProps} />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</ContentContainer>\n\t\t\t\t)}\n\t\t\t\t{children && (\n\t\t\t\t\t<Stack gap={4} css={styles.children}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</CommentStylesContext.Provider>\n\t\t</chakra.div>\n\t);\n};\n\nComment.displayName = \"Comment\";\n\nconst AvatarSlot: React.FC<{\n\tchildren: React.ReactNode;\n}> = ({ children }) => {\n\tconst styles = useStyles();\n\n\treturn <chakra.div css={styles.avatar}>{children}</chakra.div>;\n};\n\nconst ContentContainer = ({ children }: { children: React.ReactNode }) => {\n\tconst styles = useStyles();\n\n\treturn <chakra.div css={styles.contentContainer}>{children}</chakra.div>;\n};\n\nconst CommentHeader: React.FC<CommentHeaderProps> = (props) => {\n\tconst { author, commentedAt } = props;\n\n\tconst shouldRender = !!author || !!commentedAt;\n\n\treturn shouldRender ? (\n\t\t<HStack>\n\t\t\t{author && <Author>{author.name}</Author>}\n\t\t\t{commentedAt && <RelativeDateTime date={commentedAt} />}\n\t\t</HStack>\n\t) : null;\n};\n\nconst Author: React.FC<{\n\tchildren: React.ReactNode;\n}> = (props) => {\n\tconst { children } = props;\n\tconst styles = useStyles();\n\n\treturn <chakra.span css={styles.field}>{children}</chakra.span>;\n};\n\nconst CommentFooter: React.FC<CommentFooterProps> = (props) => {\n\tconst { actions } = props;\n\treturn (\n\t\t<HStack alignItems=\"center\" gap={4} flexWrap=\"wrap\">\n\t\t\t{actions?.map((item, key) => Object.assign({}, item, { key }))}\n\t\t</HStack>\n\t);\n};\n\nexport interface CommentActionProps extends ButtonProps {\n\tchildren: React.ReactNode;\n}\n\nexport const CommentAction: React.FC<CommentActionProps> = (props) => {\n\treturn <Button variant=\"outline\" size=\"xs\" {...props} />;\n};\nCommentAction.displayName = \"CommentAction\";\n","import { Box, Button, ButtonGroup, Flex, Textarea } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { useRef, useState } from \"react\";\n\nexport interface CommentReplyBoxProps {\n\tonReply: (value: string) => Promise<void>;\n\tonCancel?: () => void;\n\t/** Placeholder text for the reply textarea */\n\tplaceholder?: string;\n\t/** Label for the cancel button */\n\tcancelLabel?: string;\n\t/** Label for the reply/submit button */\n\treplyLabel?: string;\n}\n\nexport const CommentReplyBox = ({\n\tref,\n\t...props\n}: CommentReplyBoxProps & { ref?: React.Ref<HTMLTextAreaElement> }) => {\n\tconst {\n\t\tonReply,\n\t\tonCancel,\n\t\tplaceholder = \"Write a reply...\",\n\t\tcancelLabel = \"Cancel\",\n\t\treplyLabel = \"Reply\",\n\t} = props;\n\n\tconst textBoxRef = useRef<HTMLTextAreaElement>(null);\n\n\tconst mergedRef = (node: HTMLTextAreaElement | null) => {\n\t\t(textBoxRef as React.MutableRefObject<HTMLTextAreaElement | null>).current =\n\t\t\tnode;\n\t\tif (typeof ref === \"function\") {\n\t\t\tref(node);\n\t\t} else if (ref) {\n\t\t\t(ref as React.MutableRefObject<HTMLTextAreaElement | null>).current =\n\t\t\t\tnode;\n\t\t}\n\t};\n\n\tconst [isFocused, setIsFocused] = useState<boolean>(false);\n\tconst [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\tconst [value, setValue] = useState<string>(\"\");\n\n\tconst handleReply = async (e: React.FormEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (!value || !value.trim() || value === \"\") {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tsetIsSubmitting(true);\n\t\t\tawait onReply?.(value);\n\t\t\tsetValue(\"\");\n\t\t\tsetIsFocused(false);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t}\n\n\t\tsetIsSubmitting(false);\n\t};\n\n\tconst handleCancel = () => {\n\t\tsetValue(\"\");\n\t\tsetIsFocused(false);\n\t\tonCancel?.();\n\t};\n\n\treturn (\n\t\t<Box w=\"full\" onFocus={() => setIsFocused(true)}>\n\t\t\t<form onSubmit={handleReply}>\n\t\t\t\t<Textarea\n\t\t\t\t\tvalue={String(value)}\n\t\t\t\t\tonChange={(e) => setValue(e.target.value)}\n\t\t\t\t\tminH={isFocused ? undefined : \"2.5rem\"}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tref={mergedRef}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t// modifier + enter\n\t\t\t\t\t\tif ((e.ctrlKey || e.metaKey) && e.key === \"Enter\") {\n\t\t\t\t\t\t\thandleReply(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tdisabled={isSubmitting}\n\t\t\t\t/>\n\n\t\t\t\t<Flex\n\t\t\t\t\tmt={2}\n\t\t\t\t\tdisplay={isFocused ? \"flex\" : \"none\"}\n\t\t\t\t\tjustifyContent=\"flex-end\"\n\t\t\t\t>\n\t\t\t\t\t<ButtonGroup marginInlineStart=\"auto\" size=\"sm\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\tloading={isSubmitting}\n\t\t\t\t\t\t\tonClick={handleCancel}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{cancelLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button type=\"submit\" variant=\"solid\" loading={isSubmitting}>\n\t\t\t\t\t\t\t{replyLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</ButtonGroup>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Box>\n\t);\n};\nCommentReplyBox.displayName = \"CommentReplyBox\";\n","import { DataList as ChakraDataList } from \"@chakra-ui/react\";\nimport type * as React from \"react\";\n\nexport interface DataListItemType {\n\tlabel: React.ReactNode;\n\tvalue: React.ReactNode;\n}\n\nexport interface DataListProps extends ChakraDataList.RootProps {\n\t/** Items to render as label-value pairs. If provided, renders automatically. */\n\titems?: DataListItemType[];\n}\n\nexport const DataList = function DataList({\n\tref,\n\t...props\n}: DataListProps & { ref?: React.Ref<HTMLDListElement> }) {\n\tconst { items, children, ...rest } = props;\n\treturn (\n\t\t<ChakraDataList.Root ref={ref} {...rest}>\n\t\t\t{items\n\t\t\t\t? items.map((item) => (\n\t\t\t\t\t\t<ChakraDataList.Item key={String(item.label)}>\n\t\t\t\t\t\t\t<ChakraDataList.ItemLabel>{item.label}</ChakraDataList.ItemLabel>\n\t\t\t\t\t\t\t<ChakraDataList.ItemValue>{item.value}</ChakraDataList.ItemValue>\n\t\t\t\t\t\t</ChakraDataList.Item>\n\t\t\t\t\t))\n\t\t\t\t: children}\n\t\t</ChakraDataList.Root>\n\t);\n};\nDataList.displayName = \"DataList\";\n\n// Pass-through exports for manual composition\nexport const DataListItem = ChakraDataList.Item;\nDataListItem.displayName = \"DataListItem\";\n\nexport const DataListItemLabel = ChakraDataList.ItemLabel;\nDataListItemLabel.displayName = \"DataListItemLabel\";\n\nexport const DataListItemValue = ChakraDataList.ItemValue;\nDataListItemValue.displayName = \"DataListItemValue\";\n\nexport type DataListRootProps = ChakraDataList.RootProps;\n","import { Input, type InputProps } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface DateInputProps\n\textends Omit<InputProps, \"type\" | \"value\" | \"onChange\"> {\n\t/** The date value as an ISO date string (YYYY-MM-DD) or ISO datetime string */\n\tvalue?: string;\n\t/** Called when the date value changes */\n\tonChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n\t/** Minimum date in YYYY-MM-DD format */\n\tminDate?: string;\n\t/** Maximum date in YYYY-MM-DD format */\n\tmaxDate?: string;\n}\n\nconst datePattern = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n/**\n * Extracts a YYYY-MM-DD date string from various input formats.\n */\nfunction toDateString(value: string): string {\n\tif (!value) return \"\";\n\tif (datePattern.test(value)) return value;\n\t// Try to parse ISO datetime strings\n\ttry {\n\t\tconst date = new Date(value);\n\t\tif (Number.isNaN(date.getTime())) return \"\";\n\t\treturn date.toISOString().slice(0, 10);\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n\nconst DateInput = ({\n\tref,\n\t...props\n}: DateInputProps & { ref?: React.Ref<HTMLInputElement> }) => {\n\tconst { value, minDate, maxDate, onChange, ...rest } = props;\n\n\tconst dateValue = value ? toDateString(value) : \"\";\n\n\treturn (\n\t\t<Input\n\t\t\ttype=\"date\"\n\t\t\tvalue={dateValue}\n\t\t\tmin={minDate}\n\t\t\tmax={maxDate}\n\t\t\tonChange={onChange}\n\t\t\tref={ref}\n\t\t\t{...rest}\n\t\t/>\n\t);\n};\nDateInput.displayName = \"DateInput\";\n\nexport default DateInput;\n","import { Heading, Stack, Text } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface EmptyStateProps {\n\t/** Main heading text. */\n\theader: string;\n\t/** Description text or rich content. */\n\tdescription?: React.ReactNode;\n\t/** Optional icon displayed above the heading. */\n\ticon?: React.ReactNode;\n\t/** Optional action buttons below the description. */\n\tactions?: React.ReactNode;\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = (props) => {\n\tconst { header, description, icon, actions } = props;\n\n\treturn (\n\t\t<Stack\n\t\t\tjustifyContent=\"center\"\n\t\t\talignItems=\"center\"\n\t\t\ttextAlign=\"center\"\n\t\t\tgap={4}\n\t\t\tp={16}\n\t\t\tborderRadius=\"lg\"\n\t\t>\n\t\t\t{icon}\n\t\t\t<Heading size=\"lg\">{header}</Heading>\n\t\t\t{description && (\n\t\t\t\t<Text color=\"muted\" fontSize=\"sm\">\n\t\t\t\t\t{description}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{actions && (\n\t\t\t\t<Stack pt={4} gap={2}>\n\t\t\t\t\t{actions}\n\t\t\t\t</Stack>\n\t\t\t)}\n\t\t</Stack>\n\t);\n};\n\nEmptyState.displayName = \"EmptyState\";\n","import { chakra, type HTMLChakraProps } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { Avatar, type AvatarProps } from \"../../primitives/avatar\";\n\nexport interface PersonaProps {\n\t/**\n\t * The name of the person in the avatar.\n\t *\n\t * - if `src` has loaded, the name will be used as the `alt` attribute of the `img`\n\t * - If `src` is not loaded, the name will be used to create the initials\n\t */\n\tname?: string;\n\n\t/**\n\t * Primary label of the persona, defaults to the name\n\t */\n\tlabel?: React.ReactNode;\n\t/**\n\t * Hide the persona details next to the avatar.\n\t */\n\thideDetails?: boolean;\n\t/**\n\t * The size of the persona, from 2xs to 2xl.\n\t */\n\tsize?: \"2xs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\t/**\n\t * When true, adds hover styling and pointer cursor for clickable personas.\n\t */\n\tinteractive?: boolean;\n}\n\ninterface PersonaStyles {\n\tcontainer?: React.CSSProperties;\n\tdetails?: React.CSSProperties;\n\tlabel?: React.CSSProperties;\n}\n\nconst PersonaStylesContext = createContext<PersonaStyles>({});\nconst usePersonaStyles = () => useContext(PersonaStylesContext);\n\nexport const Persona: React.FC<PersonaProps> = (props) => {\n\tconst { name, size = \"sm\", hideDetails, label, interactive } = props;\n\n\treturn (\n\t\t<PersonaContainer interactive={interactive}>\n\t\t\t<PersonaAvatar name={name} size={size} />\n\t\t\t{!hideDetails && (\n\t\t\t\t<PersonaDetails>\n\t\t\t\t\t<PersonaLabel>{label || name}</PersonaLabel>\n\t\t\t\t</PersonaDetails>\n\t\t\t)}\n\t\t</PersonaContainer>\n\t);\n};\n\nPersona.displayName = \"Persona\";\n\nexport interface PersonaContainerProps extends HTMLChakraProps<\"div\"> {\n\tchildren: React.ReactNode;\n\t/**\n\t * Optional style overrides passed down to child components via context.\n\t */\n\tstyles?: PersonaStyles;\n\t/**\n\t * When true, adds hover styling and pointer cursor for clickable personas.\n\t */\n\tinteractive?: boolean;\n}\n\nexport const PersonaContainer = ({\n\tref,\n\t...props\n}: PersonaContainerProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst { children, styles = {}, interactive, ...rest } = props;\n\n\treturn (\n\t\t<PersonaStylesContext.Provider value={styles}>\n\t\t\t<chakra.div\n\t\t\t\tref={ref}\n\t\t\t\tdisplay=\"flex\"\n\t\t\t\tflexDirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\t{...(interactive && {\n\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\tborderRadius: \"md\",\n\t\t\t\t\ttransition: \"background-color 150ms\",\n\t\t\t\t\t_hover: { bg: \"bg-subtle\" },\n\t\t\t\t\tpx: 2,\n\t\t\t\t\tpy: 1,\n\t\t\t\t})}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</chakra.div>\n\t\t</PersonaStylesContext.Provider>\n\t);\n};\n\ninterface PersonaAvatarOptions extends Pick<PersonaProps, \"name\" | \"size\"> {}\n\ninterface PersonaAvatarProps\n\textends PersonaAvatarOptions,\n\t\tOmit<AvatarProps, \"size\"> {}\n\nexport const PersonaAvatar = ({\n\tref,\n\t...props\n}: PersonaAvatarProps & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst { name, size, ...rest } = props;\n\n\treturn <Avatar ref={ref} name={name} size={size} {...rest} />;\n};\nPersonaAvatar.displayName = \"PersonaAvatar\";\n\nexport const PersonaDetails = ({\n\tref,\n\t...props\n}: HTMLChakraProps<\"div\"> & { ref?: React.Ref<HTMLDivElement> }) => {\n\tconst { children, ...rest } = props;\n\tconst styles = usePersonaStyles();\n\n\treturn (\n\t\t<chakra.div\n\t\t\tref={ref}\n\t\t\tdisplay=\"flex\"\n\t\t\tflexDirection=\"column\"\n\t\t\tstyle={styles.details}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</chakra.div>\n\t);\n};\nPersonaDetails.displayName = \"PersonaDetails\";\n\nexport const PersonaLabel = ({\n\tref,\n\t...props\n}: HTMLChakraProps<\"span\"> & { ref?: React.Ref<HTMLSpanElement> }) => {\n\tconst styles = usePersonaStyles();\n\n\treturn <chakra.span ref={ref} style={styles.label} {...props} />;\n};\nPersonaLabel.displayName = \"PersonaLabel\";\n","import { Circle, HStack, Text } from \"@chakra-ui/react\";\nimport {\n\ttype ActionMeta,\n\tchakraComponents,\n\ttype GroupBase,\n\ttype MultiValue,\n\ttype MultiValueProps,\n\ttype OptionProps,\n\ttype Props,\n\tSelect,\n\ttype SelectInstance,\n\ttype SingleValue,\n\ttype SingleValueProps,\n} from \"chakra-react-select\";\nimport type React from \"react\";\nimport { Avatar } from \"../../primitives/avatar\";\nimport type { BaseOption } from \"./types\";\n\nexport interface BaseSelectProps<T extends BaseOption>\n\textends Omit<\n\t\tProps<T, boolean, GroupBase<T>>,\n\t\t\"value\" | \"onChange\" | \"isLoading\" | \"isDisabled\"\n\t> {\n\tvalue: T | T[] | null;\n\tonChange?: (\n\t\tnewValue: MultiValue<T> | SingleValue<T>,\n\t\tactionMeta: ActionMeta<T>,\n\t) => void;\n\tloading?: boolean;\n\tdisabled?: boolean;\n}\n\nconst BaseSingleValue = <T extends BaseOption>({\n\tdata,\n\t...props\n}: SingleValueProps<T, boolean, GroupBase<T>>) => {\n\treturn (\n\t\t<chakraComponents.SingleValue data={data} {...props}>\n\t\t\t<HStack gap={2}>\n\t\t\t\t{data.avatar && <Avatar name={data.avatar} size=\"xs\" />}\n\t\t\t\t{data.color && <Circle bg={data.color} size={5} />}\n\t\t\t\t{data.icon && data.icon}\n\t\t\t\t<Text>{data.label}</Text>\n\t\t\t</HStack>\n\t\t</chakraComponents.SingleValue>\n\t);\n};\n\nconst BaseMultiValue = <T extends BaseOption>({\n\tchildren,\n\t...props\n}: MultiValueProps<T, boolean, GroupBase<T>>) => {\n\tconst { data } = props;\n\n\treturn (\n\t\t// @ts-expect-error -- strict mode: duplicate property\n\t\t<chakraComponents.MultiValue data={data} {...props}>\n\t\t\t<HStack gap={2}>\n\t\t\t\t{data.avatar && <Avatar name={data.avatar} size=\"xs\" />}\n\t\t\t\t{data.color && <Circle bg={data.color} size={5} />}\n\t\t\t\t{data.icon && data.icon}\n\t\t\t\t<Text>{data.label}</Text>\n\t\t\t</HStack>\n\t\t</chakraComponents.MultiValue>\n\t);\n};\n\nconst BaseSelectOption = <T extends BaseOption>({\n\tdata,\n\t...props\n}: OptionProps<T, boolean, GroupBase<T>>) => {\n\treturn (\n\t\t<chakraComponents.Option data={data} {...props}>\n\t\t\t<HStack gap={2}>\n\t\t\t\t{data.avatar && <Avatar name={data.avatar} size=\"xs\" />}\n\t\t\t\t{data.color && <Circle bg={data.color} size={5} />}\n\t\t\t\t{data.icon && data.icon}\n\t\t\t\t<Text>{data.label}</Text>\n\t\t\t</HStack>\n\t\t</chakraComponents.Option>\n\t);\n};\n\nconst getSelectComponents = (\n\tvariant?: string,\n\tcustomComponents?: Record<string, React.ComponentType<unknown>>,\n) => ({\n\t...(variant === \"link\"\n\t\t? {\n\t\t\t\tDropdownIndicator: null,\n\t\t\t\tIndicatorSeparator: null,\n\t\t\t}\n\t\t: {}),\n\tSingleValue: BaseSingleValue,\n\tMultiValue: BaseMultiValue,\n\tOption: BaseSelectOption,\n\t...customComponents,\n});\n\nexport const BaseSelect = <T extends BaseOption>({\n\tref,\n\tvalue,\n\tonChange,\n\toptions,\n\tisMulti = false,\n\tloading = false,\n\tdisabled = false,\n\tisClearable = true,\n\tplaceholder,\n\tmenuPortalTarget = document.body,\n\tvariant = \"outline\",\n\tstyles,\n\t...restSelectProps\n}: BaseSelectProps<T> & {\n\tref?: React.Ref<SelectInstance<T, boolean, GroupBase<T>>>;\n}) => {\n\treturn (\n\t\t<Select<T, boolean, GroupBase<T>>\n\t\t\t{...restSelectProps}\n\t\t\tref={ref}\n\t\t\tvalue={value}\n\t\t\tvariant={variant}\n\t\t\tonChange={onChange}\n\t\t\toptions={options}\n\t\t\tisMulti={isMulti}\n\t\t\tisLoading={loading}\n\t\t\tisDisabled={disabled}\n\t\t\tisClearable={isClearable}\n\t\t\tplaceholder={placeholder}\n\t\t\tmenuPortalTarget={menuPortalTarget}\n\t\t\tstyles={{\n\t\t\t\tmenuPortal: (provided) => ({\n\t\t\t\t\t...provided,\n\t\t\t\t\tzIndex: 1800,\n\t\t\t\t\tpointerEvents: \"auto\" as const,\n\t\t\t\t}),\n\t\t\t\t...styles,\n\t\t\t}}\n\t\t\tgetOptionValue={(option) => option.id}\n\t\t\tgetOptionLabel={(option) => option.label}\n\t\t\tcomponents={getSelectComponents(\n\t\t\t\tvariant as string,\n\t\t\t\t// @ts-expect-error -- strict mode: argument type\n\t\t\t\trestSelectProps.components,\n\t\t\t)}\n\t\t/>\n\t);\n};\n(BaseSelect as { displayName?: string }).displayName = \"BaseSelect\";\n","import { Box, Table } from \"@chakra-ui/react\";\nimport {\n\tchakraComponents,\n\ttype GroupBase,\n\ttype MenuListProps,\n\ttype OptionProps,\n} from \"chakra-react-select\";\nimport type React from \"react\";\nimport { useMemo } from \"react\";\nimport type { BaseOption } from \"./types\";\n\nexport interface TableMenuColumn {\n\tkey: string;\n\theader: string;\n\twidth?: string;\n}\n\nexport interface TableMenuListProps<T extends BaseOption>\n\textends MenuListProps<T, boolean, GroupBase<T>> {\n\tcolumns?: TableMenuColumn[];\n\t/** Minimum width of the table menu. Defaults to \"400px\" */\n\tminWidth?: string;\n\t/** Maximum width of the table menu. Defaults to \"600px\" */\n\tmaxWidth?: string;\n}\n\n/**\n * A custom MenuList component that renders options as table rows.\n *\n * Use with BaseSelect by passing it via the `components` prop:\n * ```tsx\n * <BaseSelect\n * components={{\n * MenuList: (props) => (\n * <TableMenuList\n * {...props}\n * columns={[\n * { key: \"label\", header: \"Name\" },\n * { key: \"valid_from\", header: \"Valid From\" },\n * ]}\n * />\n * ),\n * Option: TableOption,\n * }}\n * />\n * ```\n */\nexport const TableMenuList = <T extends BaseOption>({\n\tchildren,\n\tcolumns,\n\tminWidth = \"400px\",\n\tmaxWidth = \"600px\",\n\t...props\n}: TableMenuListProps<T>) => {\n\tconst { options } = props;\n\n\t// If no columns specified, derive from first option's data keys\n\tconst derivedColumns = useMemo<TableMenuColumn[]>(() => {\n\t\tif (columns) return columns;\n\n\t\tconst firstOption = options?.[0] as T | undefined;\n\t\tif (!firstOption?.data) {\n\t\t\treturn [{ key: \"label\", header: \"Name\" }];\n\t\t}\n\n\t\treturn [\n\t\t\t{ key: \"label\", header: \"Name\" },\n\t\t\t...Object.keys(firstOption.data).map((key) => ({\n\t\t\t\tkey,\n\t\t\t\theader: key.charAt(0).toUpperCase() + key.slice(1).replace(/_/g, \" \"),\n\t\t\t})),\n\t\t];\n\t}, [columns, options]);\n\n\treturn (\n\t\t<chakraComponents.MenuList {...props}>\n\t\t\t<Box\n\t\t\t\toverflowX=\"auto\"\n\t\t\t\tminWidth={minWidth}\n\t\t\t\tmaxWidth={maxWidth}\n\t\t\t\twidth=\"max-content\"\n\t\t\t>\n\t\t\t\t<Table.Root size=\"sm\">\n\t\t\t\t\t<Table.Header>\n\t\t\t\t\t\t<Table.Row>\n\t\t\t\t\t\t\t{derivedColumns.map((col) => (\n\t\t\t\t\t\t\t\t<Table.ColumnHeader\n\t\t\t\t\t\t\t\t\tkey={col.key}\n\t\t\t\t\t\t\t\t\twidth={col.width}\n\t\t\t\t\t\t\t\t\twhiteSpace=\"nowrap\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{col.header}\n\t\t\t\t\t\t\t\t</Table.ColumnHeader>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</Table.Row>\n\t\t\t\t\t</Table.Header>\n\t\t\t\t\t<Table.Body>{children}</Table.Body>\n\t\t\t\t</Table.Root>\n\t\t\t</Box>\n\t\t</chakraComponents.MenuList>\n\t);\n};\n(TableMenuList as { displayName?: string }).displayName = \"TableMenuList\";\n\n/**\n * A custom Option component that renders as a table row.\n * Use together with TableMenuList.\n */\nexport const TableOption = <T extends BaseOption>({\n\tdata,\n\tinnerProps,\n\tisSelected,\n\tisFocused,\n\tcolumns,\n}: OptionProps<T, boolean, GroupBase<T>> & { columns?: TableMenuColumn[] }) => {\n\t// Derive columns from data if not provided\n\tconst derivedColumns = useMemo<TableMenuColumn[]>(() => {\n\t\tif (columns) return columns;\n\n\t\tif (!data.data) {\n\t\t\treturn [{ key: \"label\", header: \"Name\" }];\n\t\t}\n\n\t\treturn [\n\t\t\t{ key: \"label\", header: \"Name\" },\n\t\t\t...Object.keys(data.data).map((key) => ({\n\t\t\t\tkey,\n\t\t\t\theader: key,\n\t\t\t})),\n\t\t];\n\t}, [columns, data.data]);\n\n\tconst getCellValue = (col: TableMenuColumn): React.ReactNode => {\n\t\tif (col.key === \"label\") {\n\t\t\treturn data.label;\n\t\t}\n\t\tif (col.key === \"id\") {\n\t\t\treturn data.id;\n\t\t}\n\t\tif (data.data && col.key in data.data) {\n\t\t\tconst value = data.data[col.key];\n\t\t\tif (value === null || value === undefined) return \"-\";\n\t\t\treturn String(value);\n\t\t}\n\t\treturn \"-\";\n\t};\n\n\t// Extract only the event handlers and data attributes from innerProps\n\t// The ref is incompatible with table rows, so we exclude it\n\tconst { ref: _ref, ...rowProps } = innerProps;\n\n\treturn (\n\t\t<Table.Row\n\t\t\t{...rowProps}\n\t\t\t_hover={{ bg: isFocused ? \"bg-muted\" : \"bg-subtle\" }}\n\t\t\tcursor=\"pointer\"\n\t\t\t_even={{\n\t\t\t\tbg: isSelected ? \"primary.subtle\" : isFocused ? \"bg-muted\" : undefined,\n\t\t\t}}\n\t\t>\n\t\t\t{derivedColumns.map((col) => (\n\t\t\t\t<Table.Cell key={col.key} width={col.width} whiteSpace=\"nowrap\">\n\t\t\t\t\t{getCellValue(col)}\n\t\t\t\t</Table.Cell>\n\t\t\t))}\n\t\t</Table.Row>\n\t);\n};\n(TableOption as { displayName?: string }).displayName = \"TableOption\";\n\nexport interface CreateTableMenuComponentsOptions {\n\tcolumns: TableMenuColumn[];\n\t/** Minimum width of the table menu. Defaults to \"400px\" */\n\tminWidth?: string;\n\t/** Maximum width of the table menu. Defaults to \"600px\" */\n\tmaxWidth?: string;\n}\n\n/**\n * Helper to create table menu components with predefined columns.\n *\n * Usage:\n * ```tsx\n * const { MenuList, Option } = createTableMenuComponents({\n * columns: [\n * { key: \"label\", header: \"Release\" },\n * { key: \"valid_from\", header: \"Valid From\" },\n * { key: \"valid_until\", header: \"Valid Until\" },\n * ],\n * minWidth: \"500px\",\n * maxWidth: \"800px\",\n * });\n *\n * <BaseSelect components={{ MenuList, Option }} />\n * ```\n */\nexport const createTableMenuComponents = <T extends BaseOption>(\n\toptions: CreateTableMenuComponentsOptions,\n) => ({\n\tMenuList: (props: MenuListProps<T, boolean, GroupBase<T>>) => (\n\t\t<TableMenuList\n\t\t\t{...props}\n\t\t\tcolumns={options.columns}\n\t\t\tminWidth={options.minWidth}\n\t\t\tmaxWidth={options.maxWidth}\n\t\t/>\n\t),\n\tOption: (props: OptionProps<T, boolean, GroupBase<T>>) => (\n\t\t<TableOption {...props} columns={options.columns} />\n\t),\n});\n","import { HStack } from \"@chakra-ui/react\";\nimport { ChevronDown, Plus } from \"lucide-react\";\nimport type React from \"react\";\nimport {\n\tMenuContent,\n\tMenuItem,\n\tMenuRoot,\n\tMenuTrigger,\n} from \"../../primitives/menu\";\nimport { Button, type ButtonProps } from \"../button\";\n\nexport interface SplitButtonMenuItem {\n\tlabel: string;\n\tonClick: () => void;\n\ticon?: React.ReactNode;\n\tcolor?: string;\n}\n\nexport interface SplitButtonProps extends ButtonProps {\n\tlabel: string;\n\tmenuItems?: SplitButtonMenuItem[];\n}\n\nexport const SplitButton: React.FC<SplitButtonProps> = (props) => {\n\tconst { label, menuItems, onClick, ...rest } = props;\n\tconst hasMenuItems = menuItems && menuItems.length > 0;\n\n\treturn (\n\t\t<HStack gap={0.5}>\n\t\t\t{onClick && (\n\t\t\t\t<Button\n\t\t\t\t\t{...rest}\n\t\t\t\t\tcolorPalette=\"blue\"\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\tborderEndRadius={hasMenuItems ? \"none\" : undefined}\n\t\t\t\t>\n\t\t\t\t\t<Plus size={16} />\n\t\t\t\t\t{label}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{hasMenuItems && (\n\t\t\t\t<MenuRoot>\n\t\t\t\t\t<MenuTrigger asChild>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\tcolorPalette=\"blue\"\n\t\t\t\t\t\t\tborderStartRadius={onClick ? \"none\" : undefined}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ChevronDown size={16} />\n\t\t\t\t\t\t\t{onClick ? null : label}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</MenuTrigger>\n\t\t\t\t\t<MenuContent>\n\t\t\t\t\t\t{menuItems.map((menuItem) => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tkey={menuItem.label}\n\t\t\t\t\t\t\t\tvalue={menuItem.label}\n\t\t\t\t\t\t\t\tonClick={menuItem.onClick}\n\t\t\t\t\t\t\t\tcolor={menuItem.color}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{menuItem.icon}\n\t\t\t\t\t\t\t\t{menuItem.label}\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</MenuContent>\n\t\t\t\t</MenuRoot>\n\t\t\t)}\n\t\t</HStack>\n\t);\n};\nSplitButton.displayName = \"SplitButton\";\n","import {\n\tBox,\n\ttype BoxProps,\n\tHeading,\n\tHStack,\n\tSquare,\n\tStack,\n\tText,\n} from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { Spinner } from \"../../primitives/spinner\";\n\nexport interface StatProps extends BoxProps {\n\t/** An icon element rendered as React node (e.g., a lucide-react icon) */\n\ticon?: React.ReactNode;\n\tlabel: string;\n\tvalue?: React.ReactNode;\n\tloading?: boolean;\n}\n\nexport const Stat: React.FC<StatProps> = (props) => {\n\tconst { label, value, icon, loading, ...boxProps } = props;\n\n\treturn (\n\t\t<Box\n\t\t\tpx={{ base: \"4\", md: \"6\" }}\n\t\t\tpy={{ base: \"5\", md: \"6\" }}\n\t\t\tbg=\"bg-surface\"\n\t\t\tborderRadius=\"lg\"\n\t\t\tboxShadow=\"sm\"\n\t\t\t{...boxProps}\n\t\t>\n\t\t\t<Stack gap={{ base: \"5\", md: \"6\" }}>\n\t\t\t\t<Stack direction=\"row\" justify=\"space-between\">\n\t\t\t\t\t<HStack gap=\"4\">\n\t\t\t\t\t\t{icon && (\n\t\t\t\t\t\t\t<Square size=\"8\" bg=\"bg-accent-subtle\" borderRadius=\"md\">\n\t\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t\t</Square>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text fontWeight=\"medium\">{label}</Text>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Stack>\n\t\t\t\t<Stack gap=\"4\">\n\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Heading size={{ base: \"sm\", md: \"md\" }}>{value ?? 0}</Heading>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</Box>\n\t);\n};\n\nStat.displayName = \"Stat\";\n","import { Text, type TextProps } from \"@chakra-ui/react\";\nimport { memo, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"../../primitives/tooltip\";\n\nexport interface TextOverflowProps extends TextProps {}\n\nexport const TextOverflow: React.FC<TextOverflowProps> = memo((props) => {\n\tconst { children, ...rest } = props;\n\tconst textElementRef = useRef<HTMLDivElement>(null);\n\tconst [isOverflown, setIsOverflown] = useState(false);\n\n\tconst compareSize = useCallback(() => {\n\t\tconst element = textElementRef.current;\n\n\t\tconst compare = element\n\t\t\t? element.scrollWidth > element.clientWidth ||\n\t\t\t\telement.offsetWidth < element.scrollWidth ||\n\t\t\t\telement.offsetHeight < element.scrollHeight\n\t\t\t: false;\n\n\t\tsetIsOverflown(compare);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tcompareSize();\n\t\tconst element = textElementRef.current;\n\t\tif (!element) return;\n\t\tconst observer = new ResizeObserver(compareSize);\n\t\tobserver.observe(element);\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [compareSize]);\n\n\treturn (\n\t\t<Tooltip content={children} disabled={!isOverflown}>\n\t\t\t<Text\n\t\t\t\tas=\"div\"\n\t\t\t\tposition=\"relative\"\n\t\t\t\twhiteSpace={isOverflown ? \"nowrap\" : \"normal\"}\n\t\t\t\t{...rest}\n\t\t\t\tref={textElementRef}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</Tooltip>\n\t);\n});\n\nTextOverflow.displayName = \"TextOverflow\";\n","import { Badge, type BadgeProps } from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport interface TypeBadgeProps extends Omit<BadgeProps, \"children\"> {\n\t/** Display name for the badge. */\n\tname: string;\n\t/** Chakra color palette for visual differentiation. @default \"gray\" */\n\tcolorPalette?: string;\n}\n\nexport const TypeBadge: React.FC<TypeBadgeProps> = ({\n\tname,\n\tcolorPalette = \"gray\",\n\t...rest\n}) => {\n\treturn (\n\t\t<Badge\n\t\t\trounded=\"base\"\n\t\t\tpx={2}\n\t\t\tmarginInlineStart={1}\n\t\t\tcolorPalette={colorPalette}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{name}\n\t\t</Badge>\n\t);\n};\nTypeBadge.displayName = \"TypeBadge\";\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Spinner as Spinner$1 } from '@chakra-ui/react';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/primitives/spinner.tsx
|
|
5
|
+
var Spinner = (props) => {
|
|
6
|
+
return /* @__PURE__ */ jsx(Spinner$1, { ...props });
|
|
7
|
+
};
|
|
8
|
+
Spinner.displayName = "Spinner";
|
|
9
|
+
|
|
10
|
+
export { Spinner };
|
|
11
|
+
//# sourceMappingURL=chunk-5YDCDC4B.js.map
|
|
12
|
+
//# sourceMappingURL=chunk-5YDCDC4B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/primitives/spinner.tsx"],"names":["ChakraSpinner"],"mappings":";;;;AAQO,IAAM,OAAA,GAAkC,CAAC,KAAA,KAAU;AACzD,EAAA,uBAAO,GAAA,CAACA,SAAA,EAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AAClC;AACA,OAAA,CAAQ,WAAA,GAAc,SAAA","file":"chunk-5YDCDC4B.js","sourcesContent":["import {\n\tSpinner as ChakraSpinner,\n\ttype SpinnerProps as ChakraSpinnerProps,\n} from \"@chakra-ui/react\";\nimport type React from \"react\";\n\nexport type SpinnerProps = ChakraSpinnerProps;\n\nexport const Spinner: React.FC<SpinnerProps> = (props) => {\n\treturn <ChakraSpinner {...props} />;\n};\nSpinner.displayName = \"Spinner\";\n"]}
|