@knkcs/anker 2.6.4 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atoms/index.d.ts +14 -1
- package/dist/atoms/index.js +23 -1
- package/dist/atoms/index.js.map +1 -1
- package/dist/chunk-77EOXDGW.js +49 -0
- package/dist/chunk-77EOXDGW.js.map +1 -0
- package/dist/chunk-7KPPPE4U.js +59 -0
- package/dist/chunk-7KPPPE4U.js.map +1 -0
- package/dist/chunk-CWBQKGL4.js +75 -0
- package/dist/chunk-CWBQKGL4.js.map +1 -0
- package/dist/forms/index.d.ts +12 -9
- package/dist/forms/index.js +5 -21
- package/dist/forms/index.js.map +1 -1
- package/dist/navigation/index.d.ts +26 -0
- package/dist/navigation/index.js +28 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/primitives/index.js +2 -1
- package/dist/primitives/index.js.map +1 -1
- package/dist/unsaved-changes-guard-kwzxMb6r.d.ts +67 -0
- package/package.json +6 -1
- package/dist/chunk-M5WNB4K6.js +0 -126
- package/dist/chunk-M5WNB4K6.js.map +0 -1
package/dist/atoms/index.d.ts
CHANGED
|
@@ -360,6 +360,19 @@ declare function formatRelativeDateTime(date: DateType, baseDate?: DateType): st
|
|
|
360
360
|
*/
|
|
361
361
|
declare function formatRelativeToCurrentWeekDateTime(date: DateType, baseDate?: DateType): string;
|
|
362
362
|
|
|
363
|
+
interface DirtyDotProps {
|
|
364
|
+
/** Render nothing when false. @default true */
|
|
365
|
+
active?: boolean;
|
|
366
|
+
/** aria-label for screen readers. @default "ungespeicherte Änderungen" */
|
|
367
|
+
label?: string;
|
|
368
|
+
/** Box prop overrides (ml, color, size if anyone needs them). */
|
|
369
|
+
boxProps?: BoxProps;
|
|
370
|
+
}
|
|
371
|
+
declare function DirtyDot({ active, label, boxProps, }: DirtyDotProps): react_jsx_runtime.JSX.Element | null;
|
|
372
|
+
declare namespace DirtyDot {
|
|
373
|
+
var displayName: string;
|
|
374
|
+
}
|
|
375
|
+
|
|
363
376
|
interface EmptyStateProps {
|
|
364
377
|
/** Main heading text. */
|
|
365
378
|
header: string;
|
|
@@ -584,4 +597,4 @@ interface TypeBadgeProps extends Omit<BadgeProps, "children"> {
|
|
|
584
597
|
}
|
|
585
598
|
declare const TypeBadge: React__default.FC<TypeBadgeProps>;
|
|
586
599
|
|
|
587
|
-
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 };
|
|
600
|
+
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, DirtyDot, type DirtyDotProps, 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
|
@@ -547,6 +547,28 @@ var DateInput = ({
|
|
|
547
547
|
};
|
|
548
548
|
DateInput.displayName = "DateInput";
|
|
549
549
|
var date_input_default = DateInput;
|
|
550
|
+
function DirtyDot({
|
|
551
|
+
active = true,
|
|
552
|
+
label = "ungespeicherte \xC4nderungen",
|
|
553
|
+
boxProps
|
|
554
|
+
}) {
|
|
555
|
+
if (!active) return null;
|
|
556
|
+
return /* @__PURE__ */ jsx(
|
|
557
|
+
Box,
|
|
558
|
+
{
|
|
559
|
+
as: "span",
|
|
560
|
+
display: "inline-block",
|
|
561
|
+
width: "6px",
|
|
562
|
+
height: "6px",
|
|
563
|
+
bg: "yellow.500",
|
|
564
|
+
borderRadius: "full",
|
|
565
|
+
ml: "2",
|
|
566
|
+
"aria-label": label,
|
|
567
|
+
...boxProps
|
|
568
|
+
}
|
|
569
|
+
);
|
|
570
|
+
}
|
|
571
|
+
DirtyDot.displayName = "DirtyDot";
|
|
550
572
|
var EmptyState = (props) => {
|
|
551
573
|
const { header, description, icon, actions } = props;
|
|
552
574
|
return /* @__PURE__ */ jsxs(
|
|
@@ -962,6 +984,6 @@ var TypeBadge = ({
|
|
|
962
984
|
};
|
|
963
985
|
TypeBadge.displayName = "TypeBadge";
|
|
964
986
|
|
|
965
|
-
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 };
|
|
987
|
+
export { Action, BaseSelect, CheckboxCard, CheckboxCardGroup, ClipboardButton, ClipboardInput, ClipboardLink, Collapse, ColorSwatchPicker, Comment, CommentAction, CommentReplyBox, DataList, DataListItem, DataListItemLabel, DataListItemValue, date_input_default as DateInput, DirtyDot, Edit, EmptyState, Filter, Handle, Persona, PersonaAvatar, PersonaContainer, PersonaDetails, PersonaLabel, RelativeDateTime, Remove, SplitButton, Stat, TableMenuList, TableOption, TextOverflow, TypeBadge, createTableMenuComponents, formatDate, formatDateAndTime, formatMachineReadableDateTime, formatTime, formatWeekdayDate };
|
|
966
988
|
//# sourceMappingURL=index.js.map
|
|
967
989
|
//# 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/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","FilterIcon","Stack","Box","jsxs","ClipboardButton","ChakraClipboard","IconButton","Clipboard","ClipboardInput","ClipboardLink","dayjs","utcPlugin","useState","e","Button","DataList","ChakraDataList","Input","createContext","useContext","chakra","Circle","chakraComponents","ChevronDown","useRef","useEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAM,SAAS,CAAC;AAAA,EACtB,GAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAA4D;AAC3D,EAAA,uBACC,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACA,OAAA,EAAQ,MAAA;AAAA,MACR,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,QAAA;AAAA,MAChB,YAAA,EAAc,KAAA;AAAA,MACd,CAAA,EAAG,MAAA;AAAA,MACH,QAAA,EAAU,CAAA;AAAA,MACV,MAAA;AAAA,MACA,UAAA,EAAY,oDAAA;AAAA,MACZ,EAAA,EAAI,KAAA;AAAA,MACJ,OAAA,EAAO,IAAA;AAAA,MAEP,8BAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,GAAA,EAAW,GAAG,KAAA,EAAO;AAAA;AAAA,GAC5C;AAEF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;ACnBd,IAAM,WAAW,CAAC;AAAA,EACxB,GAAA;AAAA,EACA,aAAA,GAAgB,UAAA;AAAA,EAChB,GAAG;AACJ,CAAA,KAA8D;AAC7D,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAE/B,EAAA,uBACCA,GAAAA,CAAC,MAAA,EAAA,EAAO,GAAA,EAAU,MAAA,EAAO,WAAU,YAAA,EAAY,aAAA,EAAgB,GAAG,IAAA,EACjE,QAAA,kBAAAA,GAAAA,CAAC,QAAK,KAAA,EAAM,QAAA,EACV,QAAA,EAAA,SAAA,mBAAYA,GAAAA,CAAC,YAAA,EAAA,EAAa,oBAAKA,GAAAA,CAAC,WAAA,EAAA,EAAY,CAAA,EAC9C,CAAA,EACD,CAAA;AAEF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AChBhB,IAAM,OAAO,CAAC;AAAA,EACpB,GAAA;AAAA,EACA,SAAA,GAAY,MAAA;AAAA,EACZ,GAAG;AACJ,CAAA,KAA0D;AACzD,EAAA,uBACCA,IAAC,MAAA,EAAA,EAAO,GAAA,EAAU,QAAO,SAAA,EAAU,YAAA,EAAY,SAAA,EAAY,GAAG,KAAA,EAC7D,QAAA,kBAAAA,IAACC,IAAAA,EAAA,EAAK,OAAM,QAAA,EAAS,OAAA,EAAO,MAC3B,QAAA,kBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAO,CAAA,EACT,CAAA,EACD,CAAA;AAEF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;ACPZ,IAAM,SAAS,CAAC;AAAA,EACtB,GAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,GAAG;AACJ,CAAA,KAA4D;AAC3D,EAAA,MAAM,EAAE,iBAAA,EAAmB,GAAG,IAAA,EAAK,GAAI,KAAA;AAEvC,EAAA,uBACC,IAAA,CAAC,GAAA,EAAA,EAAI,QAAA,EAAS,UAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACA,OAAA,EAAQ,OAAA;AAAA,QACR,MAAA,EAAO,SAAA;AAAA,QACP,GAAA;AAAA,QACA,YAAA,EAAY,WAAA;AAAA,QACX,GAAG,IAAA;AAAA,QAEJ,QAAA,kBAAAA,IAACE,QAAA,EAAA,EAAW;AAAA;AAAA,KACb;AAAA,IACC,iBAAA,IAAqB,iBAAA,GAAoB,CAAA,mBACzCF,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACA,IAAA,EAAK,MAAA;AAAA,QACL,EAAA,EAAG,QAAA;AAAA,QACH,KAAA,EAAM,WAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,GAAA,EAAK,CAAA;AAAA,QACL,cAAA,EAAgB,IAAA;AAAA,QAEhB,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,UAAS,IAAA,EAAK,UAAA,EAAY,KAC9B,QAAA,EAAA,iBAAA,EACF;AAAA;AAAA,KACD,GACG;AAAA,GAAA,EACL,CAAA;AAEF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;ACzCd,IAAM,SAAS,CAAC;AAAA,EACtB,GAAA;AAAA,EACA,WAAA,GAAc,iBAAA;AAAA,EACd,GAAG;AACJ,CAAA,KAA4D;AAC3D,EAAA,uBACCA,IAAC,MAAA,EAAA,EAAO,GAAA,EAAU,QAAO,MAAA,EAAO,YAAA,EAAY,WAAA,EAAc,GAAG,KAAA,EAC5D,QAAA,kBAAAA,IAACC,IAAAA,EAAA,EAAK,OAAM,QAAA,EAAS,OAAA,EAAO,MAC3B,QAAA,kBAAAD,GAAAA,CAAC,YAAA,EAAA,EAAa,CAAA,EACf,CAAA,EACD,CAAA;AAEF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;ACbd,IAAM,SAAS,CAAC;AAAA,EACtB,GAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,GAAG;AACJ,CAAA,KAA4D;AAC3D,EAAA,uBACCA,IAAC,MAAA,EAAA,EAAO,GAAA,EAAU,cAAY,WAAA,EAAc,GAAG,OAC9C,QAAA,kBAAAA,GAAAA,CAACC,MAAA,EAAK,KAAA,EAAM,UAAS,OAAA,EAAO,IAAA,EAC3B,0BAAAD,GAAAA,CAAC,CAAA,EAAA,EAAE,GACJ,CAAA,EACD,CAAA;AAEF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;ACPd,IAAM,iBAAA,GAAoB,CAAC,KAAA,KAAkC;AACnE,EAAA,MAAM,EAAE,QAAA,EAAU,YAAA,EAAc,OAAO,aAAA,EAAe,GAAG,MAAK,GAAI,KAAA;AAClE,EAAA,MAAM,QAAQ,gBAAA,CAAiB;AAAA,IAC9B,YAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACA,CAAA;AAED,EAAA,MAAM,QAAQ,KAAA,CAAM,OAAA;AAAA,IACnB,MACC,KAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAC7B,MAAA,CAA8C,KAAA,CAAM,cAAc,CAAA,CAClE,GAAA,CAAI,CAAC,IAAA,KAAS;AACd,MAAA,OAAO,KAAA,CAAM,aAAa,IAAA,EAAM;AAAA,QAC/B,aAAA,EAAe,MAAM,YAAA,CAAa;AAAA,UACjC,KAAA,EAAO,KAAK,KAAA,CAAM;AAAA,SAClB;AAAA,OACD,CAAA;AAAA,IACF,CAAC,CAAA;AAAA,IACH,CAAC,UAAU,KAAK;AAAA,GACjB;AAEA,EAAA,uBAAOA,GAAAA,CAACG,KAAAA,EAAA,EAAO,GAAG,MAAO,QAAA,EAAA,KAAA,EAAM,CAAA;AAChC;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAYzB,IAAM,YAAA,GAAe,CAAC,KAAA,KAA6B;AACzD,EAAA,MAAM,EAAE,aAAA,EAAe,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAE7C,EAAA,MAAM,EAAA,GAAK,MAAM,KAAA,EAAM;AAEvB,EAAA,uBACCH,GAAAA;AAAA,IAACI,KAAAA;AAAA,IAAA;AAAA,MACA,MAAA,EAAO,SAAA;AAAA,MACP,GAAA,EAAK;AAAA,QACJ,iCAAA,EAAmC;AAAA,UAClC,SAAA,EAAW,SAAA;AAAA,UACX,MAAA,EAAQ;AAAA;AACT,OACD;AAAA,MACA,OAAA,EAAO,IAAA;AAAA,MAEP,QAAA,kBAAAC,KAAC,OAAA,EAAA,EACA,QAAA,EAAA;AAAA,wBAAAL,IAAC,OAAA,EAAA,EAAM,IAAA,EAAK,YAAW,iBAAA,EAAiB,EAAA,EAAK,GAAG,aAAA,EAAe,CAAA;AAAA,wBAC/DA,IAACI,KAAAA,EAAA,EAAK,GAAG,IAAA,EACR,QAAA,kBAAAJ,IAACG,KAAAA,EAAA,EAAM,WAAU,KAAA,EAChB,QAAA,kBAAAH,IAACI,KAAAA,EAAA,EAAI,MAAK,GAAA,EAAI,EAAA,EACZ,QAAA,EACF,CAAA,EACD,CAAA,EACD;AAAA,OAAA,EACD;AAAA;AAAA,GACD;AAEF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;ACrEpB,IAAM,eAAA,GAAkB,SAASE,gBAAAA,CAAgB;AAAA,EACvD,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAA+D;AAC9D,EAAA,MAAM,EAAE,KAAA,GAAQ,MAAA,EAAQ,GAAG,MAAK,GAAI,KAAA;AACpC,EAAA,uBACCN,IAACO,SAAA,CAAgB,IAAA,EAAhB,EAAqB,GAAA,EAAW,GAAG,MACnC,QAAA,kBAAAP,GAAAA,CAACO,UAAgB,OAAA,EAAhB,EAAwB,SAAO,IAAA,EAC/B,QAAA,kBAAAP,IAACQ,YAAAA,EAAA,EAAW,SAAQ,OAAA,EAAQ,IAAA,EAAK,MAAK,YAAA,EAAY,KAAA,EACjD,0BAAAR,GAAAA,CAACO,SAAA,CAAgB,WAAhB,EAA0B,MAAA,kBAAQP,GAAAA,CAAC,KAAA,EAAA,EAAM,MAAM,EAAA,EAAI,CAAA,EACnD,0BAAAA,GAAAA,CAACS,WAAA,EAAA,EAAU,MAAM,EAAA,EAAI,CAAA,EACtB,CAAA,EACD,CAAA,EACD,CAAA,EACD,CAAA;AAEF;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AASvB,IAAM,cAAA,GAAiB,SAASC,eAAAA,CAAe;AAAA,EACrD,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAA8D;AAC7D,EAAA,MAAM,EAAE,UAAA,EAAY,KAAA,GAAQ,MAAA,EAAQ,GAAG,MAAK,GAAI,KAAA;AAChD,EAAA,uBACCV,GAAAA,CAACO,SAAA,CAAgB,IAAA,EAAhB,EAAqB,GAAA,EAAW,GAAG,IAAA,EACnC,QAAA,kBAAAF,IAAAA,CAACE,SAAA,CAAgB,OAAA,EAAhB,EACA,QAAA,EAAA;AAAA,oBAAAP,GAAAA,CAACO,SAAA,CAAgB,KAAA,EAAhB,EAAsB,OAAA,EAAO,IAAA,EAC7B,QAAA,kBAAAP,GAAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAQ,IAAA,EAAE,GAAG,YAAY,CAAA,EACjC,CAAA;AAAA,oBACAA,GAAAA,CAACO,SAAA,CAAgB,OAAA,EAAhB,EAAwB,SAAO,IAAA,EAC/B,QAAA,kBAAAP,GAAAA,CAACQ,YAAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,cAAY,KAAA,EACnD,QAAA,kBAAAR,GAAAA,CAACO,SAAA,CAAgB,WAAhB,EAA0B,MAAA,kBAAQP,GAAAA,CAAC,SAAM,IAAA,EAAM,EAAA,EAAI,CAAA,EACnD,QAAA,kBAAAA,IAACS,WAAA,EAAA,EAAU,IAAA,EAAM,EAAA,EAAI,CAAA,EACtB,GACD,CAAA,EACD;AAAA,GAAA,EACD,CAAA,EACD,CAAA;AAEF;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAOtB,IAAM,aAAA,GAAgB,SAASE,cAAAA,CAAc;AAAA,EACnD,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAA6D;AAC5D,EAAA,MAAM,EAAE,KAAA,GAAQ,WAAA,EAAa,GAAG,MAAK,GAAI,KAAA;AACzC,EAAA,uBACCX,IAACO,SAAA,CAAgB,IAAA,EAAhB,EAAqB,GAAA,EAAW,GAAG,MACnC,QAAA,kBAAAP,GAAAA,CAACO,UAAgB,OAAA,EAAhB,EAAwB,SAAO,IAAA,EAC/B,QAAA,kBAAAP,IAACQ,YAAAA,EAAA,EAAW,SAAQ,OAAA,EAAQ,IAAA,EAAK,MAAK,YAAA,EAAY,KAAA,EACjD,0BAAAR,GAAAA,CAACO,SAAA,CAAgB,WAAhB,EAA0B,MAAA,kBAAQP,GAAAA,CAAC,KAAA,EAAA,EAAM,MAAM,EAAA,EAAI,CAAA,EACnD,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,MAAM,EAAA,EAAI,CAAA,EACjB,CAAA,EACD,CAAA,EACD,CAAA,EACD,CAAA;AAEF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;ACjF5B,IAAM,eAAA,GAAkB;AAAA,EACvB,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD,CAAA;AAWA,IAAM,eAAe,EAAE,EAAA,EAAI,GAAG,EAAA,EAAI,CAAA,EAAG,IAAI,CAAA,EAAE;AAEpC,IAAM,oBAAsD,CAAC;AAAA,EACnE,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,eAAA;AAAA,EACV,YAAA,GAAe,KAAA;AAAA,EACf,WAAA,GAAc,KAAA;AAAA,EACd,IAAA,GAAO;AACR,CAAA,KAAM;AACL,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAAS,SAAS,EAAE,CAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,WAAA,CAAY,SAAS,EAAE,CAAA;AAAA,EACxB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,UAAA,GAAa,aAAa,IAAI,CAAA;AAEpC,EAAA,MAAM,kBAAkB,MAAM;AAC7B,IAAA,MAAM,OAAA,GAAU,SAAS,IAAA,EAAK;AAC9B,IAAA,IAAI,mBAAA,CAAoB,IAAA,CAAK,OAAO,CAAA,EAAG;AACtC,MAAA,QAAA,CAAS,OAAO,CAAA;AAAA,IACjB;AAAA,EACD,CAAA;AAEA,EAAA,uBACCK,IAAAA,CAACF,OAAA,EAAA,EAAM,GAAA,EAAK,CAAA,EACX,QAAA,EAAA;AAAA,oBAAAH,GAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,MAAA,EAAO,GAAA,EAAK,GACrB,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,qBACbA,GAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QAEA,CAAA,EAAG,UAAA;AAAA,QACH,CAAA,EAAG,UAAA;AAAA,QACH,OAAA,EAAQ,IAAA;AAAA,QACR,EAAA,EAAI,KAAA;AAAA,QACJ,MAAA,EAAO,SAAA;AAAA,QACP,WAAA,EAAY,KAAA;AAAA,QACZ,WAAA,EAAa,KAAA,KAAU,KAAA,GAAQ,mBAAA,GAAsB,aAAA;AAAA,QACrD,OAAA,EAAS,MAAM,QAAA,CAAS,KAAK,CAAA;AAAA,QAC7B,MAAA,EAAQ,EAAE,SAAA,EAAW,YAAA,EAAa;AAAA,QAClC,UAAA,EAAW;AAAA,OAAA;AAAA,MAVN;AAAA,KAYN,CAAA,EACF,CAAA;AAAA,IAAA,CACE,gBAAgB,WAAA,qBACjBK,IAAAA,CAAC,MAAA,EAAA,EAAO,KAAK,CAAA,EACX,QAAA,EAAA;AAAA,MAAA,WAAA,oBACAL,GAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACA,CAAA,EAAG,CAAA;AAAA,UACH,CAAA,EAAG,CAAA;AAAA,UACH,OAAA,EAAQ,IAAA;AAAA,UACR,IAAI,KAAA,IAAS,aAAA;AAAA,UACb,WAAA,EAAY,KAAA;AAAA,UACZ,WAAA,EAAY,QAAA;AAAA,UACZ,UAAA,EAAY;AAAA;AAAA,OACb;AAAA,MAEA,gCACAA,GAAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAO,QAAA;AAAA,UACP,UAAU,CAAC,CAAA,KAAM,WAAA,CAAY,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UAC3C,MAAA,EAAQ,eAAA;AAAA,UACR,SAAA,EAAW,CAAC,CAAA,KAAM;AACjB,YAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,EAAS,eAAA,EAAgB;AAAA,UACxC,CAAA;AAAA,UACA,WAAA,EAAY,SAAA;AAAA,UACZ,IAAA,EAAK,IAAA;AAAA,UACL,IAAA,EAAK;AAAA;AAAA;AACN,KAAA,EAEF;AAAA,GAAA,EAEF,CAAA;AAEF;AACA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;ACjGhCY,MAAA,CAAM,OAAO,SAAS,CAAA;AAmBf,SAAS,iBAAA,CACf,IAAA,EACA,MAAA,GAAqB,MAAA,EACZ;AACT,EAAA,IAAI,QAAA;AAEJ,EAAA,QAAQ,MAAA;AAAQ,IACf,KAAK,KAAA;AACJ,MAAA,QAAA,GAAW,aAAA;AACX,MAAA;AAAA,IACD,KAAK,SAAA;AACJ,MAAA,QAAA,GAAW,aAAA;AACX,MAAA;AAAA,IACD,KAAK,MAAA;AACJ,MAAA,QAAA,GAAW,QAAA;AACX,MAAA;AAAA,IACD,KAAK,iBAAA;AACJ,MAAA,QAAA,GAAW,iCAAA;AACX,MAAA;AAAA,IACD;AACC,MAAA,QAAA,GAAW,8BAAA;AAAA;AAGb,EAAA,OAAOA,MAAA,CAAM,IAAI,CAAA,CAAE,MAAA,CAAO,QAAQ,CAAA;AACnC;AAgBO,SAAS,6BAAA,CACf,IAAA,EACA,MAAA,GAAqB,MAAA,EACZ;AACT,EAAA,IAAI,QAAA;AAEJ,EAAA,QAAQ,MAAA;AAAQ,IACf,KAAK,KAAA;AACJ,MAAA,QAAA,GAAW,YAAA;AACX,MAAA;AAAA,IACD,KAAK,SAAA;AACJ,MAAA,QAAA,GAAW,OAAA;AACX,MAAA;AAAA,IACD,KAAK,MAAA;AACJ,MAAA,QAAA,GAAW,cAAA;AACX,MAAA;AAAA,IACD;AACC,MAAA,QAAA,GAAW,4BAAA;AAAA;AAGb,EAAA,OAAOA,OAAM,IAAI,CAAA,CAAE,GAAA,EAAI,CAAE,OAAO,QAAQ,CAAA;AACzC;AAOO,IAAM,UAAA,GAAa,CAAC,IAAA,KAA2B;AACrD,EAAA,OAAO,iBAAA,CAAkB,MAAM,KAAK,CAAA;AACrC;AAOO,IAAM,UAAA,GAAa,CAAC,IAAA,KAA2B;AACrD,EAAA,OAAO,iBAAA,CAAkB,MAAM,MAAM,CAAA;AACtC;AAOO,IAAM,iBAAA,GAAoB,CAAC,IAAA,KAA2B;AAC5D,EAAA,OAAO,iBAAA,CAAkB,MAAM,SAAS,CAAA;AACzC;AClGAA,MAAAA,CAAM,OAAOC,SAAS,CAAA;AACtBD,MAAAA,CAAM,OAAO,YAAY,CAAA;AACzBA,MAAAA,CAAM,OAAO,cAAc,CAAA;AAqBpB,IAAM,gBAAA,GAAoD,CAAC,KAAA,KAAU;AAC3E,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,uBAAA,EAAyB,GAAG,YAAW,GAAI,KAAA;AAEnE,EAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,EAAA,MAAM,gBAAgB,QAAA,IAAY,GAAA;AAClC,EAAA,MAAM,SAAA,GAAYA,OAAM,IAAI,CAAA;AAC5B,EAAA,MAAM,mBAAA,GAAsB,8BAA8B,IAAI,CAAA;AAE9D,EAAA,IAAI,YAAA;AAEJ,EAAA,IAAI,2BAA2B,CAAC,SAAA,CAAU,MAAA,CAAO,aAAA,EAAe,KAAK,CAAA,EAAG;AACvE,IAAA,YAAA,GAAe,mCAAA,CAAoC,MAAM,aAAa,CAAA;AAAA,EACvE,CAAA,MAAO;AACN,IAAA,YAAA,GAAe,sBAAA,CAAuB,MAAM,aAAa,CAAA;AAAA,EAC1D;AAEA,EAAA,uBACCZ,GAAAA,CAAC,MAAA,EAAA,EAAK,UAAU,mBAAA,EAAsB,GAAG,YACvC,QAAA,EAAA,YAAA,EACF,CAAA;AAEF;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AC1C/B,IAAM,oBAAA,GAAuB,aAAA,CAA6B,EAAE,CAAA;AAC5D,IAAM,SAAA,GAAY,MAAM,UAAA,CAAW,oBAAoB,CAAA;AAEhD,IAAM,OAAA,GAAkC,CAAC,KAAA,KAAU;AACzD,EAAA,MAAM;AAAA,IACL,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA,EAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA,GAAe,+BAAA;AAAA,IACf,GAAG;AAAA,GACJ,GAAI,KAAA;AAEJ,EAAA,MAAM,SAAwB,EAAC;AAE/B,EAAA,MAAM,WAAA,GAAc;AAAA,IACnB,MAAA;AAAA,IACA;AAAA,GACD;AAEA,EAAA,MAAM,WAAA,GAAc;AAAA,IACnB;AAAA,GACD;AAEA,EAAA,uBACCA,GAAAA,CAAC,MAAA,CAAO,KAAP,EAAW,GAAA,EAAK,OAAO,SAAA,EAAW,SAAA,EAAS,EAAA,EAAK,GAAG,MACnD,QAAA,kBAAAK,IAAAA,CAAC,qBAAqB,QAAA,EAArB,EAA8B,OAAO,MAAA,EACpC,QAAA,EAAA;AAAA,IAAA,MAAA,oBAAUL,GAAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,IAAA,CAC7B,OAAA,IAAW,8BACZA,GAAAA,CAAC,oBACA,QAAA,kBAAAK,IAAAA,CAACF,OAAA,EAAA,EAAM,GAAA,EAAK,CAAA,EACX,QAAA,EAAA;AAAA,sBAAAE,IAAAA,CAACF,OAAA,EAAA,EAAM,GAAA,EAAK,CAAA,EACX,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,WAAA,EAAa,CAAA;AAAA,wBAChCA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,GAAA,EAAK;AAAA,cACJ,KAAA,EAAO;AAAA,gBACN,QAAA,EAAU;AAAA,eACX;AAAA,cACA,iBAAA,EAAmB;AAAA,gBAClB,SAAA,EAAW;AAAA,eACZ;AAAA,cACA,gBAAA,EAAkB;AAAA,gBACjB,YAAA,EAAc;AAAA;AACf,aACD;AAAA,YAEC,QAAA,EAAA,SAAA,mBACAA,GAAAA,CAAC,MAAA,CAAO,IAAA,EAAP,EAAY,GAAA,EAAK,MAAA,CAAO,WAAA,EACvB,QAAA,EAAA,YAAA,EACF,CAAA,GAEA;AAAA;AAAA;AAEF,OAAA,EACD,CAAA;AAAA,sBACAA,GAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,WAAA,EAAa;AAAA,KAAA,EACjC,CAAA,EACD,CAAA;AAAA,IAEA,QAAA,oBACAA,GAAAA,CAACG,OAAA,EAAA,EAAM,KAAK,CAAA,EAAG,GAAA,EAAK,MAAA,CAAO,QAAA,EACzB,QAAA,EACF;AAAA,GAAA,EAEF,CAAA,EACD,CAAA;AAEF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAEtB,IAAM,UAAA,GAED,CAAC,EAAE,QAAA,EAAS,KAAM;AACtB,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,uBAAOH,IAAC,MAAA,CAAO,GAAA,EAAP,EAAW,GAAA,EAAK,MAAA,CAAO,QAAS,QAAA,EAAS,CAAA;AAClD,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,EAAE,QAAA,EAAS,KAAqC;AACzE,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,uBAAOA,IAAC,MAAA,CAAO,GAAA,EAAP,EAAW,GAAA,EAAK,MAAA,CAAO,kBAAmB,QAAA,EAAS,CAAA;AAC5D,CAAA;AAEA,IAAM,aAAA,GAA8C,CAAC,KAAA,KAAU;AAC9D,EAAA,MAAM,EAAE,MAAA,EAAQ,WAAA,EAAY,GAAI,KAAA;AAEhC,EAAA,MAAM,YAAA,GAAe,CAAC,CAAC,MAAA,IAAU,CAAC,CAAC,WAAA;AAEnC,EAAA,OAAO,YAAA,mBACNK,IAAAA,CAAC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,IAAA,MAAA,oBAAUL,GAAAA,CAAC,MAAA,EAAA,EAAQ,QAAA,EAAA,MAAA,CAAO,IAAA,EAAK,CAAA;AAAA,IAC/B,WAAA,oBAAeA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,MAAM,WAAA,EAAa;AAAA,GAAA,EACtD,CAAA,GACG,IAAA;AACL,CAAA;AAEA,IAAM,MAAA,GAED,CAAC,KAAA,KAAU;AACf,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,uBAAOA,IAAC,MAAA,CAAO,IAAA,EAAP,EAAY,GAAA,EAAK,MAAA,CAAO,OAAQ,QAAA,EAAS,CAAA;AAClD,CAAA;AAEA,IAAM,aAAA,GAA8C,CAAC,KAAA,KAAU;AAC9D,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,uBACCA,IAAC,MAAA,EAAA,EAAO,UAAA,EAAW,UAAS,GAAA,EAAK,CAAA,EAAG,QAAA,EAAS,MAAA,EAC3C,QAAA,EAAA,OAAA,EAAS,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,KAAQ,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,MAAM,EAAE,GAAA,EAAK,CAAC,CAAA,EAC9D,CAAA;AAEF,CAAA;AAMO,IAAM,aAAA,GAA8C,CAAC,KAAA,KAAU;AACrE,EAAA,uBAAOA,IAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,WAAU,IAAA,EAAK,IAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AACvD;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AC7HrB,IAAM,kBAAkB,CAAC;AAAA,EAC/B,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAAuE;AACtE,EAAA,MAAM;AAAA,IACL,OAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,GAAc,kBAAA;AAAA,IACd,WAAA,GAAc,QAAA;AAAA,IACd,UAAA,GAAa;AAAA,GACd,GAAI,KAAA;AAEJ,EAAA,MAAM,UAAA,GAAa,OAA4B,IAAI,CAAA;AAEnD,EAAA,MAAM,SAAA,GAAY,CAAC,IAAA,KAAqC;AACvD,IAAC,WAAkE,OAAA,GAClE,IAAA;AACD,IAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC9B,MAAA,GAAA,CAAI,IAAI,CAAA;AAAA,IACT,WAAW,GAAA,EAAK;AACf,MAAC,IAA2D,OAAA,GAC3D,IAAA;AAAA,IACF;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIc,SAAkB,KAAK,CAAA;AACzD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAkB,KAAK,CAAA;AAC/D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAiB,EAAE,CAAA;AAE7C,EAAA,MAAM,WAAA,GAAc,OAAO,CAAA,KAAuB;AACjD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,CAAA,CAAE,eAAA,EAAgB;AAElB,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,MAAM,IAAA,EAAK,IAAK,UAAU,EAAA,EAAI;AAC5C,MAAA;AAAA,IACD;AACA,IAAA,IAAI;AACH,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,MAAM,UAAU,KAAK,CAAA;AACrB,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACnB,SAASC,EAAAA,EAAG;AACX,MAAA,OAAA,CAAQ,MAAMA,EAAC,CAAA;AAAA,IAChB;AAEA,IAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AAC1B,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,QAAA,IAAW;AAAA,EACZ,CAAA;AAEA,EAAA,uBACCf,GAAAA,CAAC,GAAA,EAAA,EAAI,CAAA,EAAE,QAAO,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA,EAC7C,QAAA,kBAAAK,IAAAA,CAAC,MAAA,EAAA,EAAK,UAAU,WAAA,EACf,QAAA,EAAA;AAAA,oBAAAL,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACA,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,QACnB,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACxC,IAAA,EAAM,YAAY,MAAA,GAAY,QAAA;AAAA,QAC9B,WAAA;AAAA,QACA,GAAA,EAAK,SAAA;AAAA,QACL,SAAA,EAAW,CAAC,CAAA,KAAM;AAEjB,UAAA,IAAA,CAAK,EAAE,OAAA,IAAW,CAAA,CAAE,OAAA,KAAY,CAAA,CAAE,QAAQ,OAAA,EAAS;AAClD,YAAA,WAAA,CAAY,CAAC,CAAA;AAAA,UACd;AAAA,QACD,CAAA;AAAA,QACA,QAAA,EAAU;AAAA;AAAA,KACX;AAAA,oBAEAA,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACA,EAAA,EAAI,CAAA;AAAA,QACJ,OAAA,EAAS,YAAY,MAAA,GAAS,MAAA;AAAA,QAC9B,cAAA,EAAe,UAAA;AAAA,QAEf,0BAAAK,IAAAA,CAAC,WAAA,EAAA,EAAY,iBAAA,EAAkB,MAAA,EAAO,MAAK,IAAA,EAC1C,QAAA,EAAA;AAAA,0BAAAL,GAAAA;AAAA,YAACgB,QAAAA;AAAA,YAAA;AAAA,cACA,OAAA,EAAQ,SAAA;AAAA,cACR,OAAA,EAAS,YAAA;AAAA,cACT,OAAA,EAAS,YAAA;AAAA,cAER,QAAA,EAAA;AAAA;AAAA,WACF;AAAA,0BACAhB,GAAAA;AAAA,YAACgB,QAAAA;AAAA,YAAA;AAAA,cACA,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,OAAA;AAAA,cACR,YAAA,EAAa,SAAA;AAAA,cACb,OAAA,EAAS,YAAA;AAAA,cAER,QAAA,EAAA;AAAA;AAAA;AACF,SAAA,EACD;AAAA;AAAA;AACD,GAAA,EACD,CAAA,EACD,CAAA;AAEF;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;ACvGvB,IAAM,QAAA,GAAW,SAASC,SAAAA,CAAS;AAAA,EACzC,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,EAA0D;AACzD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AACrC,EAAA,uBACCjB,GAAAA,CAACkB,UAAA,CAAe,IAAA,EAAf,EAAoB,KAAW,GAAG,IAAA,EACjC,QAAA,EAAA,KAAA,GACE,KAAA,CAAM,IAAI,CAAC,IAAA,qBACXb,IAAAA,CAACa,UAAA,CAAe,MAAf,EACA,QAAA,EAAA;AAAA,oBAAAlB,GAAAA,CAACkB,UAAA,CAAe,SAAA,EAAf,EAA0B,eAAK,KAAA,EAAM,CAAA;AAAA,oBACtClB,GAAAA,CAACkB,UAAA,CAAe,SAAA,EAAf,EAA0B,eAAK,KAAA,EAAM;AAAA,GAAA,EAAA,EAFb,OAAO,IAAA,CAAK,KAAK,CAG3C,CACA,IACA,QAAA,EACJ,CAAA;AAEF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAGhB,IAAM,eAAeA,UAAA,CAAe;AAC3C,YAAA,CAAa,WAAA,GAAc,cAAA;AAEpB,IAAM,oBAAoBA,UAAA,CAAe;AAChD,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEzB,IAAM,oBAAoBA,UAAA,CAAe;AAChD,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AC1BhC,IAAM,WAAA,GAAc,qBAAA;AAKpB,SAAS,aAAa,KAAA,EAAuB;AAC5C,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,IAAI,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,EAAG,OAAO,KAAA;AAEpC,EAAA,IAAI;AACH,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,KAAK,CAAA;AAC3B,IAAA,IAAI,OAAO,KAAA,CAAM,IAAA,CAAK,OAAA,EAAS,GAAG,OAAO,EAAA;AACzC,IAAA,OAAO,IAAA,CAAK,WAAA,EAAY,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AAAA,EACtC,CAAA,CAAA,MAAQ;AACP,IAAA,OAAO,EAAA;AAAA,EACR;AACD;AAEA,IAAM,YAAY,CAAC;AAAA,EAClB,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAA8D;AAC7D,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,SAAS,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAEvD,EAAA,MAAM,SAAA,GAAY,KAAA,GAAQ,YAAA,CAAa,KAAK,CAAA,GAAI,EAAA;AAEhD,EAAA,uBACClB,GAAAA;AAAA,IAACmB,KAAAA;AAAA,IAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,GAAA,EAAK,OAAA;AAAA,MACL,GAAA,EAAK,OAAA;AAAA,MACL,QAAA;AAAA,MACA,GAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACL;AAEF,CAAA;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAO,kBAAA,GAAQ;ACxCR,IAAM,UAAA,GAAwC,CAAC,KAAA,KAAU;AAC/D,EAAA,MAAM,EAAE,MAAA,EAAQ,WAAA,EAAa,IAAA,EAAM,SAAQ,GAAI,KAAA;AAE/C,EAAA,uBACCd,IAAAA;AAAA,IAACF,OAAA;AAAA,IAAA;AAAA,MACA,cAAA,EAAe,QAAA;AAAA,MACf,UAAA,EAAW,QAAA;AAAA,MACX,SAAA,EAAU,QAAA;AAAA,MACV,GAAA,EAAK,CAAA;AAAA,MACL,CAAA,EAAG,EAAA;AAAA,MACH,YAAA,EAAa,IAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,wBACDH,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAK,MAAM,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAC1B,WAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAM,OAAA,EAAQ,QAAA,EAAS,MAC3B,QAAA,EAAA,WAAA,EACF,CAAA;AAAA,QAEA,OAAA,oBACAA,GAAAA,CAACG,OAAA,EAAA,EAAM,IAAI,CAAA,EAAG,GAAA,EAAK,GACjB,QAAA,EAAA,OAAA,EACF;AAAA;AAAA;AAAA,GAEF;AAEF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;ACLzB,IAAM,oBAAA,GAAuBiB,aAAAA,CAA6B,EAAE,CAAA;AAC5D,IAAM,gBAAA,GAAmB,MAAMC,UAAAA,CAAW,oBAAoB,CAAA;AAEvD,IAAM,OAAA,GAAkC,CAAC,KAAA,KAAU;AACzD,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,GAAO,MAAM,WAAA,EAAa,KAAA,EAAO,aAAY,GAAI,KAAA;AAE/D,EAAA,uBACChB,IAAAA,CAAC,gBAAA,EAAA,EAAiB,WAAA,EACjB,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAY,IAAA,EAAY,CAAA;AAAA,IACtC,CAAC,WAAA,oBACDA,GAAAA,CAAC,cAAA,EAAA,EACA,0BAAAA,GAAAA,CAAC,YAAA,EAAA,EAAc,QAAA,EAAA,KAAA,IAAS,IAAA,EAAK,CAAA,EAC9B;AAAA,GAAA,EAEF,CAAA;AAEF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAcf,IAAM,mBAAmB,CAAC;AAAA,EAChC,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAAmE;AAClE,EAAA,MAAM,EAAE,UAAU,MAAA,GAAS,IAAI,WAAA,EAAa,GAAG,MAAK,GAAI,KAAA;AAExD,EAAA,uBACCA,GAAAA,CAAC,oBAAA,CAAqB,UAArB,EAA8B,KAAA,EAAO,QACrC,QAAA,kBAAAA,GAAAA;AAAA,IAACsB,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACA,GAAA;AAAA,MACA,OAAA,EAAQ,MAAA;AAAA,MACR,aAAA,EAAc,KAAA;AAAA,MACd,UAAA,EAAW,QAAA;AAAA,MACV,GAAI,WAAA,IAAe;AAAA,QACnB,MAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAc,IAAA;AAAA,QACd,UAAA,EAAY,wBAAA;AAAA,QACZ,MAAA,EAAQ,EAAE,EAAA,EAAI,WAAA,EAAY;AAAA,QAC1B,EAAA,EAAI,CAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACL;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACF,EACD,CAAA;AAEF;AAQO,IAAM,gBAAgB,CAAC;AAAA,EAC7B,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAAgE;AAC/D,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,GAAG,MAAK,GAAI,KAAA;AAEhC,EAAA,uBAAOtB,GAAAA,CAAC,MAAA,EAAA,EAAO,KAAU,IAAA,EAAY,IAAA,EAAa,GAAG,IAAA,EAAM,CAAA;AAC5D;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAErB,IAAM,iBAAiB,CAAC;AAAA,EAC9B,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAAoE;AACnE,EAAA,MAAM,EAAE,QAAA,EAAU,GAAG,IAAA,EAAK,GAAI,KAAA;AAC9B,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,EAAA,uBACCA,GAAAA;AAAA,IAACsB,MAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACA,GAAA;AAAA,MACA,OAAA,EAAQ,MAAA;AAAA,MACR,aAAA,EAAc,QAAA;AAAA,MACd,OAAO,MAAA,CAAO,OAAA;AAAA,MACb,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACF;AAEF;AACA,cAAA,CAAe,WAAA,GAAc,gBAAA;AAEtB,IAAM,eAAe,CAAC;AAAA,EAC5B,GAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAAsE;AACrE,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAEhC,EAAA,uBAAOtB,GAAAA,CAACsB,MAAAA,CAAO,IAAA,EAAP,EAAY,KAAU,KAAA,EAAO,MAAA,CAAO,KAAA,EAAQ,GAAG,KAAA,EAAO,CAAA;AAC/D;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AC9G3B,IAAM,kBAAkB,CAAuB;AAAA,EAC9C,IAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAAkD;AACjD,EAAA,uBACCtB,GAAAA,CAAC,gBAAA,CAAiB,WAAA,EAAjB,EAA6B,IAAA,EAAa,GAAG,KAAA,EAC7C,QAAA,kBAAAK,IAAAA,CAAC,MAAA,EAAA,EAAO,GAAA,EAAK,CAAA,EACX,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,MAAA,oBAAUL,GAAAA,CAAC,MAAA,EAAA,EAAO,MAAM,IAAA,CAAK,MAAA,EAAQ,MAAK,IAAA,EAAK,CAAA;AAAA,IACpD,IAAA,CAAK,KAAA,oBAASA,GAAAA,CAACuB,MAAAA,EAAA,EAAO,EAAA,EAAI,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,CAAA,EAAG,CAAA;AAAA,IAC/C,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA;AAAA,oBACnBvB,GAAAA,CAAC,IAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM;AAAA,GAAA,EACnB,CAAA,EACD,CAAA;AAEF,CAAA;AAEA,IAAM,iBAAiB,CAAuB;AAAA,EAC7C,QAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAAiD;AAChD,EAAA,MAAM,EAAE,MAAK,GAAI,KAAA;AAEjB,EAAA;AAAA;AAAA,oBAECA,GAAAA,CAAC,gBAAA,CAAiB,UAAA,EAAjB,EAA4B,IAAA,EAAa,GAAG,KAAA,EAC5C,QAAA,kBAAAK,IAAAA,CAAC,MAAA,EAAA,EAAO,GAAA,EAAK,CAAA,EACX,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,MAAA,oBAAUL,GAAAA,CAAC,MAAA,EAAA,EAAO,MAAM,IAAA,CAAK,MAAA,EAAQ,MAAK,IAAA,EAAK,CAAA;AAAA,MACpD,IAAA,CAAK,KAAA,oBAASA,GAAAA,CAACuB,MAAAA,EAAA,EAAO,EAAA,EAAI,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,CAAA,EAAG,CAAA;AAAA,MAC/C,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA;AAAA,sBACnBvB,GAAAA,CAAC,IAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM;AAAA,KAAA,EACnB,CAAA,EACD;AAAA;AAEF,CAAA;AAEA,IAAM,mBAAmB,CAAuB;AAAA,EAC/C,IAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAA6C;AAC5C,EAAA,uBACCA,GAAAA,CAAC,gBAAA,CAAiB,MAAA,EAAjB,EAAwB,IAAA,EAAa,GAAG,KAAA,EACxC,QAAA,kBAAAK,IAAAA,CAAC,MAAA,EAAA,EAAO,GAAA,EAAK,CAAA,EACX,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,MAAA,oBAAUL,GAAAA,CAAC,MAAA,EAAA,EAAO,MAAM,IAAA,CAAK,MAAA,EAAQ,MAAK,IAAA,EAAK,CAAA;AAAA,IACpD,IAAA,CAAK,KAAA,oBAASA,GAAAA,CAACuB,MAAAA,EAAA,EAAO,EAAA,EAAI,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,CAAA,EAAG,CAAA;AAAA,IAC/C,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA;AAAA,oBACnBvB,GAAAA,CAAC,IAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM;AAAA,GAAA,EACnB,CAAA,EACD,CAAA;AAEF,CAAA;AAEA,IAAM,mBAAA,GAAsB,CAC3B,OAAA,EACA,gBAAA,MACK;AAAA,EACL,GAAI,YAAY,MAAA,GACb;AAAA,IACA,iBAAA,EAAmB,IAAA;AAAA,IACnB,kBAAA,EAAoB;AAAA,MAEpB,EAAC;AAAA,EACJ,WAAA,EAAa,eAAA;AAAA,EACb,UAAA,EAAY,cAAA;AAAA,EACZ,MAAA,EAAQ,gBAAA;AAAA,EACR,GAAG;AACJ,CAAA,CAAA;AAEO,IAAM,aAAa,CAAuB;AAAA,EAChD,GAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,OAAA,GAAU,KAAA;AAAA,EACV,QAAA,GAAW,KAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,WAAA;AAAA,EACA,mBAAmB,QAAA,CAAS,IAAA;AAAA,EAC5B,OAAA,GAAU,SAAA;AAAA,EACV,MAAA;AAAA,EACA,GAAG;AACJ,CAAA,KAEM;AACL,EAAA,uBACCA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAG,eAAA;AAAA,MACJ,GAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACX,UAAA,EAAY,QAAA;AAAA,MACZ,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,MAAA,EAAQ;AAAA,QACP,UAAA,EAAY,CAAC,QAAA,MAAc;AAAA,UAC1B,GAAG,QAAA;AAAA,UACH,MAAA,EAAQ,IAAA;AAAA,UACR,aAAA,EAAe;AAAA,SAChB,CAAA;AAAA,QACA,GAAG;AAAA,OACJ;AAAA,MACA,cAAA,EAAgB,CAAC,MAAA,KAAW,MAAA,CAAO,EAAA;AAAA,MACnC,cAAA,EAAgB,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA;AAAA,MACnC,UAAA,EAAY,mBAAA;AAAA,QACX,OAAA;AAAA;AAAA,QAEA,eAAA,CAAgB;AAAA;AACjB;AAAA,GACD;AAEF;AACC,UAAA,CAAwC,WAAA,GAAc,YAAA;ACtGhD,IAAM,gBAAgB,CAAuB;AAAA,EACnD,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,OAAA;AAAA,EACX,QAAA,GAAW,OAAA;AAAA,EACX,GAAG;AACJ,CAAA,KAA6B;AAC5B,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AAGpB,EAAA,MAAM,cAAA,GAAiB,QAA2B,MAAM;AACvD,IAAA,IAAI,SAAS,OAAO,OAAA;AAEpB,IAAA,MAAM,WAAA,GAAc,UAAU,CAAC,CAAA;AAC/B,IAAA,IAAI,CAAC,aAAa,IAAA,EAAM;AACvB,MAAA,OAAO,CAAC,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA;AAAA,IACzC;AAEA,IAAA,OAAO;AAAA,MACN,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAO;AAAA,MAC/B,GAAG,OAAO,IAAA,CAAK,WAAA,CAAY,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,QAC9C,GAAA;AAAA,QACA,MAAA,EAAQ,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,GAAA,CAAI,KAAA,CAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,MAAM,GAAG;AAAA,OACrE,CAAE;AAAA,KACH;AAAA,EACD,CAAA,EAAG,CAAC,OAAA,EAAS,OAAO,CAAC,CAAA;AAErB,EAAA,uBACCA,GAAAA,CAACwB,gBAAAA,CAAiB,UAAjB,EAA2B,GAAG,OAC9B,QAAA,kBAAAxB,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAU,MAAA;AAAA,MACV,QAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA,EAAM,aAAA;AAAA,MAEN,0BAAAK,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,MAAK,IAAA,EAChB,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,KAAA,CAAM,MAAA,EAAN,EACA,QAAA,kBAAAA,GAAAA,CAAC,KAAA,CAAM,GAAA,EAAN,EACC,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,wBACpBA,GAAAA;AAAA,UAAC,KAAA,CAAM,YAAA;AAAA,UAAN;AAAA,YAEA,OAAO,GAAA,CAAI,KAAA;AAAA,YACX,UAAA,EAAW,QAAA;AAAA,YAEV,QAAA,EAAA,GAAA,CAAI;AAAA,WAAA;AAAA,UAJA,GAAA,CAAI;AAAA,SAMV,GACF,CAAA,EACD,CAAA;AAAA,wBACAA,GAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAY,QAAA,EAAS;AAAA,OAAA,EACvB;AAAA;AAAA,GACD,EACD,CAAA;AAEF;AACC,aAAA,CAA2C,WAAA,GAAc,eAAA;AAMnD,IAAM,cAAc,CAAuB;AAAA,EACjD,IAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD,CAAA,KAA+E;AAE9E,EAAA,MAAM,cAAA,GAAiB,QAA2B,MAAM;AACvD,IAAA,IAAI,SAAS,OAAO,OAAA;AAEpB,IAAA,IAAI,CAAC,KAAK,IAAA,EAAM;AACf,MAAA,OAAO,CAAC,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA;AAAA,IACzC;AAEA,IAAA,OAAO;AAAA,MACN,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAO;AAAA,MAC/B,GAAG,OAAO,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,QACvC,GAAA;AAAA,QACA,MAAA,EAAQ;AAAA,OACT,CAAE;AAAA,KACH;AAAA,EACD,CAAA,EAAG,CAAC,OAAA,EAAS,IAAA,CAAK,IAAI,CAAC,CAAA;AAEvB,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAA0C;AAC/D,IAAA,IAAI,GAAA,CAAI,QAAQ,OAAA,EAAS;AACxB,MAAA,OAAO,IAAA,CAAK,KAAA;AAAA,IACb;AACA,IAAA,IAAI,GAAA,CAAI,QAAQ,IAAA,EAAM;AACrB,MAAA,OAAO,IAAA,CAAK,EAAA;AAAA,IACb;AACA,IAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,GAAA,CAAI,GAAA,IAAO,KAAK,IAAA,EAAM;AACtC,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA;AAC/B,MAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,GAAA;AAClD,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA,IACpB;AACA,IAAA,OAAO,GAAA;AAAA,EACR,CAAA;AAIA,EAAA,MAAM,EAAE,GAAA,EAAK,IAAA,EAAM,GAAG,UAAS,GAAI,UAAA;AAEnC,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA,CAAM,GAAA;AAAA,IAAN;AAAA,MACC,GAAG,QAAA;AAAA,MACJ,MAAA,EAAQ,EAAE,EAAA,EAAI,SAAA,GAAY,aAAa,WAAA,EAAY;AAAA,MACnD,MAAA,EAAO,SAAA;AAAA,MACP,KAAA,EAAO;AAAA,QACN,EAAA,EAAI,UAAA,GAAa,gBAAA,GAAmB,SAAA,GAAY,UAAA,GAAa;AAAA,OAC9D;AAAA,MAEC,yBAAe,GAAA,CAAI,CAAC,wBACpBA,GAAAA,CAAC,MAAM,IAAA,EAAN,EAAyB,OAAO,GAAA,CAAI,KAAA,EAAO,YAAW,QAAA,EACrD,QAAA,EAAA,YAAA,CAAa,GAAG,CAAA,EAAA,EADD,GAAA,CAAI,GAErB,CACA;AAAA;AAAA,GACF;AAEF;AACC,WAAA,CAAyC,WAAA,GAAc,aAAA;AA4BjD,IAAM,yBAAA,GAA4B,CACxC,OAAA,MACK;AAAA,EACL,QAAA,EAAU,CAAC,KAAA,qBACVA,GAAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,GAAG,KAAA;AAAA,MACJ,SAAS,OAAA,CAAQ,OAAA;AAAA,MACjB,UAAU,OAAA,CAAQ,QAAA;AAAA,MAClB,UAAU,OAAA,CAAQ;AAAA;AAAA,GACnB;AAAA,EAED,MAAA,EAAQ,CAAC,KAAA,qBACRA,GAAAA,CAAC,eAAa,GAAG,KAAA,EAAO,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAEpD,CAAA;AC5LO,IAAM,WAAA,GAA0C,CAAC,KAAA,KAAU;AACjE,EAAA,MAAM,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAAS,GAAG,MAAK,GAAI,KAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,SAAA,IAAa,SAAA,CAAU,MAAA,GAAS,CAAA;AAErD,EAAA,uBACCK,IAAAA,CAAC,MAAA,EAAA,EAAO,GAAA,EAAK,GAAA,EACX,QAAA,EAAA;AAAA,IAAA,OAAA,oBACAA,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAG,IAAA;AAAA,QACJ,YAAA,EAAa,MAAA;AAAA,QACb,OAAA;AAAA,QACA,IAAA,EAAK,IAAA;AAAA,QACL,eAAA,EAAiB,eAAe,MAAA,GAAS,MAAA;AAAA,QAEzC,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,CAAA;AAAA,UACf;AAAA;AAAA;AAAA,KACF;AAAA,IAEA,YAAA,oBACAK,IAAAA,CAAC,QAAA,EAAA,EACA,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAO,IAAA,EACnB,QAAA,kBAAAK,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,GAAG,IAAA;AAAA,UACJ,IAAA,EAAK,IAAA;AAAA,UACL,YAAA,EAAa,MAAA;AAAA,UACb,iBAAA,EAAmB,UAAU,MAAA,GAAS,MAAA;AAAA,UAEtC,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAACyB,WAAAA,EAAA,EAAY,IAAA,EAAM,EAAA,EAAI,CAAA;AAAA,YACtB,UAAU,IAAA,GAAO;AAAA;AAAA;AAAA,OACnB,EACD,CAAA;AAAA,sBACAzB,GAAAA,CAAC,WAAA,EAAA,EACC,oBAAU,GAAA,CAAI,CAAC,6BACfK,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEA,OAAO,QAAA,CAAS,KAAA;AAAA,UAChB,SAAS,QAAA,CAAS,OAAA;AAAA,UAClB,OAAO,QAAA,CAAS,KAAA;AAAA,UAEf,QAAA,EAAA;AAAA,YAAA,QAAA,CAAS,IAAA;AAAA,YACT,QAAA,CAAS;AAAA;AAAA,SAAA;AAAA,QANL,QAAA,CAAS;AAAA,OAQf,CAAA,EACF;AAAA,KAAA,EACD;AAAA,GAAA,EAEF,CAAA;AAEF;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AC1DnB,IAAM,IAAA,GAA4B,CAAC,KAAA,KAAU;AACnD,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,MAAM,OAAA,EAAS,GAAG,UAAS,GAAI,KAAA;AAErD,EAAA,uBACCL,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACA,EAAA,EAAI,EAAE,IAAA,EAAM,GAAA,EAAK,IAAI,GAAA,EAAI;AAAA,MACzB,EAAA,EAAI,EAAE,IAAA,EAAM,GAAA,EAAK,IAAI,GAAA,EAAI;AAAA,MACzB,EAAA,EAAG,YAAA;AAAA,MACH,YAAA,EAAa,IAAA;AAAA,MACb,SAAA,EAAU,IAAA;AAAA,MACT,GAAG,QAAA;AAAA,MAEJ,QAAA,kBAAAK,KAACF,OAAA,EAAA,EAAM,GAAA,EAAK,EAAE,IAAA,EAAM,GAAA,EAAK,EAAA,EAAI,GAAA,EAAI,EAChC,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAACG,OAAA,EAAA,EAAM,SAAA,EAAU,KAAA,EAAM,OAAA,EAAQ,iBAC9B,QAAA,kBAAAE,IAAAA,CAAC,MAAA,EAAA,EAAO,GAAA,EAAI,GAAA,EACV,QAAA,EAAA;AAAA,UAAA,IAAA,oBACAL,IAAC,MAAA,EAAA,EAAO,IAAA,EAAK,KAAI,EAAA,EAAG,kBAAA,EAAmB,YAAA,EAAa,IAAA,EAClD,QAAA,EAAA,IAAA,EACF,CAAA;AAAA,0BAEDA,GAAAA,CAAC,IAAA,EAAA,EAAK,UAAA,EAAW,UAAU,QAAA,EAAA,KAAA,EAAM;AAAA,SAAA,EAClC,CAAA,EACD,CAAA;AAAA,wBACAA,IAACG,OAAA,EAAA,EAAM,GAAA,EAAI,KACT,QAAA,EAAA,OAAA,mBACAH,GAAAA,CAAC,OAAA,EAAA,EAAQ,CAAA,mBAETA,IAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAI,IAAA,EAAK,EAAI,QAAA,EAAA,KAAA,IAAS,CAAA,EAAE,CAAA,EAEvD;AAAA,OAAA,EACD;AAAA;AAAA,GACD;AAEF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AC3CZ,IAAM,YAAA,GAA4C,IAAA,CAAK,CAAC,KAAA,KAAU;AACxE,EAAA,MAAM,EAAE,QAAA,EAAU,GAAG,IAAA,EAAK,GAAI,KAAA;AAC9B,EAAA,MAAM,cAAA,GAAiB0B,OAAuB,IAAI,CAAA;AAClD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIZ,SAAS,KAAK,CAAA;AAEpD,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACrC,IAAA,MAAM,UAAU,cAAA,CAAe,OAAA;AAE/B,IAAA,MAAM,OAAA,GAAU,OAAA,GACb,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,WAAA,IAC/B,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,WAAA,IAC9B,OAAA,CAAQ,YAAA,GAAe,QAAQ,YAAA,GAC9B,KAAA;AAEH,IAAA,cAAA,CAAe,OAAO,CAAA;AAAA,EACvB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAa,UAAU,MAAM;AACf,IAAA,WAAA,EAAY;AACZ,IAAA,MAAM,UAAU,cAAA,CAAe,OAAA;AAC/B,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,WAAW,CAAA;AAC/C,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AACxB,IAAA,OAAO,MAAM;AACZ,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IACrB,CAAA;AAAA,EACD,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBACC3B,IAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,UAAU,QAAA,EAAU,CAAC,aACtC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACA,EAAA,EAAG,KAAA;AAAA,MACH,QAAA,EAAS,UAAA;AAAA,MACT,UAAA,EAAY,cAAc,QAAA,GAAW,QAAA;AAAA,MACpC,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,cAAA;AAAA,MAEJ;AAAA;AAAA,GACF,EACD,CAAA;AAEF,CAAC;AAED,YAAA,CAAa,WAAA,GAAc,cAAA;ACvCpB,IAAM,YAAsC,CAAC;AAAA,EACnD,IAAA;AAAA,EACA,YAAA,GAAe,MAAA;AAAA,EACf,GAAG;AACJ,CAAA,KAAM;AACL,EAAA,uBACCA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,OAAA,EAAQ,MAAA;AAAA,MACR,EAAA,EAAI,CAAA;AAAA,MACJ,iBAAA,EAAmB,CAAA;AAAA,MACnB,YAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACF;AAEF;AACA,SAAA,CAAU,WAAA,GAAc,WAAA","file":"index.js","sourcesContent":["import type React from \"react\";\nimport { Box } from \"../../primitives/layout\";\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 { Circle } from \"@chakra-ui/react\";\nimport { Filter as FilterIcon } from \"lucide-react\";\nimport type React from \"react\";\nimport { Box } from \"../../primitives/layout\";\nimport { Text } from \"../../primitives/typography\";\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 type React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { Box, Flex, HStack, Stack } from \"../../primitives/layout\";\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 } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { HStack, Stack } from \"../../primitives/layout\";\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 { Button, ButtonGroup } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { useRef, useState } from \"react\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport { Textarea } from \"../../primitives/textarea\";\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\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tvariant=\"solid\"\n\t\t\t\t\t\t\tcolorPalette=\"primary\"\n\t\t\t\t\t\t\tloading={isSubmitting}\n\t\t\t\t\t\t>\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 type React from \"react\";\nimport { Stack } from \"../../primitives/layout\";\nimport { Heading, Text } from \"../../primitives/typography\";\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 } 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 { HStack } from \"../../primitives/layout\";\nimport { Text } from \"../../primitives/typography\";\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 {\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 { Box } from \"../../primitives/layout\";\nimport { Table } from \"../../primitives/table\";\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 { ChevronDown, Plus } from \"lucide-react\";\nimport type React from \"react\";\nimport { HStack } from \"../../primitives/layout\";\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 { Square } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { Box, type BoxProps, HStack, Stack } from \"../../primitives/layout\";\nimport { Spinner } from \"../../primitives/spinner\";\nimport { Heading, Text } from \"../../primitives/typography\";\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 { memo, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"../../primitives/tooltip\";\nimport { Text, type TextProps } from \"../../primitives/typography\";\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 type React from \"react\";\nimport { Badge, type BadgeProps } from \"../../primitives/badge\";\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/dirty-dot/dirty-dot.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","FilterIcon","Stack","Box","jsxs","ClipboardButton","ChakraClipboard","IconButton","Clipboard","ClipboardInput","ClipboardLink","dayjs","utcPlugin","useState","e","Button","DataList","ChakraDataList","Input","createContext","useContext","chakra","Circle","chakraComponents","ChevronDown","useRef","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["import type React from \"react\";\nimport { Box } from \"../../primitives/layout\";\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 { Circle } from \"@chakra-ui/react\";\nimport { Filter as FilterIcon } from \"lucide-react\";\nimport type React from \"react\";\nimport { Box } from \"../../primitives/layout\";\nimport { Text } from \"../../primitives/typography\";\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 type React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { Box, Flex, HStack, Stack } from \"../../primitives/layout\";\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 } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { HStack, Stack } from \"../../primitives/layout\";\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 { Button, ButtonGroup } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { useRef, useState } from \"react\";\nimport { Box, Flex } from \"../../primitives/layout\";\nimport { Textarea } from \"../../primitives/textarea\";\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\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tvariant=\"solid\"\n\t\t\t\t\t\t\tcolorPalette=\"primary\"\n\t\t\t\t\t\t\tloading={isSubmitting}\n\t\t\t\t\t\t>\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 type { BoxProps } from \"../../primitives/layout\";\nimport { Box } from \"../../primitives/layout\";\n\nexport interface DirtyDotProps {\n\t/** Render nothing when false. @default true */\n\tactive?: boolean;\n\t/** aria-label for screen readers. @default \"ungespeicherte Änderungen\" */\n\tlabel?: string;\n\t/** Box prop overrides (ml, color, size if anyone needs them). */\n\tboxProps?: BoxProps;\n}\n\nexport function DirtyDot({\n\tactive = true,\n\tlabel = \"ungespeicherte Änderungen\",\n\tboxProps,\n}: DirtyDotProps) {\n\tif (!active) return null;\n\treturn (\n\t\t<Box\n\t\t\tas=\"span\"\n\t\t\tdisplay=\"inline-block\"\n\t\t\twidth=\"6px\"\n\t\t\theight=\"6px\"\n\t\t\tbg=\"yellow.500\"\n\t\t\tborderRadius=\"full\"\n\t\t\tml=\"2\"\n\t\t\taria-label={label}\n\t\t\t{...boxProps}\n\t\t/>\n\t);\n}\nDirtyDot.displayName = \"DirtyDot\";\n","import type React from \"react\";\nimport { Stack } from \"../../primitives/layout\";\nimport { Heading, Text } from \"../../primitives/typography\";\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 } 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 { HStack } from \"../../primitives/layout\";\nimport { Text } from \"../../primitives/typography\";\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 {\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 { Box } from \"../../primitives/layout\";\nimport { Table } from \"../../primitives/table\";\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 { ChevronDown, Plus } from \"lucide-react\";\nimport type React from \"react\";\nimport { HStack } from \"../../primitives/layout\";\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 { Square } from \"@chakra-ui/react\";\nimport type React from \"react\";\nimport { Box, type BoxProps, HStack, Stack } from \"../../primitives/layout\";\nimport { Spinner } from \"../../primitives/spinner\";\nimport { Heading, Text } from \"../../primitives/typography\";\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 { memo, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"../../primitives/tooltip\";\nimport { Text, type TextProps } from \"../../primitives/typography\";\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 type React from \"react\";\nimport { Badge, type BadgeProps } from \"../../primitives/badge\";\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,49 @@
|
|
|
1
|
+
import { LeavePageConfirmation } from './chunk-7KPPPE4U.js';
|
|
2
|
+
import { useBlocker } from 'react-router-dom';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
function useUnsavedChangesBlocker(isDirty, opts) {
|
|
6
|
+
const blocker = useBlocker(({ currentLocation, nextLocation }) => {
|
|
7
|
+
if (!isDirty) return false;
|
|
8
|
+
if (opts?.shouldBlock) {
|
|
9
|
+
return opts.shouldBlock({ currentLocation, nextLocation });
|
|
10
|
+
}
|
|
11
|
+
if (opts?.safePathPrefix && nextLocation.pathname.startsWith(opts.safePathPrefix)) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (nextLocation.pathname === currentLocation.pathname) return false;
|
|
15
|
+
return true;
|
|
16
|
+
});
|
|
17
|
+
return blocker;
|
|
18
|
+
}
|
|
19
|
+
function UnsavedChangesGuard({
|
|
20
|
+
isDirty,
|
|
21
|
+
safePathPrefix,
|
|
22
|
+
shouldBlock,
|
|
23
|
+
title,
|
|
24
|
+
message,
|
|
25
|
+
confirmLabel,
|
|
26
|
+
cancelLabel
|
|
27
|
+
}) {
|
|
28
|
+
const blocker = useUnsavedChangesBlocker(isDirty, {
|
|
29
|
+
safePathPrefix,
|
|
30
|
+
shouldBlock
|
|
31
|
+
});
|
|
32
|
+
return /* @__PURE__ */ jsx(
|
|
33
|
+
LeavePageConfirmation,
|
|
34
|
+
{
|
|
35
|
+
blocked: blocker.state === "blocked",
|
|
36
|
+
onConfirmLeave: () => blocker.proceed?.(),
|
|
37
|
+
onCancelLeave: () => blocker.reset?.(),
|
|
38
|
+
title,
|
|
39
|
+
message,
|
|
40
|
+
confirmLabel,
|
|
41
|
+
cancelLabel
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
UnsavedChangesGuard.displayName = "UnsavedChangesGuard";
|
|
46
|
+
|
|
47
|
+
export { UnsavedChangesGuard, useUnsavedChangesBlocker };
|
|
48
|
+
//# sourceMappingURL=chunk-77EOXDGW.js.map
|
|
49
|
+
//# sourceMappingURL=chunk-77EOXDGW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/navigation/use-unsaved-changes-blocker.ts","../src/navigation/unsaved-changes-guard.tsx"],"names":[],"mappings":";;;;AAgCO,SAAS,wBAAA,CACf,SACA,IAAA,EACU;AACV,EAAA,MAAM,UAAU,UAAA,CAAW,CAAC,EAAE,eAAA,EAAiB,cAAa,KAAM;AACjE,IAAA,IAAI,CAAC,SAAS,OAAO,KAAA;AACrB,IAAA,IAAI,MAAM,WAAA,EAAa;AACtB,MAAA,OAAO,IAAA,CAAK,WAAA,CAAY,EAAE,eAAA,EAAiB,cAAc,CAAA;AAAA,IAC1D;AACA,IAAA,IACC,MAAM,cAAA,IACN,YAAA,CAAa,SAAS,UAAA,CAAW,IAAA,CAAK,cAAc,CAAA,EACnD;AACD,MAAA,OAAO,KAAA;AAAA,IACR;AACA,IAAA,IAAI,YAAA,CAAa,QAAA,KAAa,eAAA,CAAgB,QAAA,EAAU,OAAO,KAAA;AAC/D,IAAA,OAAO,IAAA;AAAA,EACR,CAAC,CAAA;AACD,EAAA,OAAO,OAAA;AACR;AChBO,SAAS,mBAAA,CAAoB;AAAA,EACnC,OAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA;AACD,CAAA,EAA6B;AAC5B,EAAA,MAAM,OAAA,GAAU,yBAAyB,OAAA,EAAS;AAAA,IACjD,cAAA;AAAA,IACA;AAAA,GACA,CAAA;AACD,EAAA,uBACC,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACA,OAAA,EAAS,QAAQ,KAAA,KAAU,SAAA;AAAA,MAC3B,cAAA,EAAgB,MAAM,OAAA,CAAQ,OAAA,IAAU;AAAA,MACxC,aAAA,EAAe,MAAM,OAAA,CAAQ,KAAA,IAAQ;AAAA,MACrC,KAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AAAA,GACD;AAEF;AACA,mBAAA,CAAoB,WAAA,GAAc,qBAAA","file":"chunk-77EOXDGW.js","sourcesContent":["import type { Blocker, Location } from \"react-router-dom\";\nimport { useBlocker } from \"react-router-dom\";\n\nexport interface UnsavedChangesBlockerOptions {\n\t/**\n\t * Pathname prefix considered \"safe\" — navigation to a path starting with\n\t * this prefix does NOT trigger the block. Use for sibling tabs of the\n\t * same detail page (e.g. `/foo/bar/${id}/`). Trailing slash matters.\n\t */\n\tsafePathPrefix?: string;\n\t/**\n\t * Custom predicate. Receives react-router's blocker args. Takes\n\t * precedence over `safePathPrefix`. Default: block iff\n\t * `isDirty && nextLocation.pathname !== currentLocation.pathname`.\n\t */\n\tshouldBlock?: (args: {\n\t\tcurrentLocation: Location;\n\t\tnextLocation: Location;\n\t}) => boolean;\n}\n\n/**\n * Block in-app navigation while there are unsaved changes.\n *\n * Returns the raw react-router `Blocker` so the caller can render their own\n * dialog. For the conventional dialog UX use `<UnsavedChangesGuard/>` (which\n * composes this hook with `<LeavePageConfirmation/>`).\n *\n * Requires a react-router-dom **data router** (`createBrowserRouter` /\n * `createMemoryRouter` + `<RouterProvider/>`). The legacy `<BrowserRouter>` /\n * `<MemoryRouter>` JSX routers do not implement `useBlocker`.\n */\nexport function useUnsavedChangesBlocker(\n\tisDirty: boolean,\n\topts?: UnsavedChangesBlockerOptions,\n): Blocker {\n\tconst blocker = useBlocker(({ currentLocation, nextLocation }) => {\n\t\tif (!isDirty) return false;\n\t\tif (opts?.shouldBlock) {\n\t\t\treturn opts.shouldBlock({ currentLocation, nextLocation });\n\t\t}\n\t\tif (\n\t\t\topts?.safePathPrefix &&\n\t\t\tnextLocation.pathname.startsWith(opts.safePathPrefix)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (nextLocation.pathname === currentLocation.pathname) return false;\n\t\treturn true;\n\t});\n\treturn blocker;\n}\n","import { LeavePageConfirmation } from \"../primitives/leave-page-confirmation\";\nimport {\n\ttype UnsavedChangesBlockerOptions,\n\tuseUnsavedChangesBlocker,\n} from \"./use-unsaved-changes-blocker\";\n\nexport interface UnsavedChangesGuardProps extends UnsavedChangesBlockerOptions {\n\t/** Source of truth for whether there's unsaved work. */\n\tisDirty: boolean;\n\t/** Dialog title. @default \"You have unsaved changes\" */\n\ttitle?: string;\n\t/** Dialog message body. @default \"Are you sure you want to leave this page? You have unsaved changes.\" */\n\tmessage?: string;\n\t/** Confirm/leave label. @default \"Leave\" */\n\tconfirmLabel?: string;\n\t/** Cancel/stay label. @default \"Stay\" */\n\tcancelLabel?: string;\n}\n\n/**\n * Blocks in-app navigation while `isDirty` is true and renders\n * `LeavePageConfirmation` to ask the user to confirm. Non-form-aware —\n * pass any boolean (form `formState.isDirty`, Monaco buffer state, etc.).\n * For react-hook-form pages use `<DirtyFormGuard/>` which sources `isDirty`\n * from `useFormContext()` automatically.\n *\n * Use `safePathPrefix` to exempt sibling tabs of the same detail page:\n *\n * ```tsx\n * <UnsavedChangesGuard\n * isDirty={editor.hasAnyDirty}\n * safePathPrefix={`/template/templates/${templateId}/`}\n * />\n * ```\n */\nexport function UnsavedChangesGuard({\n\tisDirty,\n\tsafePathPrefix,\n\tshouldBlock,\n\ttitle,\n\tmessage,\n\tconfirmLabel,\n\tcancelLabel,\n}: UnsavedChangesGuardProps) {\n\tconst blocker = useUnsavedChangesBlocker(isDirty, {\n\t\tsafePathPrefix,\n\t\tshouldBlock,\n\t});\n\treturn (\n\t\t<LeavePageConfirmation\n\t\t\tblocked={blocker.state === \"blocked\"}\n\t\t\tonConfirmLeave={() => blocker.proceed?.()}\n\t\t\tonCancelLeave={() => blocker.reset?.()}\n\t\t\ttitle={title}\n\t\t\tmessage={message}\n\t\t\tconfirmLabel={confirmLabel}\n\t\t\tcancelLabel={cancelLabel}\n\t\t/>\n\t);\n}\nUnsavedChangesGuard.displayName = \"UnsavedChangesGuard\";\n"]}
|