@recursica/mantine-adapter 0.23.0 → 0.26.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/ARCHITECTURE.md +15 -0
- package/CHANGELOG.md +32 -0
- package/SETUP.md +79 -0
- package/USAGE.md +55 -0
- package/dist/mantine-adapter.cjs +1 -1
- package/dist/mantine-adapter.cjs.map +1 -1
- package/dist/mantine-adapter.css +1 -1
- package/dist/mantine-adapter.js +928 -878
- package/dist/mantine-adapter.js.map +1 -1
- package/dist/src/components/Accordion/Accordion.d.ts +4 -24
- package/dist/src/components/AssistiveElement/AssistiveElement.d.ts +1 -6
- package/dist/src/components/AutoComplete/AutoComplete.d.ts +7 -3
- package/dist/src/components/Avatar/Avatar.d.ts +2 -6
- package/dist/src/components/Badge/Badge.d.ts +2 -5
- package/dist/src/components/Breadcrumb/Breadcrumb.d.ts +1 -2
- package/dist/src/components/Button/Button.d.ts +2 -16
- package/dist/src/components/Card/Card.d.ts +4 -6
- package/dist/src/components/Checkbox/Checkbox.d.ts +4 -4
- package/dist/src/components/Checkbox/CheckboxGroup.d.ts +7 -3
- package/dist/src/components/Chip/Chip.d.ts +1 -10
- package/dist/src/components/Container/Container.d.ts +1 -11
- package/dist/src/components/DatePicker/DatePicker.d.ts +7 -3
- package/dist/src/components/Dropdown/Dropdown.d.ts +2 -4
- package/dist/src/components/Flex/Flex.d.ts +2 -11
- package/dist/src/components/FormControlLayout/FormControlLayout.d.ts +2 -7
- package/dist/src/components/FormControlWrapper/FormControlWrapper.d.ts +1 -15
- package/dist/src/components/Group/Group.d.ts +1 -10
- package/dist/src/components/HoverCard/HoverCard.d.ts +1 -11
- package/dist/src/components/Label/Label.d.ts +1 -14
- package/dist/src/components/Link/Link.d.ts +2 -11
- package/dist/src/components/Loader/Loader.d.ts +2 -7
- package/dist/src/components/Menu/Menu.d.ts +4 -3
- package/dist/src/components/Modal/Modal.d.ts +2 -1
- package/dist/src/components/NumberInput/NumberInput.d.ts +2 -4
- package/dist/src/components/Pagination/Pagination.d.ts +2 -4
- package/dist/src/components/Panel/Panel.d.ts +2 -9
- package/dist/src/components/Popover/Popover.d.ts +1 -11
- package/dist/src/components/Radio/Radio.d.ts +4 -4
- package/dist/src/components/Radio/RadioGroup.d.ts +7 -3
- package/dist/src/components/ReadOnlyField/ReadOnlyField.d.ts +2 -10
- package/dist/src/components/SegmentedControl/SegmentedControl.d.ts +1 -11
- package/dist/src/components/Slider/Slider.d.ts +7 -13
- package/dist/src/components/Stack/Stack.d.ts +2 -9
- package/dist/src/components/Stepper/Stepper.d.ts +2 -4
- package/dist/src/components/Switch/Switch.d.ts +4 -4
- package/dist/src/components/Switch/SwitchGroup.d.ts +7 -3
- package/dist/src/components/Table/Table.d.ts +2 -1
- package/dist/src/components/Tabs/Tabs.d.ts +2 -4
- package/dist/src/components/Text/Text.d.ts +2 -11
- package/dist/src/components/TextArea/TextArea.d.ts +2 -8
- package/dist/src/components/TextField/TextField.d.ts +7 -3
- package/dist/src/components/TimePicker/TimePicker.d.ts +2 -1
- package/dist/src/components/Timeline/Timeline.d.ts +2 -1
- package/dist/src/components/Timeline/TimelineItem.d.ts +1 -12
- package/dist/src/components/Title/Title.d.ts +1 -7
- package/dist/src/components/Toast/Toast.d.ts +1 -12
- package/dist/src/components/Tooltip/Tooltip.d.ts +1 -12
- package/dist/src/components/TransferList/TransferList.d.ts +2 -1
- package/dist/src/utils/RequireAccessibleLabel.d.ts +1 -18
- package/dist/src/utils/filterStylingProps.d.ts +1 -11
- package/llms.txt +16 -0
- package/package.json +9 -2
- package/src/components/Accordion/Accordion.module.css +1 -2
- package/src/components/Accordion/Accordion.tsx +15 -28
- package/src/components/AssistiveElement/AssistiveElement.tsx +1 -6
- package/src/components/AutoComplete/AutoComplete.tsx +4 -1
- package/src/components/Avatar/Avatar.tsx +1 -5
- package/src/components/Badge/Badge.tsx +1 -4
- package/src/components/Breadcrumb/Breadcrumb.tsx +1 -2
- package/src/components/Button/Button.module.css +18 -45
- package/src/components/Button/Button.tsx +1 -15
- package/src/components/Card/Card.tsx +11 -6
- package/src/components/Checkbox/Checkbox.module.css +6 -10
- package/src/components/Checkbox/Checkbox.tsx +19 -14
- package/src/components/Checkbox/CheckboxGroup.tsx +4 -1
- package/src/components/Chip/CHIP_IMPLEMENTATION_NOTES.md +4 -1
- package/src/components/Chip/Chip.module.css +36 -28
- package/src/components/Chip/Chip.tsx +8 -15
- package/src/components/Container/Container.tsx +1 -19
- package/src/components/DatePicker/DatePicker.module.css +2 -2
- package/src/components/DatePicker/DatePicker.tsx +4 -1
- package/src/components/Dropdown/Dropdown.tsx +4 -4
- package/src/components/Flex/Flex.tsx +2 -13
- package/src/components/FormControlLayout/FormControlLayout.module.css +6 -18
- package/src/components/FormControlLayout/FormControlLayout.tsx +4 -8
- package/src/components/FormControlWrapper/FormControlWrapper.tsx +2 -15
- package/src/components/Group/Group.tsx +2 -13
- package/src/components/HoverCard/HoverCard.tsx +1 -8
- package/src/components/Label/Label.module.css +5 -10
- package/src/components/Label/Label.tsx +1 -14
- package/src/components/Link/Link.module.css +4 -3
- package/src/components/Link/Link.stories.tsx +2 -3
- package/src/components/Link/Link.tsx +1 -10
- package/src/components/Loader/Loader.module.css +1 -2
- package/src/components/Loader/Loader.tsx +1 -7
- package/src/components/Menu/Menu.tsx +5 -1
- package/src/components/Modal/Modal.tsx +3 -1
- package/src/components/NumberInput/NumberInput.tsx +4 -4
- package/src/components/Pagination/Pagination.module.css +12 -24
- package/src/components/Pagination/Pagination.stories.tsx +0 -8
- package/src/components/Pagination/Pagination.tsx +5 -4
- package/src/components/Panel/Panel.tsx +1 -8
- package/src/components/Popover/Popover.tsx +1 -8
- package/src/components/Radio/Radio.module.css +4 -10
- package/src/components/Radio/Radio.tsx +19 -14
- package/src/components/Radio/RadioGroup.tsx +4 -1
- package/src/components/ReadOnlyField/ReadOnlyField.module.css +9 -18
- package/src/components/ReadOnlyField/ReadOnlyField.tsx +4 -11
- package/src/components/SegmentedControl/SegmentedControl.module.css +20 -44
- package/src/components/SegmentedControl/SegmentedControl.tsx +1 -11
- package/src/components/Slider/Slider.module.css +1 -4
- package/src/components/Slider/Slider.tsx +4 -12
- package/src/components/Stack/Stack.tsx +2 -11
- package/src/components/Stepper/Stepper.tsx +1 -7
- package/src/components/Switch/Switch.tsx +19 -11
- package/src/components/Switch/SwitchGroup.tsx +4 -1
- package/src/components/Table/Table.tsx +3 -1
- package/src/components/Tabs/Tabs.tsx +1 -7
- package/src/components/Text/Text.tsx +2 -16
- package/src/components/TextArea/TextArea.tsx +4 -8
- package/src/components/TextField/TextField.tsx +4 -1
- package/src/components/TimePicker/TimePicker.tsx +3 -1
- package/src/components/Timeline/Timeline.tsx +4 -1
- package/src/components/Timeline/TimelineItem.tsx +1 -12
- package/src/components/Title/Title.tsx +1 -6
- package/src/components/Toast/Toast.tsx +1 -13
- package/src/components/Tooltip/Tooltip.tsx +1 -9
- package/src/components/TransferList/TransferList.tsx +3 -1
- package/src/utils/RequireAccessibleLabel.ts +1 -12
- package/src/utils/filterStylingProps.ts +7 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mantine-adapter.cjs","sources":["../src/utils/filterStylingProps.ts","../src/components/Accordion/Accordion.tsx","../src/components/Label/Label.tsx","../src/components/FormControlLayout/FormControlLayout.tsx","../src/components/AssistiveElement/AssistiveElement.tsx","../src/components/FormControlWrapper/FormControlWrapper.tsx","../../adapter-common/dist/adapter-common.js","../src/components/ReadOnlyField/ReadOnlyTextField.tsx","../src/components/ReadOnlyField/ReadOnlyField.tsx","../src/components/ReadOnlyField/WithReadOnlyWrapper.tsx","../src/components/AutoComplete/AutoComplete.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Loader/Loader.tsx","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Checkbox/CheckboxGroup.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Container/Container.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/FileInput/FileInput.tsx","../src/components/FileUpload/FileUpload.tsx","../src/components/Flex/Flex.tsx","../src/components/Group/Group.tsx","../src/components/HoverCard/HoverCard.tsx","../src/components/Link/Link.tsx","../src/components/Menu/Menu.tsx","../src/components/Modal/Modal.tsx","../src/components/NumberInput/NumberInput.tsx","../src/components/Pagination/Pagination.icons.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Panel/Panel.tsx","../src/components/Popover/Popover.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/Radio/Radio.tsx","../src/components/ReadOnlyField/ReadOnlySwitchField.tsx","../src/components/ReadOnlyField/ReadOnlyBooleanField.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/Slider/Slider.tsx","../src/components/Stack/Stack.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Switch/SwitchGroup.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/Table.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Text/Text.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextField/TextField.tsx","../src/components/TimePicker/TimePicker.tsx","../src/components/Timeline/TimelineItem.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Title/Title.tsx","../src/components/Toast/Toast.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/TransferList/TransferList.tsx"],"sourcesContent":["/**\n * filterStylingProps\n *\n * This utility acts as the central gatekeeper for strict design-system adherence across\n * all Recursica components mapped over Mantine.\n *\n * PHILOSOPHY:\n * Recursica components are designed to be explicitly sandboxed tokens. Allowing external\n * `className` or Mantine style system props (`bg`, `p`, etc.) breaks the design system by\n * allowing developers to leak arbitrary designs into components.\n *\n * By default (`overStyled=false`), this utility actively prevents developers from overriding\n * internal component styles (such as background, colors, typography, or internal classNames).\n * It safely *permits* external layout overrides (like `margin` / `m`) so that components can\n * easily be spaced alongside other DOM elements.\n *\n * If a developer passes `overStyled={true}`, this filter allows all styling properties to\n * flow through to the underlying Mantine component natively, at the developer's own risk.\n *\n * @param props - The raw component props passed down to the wrapper\n * @param overStyled - Boolean toggle to allow raw external styling. Defaults to false.\n * @returns Sanitized component props safe for internal styling merging\n */\n\nexport const BLOCKED_STYLING_KEYS = [\n \"className\",\n \"classNames\",\n \"style\",\n \"styles\",\n \"vars\", // Internal structure hooks\n \"p\",\n \"px\",\n \"py\",\n \"pt\",\n \"pb\",\n \"pl\",\n \"pr\", // Padding\n \"bg\",\n \"c\",\n \"opacity\", // Color\n \"ff\",\n \"fz\",\n \"fw\",\n \"lts\",\n \"ta\",\n \"lh\",\n \"fs\",\n \"tt\",\n \"td\", // Typography\n \"bd\",\n \"bdw\",\n \"bds\",\n \"bdc\",\n \"bdr\", // Borders\n \"shadow\", // Effects\n \"w\",\n \"miw\",\n \"maw\",\n \"h\",\n \"mih\",\n \"mah\", // Dimensions\n] as const;\n\nexport type BlockedStylingKeys = (typeof BLOCKED_STYLING_KEYS)[number];\n\nexport type RecursicaSpacing =\n | \"rec-none\"\n | \"rec-sm\"\n | \"rec-default\"\n | \"rec-md\"\n | \"rec-lg\"\n | \"rec-xl\"\n | \"rec-2xl\";\n\nexport type RecursicaSize = \"small\" | \"default\" | \"large\";\n\nconst LAYOUT_PROPS = new Set([\n \"m\",\n \"my\",\n \"mx\",\n \"mt\",\n \"mb\",\n \"ml\",\n \"mr\",\n \"gap\",\n \"rowGap\",\n \"columnGap\",\n \"top\",\n \"left\",\n \"bottom\",\n \"right\",\n]);\n\nexport const SPACING_MAP: Record<string, string> = {\n \"rec-none\": \"var(--recursica_brand_dimensions_general_none)\",\n \"rec-sm\": \"var(--recursica_brand_dimensions_general_sm)\",\n \"rec-default\": \"var(--recursica_brand_dimensions_general_default)\",\n \"rec-md\": \"var(--recursica_brand_dimensions_general_md)\",\n \"rec-lg\": \"var(--recursica_brand_dimensions_general_lg)\",\n \"rec-xl\": \"var(--recursica_brand_dimensions_general_xl)\",\n \"rec-2xl\": \"var(--recursica_brand_dimensions_general_2xl)\",\n};\n\nexport type ForbiddenStyles = { [K in BlockedStylingKeys]?: never };\n\nexport type RecursicaOverStyled<T> =\n | (Omit<T, BlockedStylingKeys> &\n ForbiddenStyles & { overStyled?: false | undefined })\n | (T & { overStyled: true });\n\nexport function mapLayoutProps<T extends Record<string, unknown>>(props: T): T {\n const mapped = { ...props };\n for (const [key, value] of Object.entries(mapped)) {\n if (\n typeof value === \"string\" &&\n value.startsWith(\"rec-\") &&\n LAYOUT_PROPS.has(key)\n ) {\n if (value in SPACING_MAP) {\n (mapped as Record<string, unknown>)[key] = SPACING_MAP[value];\n }\n }\n }\n return mapped;\n}\n\nexport function filterStylingProps<T extends Record<string, unknown>>(\n props: T,\n overStyled?: boolean,\n): Partial<T> {\n if (overStyled) {\n return props;\n }\n\n const sanitized = { ...props };\n\n for (const prop of BLOCKED_STYLING_KEYS) {\n if (prop in sanitized) {\n delete sanitized[prop];\n }\n }\n\n // Intercept Recursica spacing tokens for valid layout properties\n for (const [key, value] of Object.entries(sanitized)) {\n if (\n typeof value === \"string\" &&\n value.startsWith(\"rec-\") &&\n LAYOUT_PROPS.has(key)\n ) {\n if (value in SPACING_MAP) {\n (sanitized as Record<string, unknown>)[key] = SPACING_MAP[value];\n }\n }\n }\n\n return sanitized;\n}\n","import React, { forwardRef } from \"react\";\nimport {\n Accordion as MantineAccordion,\n type AccordionProps as MantineAccordionProps,\n type AccordionItemProps,\n type AccordionControlProps,\n type AccordionPanelProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Accordion.module.css\";\n\n// ==== ACCORDION CONTAINER ====\nexport type AccordionProps = RecursicaOverStyled<MantineAccordionProps>;\n\nconst AccordionBase = function Accordion({\n variant = \"unstyled\",\n overStyled = false,\n ...rest\n}: AccordionProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind all deep CSS module references natively into the global class mapping schema\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n item: styles.item,\n control: styles.control,\n label: styles.label,\n chevron: styles.chevron,\n panel: styles.panel,\n content: styles.content,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineAccordion\n variant={variant}\n className={classNameProp}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineAccordionProps)}\n />\n );\n};\nAccordionBase.displayName = \"Accordion\";\n\n// ==== ACCORDION ITEM ====\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface RecursicaAccordionItemProps\n extends Omit<AccordionItemProps, \"className\"> {}\n// We need to omit and re-merge native props like in Badge\nexport type AccordionItemWrapperProps = RecursicaOverStyled<\n AccordionItemProps & {\n /**\n * When provided alongside `leftIcon` or independently, this auto-generates the Accordion Control and Panel DOM layers natively.\n */\n title?: React.ReactNode;\n\n /**\n * Leading icon explicitly mapped into the Mantine `Accordion.Control` leftSection boundary natively.\n */\n leftIcon?: React.ReactNode;\n\n /**\n * Toggles the presence of the bottom trailing divider native to AccordionItems.\n * @default true\n */\n divider?: boolean;\n }\n>;\n\nexport const AccordionItem = forwardRef<\n HTMLDivElement,\n AccordionItemWrapperProps\n>(function AccordionItem(\n { title, leftIcon, divider = true, children, overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const finalClass =\n [divider ? undefined : styles.noDivider, classNameProp]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // If the user utilizes the explicit 'title' prop from Recursica, we securely auto-construct the Mantine sub-hierarchy natively!\n // If not, we defer to raw composable children (meaning the integrator maps `<Accordion.Control>` manually).\n return (\n <MantineAccordion.Item\n ref={ref}\n className={finalClass}\n {...(sanitizedProps as unknown as AccordionItemProps)}\n >\n {title ? (\n <>\n <AccordionControl leftIcon={leftIcon}>{title}</AccordionControl>\n <AccordionPanel>{children}</AccordionPanel>\n </>\n ) : (\n children\n )}\n </MantineAccordion.Item>\n );\n});\nAccordionItem.displayName = \"AccordionItem\";\n\n// ==== ACCORDION CONTROL ====\nexport type AccordionControlWrapperProps = RecursicaOverStyled<\n AccordionControlProps & {\n /**\n * Leading icon explicitly mapped into the Mantine `Accordion.Control` leftSection boundary natively.\n */\n leftIcon?: React.ReactNode;\n }\n>;\n\nexport const AccordionControl = forwardRef<\n HTMLButtonElement,\n AccordionControlWrapperProps\n>(function AccordionControl(\n { leftIcon, children, overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineAccordion.Control\n ref={ref}\n className={classNameProp}\n icon={\n leftIcon ? (\n <span className={styles.iconLeftWrapper} aria-hidden>\n {leftIcon}\n </span>\n ) : undefined\n }\n {...(sanitizedProps as unknown as AccordionControlProps)}\n >\n {children}\n </MantineAccordion.Control>\n );\n});\nAccordionControl.displayName = \"AccordionControl\";\n\n// ==== ACCORDION PANEL ====\nexport type AccordionPanelWrapperProps =\n RecursicaOverStyled<AccordionPanelProps>;\n\nexport const AccordionPanel = forwardRef<\n HTMLDivElement,\n AccordionPanelWrapperProps\n>(function AccordionPanel({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineAccordion.Panel\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as AccordionPanelProps)}\n />\n );\n});\nAccordionPanel.displayName = \"AccordionPanel\";\n\n// ==== DOT NOTATION EXPORT ====\ntype AccordionComponent = typeof AccordionBase & {\n Item: typeof AccordionItem;\n Control: typeof AccordionControl;\n Panel: typeof AccordionPanel;\n};\n\nexport const Accordion = AccordionBase as AccordionComponent;\nAccordion.Item = AccordionItem;\nAccordion.Control = AccordionControl;\nAccordion.Panel = AccordionPanel;\n","import React, { forwardRef } from \"react\";\nimport { Input, type InputLabelProps } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Label.module.css\";\n\nexport interface RecursicaLabelProps {\n /** Specifies the sizing metrics natively mapping the Label boundaries. */\n labelSize?: \"default\" | \"small\" | \"md\";\n /** Overall alignment directive for the label strings natively forcing Left/Right justification. */\n labelAlignment?: \"left\" | \"right\";\n /** Injects an indicator text block alongside the label. Can be boolean (`true` maps to '(Optional)') or custom React nodes. */\n labelOptionalText?: boolean | React.ReactNode;\n /** When true, forces the native Edit Icon to replace the standard asterisk visually. */\n labelWithEditIcon?: boolean;\n /** Custom action area to render alongside the label instead of the default edit icon. */\n labelActionArea?: React.ReactNode;\n /** Interaction hook invoked whenever a generated edit icon block natively triggers a click event. */\n onLabelEditClick?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nexport type LabelProps = RecursicaOverStyled<\n Omit<InputLabelProps, \"size\"> & RecursicaLabelProps\n>;\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(function Label(\n {\n labelSize = \"default\",\n labelAlignment,\n required = false,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n children,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const resolvedAlignment = labelAlignment || \"left\";\n\n let resolvedOptionalText: React.ReactNode | undefined;\n if (!required) {\n if (labelOptionalText === true) resolvedOptionalText = \"optional\";\n else if (labelOptionalText) resolvedOptionalText = labelOptionalText;\n }\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n label: styles.root,\n required: styles.required,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.label = o.label\n ? `${styles.root} ${o.label}`\n : styles.root;\n mergedClassNames.required = o.required\n ? `${styles.required} ${o.required}`\n : styles.required;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <Input.Label\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n data-size={labelSize}\n data-alignment={resolvedAlignment}\n required={required && !labelWithEditIcon}\n {...sanitizedProps}\n >\n <span className={styles.labelText}>{children}</span>\n {resolvedOptionalText && (\n <span className={styles.optionalText}>\n {typeof resolvedOptionalText === \"string\"\n ? `(${resolvedOptionalText})`\n : resolvedOptionalText}\n </span>\n )}\n {labelActionArea ? (\n <span className={styles.actionAreaWrapper}>{labelActionArea}</span>\n ) : labelWithEditIcon ? (\n <button\n type=\"button\"\n className={styles.editIconWrapper}\n data-replaces-asterisk={required ? \"true\" : undefined}\n onClick={onLabelEditClick}\n aria-label=\"Edit\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.5303 2.46967C11.8232 2.17678 12.2981 2.17678 12.591 2.46967L13.5303 3.40898C13.8232 3.70188 13.8232 4.17675 13.5303 4.46964L5.61288 12.3871C5.45268 12.5473 5.24434 12.6483 5.01809 12.6766L2.39534 13.0044C2.10091 13.0412 1.83856 12.7789 1.87538 12.4845L2.2032 9.86175C2.23147 9.63551 2.3325 9.42716 2.4927 9.26696L11.5303 2.46967Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </Input.Label>\n );\n});\n\nLabel.displayName = \"Label\";\n","import React, { forwardRef } from \"react\";\nimport styles from \"./FormControlLayout.module.css\";\n\nexport interface FormControlLayoutProps\n extends React.HTMLAttributes<HTMLDivElement> {\n formLayout?: \"stacked\" | \"side-by-side\";\n labelSize?: \"default\" | \"small\" | \"md\";\n controlMaxWidth?: string;\n controlMinWidth?: string;\n leftSection?: React.ReactNode;\n children?: React.ReactNode;\n}\n\n/**\n * A layout component used to correctly position form inputs alongside their labels.\n *\n * **When to use this:**\n * Typically, you should use `FormControlWrapper` instead, which uses this component\n * under the hood to handle layout automatically.\n *\n * However, this component is useful when you need to align standalone inputs\n * (like a `Switch` or `Checkbox` without a label) so they perfectly match the spacing\n * and alignment of your other form fields in a `side-by-side` layout.\n */\nexport const FormControlLayout = forwardRef<\n HTMLDivElement,\n FormControlLayoutProps\n>(function FormControlLayout(\n {\n formLayout = \"stacked\",\n labelSize = \"default\",\n controlMaxWidth,\n controlMinWidth,\n leftSection,\n children,\n className,\n style,\n ...rest\n },\n ref,\n) {\n const rootClass = className ? `${styles.root} ${className}` : styles.root;\n\n // We explicitly render leftSection even if null in side-by-side to preserve the empty grid column bounding constraints.\n // In stacked layouts, if there is no label, we omit the wrapper to avoid unnecessary padding.\n const hasLeftContent = leftSection !== undefined && leftSection !== null;\n const shouldRenderLeft = hasLeftContent || formLayout === \"side-by-side\";\n\n return (\n <div\n ref={ref}\n className={rootClass}\n data-form-layout={formLayout}\n style={\n {\n ...style,\n ...(controlMaxWidth\n ? { \"--form-control-max-width\": controlMaxWidth }\n : {}),\n ...(controlMinWidth\n ? { \"--form-control-min-width\": controlMinWidth }\n : {}),\n } as React.CSSProperties\n }\n {...rest}\n >\n {shouldRenderLeft && (\n <div className={styles.leftSection} data-size={labelSize}>\n {leftSection}\n </div>\n )}\n\n <div className={styles.rightSection}>{children}</div>\n </div>\n );\n});\n\nFormControlLayout.displayName = \"FormControlLayout\";\n","import React, { forwardRef } from \"react\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./AssistiveElement.module.css\";\n\nexport interface RecursicaAssistiveElementProps {\n /** The semantic variant driving the icon and text colors natively mapped across the UI Kit tokens. */\n assistiveVariant?: \"help\" | \"error\";\n /** Explicitly toggle the rendering of the variant-specific SVG bounding box. */\n assistiveWithIcon?: boolean;\n}\n\nexport type AssistiveElementProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement> & RecursicaAssistiveElementProps\n>;\n\nconst InfoIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n);\n\nconst AlertIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n);\n\nexport const AssistiveElement = forwardRef<\n HTMLDivElement,\n AssistiveElementProps\n>(function AssistiveElement(\n {\n assistiveVariant = \"help\",\n assistiveWithIcon = true,\n children,\n className,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const rootClass = styles.root;\n const finalClass = className ? `${rootClass} ${className}` : rootClass;\n\n const IconComponent = assistiveVariant === \"error\" ? AlertIcon : InfoIcon;\n\n return (\n <div\n ref={ref}\n className={finalClass}\n data-variant={assistiveVariant}\n style={restRecord.style as React.CSSProperties}\n {...restRecord} // Spread standard HTML attributes (like id, aria-*, role) natively.\n >\n {assistiveWithIcon && (\n <span className={styles.iconWrapper}>\n <IconComponent />\n </span>\n )}\n <span className={styles.textWrapper}>{children}</span>\n </div>\n );\n});\n\nAssistiveElement.displayName = \"AssistiveElement\";\n","import React, { forwardRef, useId } from \"react\";\nimport { type InputWrapperProps } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { Label, type RecursicaLabelProps } from \"../Label/Label\";\nimport { FormControlLayout } from \"../FormControlLayout/FormControlLayout\";\nimport { AssistiveElement } from \"../AssistiveElement/AssistiveElement\";\nimport styles from \"./FormControlWrapper.module.css\";\n\nexport interface RecursicaFormControlWrapperProps extends RecursicaLabelProps {\n /** Overall structural flow mapping the Form Control natively cascading down to Label and Input logic. */\n formLayout?: \"stacked\" | \"side-by-side\";\n /** Securely replaces standard Mantine descriptions safely providing standard Assistive properties. */\n assistiveText?: React.ReactNode;\n /** Explicit toggle to suppress the Info icon rendering natively alongside the assistiveText. Defaults to true. */\n assistiveWithIcon?: boolean;\n /** Custom action area to render alongside the label instead of the default edit icon. */\n labelActionArea?: React.ReactNode;\n /** Pass the native maximum width design variable dynamically bounding the specific wrapper width exclusively. */\n controlMaxWidth: string | undefined;\n /** Pass the native minimum width design variable dynamically bounding the specific wrapper width exclusively. */\n controlMinWidth: string | undefined;\n}\n\nexport type FormControlWrapperProps = RecursicaOverStyled<\n Omit<InputWrapperProps, \"labelProps\" | \"inputWrapperOrder\"> &\n RecursicaFormControlWrapperProps\n>;\n\nexport const FormControlWrapper = forwardRef<\n HTMLDivElement,\n FormControlWrapperProps\n>(function FormControlWrapper(\n {\n formLayout,\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n description,\n assistiveText,\n assistiveWithIcon = true,\n controlMaxWidth,\n controlMinWidth,\n error,\n required,\n withAsterisk,\n id: userProvidedId,\n children,\n className,\n overStyled = false,\n labelElement, // Extracted safely preventing bleeding into HTML domains\n ...rest\n },\n ref,\n) {\n // Generate a reliable ID to map the Label's HTML context down to the component array natively.\n const generatedId = useId();\n const id = userProvidedId || `recursica-fc-${generatedId}`;\n\n // Evaluate explicit assistive fallbacks ensuring assistiveText correctly prioritizes natively over underlying Mantine configurations!\n const resolvedAssistive = assistiveText || description;\n const assistiveId = resolvedAssistive ? `${id}-assistive` : undefined;\n const errorId = error ? `${id}-error` : undefined;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const classNameProp =\n className || (restRecord.className as string | undefined);\n const rootClass = styles.root;\n const finalClass = classNameProp\n ? `${rootClass} ${classNameProp}`\n : rootClass;\n\n // Clone ARIA identifiers directly back down into the nested children wrapper so screen-readers natively hook the external strings\n const content = React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<Record<string, unknown>>,\n {\n ...(resolvedAssistive &&\n !(children.props as Record<string, unknown>)[\"aria-describedby\"]\n ? { \"aria-describedby\": assistiveId }\n : {}),\n ...(error &&\n !(children.props as Record<string, unknown>)[\"aria-errormessage\"]\n ? { \"aria-errormessage\": errorId }\n : {}),\n },\n )\n : children;\n\n const labelNode = label ? (\n <Label\n id={id} // Directly binds ARIA references down\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n required={withAsterisk ?? required}\n // Manually propagate relevant structural logic if underlying groups dictate Label to act as generic wrapper\n {...(labelElement === \"div\" ? { as: \"div\" } : {})}\n >\n {label}\n </Label>\n ) : undefined;\n\n return (\n <FormControlLayout\n ref={ref}\n className={finalClass}\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n leftSection={labelNode}\n {...restRecord}\n >\n {/*\n The Core Input Wrapper & Controls\n Nakedly inject the actual field elements alongside natively bridged Assistive components mapped dynamically.\n */}\n <div className={styles.inputSection}>\n {content}\n\n {error && (\n <AssistiveElement\n id={errorId}\n assistiveVariant=\"error\"\n assistiveWithIcon={assistiveWithIcon}\n >\n {error}\n </AssistiveElement>\n )}\n\n {!error && resolvedAssistive && (\n <AssistiveElement\n id={assistiveId}\n assistiveVariant=\"help\"\n assistiveWithIcon={assistiveWithIcon}\n >\n {resolvedAssistive}\n </AssistiveElement>\n )}\n </div>\n </FormControlLayout>\n );\n});\n\nFormControlWrapper.displayName = \"FormControlWrapper\";\n","import { jsx as c, Fragment as f } from \"react/jsx-runtime\";\nimport h, { forwardRef as l, useEffect as p } from \"react\";\nconst E = \"_root_1qhn7_3\", _ = \"_contents_1qhn7_18\", r = {\n root: E,\n contents: _\n}, $ = l(function({ layer: o, contentsOnly: e, children: i, className: n, style: u, ...m }, d) {\n const y = e ? n ? `${r.root} ${r.contents} ${n}` : `${r.root} ${r.contents}` : n ? `${r.root} ${n}` : r.root;\n return /* @__PURE__ */ c(\n \"div\",\n {\n ref: d,\n className: y,\n style: u,\n ...e ? {} : { \"data-recursica-layer\": String(o) },\n ...m,\n children: i\n }\n );\n});\n$.displayName = \"Layer\";\nconst a = ({ emptyText: t = \"N/A\" }) => /* @__PURE__ */ c(h.Fragment, { children: t });\na.displayName = \"EmptyValueRenderer\";\na.check = (t) => t == null || t === \"\" || Array.isArray(t) && t.length === 0;\nconst s = \"data-recursica-theme\";\nfunction g({\n children: t,\n theme: o = \"light\"\n}) {\n return p(() => {\n const e = document.documentElement;\n return e.setAttribute(s, o), () => {\n e.removeAttribute(s);\n };\n }, [o]), /* @__PURE__ */ c(f, { children: t });\n}\nexport {\n a as EmptyValueRenderer,\n $ as Layer,\n g as RecursicaThemeProvider\n};\n//# sourceMappingURL=adapter-common.js.map\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\nimport { Box } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nexport interface RecursicaReadOnlyTextFieldProps {\n /** The value strictly rendered as text output */\n value?: any;\n}\n\nexport type ReadOnlyTextFieldProps =\n RecursicaOverStyled<RecursicaReadOnlyTextFieldProps>;\n\nexport const ReadOnlyTextField: React.FC<ReadOnlyTextFieldProps> = ({\n value,\n overStyled = false,\n ...rest\n}) => {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <Box\n component=\"p\"\n className={\n classNameProp\n ? `${styles.textField} ${classNameProp}`\n : styles.textField\n }\n {...sanitizedProps}\n >\n {value != null\n ? React.isValidElement(value)\n ? value\n : Array.isArray(value)\n ? value.join(\", \")\n : String(value)\n : \"\"}\n </Box>\n );\n};\n\nReadOnlyTextField.displayName = \"ReadOnlyTextField\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n ReadOnlyFieldType,\n EmptyValueRenderer,\n type ReadOnlyControlProps,\n} from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type FormControlWrapperProps,\n FormControlWrapper,\n} from \"../FormControlWrapper/FormControlWrapper\";\nimport { ReadOnlyTextField } from \"./ReadOnlyTextField\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nexport interface RecursicaReadOnlyFieldProps\n extends Omit<\n FormControlWrapperProps,\n \"children\" | \"overStyled\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n Pick<ReadOnlyControlProps, \"emptyValueComponent\"> {\n /** The specific value to be rendered in read-only mode explicitly matching the original field input */\n value?: any;\n /** The data type formatting rules bounding how the string is presented to the user */\n type?: ReadOnlyFieldType;\n /** Pass the native maximum width design variable dynamically bounding the specific wrapper width exclusively. */\n controlMaxWidth?: string | undefined;\n /** Pass the native minimum width design variable dynamically bounding the specific wrapper width exclusively. */\n controlMinWidth?: string | undefined;\n}\n\nexport type ReadOnlyFieldProps =\n RecursicaOverStyled<RecursicaReadOnlyFieldProps>;\n\n/**\n * A native generic form control wrapper exclusively responsible for displaying fixed data.\n * Internally maps to structural ReadOnly primitive blocks bridging standard `FormControlWrapper` layouts natively.\n */\nexport const ReadOnlyField = forwardRef<HTMLDivElement, ReadOnlyFieldProps>(\n function ReadOnlyField(\n {\n value,\n type = \"text\",\n emptyValueComponent,\n overStyled = false,\n className,\n style,\n ...rest\n },\n ref,\n ) {\n let content: React.ReactNode = null;\n\n // We still pass sanitized properties (like className/style/etc) strictly down.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const Renderer = emptyValueComponent || EmptyValueRenderer;\n const isValueEmpty = (Renderer as any).check\n ? (Renderer as any).check(value)\n : EmptyValueRenderer.check(value);\n\n const displayValue = isValueEmpty ? <Renderer value={value} /> : value;\n\n switch (type) {\n case \"boolean\":\n content = (\n <ReadOnlyTextField\n value={\n value === true ? \"True\" : value === false ? \"False\" : displayValue\n }\n overStyled={overStyled as true}\n />\n );\n break;\n case \"switch\":\n content = (\n <ReadOnlyTextField\n value={\n value === true ? \"On\" : value === false ? \"Off\" : displayValue\n }\n overStyled={overStyled as true}\n />\n );\n break;\n case \"text\":\n default:\n content = (\n <ReadOnlyTextField\n value={displayValue}\n overStyled={overStyled as true}\n />\n );\n break;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <FormControlWrapper\n ref={ref}\n overStyled={overStyled as true}\n className={wrapperClass}\n style={style}\n {...(sanitizedProps as any)}\n >\n {content}\n </FormControlWrapper>\n );\n },\n);\n\nReadOnlyField.displayName = \"ReadOnlyField\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport { type ReadOnlyFieldType } from \"@recursica/adapter-common\";\nimport {\n FormControlWrapper,\n type FormControlWrapperProps,\n} from \"../FormControlWrapper/FormControlWrapper\";\nimport { ReadOnlyField } from \"./ReadOnlyField\";\n\nexport interface WithReadOnlyWrapperProps\n extends Omit<FormControlWrapperProps, \"children\" | \"overStyled\"> {\n /** Injects whether the field defaults to reading mode natively */\n readOnly?: boolean;\n /** Explicit React component directly overtaking the baseline text renderer when read-only mode is active */\n readOnlyComponent?: React.ElementType<any>;\n /** Custom renderer explicitly responsible for formatting missing/empty value mappings (overriding default 'N/A') */\n emptyValueComponent?: React.ElementType<{ value?: any }>;\n /** The full native props dictionary securely forwarded into the custom readOnlyComponent if active */\n readOnlyNativeProps?: any;\n /** Instructs the underlying generic ReadOnlyField which raw visual structure to bridge automatically */\n readOnlyType?: ReadOnlyFieldType;\n /** The isolated raw data value intercepted explicitly into the ReadOnly formatters */\n readOnlyValue?: any;\n /** Safely enables deep Mantine overrides transparently bypassing block filters */\n overStyled?: boolean;\n /** The nested active node dynamically exposed exclusively when read-only bounds are disabled */\n activeComponent: React.ReactNode;\n}\n\n/**\n * Universal execution barrier trapping readOnly states globally.\n * Natively delegates active logic down avoiding duplicative internal component bindings dynamically.\n */\nexport const WithReadOnlyWrapper = forwardRef<\n HTMLDivElement,\n WithReadOnlyWrapperProps\n>(function WithReadOnlyWrapper(\n {\n readOnly,\n readOnlyComponent,\n readOnlyType = \"text\",\n readOnlyValue,\n readOnlyNativeProps,\n emptyValueComponent,\n activeComponent,\n overStyled,\n onLabelEditClick,\n ...wrapperProps\n },\n ref,\n) {\n if (readOnly) {\n if (readOnlyComponent) {\n const ReadOnlyComponent = readOnlyComponent;\n return (\n <FormControlWrapper\n ref={ref}\n {...wrapperProps}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n >\n <ReadOnlyComponent {...readOnlyNativeProps} />\n </FormControlWrapper>\n );\n }\n\n return (\n <ReadOnlyField\n ref={ref}\n type={readOnlyType}\n value={readOnlyValue}\n emptyValueComponent={emptyValueComponent}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n {...wrapperProps}\n />\n );\n }\n\n // Active Standard Execution natively forwarding bound children implicitly\n return (\n <FormControlWrapper\n ref={ref}\n {...wrapperProps}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n >\n {activeComponent}\n </FormControlWrapper>\n );\n});\n\nWithReadOnlyWrapper.displayName = \"WithReadOnlyWrapper\";\n","import React, { forwardRef } from \"react\";\nimport {\n Autocomplete as MantineAutocomplete,\n type AutocompleteProps as MantineAutocompleteProps,\n type InputWrapperProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./AutoComplete.module.css\";\n\nexport interface RecursicaAutoCompleteProps\n extends Omit<\n MantineAutocompleteProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\"\n >,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps {}\n\nexport type AutoCompleteProps = RecursicaOverStyled<RecursicaAutoCompleteProps>;\n\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(\n function AutoComplete(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n option: styles.option,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.section = o.section\n ? `${styles.section} ${o.section}`\n : styles.section;\n mergedClassNames.dropdown = o.dropdown\n ? `${styles.dropdown} ${o.dropdown}`\n : styles.dropdown;\n mergedClassNames.option = o.option\n ? `${styles.option} ${o.option}`\n : styles.option;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_autocomplete_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_autocomplete_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineAutocomplete\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as MantineAutocompleteProps)}\n />\n }\n />\n );\n },\n);\n\nAutoComplete.displayName = \"AutoComplete\";\n","import React, { forwardRef } from \"react\";\nimport {\n Avatar as MantineAvatar,\n type AvatarProps as MantineAvatarProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Avatar.module.css\";\n\nexport interface RecursicaAvatarProps {\n size?: \"small\" | \"default\" | \"large\";\n variant?: \"solid\" | \"outline\" | \"ghost\";\n icon?: React.ReactNode;\n}\n\nexport type AvatarProps = RecursicaOverStyled<\n Omit<MantineAvatarProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaAvatarProps\n>;\n\nconst _Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n size = \"default\",\n variant = \"solid\",\n icon,\n children,\n src,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const mapVariant = {\n solid: \"filled\",\n outline: \"outline\",\n ghost: \"transparent\",\n } as const;\n\n const mapSize = {\n default: \"md\",\n small: \"sm\",\n large: \"lg\",\n } as const;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Determine semantic style based on provided props\n let computedStyle = \"text\";\n if (src) {\n computedStyle = \"image\";\n } else if (icon) {\n computedStyle = \"icon\";\n }\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n image: styles.image,\n placeholder: styles.placeholder,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.image = o.image\n ? `${styles.image} ${o.image}`\n : styles.image;\n mergedClassNames.placeholder = o.placeholder\n ? `${styles.placeholder} ${o.placeholder}`\n : styles.placeholder;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineAvatar\n ref={ref}\n className={classNameProp}\n classNames={mergedClassNames}\n variant={mapVariant[variant]}\n size={mapSize[size]}\n src={src}\n data-variant={variant}\n data-size={size}\n data-style={computedStyle}\n {...sanitizedProps}\n >\n {icon != null ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : children != null ? (\n <span className={styles.textWrapper}>{children}</span>\n ) : undefined}\n </MantineAvatar>\n );\n});\n_Avatar.displayName = \"Avatar\";\n\n/**\n * Recursica Avatar component wrapping Mantine's Avatar.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n */\nexport const Avatar = createPolymorphicComponent<\"div\", AvatarProps>(_Avatar);\n","import { forwardRef } from \"react\";\nimport {\n Badge as MantineBadge,\n type BadgeProps as MantineBadgeProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Badge.module.css\";\n\nexport interface RecursicaBadgeProps {\n /** Map to the component styles defined in variables */\n variant?: \"alert\" | \"primary-color\" | \"success\" | \"warning\";\n}\n\nexport type BadgeProps = RecursicaOverStyled<\n Omit<MantineBadgeProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaBadgeProps\n>;\n\nconst _Badge = forwardRef<HTMLDivElement, BadgeProps>(function Badge(\n { variant = \"primary-color\", overStyled = false, ...rest },\n ref,\n) {\n // Strip all visual override injections unless developer has specifically opted into overStyling.\n // External layout props like margins are safely preserved.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n section: styles.section,\n label: styles.label,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.section = o.section ?? styles.section;\n mergedClassNames.label = o.label ?? styles.label;\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineBadge\n ref={ref}\n variant=\"filled\" // We manage visual style purely through our CSS variables mapping\n data-variant={variant}\n {...sanitizedProps}\n className={finalClass}\n classNames={mergedClassNames}\n />\n );\n});\n_Badge.displayName = \"Badge\";\n\n/**\n * Recursica Badge component wrapping Mantine's Badge.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n */\nexport const Badge = createPolymorphicComponent<\"div\", BadgeProps>(_Badge);\n","import { forwardRef } from \"react\";\nimport {\n Breadcrumbs as MantineBreadcrumbs,\n type BreadcrumbsProps as MantineBreadcrumbsProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Breadcrumb.module.css\";\n\n// Currently there are no Recursica prop additions specific to Breadcrumbs (like size or variant)\n// according to recursica_ui-kit.json\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface RecursicaBreadcrumbProps {}\n\nexport type BreadcrumbProps = RecursicaOverStyled<\n Omit<MantineBreadcrumbsProps, \"variant\" | \"size\"> & RecursicaBreadcrumbProps\n>;\n\nexport const Breadcrumb = forwardRef<HTMLDivElement, BreadcrumbProps>(\n function Breadcrumb({ overStyled = false, separator = \">\", ...rest }, ref) {\n const sanitizedProps = filterStylingProps(\n { separator, ...rest },\n overStyled,\n );\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n separator: styles.separator,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>)\n .classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.separator = o.separator\n ? `${styles.separator} ${o.separator}`\n : styles.separator;\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineBreadcrumbs\n ref={ref}\n {...(sanitizedProps as unknown as MantineBreadcrumbsProps)}\n className={finalClass}\n classNames={mergedClassNames}\n />\n );\n },\n);\n\nBreadcrumb.displayName = \"Breadcrumb\";\n","import { forwardRef } from \"react\";\nimport {\n Loader as MantineLoader,\n type LoaderProps as MantineLoaderProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n type RecursicaSize,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Loader.module.css\";\n\nexport interface RecursicaLoaderProps {\n /** Map to the component styles defined in variables */\n variant?: \"oval\" | \"bars\" | \"dots\";\n /** Map to Recursica sizes */\n size?: \"sm\" | \"md\" | \"lg\" | RecursicaSize;\n}\n\nexport type LoaderProps = RecursicaOverStyled<\n Omit<MantineLoaderProps, \"variant\" | \"size\" | \"type\"> & RecursicaLoaderProps\n>;\n\nexport const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(\n { variant = \"oval\", size = \"default\", overStyled = false, ...rest },\n ref,\n) {\n const mapSize = {\n sm: \"small\",\n md: \"default\",\n lg: \"large\",\n small: \"small\",\n default: \"default\",\n large: \"large\",\n } as const;\n\n const resolvedSize = mapSize[size] || \"default\";\n\n // Strip all visual override injections unless developer has specifically opted into overStyling.\n // External layout props like margins are safely preserved.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineLoader\n ref={ref}\n type={variant}\n data-variant={variant}\n data-size={resolvedSize}\n {...sanitizedProps}\n className={finalClass}\n classNames={mergedClassNames}\n />\n );\n});\n\nLoader.displayName = \"Loader\";\n","import React, { forwardRef } from \"react\";\nimport { Loader } from \"../Loader/Loader\";\nimport type { RecursicaLoaderProps } from \"../Loader/Loader\";\nimport {\n Button as MantineButton,\n type ButtonProps as MantineButtonProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Button.module.css\";\n\nexport interface RecursicaButtonProps {\n /** The visual style variant of the button */\n variant?: \"solid\" | \"outline\" | \"text\";\n /** The size of the button */\n size?: \"default\" | \"small\";\n /** An optional icon element to display to the left of the button text. Replaces Mantine's leftSection. */\n icon?: React.ReactNode;\n /** Which Recursica Loader variant to use */\n loaderVariant?: RecursicaLoaderProps[\"variant\"];\n /** The size variant for the loader */\n loaderSize?: RecursicaLoaderProps[\"size\"];\n /** Whether to use the Recursica loader or fallback to the Mantine loader */\n useRecursicaLoader?: boolean;\n}\n\nexport type ButtonProps = RecursicaOverStyled<\n Omit<MantineButtonProps, \"variant\" | \"size\" | \"leftSection\" | \"fullWidth\"> &\n RecursicaButtonProps\n>;\n\nfunction hasVisibleChildren(children: React.ReactNode): boolean {\n if (children == null || children === \"\") return false;\n if (typeof children === \"string\") return children.trim() !== \"\";\n return true;\n}\n\nconst _Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"solid\",\n size = \"default\",\n icon,\n children,\n overStyled = false,\n loaderVariant = \"oval\",\n loaderSize,\n useRecursicaLoader = true,\n ...rest\n },\n ref,\n) {\n const mapVariant = {\n solid: \"filled\",\n outline: \"outline\",\n text: \"subtle\",\n } as const;\n\n const mapSize = {\n default: \"md\",\n small: \"sm\",\n } as const;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Explicitly delete blocked semantic expansion dimension props\n delete restRecord[\"fullWidth\"];\n\n const hasLeftSection = !!icon || !!restRecord[\"leftSection\"];\n const hasRightSection = !!restRecord[\"rightSection\"];\n const hasVisibleText = hasVisibleChildren(children);\n const isIconOnly = (hasLeftSection || hasRightSection) && !hasVisibleText;\n\n let contentType = \"label\";\n if (isIconOnly) {\n contentType = \"icon-only\";\n } else if (hasLeftSection || hasRightSection) {\n contentType = \"icon-label\";\n }\n\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\" &&\n isIconOnly &&\n !restRecord[\"aria-label\"]\n ) {\n console.warn(\n '[Recursica Button] Icon-only buttons must provide an accessible name. Pass aria-label (e.g. aria-label=\"Submit\").',\n );\n }\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n section: styles.section,\n label: styles.label,\n loader: styles.loader,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.section = o.section ?? styles.section;\n mergedClassNames.label = o.label ?? styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n const userLoaderProps = restRecord.loaderProps as\n | Record<string, unknown>\n | undefined;\n\n const resolvedLoaderSize =\n loaderSize ?? (size === \"small\" ? \"small\" : \"default\");\n\n let mergedLoaderProps = userLoaderProps;\n if (useRecursicaLoader) {\n mergedLoaderProps = {\n children: <Loader variant={loaderVariant} size={resolvedLoaderSize} />,\n ...userLoaderProps,\n };\n }\n\n return (\n <MantineButton\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n variant={mapVariant[variant]}\n size={mapSize[size]}\n loaderProps={mergedLoaderProps}\n leftSection={\n icon != null ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : undefined\n }\n data-variant={variant}\n data-size={size}\n data-content={contentType}\n {...sanitizedProps}\n disabled={!!restRecord.disabled || !!restRecord.loading}\n >\n <span className={styles.labelText}>{children}</span>\n </MantineButton>\n );\n});\n_Button.displayName = \"Button\";\n\n/**\n * Recursica Button component wrapping Mantine's Button.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * This is particularly useful when you need a button that behaves as a hyperlink (rendering an `<a>` tag)\n * or integrates with a routing library (e.g., `react-router-dom` or Next.js), while preserving full visual styling.\n *\n * @example\n * ```tsx\n * // Renders as an <a> tag natively\n * <Button component=\"a\" href=\"/dashboard\" target=\"_blank\">Navigate</Button>\n *\n * // Renders using a custom router link\n * <Button renderRoot={(props) => <Link to=\"/home\" {...props} />}>Home</Button>\n * ```\n */\nexport const Button = createPolymorphicComponent<\"button\", ButtonProps>(\n _Button,\n);\n","import { forwardRef } from \"react\";\nimport {\n Card as MantineCard,\n type CardProps as MantineCardProps,\n type CardSectionProps as MantineCardSectionProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Card.module.css\";\n\n// ==== CARD CONTAINER ====\nexport type CardProps = RecursicaOverStyled<MantineCardProps>;\n\n/**\n * The root Card elevation box. It establishes the global background color, border radius, nested component gap, and outer shadow governed by the current `Layer` context.\n */\nconst CardBase = forwardRef<HTMLDivElement, CardProps>(function Card(\n { overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard\n ref={ref}\n className={classNameProp}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineCardProps)}\n />\n );\n});\nCardBase.displayName = \"Card\";\n\n// ==== NATIVE MANTINE CARD.SECTION ====\nexport type RecursicaCardSectionProps = MantineCardSectionProps & {\n children?: React.ReactNode;\n};\nexport type CardSectionProps = RecursicaOverStyled<RecursicaCardSectionProps>;\n\n/**\n * A generalized edge-to-edge structural wrapper native to Mantine. Strips typical boundary padding via negative margins to allow content (like maps or header images) to touch the border seamlessly.\n */\nexport const CardSection = forwardRef<HTMLDivElement, CardSectionProps>(\n function CardSection({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n className={\n classNameProp ? `${styles.section} ${classNameProp}` : styles.section\n }\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n />\n );\n },\n);\nCardSection.displayName = \"CardSection\";\n\n// ==== EXPLICIT CARD.HEADER ====\nexport type CardHeaderProps = RecursicaOverStyled<RecursicaCardSectionProps>;\n\n/**\n * Replaces standard generic Mantine `<Card.Section>` wrappers by directly injecting the strict Recursica design tokens for header sizing, background drops, and intrinsic padding limits.\n */\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n function CardHeader({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n className={\n classNameProp ? `${styles.header} ${classNameProp}` : styles.header\n }\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n />\n );\n },\n);\nCardHeader.displayName = \"CardHeader\";\n\n// ==== EXPLICIT CARD.FOOTER ====\nexport type CardFooterProps = RecursicaOverStyled<RecursicaCardSectionProps>;\n\n/**\n * Counterpart to `Card.Header`, applying specific footer elevation margins, sizes, and padding natively.\n */\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n function CardFooter({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n className={\n classNameProp ? `${styles.footer} ${classNameProp}` : styles.footer\n }\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n />\n );\n },\n);\nCardFooter.displayName = \"CardFooter\";\n\n// ==== EXPLICIT CARD.CONTENT ====\nexport type CardContentProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Internal container that safely binds typography and structural flex gaps driven by the active UI kit tokens natively, preserving correct padding blocks compared to rigid `Card.Section` edges.\n */\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(\n function CardContent({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <div\n ref={ref}\n className={\n classNameProp ? `${styles.content} ${classNameProp}` : styles.content\n }\n {...sanitizedProps}\n />\n );\n },\n);\nCardContent.displayName = \"CardContent\";\n\n// ==== DOT NOTATION EXPORT ====\n\n/**\n * Recursica Card component wrapping Mantine's Card (Paper).\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * Use dot-notation sub-components for structured card layouts.\n */\nconst PolymorphicCard = createPolymorphicComponent<\n \"div\",\n CardProps,\n {\n Section: typeof CardSection;\n Header: typeof CardHeader;\n Footer: typeof CardFooter;\n Content: typeof CardContent;\n }\n>(CardBase);\n\n// Attach static components for dot-notation access\nconst _card = PolymorphicCard as unknown as Record<string, unknown>;\n_card.Section = CardSection;\n_card.Header = CardHeader;\n_card.Footer = CardFooter;\n_card.Content = CardContent;\n\nexport const Card = PolymorphicCard as typeof PolymorphicCard & {\n Section: typeof CardSection;\n Header: typeof CardHeader;\n Footer: typeof CardFooter;\n Content: typeof CardContent;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Checkbox as MantineCheckbox,\n type CheckboxGroupProps as MantineCheckboxGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Checkbox.module.css\";\n\nexport interface RecursicaCheckboxGroupProps\n extends Omit<MantineCheckboxGroupProps, \"size\" | \"labelProps\">,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps {}\n\nexport type CheckboxGroupProps =\n RecursicaOverStyled<RecursicaCheckboxGroupProps>;\n\nexport const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n function CheckboxGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing the variables\n delete restRecord[\"size\"];\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_checkbox-item_properties_max-width)\"\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive checkboxes nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n <MantineCheckbox.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineCheckboxGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value}\n defaultValue={defaultValue}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineCheckbox.Group>\n }\n />\n );\n },\n);\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n","import { forwardRef } from \"react\";\nimport {\n Checkbox as MantineCheckbox,\n type CheckboxProps as MantineCheckboxProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport { CheckboxGroup } from \"./CheckboxGroup\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RequireAccessibleLabel } from \"../../utils/RequireAccessibleLabel\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\n\nimport styles from \"./Checkbox.module.css\";\n\nexport type RecursicaCheckboxProps = RequireAccessibleLabel<\n Omit<\n MantineCheckboxProps,\n \"size\" | \"color\" | \"radius\" | \"iconColor\" | \"variant\"\n > &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >\n>;\n\nexport type CheckboxProps = RecursicaOverStyled<RecursicaCheckboxProps>;\n\ntype CheckboxComponent = React.ForwardRefExoticComponent<\n CheckboxProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof CheckboxGroup;\n};\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n // Checkbox doesn't use Label onLabelEditClick natively since it isn't mapped inside FormControlWrapper intrinsically.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Actively delete dimension bindings that bypass the abstraction\n delete restRecord[\"size\"];\n delete restRecord[\"color\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"iconColor\"];\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n body: styles.body,\n inner: styles.inner,\n input: styles.input,\n icon: styles.icon,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.body = o.body ? `${styles.body} ${o.body}` : styles.body;\n mergedClassNames.inner = o.inner\n ? `${styles.inner} ${o.inner}`\n : styles.inner;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.icon = o.icon ? `${styles.icon} ${o.icon}` : styles.icon;\n mergedClassNames.labelWrapper = o.labelWrapper\n ? `${styles.labelWrapper} ${o.labelWrapper}`\n : styles.labelWrapper;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Checkbox.module.css\n const checkboxNode = (\n <MantineCheckbox\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n disabled={readOnly || disabled}\n {...(sanitizedProps as unknown as MantineCheckboxProps)}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {checkboxNode}\n </FormControlLayout>\n );\n }\n\n return checkboxNode;\n },\n) as CheckboxComponent;\n\nCheckbox.displayName = \"Checkbox\";\nCheckbox.Group = CheckboxGroup;\n","import React, { forwardRef } from \"react\";\nimport {\n Chip as MantineChip,\n type ChipProps as MantineChipProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Chip.module.css\";\n\nexport interface RecursicaChipProps {\n /** Enables the error state styling */\n error?: boolean;\n\n /** Leading icon content */\n icon?: React.ReactNode;\n\n /** Called when the remove (X) icon is clicked. If provided, the remove icon will be displayed. */\n onRemove?: (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => void;\n\n /** Screen reader label for the remove button. Defaults to 'Remove' */\n removeLabel?: string;\n}\n\nexport type ChipProps = RecursicaOverStyled<\n Omit<MantineChipProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaChipProps\n>;\n\nfunction CloseIcon(props: React.ComponentPropsWithoutRef<\"svg\">) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n );\n}\n\nexport const Chip = forwardRef<HTMLInputElement, ChipProps>(function Chip(\n {\n error = false,\n icon,\n onRemove,\n removeLabel = \"Remove\",\n children,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n label: styles.label,\n input: styles.input,\n iconWrapper: styles.mantineIconWrapper,\n checkIcon: styles.checkIcon,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n // Determine state\n const dataError = error ? \"\" : undefined;\n const isIconOnly = !children && (!!icon || !!onRemove);\n\n return (\n <MantineChip\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...(dataError !== undefined ? { \"data-error\": \"\" } : {})}\n {...(isIconOnly ? { \"data-icon-only\": \"\" } : {})}\n {...sanitizedProps}\n >\n <span className={styles.innerWrapper}>\n {icon && (\n <span className={styles.leadingIcon} aria-hidden>\n {icon}\n </span>\n )}\n\n <span className={styles.children}>{children}</span>\n\n {onRemove && (\n <span\n role=\"button\"\n className={styles.removeIcon}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onRemove(e);\n }}\n aria-label={removeLabel}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n e.stopPropagation();\n onRemove(\n e as unknown as React.MouseEvent<HTMLSpanElement, MouseEvent>,\n );\n }\n }}\n tabIndex={0}\n >\n <CloseIcon />\n </span>\n )}\n </span>\n </MantineChip>\n );\n});\n\nChip.displayName = \"Chip\";\n","import { forwardRef } from \"react\";\nimport {\n Container as MantineContainer,\n type ContainerProps as MantineContainerProps,\n} from \"@mantine/core\";\nimport { type RecursicaSpacing } from \"../../utils/filterStylingProps\";\nimport styles from \"./Container.module.css\";\n\nexport interface RecursicaContainerProps {\n /**\n * Children components inside the layout container\n */\n children?: React.ReactNode;\n /**\n * Maximum width defined by Mantine system sizes or Recursica sizes\n */\n size?:\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | RecursicaSpacing\n | (string & {})\n | number;\n}\n\n/**\n * Container layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type ContainerProps = Omit<MantineContainerProps, \"size\"> &\n RecursicaContainerProps;\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ children, size, ...rest }, ref) {\n const mapSize: Record<string, string> = {\n \"rec-sm\": \"sm\",\n \"rec-default\": \"md\",\n \"rec-md\": \"md\",\n \"rec-lg\": \"lg\",\n \"rec-xl\": \"xl\",\n \"rec-2xl\": \"xl\",\n };\n\n const resolvedSize =\n typeof size === \"string\" && mapSize[size] ? mapSize[size] : size;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineContainer\n ref={ref}\n size={resolvedSize}\n className={finalClass}\n classNames={mergedClassNames}\n {...rest}\n >\n {children}\n </MantineContainer>\n );\n },\n);\n\nContainer.displayName = \"Container\";\n","import React, { forwardRef } from \"react\";\nimport { DatePickerInput, type DatePickerInputProps } from \"@mantine/dates\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./DatePicker.module.css\";\n\nexport interface RecursicaDatePickerProps\n extends Omit<\n DatePickerInputProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"label\"\n | \"error\"\n | \"required\"\n | \"withAsterisk\"\n | \"id\"\n | \"description\"\n >,\n Pick<\n DatePickerInputProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps {}\n\nexport type DatePickerProps = RecursicaOverStyled<RecursicaDatePickerProps>;\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n function DatePicker(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"description\"]; // Managed by FormControlWrapper via assistiveText\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n day: styles.day,\n calendarHeader: styles.calendarHeader,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.section = o.section\n ? `${styles.section} ${o.section}`\n : styles.section;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth={undefined}\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={\n value !== undefined\n ? String(value)\n : defaultValue\n ? String(defaultValue)\n : undefined\n }\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <DatePickerInput\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n // @ts-expect-error Mantine 8 DatePickerInput types are overly complex for unified wrappers\n value={value}\n // @ts-expect-error Mantine 8 DatePickerInput types are overly complex for unified wrappers\n defaultValue={defaultValue}\n label={undefined} // Disable Mantine's native label\n description={undefined} // Disable Mantine's native description\n error={undefined} // Disable Mantine's native error text (handled by wrapper)\n withAsterisk={false} // Handled by wrapper\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as DatePickerInputProps)}\n />\n }\n />\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n","import React, { forwardRef } from \"react\";\nimport {\n Select as MantineSelect,\n type SelectProps as MantineSelectProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Dropdown.module.css\";\n\nexport interface RecursicaDropdownProps\n extends Omit<\n MantineSelectProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\"\n >,\n Pick<\n RecursicaFormControlWrapperProps,\n | \"assistiveText\"\n | \"assistiveWithIcon\"\n | \"formLayout\"\n | \"labelSize\"\n | \"labelAlignment\"\n | \"labelOptionalText\"\n | \"labelWithEditIcon\"\n | \"onLabelEditClick\"\n >,\n ReadOnlyControlProps {\n /** Internal hook for Selects to override raw layout width properties when necessary */\n containerWidth?: React.CSSProperties[\"width\"];\n}\n\nexport type DropdownProps = RecursicaOverStyled<RecursicaDropdownProps>;\n\nexport const Dropdown = forwardRef<HTMLInputElement, DropdownProps>(\n function Dropdown(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n containerWidth,\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n data,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n option: styles.option,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.section = o.section\n ? `${styles.section} ${o.section}`\n : styles.section;\n mergedClassNames.dropdown = o.dropdown\n ? `${styles.dropdown} ${o.dropdown}`\n : styles.dropdown;\n mergedClassNames.option = o.option\n ? `${styles.option} ${o.option}`\n : styles.option;\n }\n\n const injectedStyles = {\n ...((style as React.CSSProperties) || {}),\n width: containerWidth || \"100%\",\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={injectedStyles}\n controlMaxWidth=\"var(--recursica_ui-kit_components_dropdown_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_dropdown_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={\n value !== undefined\n ? String(value)\n : defaultValue\n ? String(defaultValue)\n : undefined\n }\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Select execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineSelect\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n data={data || []}\n label={undefined}\n description={undefined}\n error={undefined}\n required={undefined}\n withAsterisk={undefined}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as MantineSelectProps)}\n />\n }\n />\n );\n },\n);\n\nDropdown.displayName = \"Dropdown\";\n","import React from \"react\";\n\nexport type FileInputProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const FileInput: React.FC<FileInputProps> = (props) => {\n return <div {...props}>FileInput</div>;\n};\n","import React from \"react\";\n\nexport type FileUploadProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const FileUpload: React.FC<FileUploadProps> = (props) => {\n return <div {...props}>FileUpload</div>;\n};\n","import { forwardRef } from \"react\";\nimport {\n Flex as MantineFlex,\n type FlexProps as MantineFlexProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n type RecursicaSpacing,\n mapLayoutProps,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Flex.module.css\";\n\nexport interface RecursicaFlexProps {\n /**\n * Children components inside the Flex container\n */\n children?: React.ReactNode;\n gap?: MantineFlexProps[\"gap\"] | RecursicaSpacing;\n rowGap?: MantineFlexProps[\"gap\"] | RecursicaSpacing;\n columnGap?: MantineFlexProps[\"gap\"] | RecursicaSpacing;\n}\n\n/**\n * Flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type FlexProps = MantineFlexProps & RecursicaFlexProps;\n\nconst _Flex = forwardRef<HTMLDivElement, FlexProps>(function Flex(\n { children, gap = \"rec-default\", rowGap, columnGap, ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineFlex\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, rowGap, columnGap, ...rest } as Record<\n string,\n unknown\n >)}\n >\n {children}\n </MantineFlex>\n );\n});\n_Flex.displayName = \"Flex\";\n\n/**\n * Recursica Flex layout wrapper.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * @example\n * ```tsx\n * <Flex component=\"nav\">...</Flex>\n * <Flex component=\"section\">...</Flex>\n * ```\n */\nexport const Flex = createPolymorphicComponent<\"div\", FlexProps>(_Flex);\n","import { forwardRef } from \"react\";\nimport {\n Group as MantineGroup,\n type GroupProps as MantineGroupProps,\n} from \"@mantine/core\";\nimport {\n type RecursicaSpacing,\n mapLayoutProps,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Group.module.css\";\n\nexport interface RecursicaGroupProps {\n /**\n * Children components inside the group\n */\n children?: React.ReactNode;\n gap?: MantineGroupProps[\"gap\"] | RecursicaSpacing;\n rowGap?: MantineGroupProps[\"gap\"] | RecursicaSpacing;\n columnGap?: MantineGroupProps[\"gap\"] | RecursicaSpacing;\n}\n\n/**\n * Group flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type GroupProps = MantineGroupProps & RecursicaGroupProps;\n\nexport const Group = forwardRef<HTMLDivElement, GroupProps>(function Group(\n { children, gap = \"rec-default\", ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineGroup\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, ...rest } as Record<string, unknown>)}\n >\n {children}\n </MantineGroup>\n );\n});\n\nGroup.displayName = \"Group\";\n","import {\n HoverCard as MantineHoverCard,\n type HoverCardProps as MantineHoverCardProps,\n type HoverCardTargetProps as MantineHoverCardTargetProps,\n type HoverCardDropdownProps as MantineHoverCardDropdownProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./HoverCard.module.css\";\n\n// ============================================================\n// HOVERCARD ROOT\n// ============================================================\n\n/**\n * Recursica-specific props for HoverCard.\n */\nexport interface RecursicaHoverCardProps {\n /**\n * Whether to display a beak (arrow) pointing from the dropdown to the target.\n * This is the Recursica equivalent of Mantine's `withArrow`.\n * When both `withBeak` and `withArrow` are provided, `withBeak` takes precedence.\n */\n withBeak?: boolean;\n}\n\n/**\n * Recursica HoverCard component wrapping Mantine's composable HoverCard.\n *\n * Displays a dropdown panel when the user hovers over a target element.\n * Uses the composable dot-notation pattern:\n * ```tsx\n * <HoverCard withBeak>\n * <HoverCard.Target>\n * <Button>Hover me</Button>\n * </HoverCard.Target>\n * <HoverCard.Dropdown>\n * Content displayed on hover\n * </HoverCard.Dropdown>\n * </HoverCard>\n * ```\n */\nexport type HoverCardProps = RecursicaOverStyled<\n MantineHoverCardProps & RecursicaHoverCardProps\n>;\n\nconst HoverCardBase = function HoverCard({\n overStyled = false,\n withBeak = true,\n ...rest\n}: HoverCardProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n dropdown: styles.dropdown,\n arrow: styles.arrow,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px).\n const arrowSize =\n ((sanitizedProps as Record<string, unknown>).arrowSize as\n | number\n | undefined) ?? 16;\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const withArrow = (sanitizedProps as Record<string, unknown>).withArrow as\n | boolean\n | undefined;\n const resolvedWithArrow = withBeak ?? withArrow;\n\n return (\n <MantineHoverCard\n position=\"top\" /* Recursica default; Mantine defaults to \"bottom\" */\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineHoverCardProps)}\n />\n );\n};\nHoverCardBase.displayName = \"HoverCard\";\n\n// ============================================================\n// HOVERCARD TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the hover card.\n * Requires a single child element that supports ref forwarding.\n */\nexport type HoverCardTargetProps = MantineHoverCardTargetProps;\n\nconst HoverCardTarget = function HoverCardTarget(props: HoverCardTargetProps) {\n return <MantineHoverCard.Target {...props} />;\n};\nHoverCardTarget.displayName = \"HoverCardTarget\";\n\n// ============================================================\n// HOVERCARD DROPDOWN\n// ============================================================\n\n/** The dropdown panel displayed when hovering over the target. */\nexport type HoverCardDropdownProps =\n RecursicaOverStyled<MantineHoverCardDropdownProps>;\n\nconst HoverCardDropdown = function HoverCardDropdown({\n overStyled = false,\n ...rest\n}: HoverCardDropdownProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineHoverCard.Dropdown\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineHoverCardDropdownProps)}\n />\n );\n};\nHoverCardDropdown.displayName = \"HoverCardDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype HoverCardComponent = typeof HoverCardBase & {\n Target: typeof HoverCardTarget;\n Dropdown: typeof HoverCardDropdown;\n};\n\nexport const HoverCard = HoverCardBase as HoverCardComponent;\nHoverCard.Target = HoverCardTarget;\nHoverCard.Dropdown = HoverCardDropdown;\n","import React, { forwardRef } from \"react\";\nimport {\n Anchor as MantineAnchor,\n type AnchorProps as MantineAnchorProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Link.module.css\";\n\nexport interface RecursicaLinkProps {\n /**\n * Optional leading icon to display next to the link text.\n */\n icon?: React.ReactNode;\n /**\n * The text or elements to display inside the link.\n */\n children?: React.ReactNode;\n}\n\nexport type LinkProps = RecursicaOverStyled<\n Omit<MantineAnchorProps, \"underline\"> & RecursicaLinkProps\n>;\n\nconst _Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n { icon, children, overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineAnchor\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n underline=\"never\"\n {...(icon ? { \"data-has-icon\": \"\" } : {})}\n {...sanitizedProps}\n >\n {icon && (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n )}\n <span className={styles.labelText}>{children}</span>\n </MantineAnchor>\n );\n});\n_Link.displayName = \"Link\";\n\n/**\n * Recursica Link component wrapping Mantine's Anchor.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering (e.g. react-router Link).\n * @example\n * ```tsx\n * <Link component=\"a\" href=\"https://example.com\">External Link</Link>\n * <Link renderRoot={(props) => <RouterLink to=\"/home\" {...props} />}>Home</Link>\n * ```\n */\nexport const Link = createPolymorphicComponent<\"a\", LinkProps>(_Link);\n","import { forwardRef } from \"react\";\nimport {\n Menu as MantineMenu,\n type MenuProps as MantineMenuProps,\n type MenuTargetProps as MantineMenuTargetProps,\n type MenuDropdownProps as MantineMenuDropdownProps,\n type MenuItemProps as MantineMenuItemProps,\n type MenuDividerProps as MantineMenuDividerProps,\n type MenuLabelProps as MantineMenuLabelProps,\n type MenuSubProps as MantineMenuSubProps,\n type MenuSubTargetProps as MantineMenuSubTargetProps,\n type MenuSubDropdownProps as MantineMenuSubDropdownProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Menu.module.css\";\n\n// ============================================================\n// MENU ROOT\n// ============================================================\n\n/**\n * Recursica Menu component wrapping Mantine's composable Menu.\n *\n * Usage follows the composable dot-notation pattern:\n * ```tsx\n * <Menu>\n * <Menu.Target><Button>Open</Button></Menu.Target>\n * <Menu.Dropdown>\n * <Menu.Label>Section</Menu.Label>\n * <Menu.Item>Action</Menu.Item>\n * <Menu.Divider />\n * <Menu.Item>Another action</Menu.Item>\n * </Menu.Dropdown>\n * </Menu>\n * ```\n */\nexport type MenuProps = RecursicaOverStyled<MantineMenuProps>;\n\nconst MenuBase = function Menu({ overStyled = false, ...rest }: MenuProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n dropdown: styles.dropdown,\n item: styles.item,\n itemLabel: styles.itemLabel,\n itemSection: styles.itemSection,\n divider: styles.divider,\n label: styles.label,\n chevron: styles.chevron,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineMenu\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineMenuProps)}\n />\n );\n};\nMenuBase.displayName = \"Menu\";\n\n// ============================================================\n// MENU TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the menu.\n * Requires a single child element that supports ref forwarding.\n */\nexport type MenuTargetProps = MantineMenuTargetProps;\n\nconst MenuTarget = function MenuTarget(props: MenuTargetProps) {\n return <MantineMenu.Target {...props} />;\n};\nMenuTarget.displayName = \"MenuTarget\";\n\n// ============================================================\n// MENU DROPDOWN\n// ============================================================\n\n/** The dropdown panel containing menu items, dividers, and labels. */\nexport type MenuDropdownProps = RecursicaOverStyled<MantineMenuDropdownProps>;\n\nconst MenuDropdown = forwardRef<HTMLDivElement, MenuDropdownProps>(\n function MenuDropdown({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Dropdown\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuDropdownProps)}\n />\n );\n },\n);\nMenuDropdown.displayName = \"MenuDropdown\";\n\n// ============================================================\n// MENU ITEM\n// ============================================================\n\n/**\n * An individual actionable item within the menu dropdown.\n *\n * **Note:** Mantine's `color` prop is stripped in strict mode to enforce\n * design token adherence. Use `overStyled={true}` if you need to bypass.\n */\nexport type MenuItemProps = RecursicaOverStyled<\n Omit<MantineMenuItemProps, \"color\">\n>;\n\nconst _MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(\n function MenuItem({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Strip Mantine's `color` prop to enforce token-driven styling\n if (!overStyled) {\n delete restRecord[\"color\"];\n }\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineMenu.Item\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuItemProps)}\n />\n );\n },\n);\n_MenuItem.displayName = \"MenuItem\";\n\n/**\n * An individual actionable item within the menu dropdown.\n *\n * Supports polymorphism via the `component` prop for link-style items.\n * @example\n * ```tsx\n * <Menu.Item component=\"a\" href=\"/settings\">Settings</Menu.Item>\n * ```\n */\nconst MenuItem = createPolymorphicComponent<\"button\", MenuItemProps>(_MenuItem);\n\n// ============================================================\n// MENU DIVIDER\n// ============================================================\n\n/** A visual separator between groups of menu items. */\nexport type MenuDividerProps = RecursicaOverStyled<MantineMenuDividerProps>;\n\nconst MenuDivider = forwardRef<HTMLHRElement, MenuDividerProps>(\n function MenuDivider({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Divider\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuDividerProps)}\n />\n );\n },\n);\nMenuDivider.displayName = \"MenuDivider\";\n\n// ============================================================\n// MENU LABEL\n// ============================================================\n\n/** A non-interactive section label used to categorize groups of menu items. */\nexport type MenuLabelProps = RecursicaOverStyled<MantineMenuLabelProps>;\n\nconst MenuLabel = forwardRef<HTMLDivElement, MenuLabelProps>(function MenuLabel(\n { overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Label\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuLabelProps)}\n />\n );\n});\nMenuLabel.displayName = \"MenuLabel\";\n\n// ============================================================\n// MENU SUB (SUBMENU CONTAINER)\n// ============================================================\n\n/** Container for a submenu, wrapping Menu.Sub.Target and Menu.Sub.Dropdown. */\nexport type MenuSubProps = MantineMenuSubProps;\n\nconst MenuSubBase = function MenuSub(props: MenuSubProps) {\n return <MantineMenu.Sub {...props} />;\n};\nMenuSubBase.displayName = \"MenuSub\";\n\n// ============================================================\n// MENU SUB TARGET\n// ============================================================\n\n/** Wrapper for the element that triggers the submenu. */\nexport type MenuSubTargetProps = MantineMenuSubTargetProps;\n\nconst MenuSubTarget = function MenuSubTarget(props: MenuSubTargetProps) {\n return <MantineMenu.Sub.Target {...props} />;\n};\nMenuSubTarget.displayName = \"MenuSubTarget\";\n\n// ============================================================\n// MENU SUB ITEM (triggers submenu)\n// ============================================================\n\n/**\n * A menu item that acts as a submenu trigger.\n * Renders within Menu.Sub.Target and displays a chevron indicator.\n */\nexport type MenuSubItemProps = RecursicaOverStyled<\n Omit<MantineMenuItemProps, \"color\">\n>;\n\nconst _MenuSubItem = forwardRef<HTMLButtonElement, MenuSubItemProps>(\n function MenuSubItem({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n if (!overStyled) {\n delete restRecord[\"color\"];\n }\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineMenu.Sub.Item\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuItemProps)}\n />\n );\n },\n);\n_MenuSubItem.displayName = \"MenuSubItem\";\n\n/**\n * A menu item that acts as a submenu trigger.\n *\n * Supports polymorphism via the `component` prop.\n */\nconst MenuSubItem = createPolymorphicComponent<\"button\", MenuSubItemProps>(\n _MenuSubItem,\n);\n\n// ============================================================\n// MENU SUB DROPDOWN\n// ============================================================\n\n/** The dropdown panel for a submenu. */\nexport type MenuSubDropdownProps =\n RecursicaOverStyled<MantineMenuSubDropdownProps>;\n\nconst MenuSubDropdown = forwardRef<HTMLDivElement, MenuSubDropdownProps>(\n function MenuSubDropdown({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Sub.Dropdown\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuSubDropdownProps)}\n />\n );\n },\n);\nMenuSubDropdown.displayName = \"MenuSubDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype MenuSubComponent = typeof MenuSubBase & {\n Target: typeof MenuSubTarget;\n Item: typeof MenuSubItem;\n Dropdown: typeof MenuSubDropdown;\n};\n\nconst MenuSub = MenuSubBase as MenuSubComponent;\nMenuSub.Target = MenuSubTarget;\nMenuSub.Item = MenuSubItem;\nMenuSub.Dropdown = MenuSubDropdown;\n\ntype MenuComponent = typeof MenuBase & {\n Target: typeof MenuTarget;\n Dropdown: typeof MenuDropdown;\n Item: typeof MenuItem;\n Divider: typeof MenuDivider;\n Label: typeof MenuLabel;\n Sub: MenuSubComponent;\n};\n\nexport const Menu = MenuBase as MenuComponent;\nMenu.Target = MenuTarget;\nMenu.Dropdown = MenuDropdown;\nMenu.Item = MenuItem;\nMenu.Divider = MenuDivider;\nMenu.Label = MenuLabel;\nMenu.Sub = MenuSub;\n","import React from \"react\";\nimport {\n Modal as MantineModal,\n type ModalProps as MantineModalProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Modal.module.css\";\n\n/**\n * Properties for the strictly-tokenized Modal component.\n * Native Mantine abstract properties like `size`, `radius`, and `shadow` have been stripped out\n * because they directly conflict with the non-negotiable pixel boundaries defined in the Recursica UI Kit.\n */\nexport type ModalProps = RecursicaOverStyled<\n Omit<MantineModalProps, \"size\" | \"radius\" | \"shadow\">\n>;\n\n/**\n * The `Modal` component displays a window overlaid on the primary viewport.\n *\n * **Recursica Abstract:**\n * This component acts as a strict structural wrapper around Mantine's `<Modal>`.\n * It automatically enforces Figma UI Kit geometries (`max-width: 960px`, `min-width: 304px`)\n * and handles internal body scrolling explicitly via CSS module overrides.\n *\n * @example\n * ```tsx\n * <Modal opened={opened} onClose={close} title=\"Hello World\">\n * Modal Content\n * </Modal>\n * ```\n */\nconst ModalInner = React.forwardRef<HTMLDivElement, ModalProps>(function Modal(\n {\n overStyled = false,\n children,\n title,\n withCloseButton = true,\n overlayProps,\n withOverlay = true,\n closeButtonProps,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n inner: styles.inner,\n content: styles.content,\n header: styles.header,\n title: styles.title,\n close: styles.close,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineModal.Root\n ref={ref}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as Omit<\n MantineModalProps,\n \"size\" | \"radius\" | \"shadow\"\n >)}\n >\n {withOverlay && <MantineModal.Overlay {...overlayProps} />}\n <MantineModal.Content>\n {(title || withCloseButton) && (\n <MantineModal.Header>\n {title && <MantineModal.Title>{title}</MantineModal.Title>}\n {withCloseButton && (\n <MantineModal.CloseButton {...closeButtonProps} />\n )}\n </MantineModal.Header>\n )}\n <ModalBody>{children}</ModalBody>\n </MantineModal.Content>\n </MantineModal.Root>\n );\n});\n\nModalInner.displayName = \"Modal\";\n\n/**\n * The `Modal.Footer` provides a perfectly padded container for modal actions.\n *\n * **Recursica Abstract:**\n * By default, this container aligns its children to the right (`justify-content: flex-end`)\n * and applies the standard Figma button-gap spacing.\n *\n * > [!IMPORTANT]\n * > **Button Hierarchy:** Recursica design language explicitly requires that the\n * > primary action button MUST be the right-most element, with the secondary\n * > (outline variant) action placed immediately to the left of it.\n */\nconst ModalFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<\"div\">\n>(function ModalFooter({ className, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={`${styles.footer} ${className || \"\"}`}\n {...rest}\n />\n );\n});\nModalFooter.displayName = \"Modal.Footer\";\n\nconst ModalBody = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof MantineModal.Body>\n>(function ModalBody({ className, onScroll, children, ...rest }, ref) {\n const internalRef = React.useRef<HTMLDivElement>(null);\n const [scrolledTop, setScrolledTop] = React.useState(false);\n const [scrolledBottom, setScrolledBottom] = React.useState(false);\n\n const checkScroll = React.useCallback(() => {\n if (internalRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = internalRef.current;\n setScrolledTop(scrollTop > 0);\n setScrolledBottom(Math.ceil(scrollTop + clientHeight) < scrollHeight);\n }\n }, []);\n\n // Re-check scroll on mount and window resize\n React.useEffect(() => {\n checkScroll();\n window.addEventListener(\"resize\", checkScroll);\n return () => window.removeEventListener(\"resize\", checkScroll);\n }, [checkScroll, children]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n checkScroll();\n onScroll?.(e);\n };\n\n // Intercept children to pull Modal.Footer out of the scrolling container\n let footer: React.ReactNode = null;\n const bodyChildren: React.ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (\n React.isValidElement(child) &&\n (child.type === ModalFooter ||\n (child.type as React.ComponentType)?.displayName === \"Modal.Footer\")\n ) {\n footer = child;\n } else {\n bodyChildren.push(child);\n }\n });\n\n return (\n <MantineModal.Body\n {...rest}\n ref={(node) => {\n if (typeof ref === \"function\") ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n className={`${styles.bodyWrapper} ${className || \"\"}`}\n >\n <div\n ref={internalRef}\n onScroll={handleScroll}\n data-scrolled-top={scrolledTop || undefined}\n data-scrolled-bottom={scrolledBottom || undefined}\n className={styles.scrollArea}\n >\n {bodyChildren}\n </div>\n {footer}\n </MantineModal.Body>\n );\n});\nModalBody.displayName = \"Modal.Body\";\n\ninterface ModalComponent\n extends React.ForwardRefExoticComponent<\n ModalProps & React.RefAttributes<HTMLDivElement>\n > {\n Root: typeof MantineModal.Root;\n Overlay: typeof MantineModal.Overlay;\n Content: typeof MantineModal.Content;\n Header: typeof MantineModal.Header;\n Title: typeof MantineModal.Title;\n CloseButton: typeof MantineModal.CloseButton;\n Body: typeof ModalBody;\n Footer: typeof ModalFooter;\n}\n\nexport const Modal = ModalInner as ModalComponent & {\n Footer: typeof ModalFooter;\n};\nModal.Root = MantineModal.Root;\nModal.Overlay = MantineModal.Overlay;\nModal.Content = MantineModal.Content;\nModal.Header = MantineModal.Header;\nModal.Title = MantineModal.Title;\nModal.CloseButton = MantineModal.CloseButton;\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n","import React, { forwardRef } from \"react\";\nimport {\n NumberInput as MantineNumberInput,\n type NumberInputProps as MantineNumberInputProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./NumberInput.module.css\";\n\nexport interface RecursicaNumberInputProps\n extends Omit<\n MantineNumberInputProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\" | \"classNames\" | \"styles\"\n >,\n Pick<\n RecursicaFormControlWrapperProps,\n | \"assistiveText\"\n | \"assistiveWithIcon\"\n | \"formLayout\"\n | \"labelSize\"\n | \"labelAlignment\"\n | \"labelOptionalText\"\n | \"labelWithEditIcon\"\n | \"onLabelEditClick\"\n >,\n ReadOnlyControlProps {\n /** Enables/disables the controls to increment and decrement the value */\n hideControls?: boolean;\n}\n\nexport type NumberInputProps = RecursicaOverStyled<RecursicaNumberInputProps>;\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n function NumberInput(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n hideControls = false,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n controls: styles.controls,\n control: styles.control,\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_number-input_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_number-input_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={\n value !== undefined ? value?.toString() : defaultValue?.toString()\n }\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineNumberInput\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n hideControls={hideControls}\n label={undefined}\n description={undefined}\n error={undefined}\n required={undefined}\n withAsterisk={undefined}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n \"data-with-left-section\": restRecord.leftSection\n ? \"true\"\n : undefined,\n \"data-with-right-section\":\n restRecord.rightSection || !hideControls ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as MantineNumberInputProps)}\n />\n }\n />\n );\n },\n);\n\nNumberInput.displayName = \"NumberInput\";\n","import styles from \"./Pagination.module.css\";\n\nconst NextPath =\n \"M8.781 8l-3.3-3.3.943-.943L10.667 8l-4.243 4.243-.943-.943 3.3-3.3z\";\nconst PrevPath =\n \"M7.219 8l3.3 3.3-.943.943L5.333 8l4.243-4.243.943.943-3.3 3.3z\";\nconst FirstPath =\n \"M6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645C6.65829 2.95118 6.34171 2.95118 6.14645 3.14645L2.14645 7.14645C1.95118 7.34171 1.95118 7.65829 2.14645 7.85355L6.14645 11.8536C6.34171 12.0488 6.65829 12.0488 6.85355 11.8536C7.04882 11.6583 7.04882 11.3417 6.85355 11.1464L3.20711 7.5L6.85355 3.85355ZM12.8536 3.85355C13.0488 3.65829 13.0488 3.34171 12.8536 3.14645C12.6583 2.95118 12.3417 2.95118 12.1464 3.14645L8.14645 7.14645C7.95118 7.34171 7.95118 7.65829 8.14645 7.85355L12.1464 11.8536C12.3417 12.0488 12.6583 12.0488 12.8536 11.8536C13.0488 11.6583 13.0488 11.3417 12.8536 11.1464L9.20711 7.5L12.8536 3.85355Z\";\nconst LastPath =\n \"M2.14645 11.1464C1.95118 11.3417 1.95118 11.6583 2.14645 11.8536C2.34171 12.0488 2.65829 12.0488 2.85355 11.8536L6.85355 7.85355C7.04882 7.65829 7.04882 7.34171 6.85355 7.14645L2.85355 3.14645C2.65829 2.95118 2.34171 2.95118 2.14645 3.14645C1.95118 3.34171 1.95118 3.65829 2.14645 3.85355L5.79289 7.5L2.14645 11.1464ZM8.14645 11.1464C7.95118 11.3417 7.95118 11.6583 8.14645 11.8536C8.34171 12.0488 8.65829 12.0488 8.85355 11.8536L12.8536 7.85355C13.0488 7.65829 13.0488 7.34171 12.8536 7.14645L8.85355 3.14645C8.65829 2.95118 8.34171 2.95118 8.14645 3.14645C7.95118 3.34171 7.95118 3.65829 8.14645 3.85355L11.7929 7.5L8.14645 11.1464Z\";\n\nexport type PaginationIconType = \"next\" | \"prev\" | \"first\" | \"last\";\n\nconst paths: Record<PaginationIconType, string> = {\n next: NextPath,\n prev: PrevPath,\n first: FirstPath,\n last: LastPath,\n};\n\nexport const PaginationIcon = ({\n type,\n className,\n ...props\n}: React.ComponentProps<\"svg\"> & { type: PaginationIconType }) => (\n <svg\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.baseIcon} ${className || \"\"}`.trim()}\n {...props}\n >\n <path d={paths[type as PaginationIconType]} fill=\"currentColor\" />\n </svg>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const NextWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <span>Next</span>\n <PaginationIcon type=\"next\" {...props} />\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const PrevWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <PaginationIcon type=\"prev\" {...props} />\n <span>Prev</span>\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const FirstWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <PaginationIcon type=\"first\" {...props} />\n <span>First</span>\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const LastWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <span>Last</span>\n <PaginationIcon type=\"last\" {...props} />\n </div>\n);\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Pagination as MantinePagination,\n type PaginationProps as MantinePaginationProps,\n type PaginationRootProps as MantinePaginationRootProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Pagination.module.css\";\nimport {\n NextWithLabel,\n PrevWithLabel,\n FirstWithLabel,\n LastWithLabel,\n PaginationIcon,\n} from \"./Pagination.icons\";\n\nexport type PaginationProps = RecursicaOverStyled<MantinePaginationProps> & {\n /** If set to true, displays text labels alongside the icons for next/previous/first/last edges. */\n withLabels?: boolean;\n};\n\nexport type PaginationRootProps =\n RecursicaOverStyled<MantinePaginationRootProps>;\n\nexport type PaginationEdgeProps<T extends React.ElementType> =\n React.ComponentProps<T> & {\n /** If set to true, displays text labels alongside the icon. */\n withLabel?: boolean;\n icon?: any;\n };\n\nfunction usePaginationClassNames(restRecord: Record<string, unknown>): {\n className: string;\n classNames: Partial<Record<string, string>>;\n} {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n control: styles.control,\n dots: styles.dots,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.control = o.control\n ? `${styles.control} ${o.control}`\n : styles.control;\n mergedClassNames.dots = o.dots ? `${styles.dots} ${o.dots}` : styles.dots;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return { className: finalClass, classNames: mergedClassNames };\n}\n\nconst _PaginationRoot = forwardRef<HTMLDivElement, PaginationRootProps>(\n function PaginationRoot({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const stylingParams = usePaginationClassNames(\n sanitizedProps as Record<string, unknown>,\n );\n\n return (\n <MantinePagination.Root\n ref={ref}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n {...(sanitizedProps as MantinePaginationRootProps)}\n />\n );\n },\n);\n_PaginationRoot.displayName = \"Pagination.Root\";\n\nconst _PaginationNext = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Next>\n>(function PaginationNext({ withLabel, icon, ...props }, ref) {\n const renderIcon = icon || (withLabel ? NextWithLabel : undefined);\n return (\n <MantinePagination.Next\n ref={ref}\n data-variant=\"text\"\n icon={renderIcon as any}\n {...props}\n />\n );\n});\n_PaginationNext.displayName = \"Pagination.Next\";\n\nconst _PaginationPrevious = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Previous>\n>(function PaginationPrevious({ withLabel, icon, ...props }, ref) {\n const renderIcon = icon || (withLabel ? PrevWithLabel : undefined);\n return (\n <MantinePagination.Previous\n ref={ref}\n data-variant=\"text\"\n icon={renderIcon as any}\n {...props}\n />\n );\n});\n_PaginationPrevious.displayName = \"Pagination.Previous\";\n\nconst _PaginationFirst = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.First>\n>(function PaginationFirst({ withLabel, icon, ...props }, ref) {\n const renderIcon = icon || (withLabel ? FirstWithLabel : undefined);\n return (\n <MantinePagination.First\n ref={ref}\n data-variant=\"text\"\n icon={renderIcon as any}\n {...props}\n />\n );\n});\n_PaginationFirst.displayName = \"Pagination.First\";\n\nconst _PaginationLast = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Last>\n>(function PaginationLast({ withLabel, icon, ...props }, ref) {\n const renderIcon = icon || (withLabel ? LastWithLabel : undefined);\n return (\n <MantinePagination.Last\n ref={ref}\n data-variant=\"text\"\n icon={renderIcon as any}\n {...props}\n />\n );\n});\n_PaginationLast.displayName = \"Pagination.Last\";\n\nconst _Pagination = forwardRef<HTMLDivElement, PaginationProps>(\n function Pagination(\n { overStyled = false, getControlProps, withLabels, ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const stylingParams = usePaginationClassNames(\n sanitizedProps as Record<string, unknown>,\n );\n\n const mergedGetControlProps = (\n control: \"first\" | \"previous\" | \"last\" | \"next\",\n ) => {\n const baseProps = { \"data-variant\": \"text\" };\n if (getControlProps) {\n return { ...baseProps, ...getControlProps(control) };\n }\n return baseProps;\n };\n\n const labelsIcons = withLabels\n ? {\n nextIcon: NextWithLabel,\n previousIcon: PrevWithLabel,\n firstIcon: FirstWithLabel,\n lastIcon: LastWithLabel,\n }\n : {};\n\n return (\n <MantinePagination\n ref={ref}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n getControlProps={mergedGetControlProps}\n {...labelsIcons}\n {...(sanitizedProps as MantinePaginationProps)}\n />\n );\n },\n);\n_Pagination.displayName = \"Pagination\";\n\n/**\n * Recursica Pagination component wrapping Mantine's Pagination.\n */\nexport const Pagination = _Pagination as typeof _Pagination & {\n Root: typeof _PaginationRoot;\n Items: typeof MantinePagination.Items;\n Control: typeof MantinePagination.Control;\n Dots: typeof MantinePagination.Dots;\n Next: typeof _PaginationNext;\n Previous: typeof _PaginationPrevious;\n First: typeof _PaginationFirst;\n Last: typeof _PaginationLast;\n Icon: typeof PaginationIcon;\n};\n\nPagination.Root = _PaginationRoot;\nPagination.Items = MantinePagination.Items;\nPagination.Control = MantinePagination.Control;\nPagination.Dots = MantinePagination.Dots;\nPagination.Next = _PaginationNext;\nPagination.Previous = _PaginationPrevious;\nPagination.First = _PaginationFirst;\nPagination.Last = _PaginationLast;\nPagination.Icon = PaginationIcon;\n","import { forwardRef } from \"react\";\nimport {\n Drawer as MantineDrawer,\n type DrawerProps as MantineDrawerProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Panel.module.css\";\n\n// ============================================================\n// PANEL (Drawer)\n// ============================================================\n\nexport interface RecursicaPanelProps extends MantineDrawerProps {\n /**\n * If true, forces the header text to a single line and truncates with an ellipsis.\n * Note: While the prop is named `wrapHeaderText` for backward compatibility,\n * setting it to `true` actually PREVENTS wrapping (it forces truncation).\n */\n wrapHeaderText?: boolean;\n}\n\n/**\n * Recursica Panel root props. Extends Mantine Drawer.\n */\nexport type PanelProps = RecursicaOverStyled<RecursicaPanelProps>;\n\n/**\n * Recursica Panel component wrapping Mantine's Drawer.\n *\n * Panels slide in or expand from the edge of the screen to reveal\n * additional content or functionality. They are commonly used to provide\n * supplementary information, navigation options, or toolsets without\n * cluttering the main interface.\n *\n * ```tsx\n * <Panel opened={opened} onClose={close} title=\"Panel Title\" position=\"right\">\n * <Panel.Body>\n * Content goes here\n * </Panel.Body>\n * </Panel>\n * ```\n *\n * Mantine Drawer sub-components available via dot-notation:\n * - `Panel.Header` — Top section with title and close button\n * - `Panel.Title` — Title text within the header\n * - `Panel.CloseButton` — Close button within the header\n * - `Panel.Body` — Scrollable body content area\n * - `Panel.Content` — Outer content container\n * - `Panel.Overlay` — Background overlay\n * - `Panel.Root` — Root element for advanced composition\n * - `Panel.Stack` — Stacked drawer context\n */\nconst PanelBase = function Panel({\n overStyled = false,\n position = \"right\",\n keepMounted = true,\n wrapHeaderText = false,\n ...rest\n}: PanelProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n content: styles.content,\n header: styles.header,\n title: wrapHeaderText ? styles.titleTruncate : styles.title,\n body: styles.body,\n inner: styles.inner,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineDrawer\n position={position} /* Recursica default: right; Mantine default: left */\n keepMounted={keepMounted}\n closeOnClickOutside={rest.closeOnClickOutside ?? Boolean(rest.opened)}\n {...(sanitizedProps as unknown as MantineDrawerProps)}\n classNames={mergedClassNames}\n />\n );\n};\nPanelBase.displayName = \"Panel\";\n\n// ============================================================\n// PANEL FOOTER (custom — Mantine Drawer has no Footer sub-component)\n// ============================================================\n\nexport type PanelFooterProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Panel footer section with action buttons.\n * Separated from the body by a divider. Remains fixed at the bottom.\n * This is a Recursica-specific sub-component; Mantine Drawer does not\n * natively provide a footer.\n */\nexport const PanelFooter = forwardRef<HTMLDivElement, PanelFooterProps>(\n function PanelFooter({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const finalClassName = classNameProp\n ? `${styles.footer} ${classNameProp}`\n : styles.footer;\n\n return <div ref={ref} className={finalClassName} {...sanitizedProps} />;\n },\n);\nPanelFooter.displayName = \"PanelFooter\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype PanelComponent = typeof PanelBase & {\n Root: typeof MantineDrawer.Root;\n Overlay: typeof MantineDrawer.Overlay;\n Content: typeof MantineDrawer.Content;\n Header: typeof MantineDrawer.Header;\n Title: typeof MantineDrawer.Title;\n CloseButton: typeof MantineDrawer.CloseButton;\n Body: typeof MantineDrawer.Body;\n Stack: typeof MantineDrawer.Stack;\n Footer: typeof PanelFooter;\n};\n\nexport const Panel = PanelBase as PanelComponent;\nPanel.Root = MantineDrawer.Root;\nPanel.Overlay = MantineDrawer.Overlay;\nPanel.Content = MantineDrawer.Content;\nPanel.Header = MantineDrawer.Header;\nPanel.Title = MantineDrawer.Title;\nPanel.CloseButton = MantineDrawer.CloseButton;\nPanel.Body = MantineDrawer.Body;\nPanel.Stack = MantineDrawer.Stack;\nPanel.Footer = PanelFooter;\n","import {\n Popover as MantinePopover,\n type PopoverProps as MantinePopoverProps,\n type PopoverTargetProps as MantinePopoverTargetProps,\n type PopoverDropdownProps as MantinePopoverDropdownProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Popover.module.css\";\n\n// ============================================================\n// POPOVER ROOT\n// ============================================================\n\n/**\n * Recursica-specific props for Popover.\n */\nexport interface RecursicaPopoverProps {\n /**\n * Whether to display a beak (arrow) pointing from the dropdown to the target.\n * This is the Recursica equivalent of Mantine's `withArrow`.\n * When both `withBeak` and `withArrow` are provided, `withBeak` takes precedence.\n */\n withBeak?: boolean;\n}\n\n/**\n * Recursica Popover component wrapping Mantine's composable Popover.\n *\n * Displays a dropdown panel when the user clicks or interacts with a target element.\n * Uses the composable dot-notation pattern:\n * ```tsx\n * <Popover withBeak>\n * <Popover.Target>\n * <Button>Click me</Button>\n * </Popover.Target>\n * <Popover.Dropdown>\n * Content displayed in popover\n * </Popover.Dropdown>\n * </Popover>\n * ```\n */\nexport type PopoverProps = RecursicaOverStyled<\n MantinePopoverProps & RecursicaPopoverProps\n>;\n\nconst PopoverBase = function Popover({\n overStyled = false,\n withBeak = true,\n ...rest\n}: PopoverProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n dropdown: styles.dropdown,\n arrow: styles.arrow,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px).\n const arrowSize =\n ((sanitizedProps as Record<string, unknown>).arrowSize as\n | number\n | undefined) ?? 16;\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const withArrow = (sanitizedProps as Record<string, unknown>).withArrow as\n | boolean\n | undefined;\n const resolvedWithArrow = withBeak ?? withArrow;\n\n return (\n <MantinePopover\n position=\"top\" /* Recursica default; Mantine defaults to \"bottom\" */\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantinePopoverProps)}\n />\n );\n};\nPopoverBase.displayName = \"Popover\";\n\n// ============================================================\n// POPOVER TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the popover.\n * Requires a single child element that supports ref forwarding.\n */\nexport type PopoverTargetProps = MantinePopoverTargetProps;\n\nconst PopoverTarget = function PopoverTarget(props: PopoverTargetProps) {\n return <MantinePopover.Target {...props} />;\n};\nPopoverTarget.displayName = \"PopoverTarget\";\n\n// ============================================================\n// POPOVER DROPDOWN\n// ============================================================\n\n/** The dropdown panel displayed from the popover. */\nexport type PopoverDropdownProps =\n RecursicaOverStyled<MantinePopoverDropdownProps>;\n\nconst PopoverDropdown = function PopoverDropdown({\n overStyled = false,\n ...rest\n}: PopoverDropdownProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantinePopover.Dropdown\n className={classNameProp}\n {...(sanitizedProps as unknown as MantinePopoverDropdownProps)}\n />\n );\n};\nPopoverDropdown.displayName = \"PopoverDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype PopoverComponent = typeof PopoverBase & {\n Target: typeof PopoverTarget;\n Dropdown: typeof PopoverDropdown;\n};\n\nexport const Popover = PopoverBase as PopoverComponent;\nPopover.Target = PopoverTarget;\nPopover.Dropdown = PopoverDropdown;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Radio as MantineRadio,\n type RadioGroupProps as MantineRadioGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Radio.module.css\";\n\nexport interface RecursicaRadioGroupProps\n extends Omit<MantineRadioGroupProps, \"size\" | \"labelProps\">,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps {}\n\nexport type RadioGroupProps = RecursicaOverStyled<RecursicaRadioGroupProps>;\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n function RadioGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing the variables\n delete restRecord[\"size\"];\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_radio-button-item_properties_max-width)\"\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive radios nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n <MantineRadio.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineRadioGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value}\n defaultValue={defaultValue}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineRadio.Group>\n }\n />\n );\n },\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import { forwardRef } from \"react\";\nimport {\n Radio as MantineRadio,\n type RadioProps as MantineRadioProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport { RadioGroup } from \"./RadioGroup\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RequireAccessibleLabel } from \"../../utils/RequireAccessibleLabel\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\n\nimport styles from \"./Radio.module.css\";\n\nconst RadioIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n className={className}\n style={style}\n >\n <circle cx=\"8\" cy=\"8\" r=\"5\" />\n </svg>\n);\n\nexport type RecursicaRadioProps = RequireAccessibleLabel<\n Omit<\n MantineRadioProps,\n \"size\" | \"color\" | \"radius\" | \"iconColor\" | \"variant\"\n > &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >\n>;\n\nexport type RadioProps = RecursicaOverStyled<RecursicaRadioProps>;\n\ntype RadioComponent = React.ForwardRefExoticComponent<\n RadioProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof RadioGroup;\n};\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Actively delete dimension bindings that bypass the abstraction\n delete restRecord[\"size\"];\n delete restRecord[\"color\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"iconColor\"];\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n body: styles.body,\n inner: styles.inner,\n radio: styles.radio,\n icon: styles.icon,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.body = o.body ? `${styles.body} ${o.body}` : styles.body;\n mergedClassNames.inner = o.inner\n ? `${styles.inner} ${o.inner}`\n : styles.inner;\n mergedClassNames.radio = o.radio\n ? `${styles.radio} ${o.radio}`\n : styles.radio;\n mergedClassNames.icon = o.icon ? `${styles.icon} ${o.icon}` : styles.icon;\n mergedClassNames.labelWrapper = o.labelWrapper\n ? `${styles.labelWrapper} ${o.labelWrapper}`\n : styles.labelWrapper;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Radio.module.css\n const radioNode = (\n <MantineRadio\n ref={ref}\n icon={RadioIcon}\n className={finalClass}\n classNames={mergedClassNames}\n disabled={readOnly || disabled}\n {...(sanitizedProps as unknown as MantineRadioProps)}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {radioNode}\n </FormControlLayout>\n );\n }\n\n return radioNode;\n },\n) as RadioComponent;\n\nRadio.displayName = \"Radio\";\nRadio.Group = RadioGroup;\n","import React from \"react\";\nimport { Box } from \"@mantine/core\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nexport const ReadOnlySwitchField: React.FC<{\n checked: boolean;\n label?: React.ReactNode;\n}> = ({ checked, label }) => {\n return (\n <Box\n component=\"span\"\n className={styles.textField}\n style={{ display: \"inline-flex\", gap: \"8px\", alignItems: \"baseline\" }}\n >\n {label && <span style={{ fontWeight: 500 }}>{label}:</span>}\n <span>{checked ? \"On\" : \"Off\"}</span>\n </Box>\n );\n};\n\nReadOnlySwitchField.displayName = \"ReadOnlySwitchField\";\n","import React from \"react\";\nimport { Box } from \"@mantine/core\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nexport const ReadOnlyBooleanField: React.FC<{\n checked: boolean;\n label?: React.ReactNode;\n}> = ({ checked, label }) => {\n return (\n <Box\n component=\"span\"\n className={styles.textField}\n style={{ display: \"inline-flex\", gap: \"8px\", alignItems: \"baseline\" }}\n >\n {label && <span style={{ fontWeight: 500 }}>{label}:</span>}\n <span>{checked ? \"True\" : \"False\"}</span>\n </Box>\n );\n};\n\nReadOnlyBooleanField.displayName = \"ReadOnlyBooleanField\";\n","import { forwardRef } from \"react\";\nimport {\n SegmentedControl as MantineSegmentedControl,\n type SegmentedControlProps as MantineSegmentedControlProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface RecursicaSegmentedControlProps {\n /** The orientation of the control */\n orientation?: \"horizontal\" | \"vertical\";\n /** If true, the control will take up the full width of its container */\n fullWidth?: boolean;\n /**\n * SegmentedControl should NOT be allowed to be disabled by design.\n * This component explicitly disables the `disabled` prop.\n */\n disabled?: never;\n}\n\nexport type SegmentedControlProps = RecursicaOverStyled<\n Omit<\n MantineSegmentedControlProps,\n | \"variant\"\n | \"size\"\n | \"radius\"\n | \"color\"\n | \"classNames\"\n | \"className\"\n | \"disabled\"\n > & {\n className?: string;\n classNames?: Partial<Record<string, string>>;\n } & RecursicaSegmentedControlProps\n>;\n\nfunction useSegmentedControlClassNames(restRecord: Record<string, unknown>): {\n className: string;\n classNames: Partial<Record<string, string>>;\n} {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n control: styles.control,\n label: styles.label,\n indicator: styles.indicator,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.control = o.control\n ? `${styles.control} ${o.control}`\n : styles.control;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n mergedClassNames.indicator = o.indicator\n ? `${styles.indicator} ${o.indicator}`\n : styles.indicator;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return { className: finalClass, classNames: mergedClassNames };\n}\n\nconst _SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControl(\n { overStyled = false, orientation = \"horizontal\", fullWidth, ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Explicitly prevent consumers from bypassing the disabled restriction\n delete restRecord[\"disabled\"];\n\n const stylingParams = useSegmentedControlClassNames(restRecord);\n\n return (\n <MantineSegmentedControl\n ref={ref}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n orientation={orientation}\n fullWidth={fullWidth}\n data-orientation={orientation}\n {...(sanitizedProps as Omit<\n MantineSegmentedControlProps,\n \"variant\" | \"size\"\n >)}\n />\n );\n },\n);\n_SegmentedControl.displayName = \"SegmentedControl\";\n\n/**\n * Recursica SegmentedControl component wrapping Mantine's SegmentedControl.\n */\nexport const SegmentedControl = _SegmentedControl;\n","import React, { forwardRef, useState, useEffect } from \"react\";\nimport {\n Slider as MantineSlider,\n type SliderProps as MantineSliderProps,\n type InputWrapperProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\n\nimport styles from \"./Slider.module.css\";\n\nexport interface RecursicaSliderProps\n extends Omit<\n MantineSliderProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"classNames\"\n | \"styles\"\n | \"label\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n Pick<InputWrapperProps, \"error\" | \"required\" | \"withAsterisk\">,\n ReadOnlyControlProps {\n /** The form control label displayed above or beside the slider track. */\n label?: React.ReactNode;\n /** Floating tooltip shown above the thumb when dragging. Replaces Mantine's `label`. */\n tooltipLabel?: MantineSliderProps[\"label\"];\n /** An optional icon rendered to the left of the slider track. */\n icon?: React.ReactNode;\n /** Whether to render a numeric input field side-by-side or stacked with the track. Defaults to false. */\n showInput?: boolean;\n /** Whether to render min and max labels below the track. Defaults to true. */\n showMinMaxLabels?: boolean;\n}\n\nexport type SliderProps = RecursicaOverStyled<RecursicaSliderProps>;\n\n/**\n * Custom Read-Only visual representation of the Slider value.\n * Utilizes component-specific read-only typography variables.\n */\nconst SliderReadOnlyValue: React.FC<{ value: number }> = ({ value }) => {\n return <div className={styles.readOnlyValue}>{value}</div>;\n};\n\n/**\n * Recursica Slider component wrapping Mantine's Slider.\n *\n * Implements a bidirectional text input field next to the slider track, responsive layouts,\n * custom typography-bound min/max labels, an optional leading icon, and an explicit read-only layout.\n */\nexport const Slider = forwardRef<HTMLDivElement, SliderProps>(\n function Slider(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n tooltipLabel,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n icon,\n showInput = false,\n showMinMaxLabels = true,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n onChangeEnd,\n ...rest\n } = props;\n\n // Bidirectional state linking the slider track value to the input field string representation\n const [internalValue, setInternalValue] = useState<number>(() => {\n if (value !== undefined) return value;\n if (defaultValue !== undefined) return defaultValue;\n return min;\n });\n\n const resolvedValue = value !== undefined ? value : internalValue;\n const [inputValue, setInputValue] = useState<string>(\n resolvedValue.toString(),\n );\n\n // Synchronize text input whenever the slider value changes\n useEffect(() => {\n setInputValue(resolvedValue.toString());\n }, [resolvedValue]);\n\n const handleValueChange = (val: number) => {\n if (value === undefined) {\n setInternalValue(val);\n }\n onChange?.(val);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const valStr = e.target.value;\n setInputValue(valStr);\n\n const parsed = parseFloat(valStr);\n if (!isNaN(parsed)) {\n // Clamp input value to bounds\n const clamped = Math.max(min, Math.min(max, parsed));\n handleValueChange(clamped);\n }\n };\n\n const handleInputBlur = () => {\n // Clean up text field on blur to reflect the final clamped resolved value\n setInputValue(resolvedValue.toString());\n };\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"wrapperProps\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.sliderRoot,\n track: styles.sliderTrack,\n bar: styles.sliderBar,\n thumb: styles.sliderThumb,\n mark: styles.sliderMark,\n markLabel: styles.sliderMarkLabel,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root\n ? `${styles.sliderRoot} ${o.root}`\n : styles.sliderRoot;\n mergedClassNames.track = o.track\n ? `${styles.sliderTrack} ${o.track}`\n : styles.sliderTrack;\n mergedClassNames.bar = o.bar\n ? `${styles.sliderBar} ${o.bar}`\n : styles.sliderBar;\n mergedClassNames.thumb = o.thumb\n ? `${styles.sliderThumb} ${o.thumb}`\n : styles.sliderThumb;\n mergedClassNames.mark = o.mark\n ? `${styles.sliderMark} ${o.mark}`\n : styles.sliderMark;\n mergedClassNames.markLabel = o.markLabel\n ? `${styles.sliderMarkLabel} ${o.markLabel}`\n : styles.sliderMarkLabel;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n const leadingIcon = icon ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : null;\n\n return (\n <WithReadOnlyWrapper\n ref={ref}\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth={undefined}\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent || SliderReadOnlyValue}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={resolvedValue}\n readOnlyNativeProps={{ value: resolvedValue }}\n activeComponent={\n <div\n className={styles.sliderContainer}\n data-form-layout={formLayout}\n data-disabled={disabled ? \"true\" : undefined}\n data-error={error ? \"true\" : undefined}\n >\n {leadingIcon}\n\n {showMinMaxLabels && (\n <span className={styles.minMaxGuide}>{min}</span>\n )}\n\n <div className={styles.sliderTrackWrapper}>\n <MantineSlider\n classNames={mergedClassNames}\n disabled={disabled}\n value={resolvedValue}\n onChange={handleValueChange}\n onChangeEnd={onChangeEnd}\n min={min}\n max={max}\n step={step}\n label={tooltipLabel}\n {...(sanitizedProps as unknown as MantineSliderProps)}\n />\n </div>\n\n <div className={styles.rightGuideContainer}>\n {!showInput && (\n <span className={styles.currentValue}>{resolvedValue}</span>\n )}\n {showMinMaxLabels && (\n <span className={styles.minMaxGuide}>{max}</span>\n )}\n </div>\n\n {showInput && (\n <input\n type=\"number\"\n className={styles.inputField}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n data-error={error ? \"true\" : undefined}\n />\n )}\n </div>\n }\n />\n );\n },\n);\n\nSlider.displayName = \"Slider\";\n","import { forwardRef } from \"react\";\nimport {\n Stack as MantineStack,\n type StackProps as MantineStackProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n type RecursicaSpacing,\n mapLayoutProps,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Stack.module.css\";\n\nexport interface RecursicaStackProps {\n /**\n * Children components inside the stack\n */\n children?: React.ReactNode;\n gap?: MantineStackProps[\"gap\"] | RecursicaSpacing;\n}\n\n/**\n * Stack flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type StackProps = MantineStackProps & RecursicaStackProps;\n\nconst _Stack = forwardRef<HTMLDivElement, StackProps>(function Stack(\n { children, gap = \"rec-default\", ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineStack\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, ...rest } as Record<string, unknown>)}\n >\n {children}\n </MantineStack>\n );\n});\n_Stack.displayName = \"Stack\";\n\nexport const Stack = createPolymorphicComponent<\"div\", StackProps>(_Stack);\n","import React, { forwardRef } from \"react\";\nimport {\n Stepper as MantineStepper,\n type StepperProps as MantineStepperProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Stepper.module.css\";\n\nexport interface RecursicaStepperProps\n extends Omit<\n MantineStepperProps,\n \"size\" | \"color\" | \"radius\" | \"iconSize\" | \"contentPadding\"\n > {\n size?: \"small\" | \"large\";\n}\n\nexport type StepperProps = RecursicaOverStyled<RecursicaStepperProps>;\n\nconst _Stepper = forwardRef<HTMLDivElement, StepperProps>(\n function Stepper(props, ref) {\n const {\n overStyled = false,\n size = \"large\",\n orientation = \"horizontal\",\n className,\n style,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n return (\n <MantineStepper\n ref={ref}\n orientation={orientation}\n className={`${styles.root} ${orientation === \"horizontal\" ? styles.horizontal : styles.vertical} ${size === \"large\" ? styles.large : styles.small} ${className || \"\"}`}\n style={style as React.CSSProperties}\n data-size={size}\n data-orientation={orientation}\n classNames={{\n steps: styles.steps,\n step: styles.step,\n stepIcon: styles.stepIcon,\n stepCompletedIcon: styles.stepCompletedIcon,\n stepBody: styles.stepBody,\n stepLabel: styles.stepLabel,\n stepDescription: styles.stepDescription,\n separator: styles.separator,\n verticalSeparator: styles.verticalSeparator,\n content: styles.content,\n }}\n {...(sanitizedProps as MantineStepperProps)}\n />\n );\n },\n);\n\n// We need to re-export the static components Step and Completed\nexport const Stepper: typeof _Stepper & {\n Step: typeof MantineStepper.Step;\n Completed: typeof MantineStepper.Completed;\n} = Object.assign(_Stepper, {\n Step: MantineStepper.Step,\n Completed: MantineStepper.Completed,\n});\n\n_Stepper.displayName = \"Stepper\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Switch as MantineSwitch,\n type SwitchGroupProps as MantineSwitchGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Switch.module.css\";\n\nexport interface RecursicaSwitchGroupProps\n extends Omit<MantineSwitchGroupProps, \"size\" | \"labelProps\">,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps {}\n\nexport type SwitchGroupProps = RecursicaOverStyled<RecursicaSwitchGroupProps>;\n\nexport const SwitchGroup = forwardRef<HTMLDivElement, SwitchGroupProps>(\n function SwitchGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing the variables\n delete restRecord[\"size\"];\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_switch-item_properties_label-max-width)\"\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive switches nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n <MantineSwitch.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineSwitchGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value}\n defaultValue={defaultValue}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineSwitch.Group>\n }\n />\n );\n },\n);\n\nSwitchGroup.displayName = \"SwitchGroup\";\n","import { forwardRef } from \"react\";\nimport {\n Switch as MantineSwitch,\n type SwitchProps as MantineSwitchProps,\n CheckIcon,\n CloseIcon,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\n\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RequireAccessibleLabel } from \"../../utils/RequireAccessibleLabel\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\nimport styles from \"./Switch.module.css\";\n\nimport { SwitchGroup } from \"./SwitchGroup\";\n\nexport type RecursicaSwitchProps = RequireAccessibleLabel<\n Omit<MantineSwitchProps, \"size\" | \"color\" | \"radius\" | \"variant\"> &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >\n>;\n\nexport type SwitchProps = RecursicaOverStyled<RecursicaSwitchProps>;\n\ntype SwitchComponent = React.ForwardRefExoticComponent<\n SwitchProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof SwitchGroup;\n};\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n function Switch(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n thumbIcon,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Actively delete dimension bindings that bypass the abstraction\n delete restRecord[\"size\"];\n delete restRecord[\"color\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"variant\"];\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n body: styles.body,\n track: styles.track,\n thumb: styles.thumb,\n trackLabel: styles.trackLabel,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.body = o.body ? `${styles.body} ${o.body}` : styles.body;\n mergedClassNames.track = o.track\n ? `${styles.track} ${o.track}`\n : styles.track;\n mergedClassNames.thumb = o.thumb\n ? `${styles.thumb} ${o.thumb}`\n : styles.thumb;\n mergedClassNames.trackLabel = o.trackLabel\n ? `${styles.trackLabel} ${o.trackLabel}`\n : styles.trackLabel;\n mergedClassNames.labelWrapper = o.labelWrapper\n ? `${styles.labelWrapper} ${o.labelWrapper}`\n : styles.labelWrapper;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n const FinalThumbIcon = (\n <div className={styles.thumbIconWrapper}>\n <CheckIcon className={styles.checkIcon} />\n <CloseIcon className={styles.closeIcon} />\n </div>\n );\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Switch.module.css\n const switchNode = (\n <MantineSwitch\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n disabled={readOnly || disabled}\n data-disabled={readOnly || disabled || undefined}\n thumbIcon={thumbIcon ?? FinalThumbIcon}\n {...(sanitizedProps as unknown as MantineSwitchProps)}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {switchNode}\n </FormControlLayout>\n );\n }\n\n return switchNode;\n },\n) as SwitchComponent;\n\nSwitch.displayName = \"Switch\";\nSwitch.Group = SwitchGroup;\n","import React from \"react\";\n\nexport type TableProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const Table: React.FC<TableProps> = (props) => {\n return <div {...props}>Table</div>;\n};\n","import { forwardRef } from \"react\";\nimport {\n Tabs as MantineTabs,\n type TabsProps as MantineTabsProps,\n type TabsListProps as MantineTabsListProps,\n type TabsTabProps as MantineTabsTabProps,\n type TabsPanelProps as MantineTabsPanelProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Tabs.module.css\";\n\nexport interface RecursicaTabsProps\n extends Omit<\n MantineTabsProps,\n \"variant\" | \"classNames\" | \"color\" | \"radius\"\n > {\n variant?: \"default\" | \"outline\" | \"pills\";\n}\n\nexport type TabsProps = RecursicaOverStyled<RecursicaTabsProps>;\n\nconst _Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(props, ref) {\n const {\n variant = \"default\",\n orientation = \"horizontal\",\n overStyled = false,\n className,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n return (\n <MantineTabs\n ref={ref}\n variant={variant}\n orientation={orientation}\n className={`${styles.root} ${className || \"\"}`}\n data-variant={variant}\n data-orientation={orientation}\n classNames={{\n list: styles.list,\n tab: styles.tab,\n panel: styles.panel,\n }}\n {...(sanitizedProps as MantineTabsProps)}\n />\n );\n});\n\n_Tabs.displayName = \"Tabs\";\n\nexport type TabsListProps = RecursicaOverStyled<MantineTabsListProps>;\n\nconst _TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n function TabsList(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.List\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsListProps)}\n />\n );\n },\n);\n_TabsList.displayName = \"Tabs.List\";\n\nexport type TabsTabProps = RecursicaOverStyled<MantineTabsTabProps>;\n\nconst _TabsTab = forwardRef<HTMLButtonElement, TabsTabProps>(\n function TabsTab(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.Tab\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsTabProps)}\n />\n );\n },\n);\n_TabsTab.displayName = \"Tabs.Tab\";\n\nexport type TabsPanelProps = RecursicaOverStyled<MantineTabsPanelProps>;\n\nconst _TabsPanel = forwardRef<HTMLDivElement, TabsPanelProps>(\n function TabsPanel(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.Panel\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsPanelProps)}\n />\n );\n },\n);\n_TabsPanel.displayName = \"Tabs.Panel\";\n\nexport const Tabs: typeof _Tabs & {\n List: typeof _TabsList;\n Tab: typeof _TabsTab;\n Panel: typeof _TabsPanel;\n} = Object.assign(_Tabs, {\n List: _TabsList,\n Tab: _TabsTab,\n Panel: _TabsPanel,\n});\n","import { forwardRef, type ReactNode } from \"react\";\nimport {\n Text as MantineText,\n type TextProps as MantineTextProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\n\nexport type TextVariant =\n | \"body\"\n | \"body-small\"\n | \"caption\"\n | \"overline\"\n | \"subtitle\"\n | \"subtitle-small\";\n\nexport type RecursicaTextProps = Omit<MantineTextProps, \"variant\"> & {\n /**\n * The explicit typography hierarchy dictated by Recursica's global design tokens.\n */\n variant?: TextVariant;\n children?: ReactNode;\n};\n\nexport type TextProps = RecursicaOverStyled<RecursicaTextProps>;\n\nconst _Text = forwardRef<HTMLDivElement, TextProps>(function Text(\n { overStyled = false, variant = \"body\", ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const typographyClass = `recursica_brand_typography_${variant}`;\n const mergedClassName = classNameProp\n ? `${typographyClass} ${classNameProp}`\n : typographyClass;\n\n return (\n <MantineText\n ref={ref}\n className={mergedClassName}\n {...(sanitizedProps as unknown as MantineTextProps)}\n />\n );\n});\n_Text.displayName = \"Text\";\n\n/**\n * A generalized typographical wrapper limiting text properties to bounded Recursica UI-kit tokens inherently.\n * Do not use for semantic headings; use the explicit `<Title>` component for `<h1>` - `<h6>`.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * @example\n * ```tsx\n * <Text component=\"span\">Inline text</Text>\n * <Text component=\"label\" htmlFor=\"input-id\">Label text</Text>\n * ```\n */\nexport const Text = createPolymorphicComponent<\"p\", TextProps>(_Text);\n","import React, { forwardRef } from \"react\";\nimport {\n Textarea as MantineTextarea,\n type TextareaProps as MantineTextareaProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./TextArea.module.css\";\n\nexport interface RecursicaTextAreaProps\n extends Omit<\n MantineTextareaProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\"\n >,\n Pick<\n RecursicaFormControlWrapperProps,\n | \"assistiveText\"\n | \"assistiveWithIcon\"\n | \"formLayout\"\n | \"labelSize\"\n | \"labelAlignment\"\n | \"labelOptionalText\"\n | \"labelWithEditIcon\"\n | \"onLabelEditClick\"\n >,\n ReadOnlyControlProps {\n /** Maximum rows for autosize textarea to grow */\n maxRows?: number;\n /** Minimum rows of autosize textarea */\n minRows?: number;\n /** If set, enables textarea height growing with its content */\n autosize?: boolean;\n}\n\nexport type TextAreaProps = RecursicaOverStyled<RecursicaTextAreaProps>;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextArea(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_textarea_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_textarea_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineTextarea\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n label={undefined}\n description={undefined}\n error={undefined}\n required={undefined}\n withAsterisk={undefined}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as MantineTextareaProps)}\n />\n }\n />\n );\n },\n);\n\nTextArea.displayName = \"TextArea\";\n","import React, { forwardRef } from \"react\";\nimport { Input, type InputProps, type InputWrapperProps } from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./TextField.module.css\";\n\nexport interface RecursicaTextFieldProps\n extends Omit<InputProps, \"size\" | \"variant\" | \"radius\" | \"wrapperProps\">,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n React.ComponentPropsWithoutRef<\"input\">,\n \"size\" | \"style\" | \"className\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps {}\n\nexport type TextFieldProps = RecursicaOverStyled<RecursicaTextFieldProps>;\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n function TextField(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.section = o.section\n ? `${styles.section} ${o.section}`\n : styles.section;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_text-field_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_text-field_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <Input\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as InputProps)}\n />\n }\n />\n );\n },\n);\n\nTextField.displayName = \"TextField\";\n","import React from \"react\";\n\nexport type TimePickerProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const TimePicker: React.FC<TimePickerProps> = (props) => {\n return <div {...props}>TimePicker</div>;\n};\n","import React from \"react\";\nimport {\n TimelineItem as MantineTimelineItem,\n type TimelineItemProps as MantineTimelineItemProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Timeline.module.css\";\n\nexport interface RecursicaTimelineItemProps {\n /**\n * Timestamp text displayed below the description.\n */\n timestamp?: React.ReactNode;\n /**\n * The structural styling variant of the bullet container.\n * Maps to the UI Kit structural tokens.\n * @default \"default\"\n */\n bulletVariant?: \"default\" | \"avatar\" | \"icon\" | \"icon-alternative\";\n}\n\nexport type TimelineItemProps = RecursicaOverStyled<\n Omit<MantineTimelineItemProps, \"radius\" | \"color\" | \"lineVariant\"> &\n RecursicaTimelineItemProps\n>;\n\n/**\n * The individual item component for the Timeline.\n *\n * **Recursica Abstract:**\n * The `Timeline.Item` has been extended to support a `timestamp` string natively,\n * rendering it below the body content. It also accepts a `bulletVariant` to morph\n * the structural dimensions of the node circle automatically.\n */\nexport const TimelineItem = React.forwardRef<HTMLDivElement, TimelineItemProps>(\n function TimelineItem(\n {\n overStyled = false,\n timestamp,\n bulletVariant = \"default\",\n children,\n ...rest\n },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n item: styles.item,\n itemBody: styles.itemBody,\n itemContent: styles.itemContent,\n itemBullet: styles.itemBullet,\n itemTitle: styles.itemTitle,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>)\n .classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n // Embed timestamp inside children if provided, wrapped in a specific class\n const content = timestamp ? (\n <>\n {children && <div className={styles.description}>{children}</div>}\n <div className={styles.timestamp}>{timestamp}</div>\n </>\n ) : (\n children\n );\n\n return (\n <MantineTimelineItem\n ref={ref}\n classNames={mergedClassNames}\n data-variant={bulletVariant}\n {...(sanitizedProps as unknown as Omit<\n MantineTimelineItemProps,\n \"radius\" | \"color\" | \"lineVariant\"\n >)}\n >\n {content}\n </MantineTimelineItem>\n );\n },\n);\n\nTimelineItem.displayName = \"TimelineItem\";\n","import React from \"react\";\nimport {\n Timeline as MantineTimeline,\n type TimelineProps as MantineTimelineProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Timeline.module.css\";\nimport { TimelineItem } from \"./TimelineItem\";\n\n/**\n * Properties for the strictly-tokenized Timeline component.\n * Native Mantine abstract properties like `color`, `radius`, `bulletSize`, and `lineWidth`\n * have been stripped out to strictly enforce the structural mappings of the Recursica UI Kit.\n */\nexport type TimelineProps = RecursicaOverStyled<\n Omit<MantineTimelineProps, \"color\" | \"radius\" | \"bulletSize\" | \"lineWidth\">\n>;\n\ninterface TimelineComponent\n extends React.ForwardRefExoticComponent<\n TimelineProps & React.RefAttributes<HTMLDivElement>\n > {\n Item: typeof TimelineItem;\n}\n\n/**\n * The `Timeline` component displays a list of events in chronological order.\n *\n * **Recursica Abstract:**\n * This component acts as a structural wrapper around Mantine's `<Timeline>`.\n * It forces alignment and geometry strictly via the UI Kit's `.itemBullet` and connector definitions.\n *\n * @example\n * ```tsx\n * <Timeline active={1}>\n * <Timeline.Item title=\"Event 1\" timestamp=\"Yesterday\">Description</Timeline.Item>\n * </Timeline>\n * ```\n */\nconst TimelineInner = React.forwardRef<HTMLDivElement, TimelineProps>(\n function Timeline({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>)\n .classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineTimeline\n ref={ref}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as Omit<\n MantineTimelineProps,\n \"color\" | \"radius\" | \"bulletSize\" | \"lineWidth\"\n >)}\n />\n );\n },\n);\n\nTimelineInner.displayName = \"Timeline\";\n\nexport const Timeline = TimelineInner as TimelineComponent;\nTimeline.Item = TimelineItem;\n","import { forwardRef } from \"react\";\nimport {\n Title as MantineTitle,\n type TitleProps as MantineTitleProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\n\nexport type RecursicaTitleProps = Omit<MantineTitleProps, \"order\"> & {\n /**\n * Enforces semantic HTML headers (h1-h6) cleanly bound to native typographic scaling variables in the design system.\n */\n order?: 1 | 2 | 3 | 4 | 5 | 6;\n};\n\nexport type TitleProps = RecursicaOverStyled<RecursicaTitleProps>;\n\n/**\n * Enforces highly accessible structural markup utilizing semantic `<h1>` through `<h6>` tags securely bound directly to Recursica typographic scales.\n */\nexport const Title = forwardRef<HTMLHeadingElement, TitleProps>(function Title(\n { overStyled = false, order = 1, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const typographyClass = `recursica_brand_typography_h${order}`;\n const mergedClassName = classNameProp\n ? `${typographyClass} ${classNameProp}`\n : typographyClass;\n\n return (\n <MantineTitle\n ref={ref}\n order={order}\n className={mergedClassName}\n {...(sanitizedProps as unknown as MantineTitleProps)}\n />\n );\n});\nTitle.displayName = \"Title\";\n","import React from \"react\";\nimport {\n Notification as MantineNotification,\n type NotificationProps as MantineNotificationProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Toast.module.css\";\n\nexport interface RecursicaToastProps {\n /**\n * The visual variant of the toast.\n * @default \"default\"\n */\n variant?: \"default\" | \"error\" | \"success\";\n\n /**\n * Loading state is natively unsupported by Recursica UI Kit.\n * If a loading state is required, pass a `<Loader size=\"sm\" />` directly into the `icon` prop.\n */\n loading?: false;\n}\n\n/**\n * Toast component wrapping Mantine's Notification.\n *\n * Can be used as a standalone visual component to display a notification or message.\n */\nexport type ToastProps = RecursicaOverStyled<\n Omit<MantineNotificationProps, \"color\" | \"radius\" | \"variant\" | \"loading\"> &\n RecursicaToastProps\n>;\n\nexport const Toast = React.forwardRef<HTMLDivElement, ToastProps>(\n function Toast(\n {\n overStyled = false,\n variant = \"default\",\n withCloseButton = true,\n ...rest\n },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n body: styles.body,\n title: styles.title,\n description: styles.description,\n closeButton: styles.closeButton,\n icon: styles.icon,\n loader: styles.loader,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>)\n .classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineNotification\n ref={ref}\n withCloseButton={withCloseButton}\n withBorder={false} // Border is handled via CSS or tokens if needed\n data-variant={variant}\n classNames={mergedClassNames}\n loading={false}\n {...(sanitizedProps as unknown as Omit<\n MantineNotificationProps,\n \"color\" | \"radius\" | \"variant\" | \"loading\"\n >)}\n />\n );\n },\n);\n\nToast.displayName = \"Toast\";\n","import {\n Tooltip as MantineTooltip,\n type TooltipProps as MantineTooltipProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Tooltip.module.css\";\n\n// ============================================================\n// TOOLTIP\n// ============================================================\n\n/**\n * Recursica-specific props for Tooltip.\n */\nexport interface RecursicaTooltipProps {\n /**\n * Whether to display a beak (arrow) pointing from the tooltip to the target.\n * This is the Recursica equivalent of Mantine's `withArrow`.\n * When both `withBeak` and `withArrow` are provided, `withBeak` takes precedence.\n * @default true\n */\n withBeak?: boolean;\n}\n\n/**\n * Recursica Tooltip component wrapping Mantine's Tooltip.\n *\n * Displays a floating label when the user hovers over or focuses a target element.\n * Unlike HoverCard, Tooltip is a single component (not composable) — content is\n * passed via the `label` prop, and the trigger is passed as `children`.\n *\n * ```tsx\n * <Tooltip label=\"Helpful information\" withBeak>\n * <Button>Hover me</Button>\n * </Tooltip>\n * ```\n *\n * Static sub-components available via dot-notation:\n * - `Tooltip.Floating` — Tooltip that follows the cursor\n * - `Tooltip.Group` — Shared hover delay group for multiple tooltips\n */\nexport type TooltipProps = RecursicaOverStyled<\n MantineTooltipProps & RecursicaTooltipProps\n>;\n\nconst TooltipBase = function Tooltip({\n overStyled = false,\n withBeak = true,\n ...rest\n}: TooltipProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n tooltip: styles.tooltip,\n arrow: styles.arrow,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px).\n const arrowSize =\n ((sanitizedProps as Record<string, unknown>).arrowSize as\n | number\n | undefined) ?? 16;\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const withArrow = (sanitizedProps as Record<string, unknown>).withArrow as\n | boolean\n | undefined;\n const resolvedWithArrow = withBeak ?? withArrow;\n\n return (\n <MantineTooltip\n position=\"top\" /* Recursica default; Mantine defaults to \"bottom\" */\n multiline /* Always allow text wrapping within max-width */\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineTooltipProps)}\n />\n );\n};\nTooltipBase.displayName = \"Tooltip\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype TooltipComponent = typeof TooltipBase & {\n Floating: typeof MantineTooltip.Floating;\n Group: typeof MantineTooltip.Group;\n};\n\nexport const Tooltip = TooltipBase as TooltipComponent;\nTooltip.Floating = MantineTooltip.Floating;\nTooltip.Group = MantineTooltip.Group;\n","import React from \"react\";\n\nexport type TransferListProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const TransferList: React.FC<TransferListProps> = (props) => {\n return <div {...props}>TransferList</div>;\n};\n"],"names":["BLOCKED_STYLING_KEYS","LAYOUT_PROPS","SPACING_MAP","mapLayoutProps","props","mapped","key","value","filterStylingProps","overStyled","sanitized","prop","AccordionBase","variant","rest","sanitizedProps","mergedClassNames","styles","classNamesProp","o","classNameProp","jsx","MantineAccordion","AccordionItem","forwardRef","title","leftIcon","divider","children","ref","finalClass","jsxs","Fragment","AccordionControl","AccordionPanel","Accordion","Label","labelSize","labelAlignment","required","labelOptionalText","labelWithEditIcon","labelActionArea","onLabelEditClick","resolvedAlignment","resolvedOptionalText","restRecord","Input","FormControlLayout","formLayout","controlMaxWidth","controlMinWidth","leftSection","className","style","rootClass","shouldRenderLeft","InfoIcon","AlertIcon","AssistiveElement","assistiveVariant","assistiveWithIcon","IconComponent","FormControlWrapper","label","description","assistiveText","error","withAsterisk","userProvidedId","labelElement","generatedId","useId","id","resolvedAssistive","assistiveId","errorId","content","React","labelNode","E","_","r","$","l","i","n","u","m","d","y","c","a","t","h","s","g","p","e","f","ReadOnlyTextField","Box","ReadOnlyField","type","emptyValueComponent","Renderer","EmptyValueRenderer","displayValue","wrapperClass","WithReadOnlyWrapper","readOnly","readOnlyComponent","readOnlyType","readOnlyValue","readOnlyNativeProps","activeComponent","wrapperProps","ReadOnlyComponent","AutoComplete","disabled","defaultValue","MantineAutocomplete","_Avatar","size","icon","src","mapVariant","mapSize","computedStyle","MantineAvatar","Avatar","createPolymorphicComponent","_Badge","MantineBadge","Badge","Breadcrumb","separator","MantineBreadcrumbs","Loader","resolvedSize","MantineLoader","hasVisibleChildren","_Button","loaderVariant","loaderSize","useRecursicaLoader","hasLeftSection","hasRightSection","hasVisibleText","isIconOnly","contentType","userLoaderProps","resolvedLoaderSize","mergedLoaderProps","MantineButton","Button","CardBase","MantineCard","CardSection","CardHeader","CardFooter","CardContent","PolymorphicCard","_card","Card","CheckboxGroup","MantineCheckbox","Checkbox","isChecked","ReadOnlyComp","roNode","checkboxNode","CloseIcon","Chip","onRemove","removeLabel","dataError","MantineChip","Container","MantineContainer","DatePicker","DatePickerInput","Dropdown","containerWidth","data","injectedStyles","MantineSelect","FileInput","FileUpload","_Flex","gap","rowGap","columnGap","MantineFlex","Flex","Group","MantineGroup","HoverCardBase","withBeak","arrowSize","withArrow","resolvedWithArrow","MantineHoverCard","HoverCardTarget","HoverCardDropdown","HoverCard","_Link","MantineAnchor","Link","MenuBase","MantineMenu","MenuTarget","MenuDropdown","_MenuItem","MenuItem","MenuDivider","MenuLabel","MenuSubBase","MenuSubTarget","_MenuSubItem","MenuSubItem","MenuSubDropdown","MenuSub","Menu","ModalInner","withCloseButton","overlayProps","withOverlay","closeButtonProps","MantineModal","ModalBody","ModalFooter","onScroll","internalRef","scrolledTop","setScrolledTop","scrolledBottom","setScrolledBottom","checkScroll","scrollTop","scrollHeight","clientHeight","handleScroll","footer","bodyChildren","child","_a","node","Modal","NumberInput","hideControls","MantineNumberInput","NextPath","PrevPath","FirstPath","LastPath","paths","PaginationIcon","NextWithLabel","PrevWithLabel","FirstWithLabel","LastWithLabel","usePaginationClassNames","_PaginationRoot","stylingParams","MantinePagination","_PaginationNext","withLabel","renderIcon","_PaginationPrevious","_PaginationFirst","_PaginationLast","_Pagination","getControlProps","withLabels","mergedGetControlProps","control","baseProps","labelsIcons","Pagination","PanelBase","position","keepMounted","wrapHeaderText","MantineDrawer","PanelFooter","finalClassName","Panel","PopoverBase","MantinePopover","PopoverTarget","PopoverDropdown","Popover","RadioGroup","MantineRadio","RadioIcon","Radio","radioNode","ReadOnlySwitchField","checked","ReadOnlyBooleanField","useSegmentedControlClassNames","_SegmentedControl","orientation","fullWidth","MantineSegmentedControl","SegmentedControl","SliderReadOnlyValue","Slider","tooltipLabel","showInput","showMinMaxLabels","min","max","step","onChange","onChangeEnd","internalValue","setInternalValue","useState","resolvedValue","inputValue","setInputValue","useEffect","handleValueChange","val","handleInputChange","valStr","parsed","clamped","handleInputBlur","leadingIcon","MantineSlider","_Stack","MantineStack","Stack","_Stepper","MantineStepper","Stepper","SwitchGroup","MantineSwitch","Switch","thumbIcon","FinalThumbIcon","CheckIcon","switchNode","Table","_Tabs","MantineTabs","_TabsList","_TabsTab","_TabsPanel","Tabs","_Text","typographyClass","mergedClassName","MantineText","Text","TextArea","MantineTextarea","TextField","TimePicker","TimelineItem","timestamp","bulletVariant","MantineTimelineItem","TimelineInner","MantineTimeline","Timeline","Title","order","MantineTitle","Toast","MantineNotification","TooltipBase","MantineTooltip","Tooltip","TransferList"],"mappings":"gMAwBaA,GAAuB,CAClC,YACA,aACA,QACA,SACA,OACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,UACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,SACA,IACA,MACA,MACA,IACA,MACA,KACF,EAeMC,OAAmB,IAAI,CAC3B,IACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,SACA,YACA,MACA,OACA,SACA,OACF,CAAC,EAEYC,GAAsC,CACjD,WAAY,iDACZ,SAAU,+CACV,cAAe,oDACf,SAAU,+CACV,SAAU,+CACV,SAAU,+CACV,UAAW,+CACb,EASO,SAASC,GAAkDC,EAAa,CAC7E,MAAMC,EAAS,CAAE,GAAGD,CAAA,EACpB,SAAW,CAACE,EAAKC,CAAK,IAAK,OAAO,QAAQF,CAAM,EAE5C,OAAOE,GAAU,UACjBA,EAAM,WAAW,MAAM,GACvBN,GAAa,IAAIK,CAAG,GAEhBC,KAASL,KACVG,EAAmCC,CAAG,EAAIJ,GAAYK,CAAK,GAIlE,OAAOF,CACT,CAEO,SAASG,EACdJ,EACAK,EACY,CACZ,GAAIA,EACF,OAAOL,EAGT,MAAMM,EAAY,CAAE,GAAGN,CAAA,EAEvB,UAAWO,KAAQX,GACbW,KAAQD,GACV,OAAOA,EAAUC,CAAI,EAKzB,SAAW,CAACL,EAAKC,CAAK,IAAK,OAAO,QAAQG,CAAS,EAE/C,OAAOH,GAAU,UACjBA,EAAM,WAAW,MAAM,GACvBN,GAAa,IAAIK,CAAG,GAEhBC,KAASL,KACVQ,EAAsCJ,CAAG,EAAIJ,GAAYK,CAAK,GAKrE,OAAOG,CACT,8cC3IME,GAAgB,SAAmB,CACvC,QAAAC,EAAU,WACV,WAAAJ,EAAa,GACb,GAAGK,CACL,EAAmB,CACjB,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EAGpDO,EAAoD,CACxD,KAAMC,GAAO,KACb,KAAMA,GAAO,KACb,QAASA,GAAO,QAChB,MAAOA,GAAO,MACd,QAASA,GAAO,QAChB,MAAOA,GAAO,MACd,QAASA,GAAO,OAAA,EAGZC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAEA,MAAMc,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACC,EAAAA,UAAA,CACC,QAAAT,EACA,UAAWO,EACX,WAAYJ,EACX,GAAID,CAAA,CAAA,CAGX,EACAH,GAAc,YAAc,YA2BrB,MAAMW,GAAgBC,EAAAA,WAG3B,SACA,CAAE,MAAAC,EAAO,SAAAC,EAAU,QAAAC,EAAU,GAAM,SAAAC,EAAU,WAAAnB,EAAa,GAAO,GAAGK,CAAA,EACpEe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEGe,EACJ,CAACH,EAAU,OAAYV,GAAO,UAAWG,CAAa,EACnD,OAAO,OAAO,EACd,KAAK,GAAG,GAAK,OAIlB,OACEC,EAAAA,IAACC,EAAAA,UAAiB,KAAjB,CACC,IAAAO,EACA,UAAWC,EACV,GAAIf,EAEJ,WACCgB,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAX,EAAAA,IAACY,GAAA,CAAiB,SAAAP,EAAqB,SAAAD,CAAA,CAAM,EAC7CJ,MAACa,IAAgB,SAAAN,CAAA,CAAS,CAAA,CAAA,CAC5B,EAEAA,CAAA,CAAA,CAIR,CAAC,EACDL,GAAc,YAAc,gBAYrB,MAAMU,GAAmBT,EAAAA,WAG9B,SACA,CAAE,SAAAE,EAAU,SAAAE,EAAU,WAAAnB,EAAa,GAAO,GAAGK,CAAA,EAC7Ce,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACC,EAAAA,UAAiB,QAAjB,CACC,IAAAO,EACA,UAAWT,EACX,KACEM,EACEL,EAAAA,IAAC,OAAA,CAAK,UAAWJ,GAAO,gBAAiB,cAAW,GACjD,SAAAS,CAAA,CACH,EACE,OAEL,GAAIX,EAEJ,SAAAa,CAAA,CAAA,CAGP,CAAC,EACDK,GAAiB,YAAc,mBAMxB,MAAMC,GAAiBV,EAAAA,WAG5B,SAAwB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CAC9D,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACC,EAAAA,UAAiB,MAAjB,CACC,IAAAO,EACA,UAAWT,EACV,GAAIL,CAAA,CAAA,CAGX,CAAC,EACDmB,GAAe,YAAc,iBAStB,MAAMC,GAAYvB,GACzBuB,GAAU,KAAOZ,GACjBY,GAAU,QAAUF,GACpBE,GAAU,MAAQD,+UC5KLE,GAAQZ,EAAAA,WAAyC,SAC5D,CACE,UAAAa,EAAY,UACZ,eAAAC,EACA,SAAAC,EAAW,GACX,kBAAAC,EACA,kBAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,SAAAf,EACA,WAAAnB,EAAa,GACb,GAAGK,CACL,EACAe,EACA,CACA,MAAMe,EAAoBN,GAAkB,OAE5C,IAAIO,EACCN,IACCC,IAAsB,GAAMK,EAAuB,WAC9CL,IAAmBK,EAAuBL,IAGrD,MAAMzB,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAEbC,EAAoD,CACxD,MAAOC,EAAO,KACd,SAAUA,EAAO,QAAA,EAGbC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,IAAI,IAAIE,EAAE,KAAK,GACzBF,EAAO,KACXD,EAAiB,SAAWG,EAAE,SAC1B,GAAGF,EAAO,QAAQ,IAAIE,EAAE,QAAQ,GAChCF,EAAO,QACb,CAEA,MAAMG,EAAgB0B,EAAW,UAC3BhB,EAAaV,EACf,GAAGH,EAAO,IAAI,IAAIG,CAAa,GAC/BH,EAAO,KAEX,OACEc,EAAAA,KAACgB,EAAAA,MAAM,MAAN,CACC,IAAAlB,EACA,UAAWC,EACX,WAAYd,EACZ,YAAWqB,EACX,iBAAgBO,EAChB,SAAUL,GAAY,CAACE,EACtB,GAAG1B,EAEJ,SAAA,CAAAM,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAO,UAAY,SAAAW,EAAS,EAC5CiB,GACCxB,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAO,aACrB,SAAA,OAAO4B,GAAyB,SAC7B,IAAIA,CAAoB,IACxBA,EACN,EAEDH,QACE,OAAA,CAAK,UAAWzB,EAAO,kBAAoB,SAAAyB,EAAgB,EAC1DD,EACFpB,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWJ,EAAO,gBAClB,yBAAwBsB,EAAW,OAAS,OAC5C,QAASI,EACT,aAAW,OAEX,SAAAtB,EAAAA,IAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BAEN,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,gVACF,OAAO,eACP,cAAc,QACd,eAAe,OAAA,CAAA,CACjB,CAAA,CACF,CAAA,EAEA,IAAA,CAAA,CAAA,CAGV,CAAC,EAEDe,GAAM,YAAc,6MCtGPY,GAAoBxB,EAAAA,WAG/B,SACA,CACE,WAAAyB,EAAa,UACb,UAAAZ,EAAY,UACZ,gBAAAa,EACA,gBAAAC,EACA,YAAAC,EACA,SAAAxB,EACA,UAAAyB,EACA,MAAAC,EACA,GAAGxC,CACL,EACAe,EACA,CACA,MAAM0B,EAAYF,EAAY,GAAGpC,GAAO,IAAI,IAAIoC,CAAS,GAAKpC,GAAO,KAK/DuC,EAD8CJ,GAAgB,MACzBH,IAAe,eAE1D,OACElB,EAAAA,KAAC,MAAA,CACC,IAAAF,EACA,UAAW0B,EACX,mBAAkBN,EAClB,MACE,CACE,GAAGK,EACH,GAAIJ,EACA,CAAE,2BAA4BA,CAAA,EAC9B,CAAA,EACJ,GAAIC,EACA,CAAE,2BAA4BA,GAC9B,CAAA,CAAC,EAGR,GAAGrC,EAEH,SAAA,CAAA0C,SACE,MAAA,CAAI,UAAWvC,GAAO,YAAa,YAAWoB,EAC5C,SAAAe,CAAA,CACH,EAGF/B,EAAAA,IAAC,MAAA,CAAI,UAAWJ,GAAO,aAAe,SAAAW,CAAA,CAAS,CAAA,CAAA,CAAA,CAGrD,CAAC,EAEDoB,GAAkB,YAAc,oNC3D1BS,GAAW,IACf1B,EAAAA,KAAC,MAAA,CACC,MAAM,6BACN,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QAEf,SAAA,CAAAV,MAAC,UAAO,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,EAC/BA,EAAAA,IAAC,OAAA,CAAK,EAAE,WAAA,CAAY,EACpBA,EAAAA,IAAC,OAAA,CAAK,EAAE,WAAA,CAAY,CAAA,CAAA,CACtB,EAGIqC,GAAY,IAChB3B,EAAAA,KAAC,MAAA,CACC,MAAM,6BACN,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QAEf,SAAA,CAAAV,EAAAA,IAAC,OAAA,CAAK,EAAE,2EAAA,CAA4E,EACpFA,EAAAA,IAAC,OAAA,CAAK,EAAE,SAAA,CAAU,EAClBA,EAAAA,IAAC,OAAA,CAAK,EAAE,YAAA,CAAa,CAAA,CAAA,CACvB,EAGWsC,GAAmBnC,EAAAA,WAG9B,SACA,CACE,iBAAAoC,EAAmB,OACnB,kBAAAC,EAAoB,GACpB,SAAAjC,EACA,UAAAyB,EACA,WAAA5C,EAAa,GACb,GAAGK,CACL,EACAe,EACA,CAEA,MAAMiB,EADiBtC,EAAmBM,EAAML,CAAU,EAGpD8C,EAAYtC,GAAO,KACnBa,EAAauB,EAAY,GAAGE,CAAS,IAAIF,CAAS,GAAKE,EAEvDO,EAAgBF,IAAqB,QAAUF,GAAYD,GAEjE,OACE1B,EAAAA,KAAC,MAAA,CACC,IAAAF,EACA,UAAWC,EACX,eAAc8B,EACd,MAAOd,EAAW,MACjB,GAAGA,EAEH,SAAA,CAAAe,SACE,OAAA,CAAK,UAAW5C,GAAO,YACtB,SAAAI,EAAAA,IAACyC,IAAc,CAAA,CACjB,EAEFzC,EAAAA,IAAC,OAAA,CAAK,UAAWJ,GAAO,YAAc,SAAAW,CAAA,CAAS,CAAA,CAAA,CAAA,CAGrD,CAAC,EAED+B,GAAiB,YAAc,wJC3DlBI,GAAqBvC,EAAAA,WAGhC,SACA,CACE,WAAAyB,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,gBAAAC,EACA,iBAAAC,EAEA,MAAAqB,EACA,YAAAC,EACA,cAAAC,EACA,kBAAAL,EAAoB,GACpB,gBAAAX,EACA,gBAAAC,EACA,MAAAgB,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAIC,EACJ,SAAAzC,EACA,UAAAyB,EACA,WAAA5C,EAAa,GACb,aAAA6D,EACA,GAAGxD,CACL,EACAe,EACA,CAEA,MAAM0C,EAAcC,EAAAA,MAAA,EACdC,EAAKJ,GAAkB,gBAAgBE,CAAW,GAGlDG,EAAoBR,GAAiBD,EACrCU,EAAcD,EAAoB,GAAGD,CAAE,aAAe,OACtDG,EAAUT,EAAQ,GAAGM,CAAE,SAAW,OAGlC3B,EADiBtC,EAAmBM,EAAML,CAAU,EAGpDW,EACJiC,GAAcP,EAAW,UACrBS,GAAYtC,GAAO,KACnBa,GAAaV,EACf,GAAGmC,EAAS,IAAInC,CAAa,GAC7BmC,GAGEsB,EAAUC,EAAM,eAAelD,CAAQ,EACzCkD,EAAM,aACJlD,EACA,CACE,GAAI8C,GACJ,CAAE9C,EAAS,MAAkC,kBAAkB,EAC3D,CAAE,mBAAoB+C,CAAA,EACtB,CAAA,EACJ,GAAIR,GACJ,CAAEvC,EAAS,MAAkC,mBAAmB,EAC5D,CAAE,oBAAqBgD,GACvB,CAAA,CAAC,CACP,EAEFhD,EAEEmD,GAAYf,EAChB3C,EAAAA,IAACe,GAAA,CACC,GAAAqC,EACA,eAAAnC,EACA,kBAAAE,EACA,kBAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,SAAUyB,GAAgB7B,EAEzB,GAAI+B,IAAiB,MAAQ,CAAE,GAAI,KAAA,EAAU,CAAA,EAE7C,SAAAN,CAAA,CAAA,EAED,OAEJ,OACE3C,EAAAA,IAAC2B,GAAA,CACC,IAAAnB,EACA,UAAWC,GACX,WAAAmB,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EACA,YAAa4B,GACZ,GAAGjC,EAMJ,SAAAf,EAAAA,KAAC,MAAA,CAAI,UAAWd,GAAO,aACpB,SAAA,CAAA4D,EAEAV,GACC9C,EAAAA,IAACsC,GAAA,CACC,GAAIiB,EACJ,iBAAiB,QACjB,kBAAAf,EAEC,SAAAM,CAAA,CAAA,EAIJ,CAACA,GAASO,GACTrD,EAAAA,IAACsC,GAAA,CACC,GAAIgB,EACJ,iBAAiB,OACjB,kBAAAd,EAEC,SAAAa,CAAA,CAAA,CACH,CAAA,CAEJ,CAAA,CAAA,CAGN,CAAC,EAEDX,GAAmB,YAAc,qBC1J5B,MAACiB,GAAI,gBAAiBC,GAAI,qBAAsBC,GAAI,CACvD,KAAMF,GACN,SAAUC,EACZ,EAAGE,GAAIC,aAAE,SAAS,CAAE,MAAOjE,EAAG,aAAc,EAAG,SAAUkE,EAAG,UAAWC,EAAG,MAAOC,EAAG,GAAGC,CAAC,EAAIC,EAAG,CAC7F,MAAMC,EAAI,EAAIJ,EAAI,GAAGJ,GAAE,IAAI,IAAIA,GAAE,QAAQ,IAAII,CAAC,GAAK,GAAGJ,GAAE,IAAI,IAAIA,GAAE,QAAQ,GAAKI,EAAI,GAAGJ,GAAE,IAAI,IAAII,CAAC,GAAKJ,GAAE,KACxG,OAAuBS,EAAAA,IACrB,MACA,CACE,IAAKF,EACL,UAAWC,EACX,MAAOH,EACP,GAAG,EAAI,CAAA,EAAK,CAAE,uBAAwB,OAAOpE,CAAC,CAAC,EAC/C,GAAGqE,EACH,SAAUH,CAChB,CACA,CACA,CAAC,EACDF,GAAE,YAAc,QACX,MAACS,GAAI,CAAC,CAAE,UAAWC,EAAI,KAAK,IAAuBF,EAAAA,IAAEG,EAAE,SAAU,CAAE,SAAUD,CAAC,CAAE,EACrFD,GAAE,YAAc,qBAChBA,GAAE,MAASC,GAAMA,GAAK,MAAQA,IAAM,IAAM,MAAM,QAAQA,CAAC,GAAKA,EAAE,SAAW,EAC3E,MAAME,GAAI,uBACV,SAASC,GAAE,CACT,SAAUH,EACV,MAAO1E,EAAI,OACb,EAAG,CACD,OAAO8E,EAAAA,UAAE,IAAM,CACb,MAAMC,EAAI,SAAS,gBACnB,OAAOA,EAAE,aAAaH,GAAG5E,CAAC,EAAG,IAAM,CACjC+E,EAAE,gBAAgBH,EAAC,CACrB,CACF,EAAG,CAAC5E,CAAC,CAAC,EAAmBwE,EAAAA,IAAEQ,EAAAA,SAAG,CAAE,SAAUN,EAAG,CAC/C,0ICjBaO,GAAsD,CAAC,CAClE,MAAA7F,EACA,WAAAE,EAAa,GACb,GAAGK,CACL,IAAM,CACJ,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACgF,EAAAA,IAAA,CACC,UAAU,IACV,UACEjF,EACI,GAAGH,GAAO,SAAS,IAAIG,CAAa,GACpCH,GAAO,UAEZ,GAAGF,EAEH,YAAS,KACN+D,EAAM,eAAevE,CAAK,EACxBA,EACA,MAAM,QAAQA,CAAK,EACjBA,EAAM,KAAK,IAAI,EACf,OAAOA,CAAK,EAChB,EAAA,CAAA,CAGV,EAEA6F,GAAkB,YAAc,oBCNzB,MAAME,GAAgB9E,EAAAA,WAC3B,SACE,CACE,MAAAjB,EACA,KAAAgG,EAAO,OACP,oBAAAC,EACA,WAAA/F,EAAa,GACb,UAAA4C,EACA,MAAAC,EACA,GAAGxC,CAAA,EAELe,EACA,CACA,IAAIgD,EAA2B,KAG/B,MAAM9D,EAAiBP,EAAmBM,EAAML,CAAU,EAEpDgG,EAAWD,GAAuBE,GAKlCC,GAJgBF,EAAiB,MAClCA,EAAiB,MAAMlG,CAAK,EAC7BmG,GAAmB,MAAMnG,CAAK,GAEEc,EAAAA,IAACoF,EAAA,CAAS,MAAAlG,EAAc,EAAKA,EAEjE,OAAQgG,EAAA,CACN,IAAK,UACH1B,EACExD,EAAAA,IAAC+E,GAAA,CACC,MACE7F,IAAU,GAAO,OAASA,IAAU,GAAQ,QAAUoG,EAExD,WAAAlG,CAAA,CAAA,EAGJ,MACF,IAAK,SACHoE,EACExD,EAAAA,IAAC+E,GAAA,CACC,MACE7F,IAAU,GAAO,KAAOA,IAAU,GAAQ,MAAQoG,EAEpD,WAAAlG,CAAA,CAAA,EAGJ,MACF,IAAK,OACL,QACEoE,EACExD,EAAAA,IAAC+E,GAAA,CACC,MAAOO,EACP,WAAAlG,CAAA,CAAA,EAGJ,KAAA,CAGJ,MAAMmG,EAAevD,EACjB,GAAGpC,GAAO,cAAc,IAAIoC,CAAS,GACrCpC,GAAO,eAEX,OACEI,EAAAA,IAAC0C,GAAA,CACC,IAAAlC,EACA,WAAApB,EACA,UAAWmG,EACX,MAAAtD,EACC,GAAIvC,EAEJ,SAAA8D,CAAA,CAAA,CAGP,CACF,EAEAyB,GAAc,YAAc,gBCnFrB,MAAMO,EAAsBrF,EAAAA,WAGjC,SACA,CACE,SAAAsF,EACA,kBAAAC,EACA,aAAAC,EAAe,OACf,cAAAC,EACA,oBAAAC,EACA,oBAAAV,EACA,gBAAAW,EACA,WAAA1G,EACA,iBAAAkC,EACA,GAAGyE,CACL,EACAvF,EACA,CACA,GAAIiF,EAAU,CACZ,GAAIC,EAAmB,CACrB,MAAMM,EAAoBN,EAC1B,OACE1F,EAAAA,IAAC0C,GAAA,CACC,IAAAlC,EACC,GAAGuF,EACJ,iBAAAzE,EACA,WAAAlC,EAEA,SAAAY,EAAAA,IAACgG,EAAA,CAAmB,GAAGH,CAAA,CAAqB,CAAA,CAAA,CAGlD,CAEA,OACE7F,EAAAA,IAACiF,GAAA,CACC,IAAAzE,EACA,KAAMmF,EACN,MAAOC,EACP,oBAAAT,EACA,iBAAA7D,EACA,WAAAlC,EACC,GAAG2G,CAAA,CAAA,CAGV,CAGA,OACE/F,EAAAA,IAAC0C,GAAA,CACC,IAAAlC,EACC,GAAGuF,EACJ,iBAAAzE,EACA,WAAAlC,EAEC,SAAA0G,CAAA,CAAA,CAGP,CAAC,EAEDN,EAAoB,YAAc,kWC5DrBS,GAAe9F,EAAAA,WAC1B,SAAsBpB,EAAOyB,EAAK,CAChC,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAEA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAAiE,EACA,SAAAT,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,GAAG1G,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,QAClB,OAAOA,EAAW,OAGlB,MAAM9B,EAAoD,CACxD,QAASC,EAAO,KAChB,MAAOA,EAAO,MACd,QAASA,EAAO,QAChB,SAAUA,EAAO,SACjB,OAAQA,EAAO,MAAA,EAGXC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,QAAUG,EAAE,QACzB,GAAGF,EAAO,IAAI,IAAIE,EAAE,OAAO,GAC3BF,EAAO,KACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,QAAUG,EAAE,QACzB,GAAGF,EAAO,OAAO,IAAIE,EAAE,OAAO,GAC9BF,EAAO,QACXD,EAAiB,SAAWG,EAAE,SAC1B,GAAGF,EAAO,QAAQ,IAAIE,EAAE,QAAQ,GAChCF,EAAO,SACXD,EAAiB,OAASG,EAAE,OACxB,GAAGF,EAAO,MAAM,IAAIE,EAAE,MAAM,GAC5BF,EAAO,MACb,CAEA,MAAM2F,EAAevD,EACjB,GAAGpC,EAAO,cAAc,IAAIoC,CAAS,GACrCpC,EAAO,eAEX,OACEI,EAAAA,IAACwF,EAAA,CACC,UAAWD,EACX,MAAAtD,EACA,gBAAgB,uEAChB,gBAAgB,uEAChB,WAAA7C,EACA,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAAqC,EACA,kBAAAC,EACA,oBAAAP,EACA,aAAa,OACb,cAAejG,IAAU,OAAYA,EAAQiH,EAC7C,oBAAqBpH,EACrB,gBAEEiB,EAAAA,IAACoG,EAAAA,aAAA,CACC,IAAA5F,EACA,WAAYb,EACZ,SAAAuG,EACA,MAAAhH,EACA,aAAAiH,EACA,aAAc,CACZ,gBAAiBD,EAAW,OAAS,OACrC,aAAcpD,EAAQ,OAAS,MAAA,EAEhC,GAAIpD,CAAA,CAAA,CACP,CAAA,CAIR,CACF,EAEAuG,GAAa,YAAc,kRClIrBI,GAAUlG,EAAAA,WAAwC,SACtD,CACE,KAAAmG,EAAO,UACP,QAAA9G,EAAU,QACV,KAAA+G,EACA,SAAAhG,EACA,IAAAiG,EACA,WAAApH,EAAa,GACb,GAAGK,CACL,EACAe,EACA,CACA,MAAMiG,EAAa,CACjB,MAAO,SACP,QAAS,UACT,MAAO,aAAA,EAGHC,EAAU,CACd,QAAS,KACT,MAAO,KACP,MAAO,IAAA,EAGHhH,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,IAAIiH,EAAgB,OAChBH,EACFG,EAAgB,QACPJ,IACTI,EAAgB,QAGlB,MAAMhH,EAAoD,CACxD,KAAMC,EAAO,KACb,MAAOA,EAAO,MACd,YAAaA,EAAO,WAAA,EAGhBC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,YAAcG,EAAE,YAC7B,GAAGF,EAAO,WAAW,IAAIE,EAAE,WAAW,GACtCF,EAAO,WACb,CAEA,MAAMG,EAAgB0B,EAAW,UAEjC,OACEzB,EAAAA,IAAC4G,EAAAA,OAAA,CACC,IAAApG,EACA,UAAWT,EACX,WAAYJ,EACZ,QAAS8G,EAAWjH,CAAO,EAC3B,KAAMkH,EAAQJ,CAAI,EAClB,IAAAE,EACA,eAAchH,EACd,YAAW8G,EACX,aAAYK,EACX,GAAGjH,EAEH,YAAQ,KACPM,EAAAA,IAAC,QAAK,UAAWJ,EAAO,YAAa,cAAW,GAC7C,WACH,EACEW,GAAY,KACdP,MAAC,OAAA,CAAK,UAAWJ,EAAO,YAAc,SAAAW,EAAS,EAC7C,MAAA,CAAA,CAGV,CAAC,EACD8F,GAAQ,YAAc,SAOf,MAAMQ,GAASC,EAAAA,2BAA+CT,EAAO,+CC1FtEU,GAAS5G,EAAAA,WAAuC,SACpD,CAAE,QAAAX,EAAU,gBAAiB,WAAAJ,EAAa,GAAO,GAAGK,CAAA,EACpDe,EACA,CAGA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EAEpDO,EAAoD,CACxD,KAAMC,GAAO,KACb,QAASA,GAAO,QAChB,MAAOA,GAAO,KAAA,EAGVC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,GAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,GAAO,KACrED,EAAiB,QAAUG,EAAE,SAAWF,GAAO,QAC/CD,EAAiB,MAAQG,EAAE,OAASF,GAAO,KAC7C,CAEA,MAAMG,EAAiBL,EACpB,UACGe,EAAaV,EACf,GAAGH,GAAO,IAAI,IAAIG,CAAa,GAC/BH,GAAO,KAEX,OACEI,EAAAA,IAACgH,EAAAA,MAAA,CACC,IAAAxG,EACA,QAAQ,SACR,eAAchB,EACb,GAAGE,EACJ,UAAWe,EACX,WAAYd,CAAA,CAAA,CAGlB,CAAC,EACDoH,GAAO,YAAc,QAOd,MAAME,GAAQH,EAAAA,2BAA8CC,EAAM,2GCpD5DG,GAAa/G,EAAAA,WACxB,SAAoB,CAAE,WAAAf,EAAa,GAAO,UAAA+H,EAAY,IAAK,GAAG1H,CAAA,EAAQe,EAAK,CACzE,MAAMd,EAAiBP,EACrB,CAAE,UAAAgI,EAAW,GAAG1H,CAAA,EAChBL,CAAA,EAGIO,EAAoD,CACxD,KAAMC,GAAO,KACb,UAAWA,GAAO,SAAA,EAGdC,EAAkBH,EACrB,WACH,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,GAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,GAAO,KACrED,EAAiB,UAAYG,EAAE,UAC3B,GAAGF,GAAO,SAAS,IAAIE,EAAE,SAAS,GAClCF,GAAO,SACb,CAEA,MAAMG,EAAiBL,EACpB,UACGe,EAAaV,EACf,GAAGH,GAAO,IAAI,IAAIG,CAAa,GAC/BH,GAAO,KAEX,OACEI,EAAAA,IAACoH,EAAAA,YAAA,CACC,IAAA5G,EACC,GAAId,EACL,UAAWe,EACX,WAAYd,CAAA,CAAA,CAGlB,CACF,EAEAuH,GAAW,YAAc,iECxCZG,GAASlH,EAAAA,WAAyC,SAC7D,CAAE,QAAAX,EAAU,OAAQ,KAAA8G,EAAO,UAAW,WAAAlH,EAAa,GAAO,GAAGK,CAAA,EAC7De,EACA,CAUA,MAAM8G,EATU,CACd,GAAI,QACJ,GAAI,UACJ,GAAI,QACJ,MAAO,QACP,QAAS,UACT,MAAO,OAAA,EAGoBhB,CAAI,GAAK,UAIhC5G,EAAiBP,EAAmBM,EAAML,CAAU,EAEpDO,EAAoD,CACxD,KAAMC,GAAO,IAAA,EAGTC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,GAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,GAAO,IACvE,CAEA,MAAMG,EAAiBL,EACpB,UACGe,EAAaV,EACf,GAAGH,GAAO,IAAI,IAAIG,CAAa,GAC/BH,GAAO,KAEX,OACEI,EAAAA,IAACuH,EAAAA,OAAA,CACC,IAAA/G,EACA,KAAMhB,EACN,eAAcA,EACd,YAAW8H,EACV,GAAG5H,EACJ,UAAWe,EACX,WAAYd,CAAA,CAAA,CAGlB,CAAC,EAED0H,GAAO,YAAc,6SCzCrB,SAASG,GAAmBjH,EAAoC,CAC9D,OAAIA,GAAY,MAAQA,IAAa,GAAW,GAC5C,OAAOA,GAAa,SAAiBA,EAAS,SAAW,GACtD,EACT,CAEA,MAAMkH,GAAUtH,EAAAA,WAA2C,SACzD,CACE,QAAAX,EAAU,QACV,KAAA8G,EAAO,UACP,KAAAC,EACA,SAAAhG,EACA,WAAAnB,EAAa,GACb,cAAAsI,EAAgB,OAChB,WAAAC,EACA,mBAAAC,EAAqB,GACrB,GAAGnI,CACL,EACAe,EACA,CACA,MAAMiG,EAAa,CACjB,MAAO,SACP,QAAS,UACT,KAAM,QAAA,EAGFC,EAAU,CACd,QAAS,KACT,MAAO,IAAA,EAGHhH,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,UAElB,MAAMoG,EAAiB,CAAC,CAACtB,GAAQ,CAAC,CAAC9E,EAAW,YACxCqG,EAAkB,CAAC,CAACrG,EAAW,aAC/BsG,EAAiBP,GAAmBjH,CAAQ,EAC5CyH,GAAcH,GAAkBC,IAAoB,CAACC,EAE3D,IAAIE,EAAc,QACdD,EACFC,EAAc,aACLJ,GAAkBC,KAC3BG,EAAc,cAId,OAAO,QAAY,KACnB,QAAQ,IAAI,WAAa,cACzBD,GACA,CAACvG,EAAW,YAAY,GAExB,QAAQ,KACN,mHAAA,EAIJ,MAAM9B,EAAoD,CACxD,KAAMC,EAAO,KACb,QAASA,EAAO,QAChB,MAAOA,EAAO,MACd,OAAQA,EAAO,MAAA,EAGXC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,QAAUG,EAAE,SAAWF,EAAO,QAC/CD,EAAiB,MAAQG,EAAE,OAASF,EAAO,KAC7C,CAEA,MAAMG,EAAgB0B,EAAW,UAC3BhB,EAAaV,EACf,GAAGH,EAAO,IAAI,IAAIG,CAAa,GAC/BH,EAAO,KAELsI,EAAkBzG,EAAW,YAI7B0G,EACJR,IAAerB,IAAS,QAAU,QAAU,WAE9C,IAAI8B,EAAoBF,EACxB,OAAIN,IACFQ,EAAoB,CAClB,SAAUpI,EAAAA,IAACqH,GAAA,CAAO,QAASK,EAAe,KAAMS,EAAoB,EACpE,GAAGD,CAAA,GAKLlI,EAAAA,IAACqI,EAAAA,OAAA,CACC,IAAA7H,EACA,UAAWC,EACX,WAAYd,EACZ,QAAS8G,EAAWjH,CAAO,EAC3B,KAAMkH,EAAQJ,CAAI,EAClB,YAAa8B,EACb,YACE7B,GAAQ,KACNvG,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAO,YAAa,cAAW,GAC7C,SAAA2G,CAAA,CACH,EACE,OAEN,eAAc/G,EACd,YAAW8G,EACX,eAAc2B,EACb,GAAGvI,EACJ,SAAU,CAAC,CAAC+B,EAAW,UAAY,CAAC,CAACA,EAAW,QAEhD,SAAAzB,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAO,UAAY,SAAAW,CAAA,CAAS,CAAA,CAAA,CAGnD,CAAC,EACDkH,GAAQ,YAAc,SAkBf,MAAMa,GAASxB,EAAAA,2BACpBW,EACF,8NC/JMc,GAAWpI,EAAAA,WAAsC,SACrD,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EACzBe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EAEpDO,EAAoD,CACxD,KAAMC,GAAO,IAAA,EAGTC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAEA,MAAMc,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACwI,EAAAA,KAAA,CACC,IAAAhI,EACA,UAAWT,EACX,WAAYJ,EACX,GAAID,CAAA,CAAA,CAGX,CAAC,EACD6I,GAAS,YAAc,OAWhB,MAAME,GAActI,EAAAA,WACzB,SAAqB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACzD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACwI,EAAAA,KAAY,QAAZ,CACC,IAAAhI,EACA,UACET,EAAgB,GAAGH,GAAO,OAAO,IAAIG,CAAa,GAAKH,GAAO,QAE/D,GAAIF,CAAA,CAAA,CAGX,CACF,EACA+I,GAAY,YAAc,cAQnB,MAAMC,GAAavI,EAAAA,WACxB,SAAoB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACxD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACwI,EAAAA,KAAY,QAAZ,CACC,IAAAhI,EACA,UACET,EAAgB,GAAGH,GAAO,MAAM,IAAIG,CAAa,GAAKH,GAAO,OAE9D,GAAIF,CAAA,CAAA,CAGX,CACF,EACAgJ,GAAW,YAAc,aAQlB,MAAMC,GAAaxI,EAAAA,WACxB,SAAoB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACxD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACwI,EAAAA,KAAY,QAAZ,CACC,IAAAhI,EACA,UACET,EAAgB,GAAGH,GAAO,MAAM,IAAIG,CAAa,GAAKH,GAAO,OAE9D,GAAIF,CAAA,CAAA,CAGX,CACF,EACAiJ,GAAW,YAAc,aAUlB,MAAMC,GAAczI,EAAAA,WACzB,SAAqB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACzD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAAC,MAAA,CACC,IAAAQ,EACA,UACET,EAAgB,GAAGH,GAAO,OAAO,IAAIG,CAAa,GAAKH,GAAO,QAE/D,GAAGF,CAAA,CAAA,CAGV,CACF,EACAkJ,GAAY,YAAc,cAU1B,MAAMC,GAAkB/B,EAAAA,2BAStByB,EAAQ,EAGJO,GAAQD,GACdC,GAAM,QAAUL,GAChBK,GAAM,OAASJ,GACfI,GAAM,OAASH,GACfG,GAAM,QAAUF,GAET,MAAMG,GAAOF,+XCpKPG,GAAgB7I,EAAAA,WAC3B,SAAuBpB,EAAOyB,EAAK,CACjC,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAGA,MAAAqB,EACA,YAAAC,EACA,cAAAC,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAA1B,EACA,SAAAkF,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,GAAG1G,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,cAAO+B,EAAW,KAGhBzB,EAAAA,IAACwF,EAAA,CACC,UAAAxD,EACA,MAAAC,EACA,gBAAgB,wEAChB,gBAAiB,OACjB,WAAA7C,EACA,aAAa,MACb,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,YAAAC,EACA,cAAAC,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAUqC,GAAY,CAAC,CAACC,EACxB,kBAAAA,EACA,oBAAAP,EACA,aAAa,OACb,cAAejG,IAAU,OAAYA,EAAQiH,EAC7C,oBAAqBpH,EACrB,gBACEiB,EAAAA,IAACiJ,EAAAA,SAAgB,MAAhB,CACC,IAAAzI,EAEC,GAAId,EACL,SAAU+F,GAAahE,EAAmB,SAC1C,MAAAvC,EACA,aAAAiH,EAEA,eAAC,MAAA,CAAI,UAAWvG,EAAO,UAAW,cAAagC,EAC5C,SAAArB,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAIR,CACF,EAEAyI,GAAc,YAAc,gBCxErB,MAAME,GAAW/I,EAAAA,WACtB,SAAkBpB,EAAOyB,EAAK,CAC5B,KAAM,CACJ,WAAApB,EAAa,GACb,SAAAqG,EACA,kBAAAC,EACA,SAAAQ,EACA,WAAAtE,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EACA,GAAGrC,CAAA,EACDV,EAEEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,MAClB,OAAOA,EAAW,OAClB,OAAOA,EAAW,QAClB,OAAOA,EAAW,UAElB,MAAM9B,EAAoD,CACxD,KAAMC,EAAO,KACb,KAAMA,EAAO,KACb,MAAOA,EAAO,MACd,MAAOA,EAAO,MACd,KAAMA,EAAO,KACb,aAAcA,EAAO,aACrB,MAAOA,EAAO,KAAA,EAGVC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,aAAeG,EAAE,aAC9B,GAAGF,EAAO,YAAY,IAAIE,EAAE,YAAY,GACxCF,EAAO,aACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,KACb,CAEA,MAAMG,EAAgB0B,EAAW,UAC3BhB,EAAaV,EACf,GAAGH,EAAO,IAAI,IAAIG,CAAa,GAC/BH,EAAO,KAEX,GAAI6F,GAAcC,EAAmB,CACnC,MAAMyD,EAAY,CAAC,EAAE1H,EAAW,SAAWA,EAAW,gBAChD2H,EAAe1D,EACf2D,EACJrJ,EAAAA,IAACoJ,EAAA,CACE,GAAGrK,EACJ,QAASoK,EACT,MAAO1H,EAAW,KAAA,CAAA,EAItB,OAAIG,EAEA5B,EAAAA,IAAC2B,GAAA,CACC,WAAAC,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EAEC,SAAAuH,CAAA,CAAA,oBAKG,SAAAA,CAAA,CAAO,CACnB,CAGA,MAAMC,EACJtJ,EAAAA,IAACiJ,EAAAA,SAAA,CACC,IAAAzI,EACA,UAAWC,EACX,WAAYd,EACZ,SAAU8F,GAAYS,EACrB,GAAIxG,CAAA,CAAA,EAIT,OAAIkC,EAEA5B,EAAAA,IAAC2B,GAAA,CACC,WAAAC,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EAEC,SAAAwH,CAAA,CAAA,EAKAA,CACT,CACF,EAEAJ,GAAS,YAAc,WACvBA,GAAS,MAAQF,8WChIjB,SAASO,GAAUxK,EAA8C,CAC/D,OACE2B,EAAAA,KAAC,MAAA,CACC,MAAM,6BACN,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,OAAO,eACP,YAAY,IACZ,cAAc,QACd,eAAe,QACd,GAAG3B,EAEJ,SAAA,CAAAiB,EAAAA,IAAC,OAAA,CAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAA,CAAK,EACpCA,EAAAA,IAAC,QAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAA,CAAK,CAAA,CAAA,CAAA,CAG1C,CAEO,MAAMwJ,GAAOrJ,EAAAA,WAAwC,SAC1D,CACE,MAAA2C,EAAQ,GACR,KAAAyD,EACA,SAAAkD,EACA,YAAAC,EAAc,SACd,SAAAnJ,EACA,WAAAnB,EAAa,GACb,GAAGK,CACL,EACAe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAEbC,EAAoD,CACxD,KAAMC,EAAO,KACb,MAAOA,EAAO,MACd,MAAOA,EAAO,MACd,YAAaA,EAAO,mBACpB,UAAWA,EAAO,SAAA,EAGdC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,KACb,CAEA,MAAMG,EAAgB0B,EAAW,UAC3BhB,EAAaV,EACf,GAAGH,EAAO,IAAI,IAAIG,CAAa,GAC/BH,EAAO,KAGL+J,EAAY7G,EAAQ,GAAK,OACzBkF,EAAa,CAACzH,IAAa,CAAC,CAACgG,GAAQ,CAAC,CAACkD,GAE7C,OACEzJ,EAAAA,IAAC4J,EAAAA,KAAA,CACC,IAAApJ,EACA,UAAWC,EACX,WAAYd,EACX,GAAIgK,IAAc,OAAY,CAAE,aAAc,EAAA,EAAO,CAAA,EACrD,GAAI3B,EAAa,CAAE,iBAAkB,EAAA,EAAO,CAAA,EAC5C,GAAGtI,EAEJ,SAAAgB,EAAAA,KAAC,OAAA,CAAK,UAAWd,EAAO,aACrB,SAAA,CAAA2G,SACE,OAAA,CAAK,UAAW3G,EAAO,YAAa,cAAW,GAC7C,SAAA2G,CAAA,CACH,EAGFvG,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAO,SAAW,SAAAW,EAAS,EAE3CkJ,GACCzJ,EAAAA,IAAC,OAAA,CACC,KAAK,SACL,UAAWJ,EAAO,WAClB,QAAUiF,GAAM,CACdA,EAAE,eAAA,EACFA,EAAE,gBAAA,EACF4E,EAAS5E,CAAC,CACZ,EACA,aAAY6E,EACZ,UAAY7E,GAAM,EACZA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjCA,EAAE,eAAA,EACFA,EAAE,gBAAA,EACF4E,EACE5E,CAAA,EAGN,EACA,SAAU,EAEV,eAAC0E,GAAA,CAAA,CAAU,CAAA,CAAA,CACb,CAAA,CAEJ,CAAA,CAAA,CAGN,CAAC,EAEDC,GAAK,YAAc,8DCzGNK,GAAY1J,EAAAA,WACvB,SAAmB,CAAE,SAAAI,EAAU,KAAA+F,EAAM,GAAG7G,CAAA,EAAQe,EAAK,CACnD,MAAMkG,EAAkC,CACtC,SAAU,KACV,cAAe,KACf,SAAU,KACV,SAAU,KACV,SAAU,KACV,UAAW,IAAA,EAGPY,EACJ,OAAOhB,GAAS,UAAYI,EAAQJ,CAAI,EAAII,EAAQJ,CAAI,EAAIA,EAExD3G,EAAoD,CACxD,KAAMC,GAAO,IAAA,EAGTC,EAAiBJ,EAAK,WAC5B,GACEI,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,GAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,GAAO,IACvE,CAEA,MAAMG,EAAgBN,EAAK,UACrBgB,EAAaV,EACf,GAAGH,GAAO,IAAI,IAAIG,CAAa,GAC/BH,GAAO,KAEX,OACEI,EAAAA,IAAC8J,EAAAA,UAAA,CACC,IAAAtJ,EACA,KAAM8G,EACN,UAAW7G,EACX,WAAYd,EACX,GAAGF,EAEH,SAAAc,CAAA,CAAA,CAGP,CACF,EAEAsJ,GAAU,YAAc,uYC/CXE,GAAa5J,EAAAA,WACxB,SAAoBpB,EAAOyB,EAAK,CAC9B,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAEA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAAiE,EACA,SAAAT,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,GAAG1G,CAAA,EACDV,EAEEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,QAClB,OAAOA,EAAW,OAClB,OAAOA,EAAW,YAGlB,MAAM9B,EAAoD,CACxD,QAASC,EAAO,KAChB,MAAOA,EAAO,MACd,QAASA,EAAO,QAChB,SAAUA,EAAO,SACjB,IAAKA,EAAO,IACZ,eAAgBA,EAAO,cAAA,EAGnBC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,QAAUG,EAAE,QACzB,GAAGF,EAAO,IAAI,IAAIE,EAAE,OAAO,GAC3BF,EAAO,KACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,QAAUG,EAAE,QACzB,GAAGF,EAAO,OAAO,IAAIE,EAAE,OAAO,GAC9BF,EAAO,OACb,CAEA,MAAM2F,EAAevD,EACjB,GAAGpC,EAAO,cAAc,IAAIoC,CAAS,GACrCpC,EAAO,eAEX,OACEI,EAAAA,IAACwF,EAAA,CACC,UAAWD,EACX,MAAAtD,EACA,gBAAiB,OACjB,gBAAiB,OACjB,WAAA7C,EACA,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAAqC,EACA,kBAAAC,EACA,oBAAAP,EACA,aAAa,OACb,cACEjG,IAAU,OACN,OAAOA,CAAK,EACZiH,EACE,OAAOA,CAAY,EACnB,OAER,oBAAqBpH,EACrB,gBAEEiB,EAAAA,IAACgK,GAAAA,gBAAA,CACC,IAAAxJ,EACA,WAAYb,EACZ,SAAAuG,EAEA,MAAAhH,EAEA,aAAAiH,EACA,MAAO,OACP,YAAa,OACb,MAAO,OACP,aAAc,GACd,aAAc,CACZ,gBAAiBD,EAAW,OAAS,OACrC,aAAcpD,EAAQ,OAAS,MAAA,EAEhC,GAAIpD,CAAA,CAAA,CACP,CAAA,CAIR,CACF,EAEAqK,GAAW,YAAc,iUClIZE,GAAW9J,EAAAA,WACtB,SAAkBpB,EAAOyB,EAAK,CAC5B,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UACb,eAAAsI,EAGA,UAAAlJ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAEA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAAiE,EACA,SAAAT,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,KAAAgE,EACA,GAAG1K,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,QAClB,OAAOA,EAAW,OAGlB,MAAM9B,EAAoD,CACxD,QAASC,EAAO,KAChB,MAAOA,EAAO,MACd,QAASA,EAAO,QAChB,SAAUA,EAAO,SACjB,OAAQA,EAAO,MAAA,EAGXC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,QAAUG,EAAE,QACzB,GAAGF,EAAO,IAAI,IAAIE,EAAE,OAAO,GAC3BF,EAAO,KACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,QAAUG,EAAE,QACzB,GAAGF,EAAO,OAAO,IAAIE,EAAE,OAAO,GAC9BF,EAAO,QACXD,EAAiB,SAAWG,EAAE,SAC1B,GAAGF,EAAO,QAAQ,IAAIE,EAAE,QAAQ,GAChCF,EAAO,SACXD,EAAiB,OAASG,EAAE,OACxB,GAAGF,EAAO,MAAM,IAAIE,EAAE,MAAM,GAC5BF,EAAO,MACb,CAEA,MAAMwK,GAAiB,CACrB,GAAKnI,GAAiC,CAAA,EACtC,MAAOiI,GAAkB,MAAA,EAGrB3E,GAAevD,EACjB,GAAGpC,EAAO,cAAc,IAAIoC,CAAS,GACrCpC,EAAO,eAEX,OACEI,EAAAA,IAACwF,EAAA,CACC,UAAWD,GACX,MAAO6E,GACP,gBAAgB,mEAChB,gBAAgB,mEAChB,WAAAhL,EACA,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAAqC,EACA,kBAAAC,EACA,oBAAAP,EACA,aAAa,OACb,cACEjG,IAAU,OACN,OAAOA,CAAK,EACZiH,EACE,OAAOA,CAAY,EACnB,OAER,oBAAqBpH,EACrB,gBAEEiB,EAAAA,IAACqK,EAAAA,OAAA,CACC,IAAA7J,EACA,WAAYb,EACZ,SAAAuG,EACA,MAAAhH,EACA,aAAAiH,EACA,KAAMgE,GAAQ,CAAA,EACd,MAAO,OACP,YAAa,OACb,MAAO,OACP,SAAU,OACV,aAAc,OACd,aAAc,CACZ,gBAAiBjE,EAAW,OAAS,OACrC,aAAcpD,EAAQ,OAAS,MAAA,EAEhC,GAAIpD,CAAA,CAAA,CACP,CAAA,CAIR,CACF,EAEAuK,GAAS,YAAc,WC7KhB,MAAMK,GAAuCvL,GAC3CiB,EAAAA,IAAC,MAAA,CAAK,GAAGjB,EAAO,SAAA,YAAS,ECDrBwL,GAAyCxL,GAC7CiB,EAAAA,IAAC,MAAA,CAAK,GAAGjB,EAAO,SAAA,aAAU,8CC0B7ByL,GAAQrK,EAAAA,WAAsC,SAClD,CAAE,SAAAI,EAAU,IAAAkK,EAAM,cAAe,OAAAC,EAAQ,UAAAC,EAAW,GAAGlL,CAAA,EACvDe,EACA,CACA,MAAMb,EAAoD,CACxD,KAAMC,GAAO,IAAA,EAGTC,EAAiBJ,EAAK,WAC5B,GACEI,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,GAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,GAAO,IACvE,CAEA,MAAMG,EAAgBN,EAAK,UACrBgB,EAAaV,EACf,GAAGH,GAAO,IAAI,IAAIG,CAAa,GAC/BH,GAAO,KAEX,OACEI,EAAAA,IAAC4K,EAAAA,KAAA,CACC,IAAApK,EACA,UAAWC,EACX,WAAYd,EACX,GAAGb,GAAe,CAAE,IAAA2L,EAAK,OAAAC,EAAQ,UAAAC,EAAW,GAAGlL,EAG/C,EAEA,SAAAc,CAAA,CAAA,CAGP,CAAC,EACDiK,GAAM,YAAc,OAYb,MAAMK,GAAO/D,EAAAA,2BAA6C0D,EAAK,+CClDzDM,GAAQ3K,EAAAA,WAAuC,SAC1D,CAAE,SAAAI,EAAU,IAAAkK,EAAM,cAAe,GAAGhL,CAAA,EACpCe,EACA,CACA,MAAMb,EAAoD,CACxD,KAAMC,GAAO,IAAA,EAGTC,EAAiBJ,EAAK,WAC5B,GACEI,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,GAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,GAAO,IACvE,CAEA,MAAMG,EAAgBN,EAAK,UACrBgB,EAAaV,EACf,GAAGH,GAAO,IAAI,IAAIG,CAAa,GAC/BH,GAAO,KAEX,OACEI,EAAAA,IAAC+K,EAAAA,MAAA,CACC,IAAAvK,EACA,UAAWC,EACX,WAAYd,EACX,GAAGb,GAAe,CAAE,IAAA2L,EAAK,GAAGhL,EAAiC,EAE7D,SAAAc,CAAA,CAAA,CAGP,CAAC,EAEDuK,GAAM,YAAc,qHCjBdE,GAAgB,SAAmB,CACvC,WAAA5L,EAAa,GACb,SAAA6L,EAAW,GACX,GAAGxL,CACL,EAAmB,CACjB,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EAGpDO,EAAoD,CACxD,SAAUC,GAAO,SACjB,MAAOA,GAAO,KAAA,EAGVC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAKA,MAAMiM,EACFxL,EAA2C,WAE3B,GAIdyL,EAAazL,EAA2C,UAGxD0L,EAAoBH,GAAYE,EAEtC,OACEnL,EAAAA,IAACqL,EAAAA,UAAA,CACC,SAAS,MACT,UAAAH,EACA,UAAWE,EACX,WAAYzL,EACX,GAAID,CAAA,CAAA,CAGX,EACAsL,GAAc,YAAc,YAY5B,MAAMM,GAAkB,SAAyBvM,EAA6B,CAC5E,OAAOiB,EAAAA,IAACqL,EAAAA,UAAiB,OAAjB,CAAyB,GAAGtM,CAAA,CAAO,CAC7C,EACAuM,GAAgB,YAAc,kBAU9B,MAAMC,GAAoB,SAA2B,CACnD,WAAAnM,EAAa,GACb,GAAGK,CACL,EAA2B,CACzB,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAACqL,EAAAA,UAAiB,SAAjB,CACC,UAAWtL,EACV,GAAIL,CAAA,CAAA,CAGX,EACA6L,GAAkB,YAAc,oBAWzB,MAAMC,GAAYR,GACzBQ,GAAU,OAASF,GACnBE,GAAU,SAAWD,2JChIfE,GAAQtL,EAAAA,WAAyC,SACrD,CAAE,KAAAoG,EAAM,SAAAhG,EAAU,WAAAnB,EAAa,GAAO,GAAGK,CAAA,EACzCe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAEbC,EAAoD,CACxD,KAAMC,GAAO,IAAA,EAGTC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,GAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,GAAO,IACvE,CAEA,MAAMG,EAAgB0B,EAAW,UAC3BhB,EAAaV,EACf,GAAGH,GAAO,IAAI,IAAIG,CAAa,GAC/BH,GAAO,KAEX,OACEc,EAAAA,KAACgL,EAAAA,OAAA,CACC,IAAAlL,EACA,UAAWC,EACX,WAAYd,EACZ,UAAU,QACT,GAAI4G,EAAO,CAAE,gBAAiB,EAAA,EAAO,CAAA,EACrC,GAAG7G,EAEH,SAAA,CAAA6G,SACE,OAAA,CAAK,UAAW3G,GAAO,YAAa,cAAW,GAC7C,SAAA2G,CAAA,CACH,EAEFvG,EAAAA,IAAC,OAAA,CAAK,UAAWJ,GAAO,UAAY,SAAAW,CAAA,CAAS,CAAA,CAAA,CAAA,CAGnD,CAAC,EACDkL,GAAM,YAAc,OAYb,MAAME,GAAO7E,EAAAA,2BAA2C2E,EAAK,sUCzC9DG,GAAW,SAAc,CAAE,WAAAxM,EAAa,GAAO,GAAGK,GAAmB,CACzE,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EAGpDO,EAAoD,CACxD,SAAUC,GAAO,SACjB,KAAMA,GAAO,KACb,UAAWA,GAAO,UAClB,YAAaA,GAAO,YACpB,QAASA,GAAO,QAChB,MAAOA,GAAO,MACd,QAASA,GAAO,OAAA,EAGZC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAEA,OACEe,EAAAA,IAAC6L,EAAAA,KAAA,CACC,WAAYlM,EACX,GAAID,CAAA,CAAA,CAGX,EACAkM,GAAS,YAAc,OAYvB,MAAME,GAAa,SAAoB/M,EAAwB,CAC7D,OAAOiB,EAAAA,IAAC6L,EAAAA,KAAY,OAAZ,CAAoB,GAAG9M,CAAA,CAAO,CACxC,EACA+M,GAAW,YAAc,aASzB,MAAMC,GAAe5L,EAAAA,WACnB,SAAsB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CAC1D,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAAC6L,EAAAA,KAAY,SAAZ,CACC,IAAArL,EACA,UAAWT,EACV,GAAIL,CAAA,CAAA,CAGX,CACF,EACAqM,GAAa,YAAc,eAgB3B,MAAMC,GAAY7L,EAAAA,WAChB,SAAkB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACtD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGdN,GACH,OAAOqC,EAAW,MAGpB,MAAM1B,EAAgB0B,EAAW,UAEjC,OACEzB,EAAAA,IAAC6L,EAAAA,KAAY,KAAZ,CACC,IAAArL,EACA,UAAWT,EACV,GAAIL,CAAA,CAAA,CAGX,CACF,EACAsM,GAAU,YAAc,WAWxB,MAAMC,GAAWnF,EAAAA,2BAAoDkF,EAAS,EASxEE,GAAc/L,EAAAA,WAClB,SAAqB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACzD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAAC6L,EAAAA,KAAY,QAAZ,CACC,IAAArL,EACA,UAAWT,EACV,GAAIL,CAAA,CAAA,CAGX,CACF,EACAwM,GAAY,YAAc,cAS1B,MAAMC,GAAYhM,EAAAA,WAA2C,SAC3D,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EACzBe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAAC6L,EAAAA,KAAY,MAAZ,CACC,IAAArL,EACA,UAAWT,EACV,GAAIL,CAAA,CAAA,CAGX,CAAC,EACDyM,GAAU,YAAc,YASxB,MAAMC,GAAc,SAAiBrN,EAAqB,CACxD,OAAOiB,EAAAA,IAAC6L,EAAAA,KAAY,IAAZ,CAAiB,GAAG9M,CAAA,CAAO,CACrC,EACAqN,GAAY,YAAc,UAS1B,MAAMC,GAAgB,SAAuBtN,EAA2B,CACtE,aAAQ8M,EAAAA,KAAY,IAAI,OAAhB,CAAwB,GAAG9M,EAAO,CAC5C,EACAsN,GAAc,YAAc,gBAc5B,MAAMC,GAAenM,EAAAA,WACnB,SAAqB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACzD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAEdN,GACH,OAAOqC,EAAW,MAGpB,MAAM1B,EAAgB0B,EAAW,UAEjC,OACEzB,EAAAA,IAAC6L,EAAAA,KAAY,IAAI,KAAhB,CACC,IAAArL,EACA,UAAWT,EACV,GAAIL,CAAA,CAAA,CAGX,CACF,EACA4M,GAAa,YAAc,cAO3B,MAAMC,GAAczF,EAAAA,2BAClBwF,EACF,EAUME,GAAkBrM,EAAAA,WACtB,SAAyB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CAC7D,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAAC6L,EAAAA,KAAY,IAAI,SAAhB,CACC,IAAArL,EACA,UAAWT,EACV,GAAIL,CAAA,CAAA,CAGX,CACF,EACA8M,GAAgB,YAAc,kBAY9B,MAAMC,GAAUL,GAChBK,GAAQ,OAASJ,GACjBI,GAAQ,KAAOF,GACfE,GAAQ,SAAWD,GAWZ,MAAME,GAAOd,GACpBc,GAAK,OAASZ,GACdY,GAAK,SAAWX,GAChBW,GAAK,KAAOT,GACZS,GAAK,QAAUR,GACfQ,GAAK,MAAQP,GACbO,GAAK,IAAMD,oaChTLE,GAAalJ,EAAM,WAAuC,SAC9D,CACE,WAAArE,EAAa,GACb,SAAAmB,EACA,MAAAH,EACA,gBAAAwM,EAAkB,GAClB,aAAAC,EACA,YAAAC,EAAc,GACd,iBAAAC,EACA,GAAGtN,CACL,EACAe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EAEpDO,EAAoD,CACxD,KAAMC,GAAO,KACb,MAAOA,GAAO,MACd,QAASA,GAAO,QAChB,OAAQA,GAAO,OACf,MAAOA,GAAO,MACd,MAAOA,GAAO,KAAA,EAGVC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAEA,OACEyB,EAAAA,KAACsM,EAAAA,MAAa,KAAb,CACC,IAAAxM,EACA,WAAYb,EACX,GAAID,EAKJ,SAAA,CAAAoN,GAAe9M,EAAAA,IAACgN,EAAAA,MAAa,QAAb,CAAsB,GAAGH,CAAA,CAAc,EACxDnM,EAAAA,KAACsM,EAAAA,MAAa,QAAb,CACG,SAAA,EAAA5M,GAASwM,IACTlM,EAAAA,KAACsM,EAAAA,MAAa,OAAb,CACE,SAAA,CAAA5M,GAASJ,EAAAA,IAACgN,EAAAA,MAAa,MAAb,CAAoB,SAAA5M,EAAM,EACpCwM,GACC5M,EAAAA,IAACgN,EAAAA,MAAa,YAAb,CAA0B,GAAGD,CAAA,CAAkB,CAAA,EAEpD,EAEF/M,MAACiN,IAAW,SAAA1M,CAAA,CAAS,CAAA,CAAA,CACvB,CAAA,CAAA,CAAA,CAGN,CAAC,EAEDoM,GAAW,YAAc,QAczB,MAAMO,GAAczJ,EAAM,WAGxB,SAAqB,CAAE,UAAAzB,EAAW,GAAGvC,CAAA,EAAQe,EAAK,CAClD,OACER,EAAAA,IAAC,MAAA,CACC,IAAAQ,EACA,UAAW,GAAGZ,GAAO,MAAM,IAAIoC,GAAa,EAAE,GAC7C,GAAGvC,CAAA,CAAA,CAGV,CAAC,EACDyN,GAAY,YAAc,eAE1B,MAAMD,GAAYxJ,EAAM,WAGtB,SAAmB,CAAE,UAAAzB,EAAW,SAAAmL,EAAU,SAAA5M,EAAU,GAAGd,CAAA,EAAQe,EAAK,CACpE,MAAM4M,EAAc3J,EAAM,OAAuB,IAAI,EAC/C,CAAC4J,EAAaC,CAAc,EAAI7J,EAAM,SAAS,EAAK,EACpD,CAAC8J,EAAgBC,CAAiB,EAAI/J,EAAM,SAAS,EAAK,EAE1DgK,EAAchK,EAAM,YAAY,IAAM,CAC1C,GAAI2J,EAAY,QAAS,CACvB,KAAM,CAAE,UAAAM,EAAW,aAAAC,EAAc,aAAAC,CAAA,EAAiBR,EAAY,QAC9DE,EAAeI,EAAY,CAAC,EAC5BF,EAAkB,KAAK,KAAKE,EAAYE,CAAY,EAAID,CAAY,CACtE,CACF,EAAG,CAAA,CAAE,EAGLlK,EAAM,UAAU,KACdgK,EAAA,EACA,OAAO,iBAAiB,SAAUA,CAAW,EACtC,IAAM,OAAO,oBAAoB,SAAUA,CAAW,GAC5D,CAACA,EAAalN,CAAQ,CAAC,EAE1B,MAAMsN,EAAgBhJ,GAAqC,CACzD4I,EAAA,EACAN,GAAA,MAAAA,EAAWtI,EACb,EAGA,IAAIiJ,EAA0B,KAC9B,MAAMC,EAAkC,CAAA,EAExC,OAAAtK,EAAM,SAAS,QAAQlD,EAAWyN,GAAU,OAExCvK,EAAM,eAAeuK,CAAK,IACzBA,EAAM,OAASd,MACbe,EAAAD,EAAM,OAAN,YAAAC,EAAoC,eAAgB,gBAEvDH,EAASE,EAETD,EAAa,KAAKC,CAAK,CAE3B,CAAC,EAGCtN,EAAAA,KAACsM,EAAAA,MAAa,KAAb,CACE,GAAGvN,EACJ,IAAMyO,GAAS,CACT,OAAO1N,GAAQ,WAAYA,EAAI0N,CAAI,EAC9B1N,IACNA,EAAsD,QAAU0N,EACrE,EACA,UAAW,GAAGtO,GAAO,WAAW,IAAIoC,GAAa,EAAE,GAEnD,SAAA,CAAAhC,EAAAA,IAAC,MAAA,CACC,IAAKoN,EACL,SAAUS,EACV,oBAAmBR,GAAe,OAClC,uBAAsBE,GAAkB,OACxC,UAAW3N,GAAO,WAEjB,SAAAmO,CAAA,CAAA,EAEFD,CAAA,CAAA,CAAA,CAGP,CAAC,EACDb,GAAU,YAAc,aAgBjB,MAAMkB,GAAQxB,GAGrBwB,GAAM,KAAOnB,EAAAA,MAAa,KAC1BmB,GAAM,QAAUnB,EAAAA,MAAa,QAC7BmB,GAAM,QAAUnB,EAAAA,MAAa,QAC7BmB,GAAM,OAASnB,EAAAA,MAAa,OAC5BmB,GAAM,MAAQnB,EAAAA,MAAa,MAC3BmB,GAAM,YAAcnB,EAAAA,MAAa,YACjCmB,GAAM,KAAOlB,GACbkB,GAAM,OAASjB,4UCxLFkB,GAAcjO,EAAAA,WACzB,SAAqBpB,EAAOyB,EAAK,CAC/B,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAEA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAAiE,EACA,SAAAT,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,aAAAkI,EAAe,GACf,GAAG5O,CAAA,EACDV,EAEEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,QAClB,OAAOA,EAAW,OAGlB,MAAM9B,EAAoD,CACxD,QAASC,GAAO,KAChB,MAAOA,GAAO,MACd,QAASA,GAAO,QAChB,SAAUA,GAAO,SACjB,QAASA,GAAO,OAAA,EAGZ2F,EAAevD,EACjB,GAAGpC,GAAO,cAAc,IAAIoC,CAAS,GACrCpC,GAAO,eAEX,OACEI,EAAAA,IAACwF,EAAA,CACC,UAAWD,EACX,MAAAtD,EACA,gBAAgB,uEAChB,gBAAgB,uEAChB,WAAA7C,EACA,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAAqC,EACA,kBAAAC,EACA,oBAAAP,EACA,aAAa,OACb,cACEjG,IAAU,OAAYA,GAAA,YAAAA,EAAO,WAAaiH,GAAA,YAAAA,EAAc,WAE1D,oBAAqBpH,EACrB,gBAEEiB,EAAAA,IAACsO,EAAAA,YAAA,CACC,IAAA9N,EACA,WAAYb,EACZ,SAAAuG,EACA,MAAAhH,EACA,aAAAiH,EACA,aAAAkI,EACA,MAAO,OACP,YAAa,OACb,MAAO,OACP,SAAU,OACV,aAAc,OACd,aAAc,CACZ,gBAAiBnI,EAAW,OAAS,OACrC,aAAcpD,EAAQ,OAAS,OAC/B,yBAA0BrB,EAAW,YACjC,OACA,OACJ,0BACEA,EAAW,cAAgB,CAAC4M,EAAe,OAAS,MAAA,EAEvD,GAAI3O,CAAA,CAAA,CACP,CAAA,CAIR,CACF,EAEA0O,GAAY,YAAc,yRCnJpBG,GACJ,sEACIC,GACJ,iEACIC,GACJ,6nBACIC,GACJ,6nBAIIC,GAA4C,CAChD,KAAMJ,GACN,KAAMC,GACN,MAAOC,GACP,KAAMC,EACR,EAEaE,GAAiB,CAAC,CAC7B,KAAA1J,EACA,UAAAlD,EACA,GAAGjD,CACL,IACEiB,EAAAA,IAAC,MAAA,CACC,QAAQ,YACR,MAAM,6BACN,UAAW,GAAGJ,EAAO,QAAQ,IAAIoC,GAAa,EAAE,GAAG,KAAA,EAClD,GAAGjD,EAEJ,eAAC,OAAA,CAAK,EAAG4P,GAAMzJ,CAA0B,EAAG,KAAK,cAAA,CAAe,CAAA,CAClE,EAIW2J,GAAiB9P,UAC3B,MAAA,CAAI,UAAWa,EAAO,cACrB,SAAA,CAAAI,EAAAA,IAAC,QAAK,SAAA,MAAA,CAAI,EACVA,EAAAA,IAAC4O,GAAA,CAAe,KAAK,OAAQ,GAAG7P,CAAA,CAAO,CAAA,EACzC,EAIW+P,GAAiB/P,UAC3B,MAAA,CAAI,UAAWa,EAAO,cACrB,SAAA,CAAAI,EAAAA,IAAC4O,GAAA,CAAe,KAAK,OAAQ,GAAG7P,CAAA,CAAO,EACvCiB,EAAAA,IAAC,QAAK,SAAA,MAAA,CAAI,CAAA,EACZ,EAIW+O,GAAkBhQ,UAC5B,MAAA,CAAI,UAAWa,EAAO,cACrB,SAAA,CAAAI,EAAAA,IAAC4O,GAAA,CAAe,KAAK,QAAS,GAAG7P,CAAA,CAAO,EACxCiB,EAAAA,IAAC,QAAK,SAAA,OAAA,CAAK,CAAA,EACb,EAIWgP,GAAiBjQ,UAC3B,MAAA,CAAI,UAAWa,EAAO,cACrB,SAAA,CAAAI,EAAAA,IAAC,QAAK,SAAA,MAAA,CAAI,EACVA,EAAAA,IAAC4O,GAAA,CAAe,KAAK,OAAQ,GAAG7P,CAAA,CAAO,CAAA,EACzC,EC7BF,SAASkQ,GAAwBxN,EAG/B,CACA,MAAM9B,EAAoD,CACxD,KAAMC,EAAO,KACb,QAASA,EAAO,QAChB,KAAMA,EAAO,IAAA,EAGTC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAM,EAAIA,EACVF,EAAiB,KAAO,EAAE,KAAO,GAAGC,EAAO,IAAI,IAAI,EAAE,IAAI,GAAKA,EAAO,KACrED,EAAiB,QAAU,EAAE,QACzB,GAAGC,EAAO,OAAO,IAAI,EAAE,OAAO,GAC9BA,EAAO,QACXD,EAAiB,KAAO,EAAE,KAAO,GAAGC,EAAO,IAAI,IAAI,EAAE,IAAI,GAAKA,EAAO,IACvE,CAEA,MAAMG,EAAgB0B,EAAW,UAKjC,MAAO,CAAE,UAJU1B,EACf,GAAGH,EAAO,IAAI,IAAIG,CAAa,GAC/BH,EAAO,KAEqB,WAAYD,CAAA,CAC9C,CAEA,MAAMuP,GAAkB/O,EAAAA,WACtB,SAAwB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CAC5D,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpD+P,EAAgBF,GACpBvP,CAAA,EAGF,OACEM,EAAAA,IAACoP,EAAAA,WAAkB,KAAlB,CACC,IAAA5O,EACA,UAAW2O,EAAc,UACzB,WAAYA,EAAc,WACzB,GAAIzP,CAAA,CAAA,CAGX,CACF,EACAwP,GAAgB,YAAc,kBAE9B,MAAMG,GAAkBlP,EAAAA,WAGtB,SAAwB,CAAE,UAAAmP,EAAW,KAAA/I,EAAM,GAAGxH,CAAA,EAASyB,EAAK,CAC5D,MAAM+O,EAAahJ,IAAS+I,EAAYT,GAAgB,QACxD,OACE7O,EAAAA,IAACoP,EAAAA,WAAkB,KAAlB,CACC,IAAA5O,EACA,eAAa,OACb,KAAM+O,EACL,GAAGxQ,CAAA,CAAA,CAGV,CAAC,EACDsQ,GAAgB,YAAc,kBAE9B,MAAMG,GAAsBrP,EAAAA,WAG1B,SAA4B,CAAE,UAAAmP,EAAW,KAAA/I,EAAM,GAAGxH,CAAA,EAASyB,EAAK,CAChE,MAAM+O,EAAahJ,IAAS+I,EAAYR,GAAgB,QACxD,OACE9O,EAAAA,IAACoP,EAAAA,WAAkB,SAAlB,CACC,IAAA5O,EACA,eAAa,OACb,KAAM+O,EACL,GAAGxQ,CAAA,CAAA,CAGV,CAAC,EACDyQ,GAAoB,YAAc,sBAElC,MAAMC,GAAmBtP,EAAAA,WAGvB,SAAyB,CAAE,UAAAmP,EAAW,KAAA/I,EAAM,GAAGxH,CAAA,EAASyB,EAAK,CAC7D,MAAM+O,EAAahJ,IAAS+I,EAAYP,GAAiB,QACzD,OACE/O,EAAAA,IAACoP,EAAAA,WAAkB,MAAlB,CACC,IAAA5O,EACA,eAAa,OACb,KAAM+O,EACL,GAAGxQ,CAAA,CAAA,CAGV,CAAC,EACD0Q,GAAiB,YAAc,mBAE/B,MAAMC,GAAkBvP,EAAAA,WAGtB,SAAwB,CAAE,UAAAmP,EAAW,KAAA/I,EAAM,GAAGxH,CAAA,EAASyB,EAAK,CAC5D,MAAM+O,EAAahJ,IAAS+I,EAAYN,GAAgB,QACxD,OACEhP,EAAAA,IAACoP,EAAAA,WAAkB,KAAlB,CACC,IAAA5O,EACA,eAAa,OACb,KAAM+O,EACL,GAAGxQ,CAAA,CAAA,CAGV,CAAC,EACD2Q,GAAgB,YAAc,kBAE9B,MAAMC,GAAcxP,EAAAA,WAClB,SACE,CAAE,WAAAf,EAAa,GAAO,gBAAAwQ,EAAiB,WAAAC,EAAY,GAAGpQ,CAAA,EACtDe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpD+P,EAAgBF,GACpBvP,CAAA,EAGIoQ,EACJC,GACG,CACH,MAAMC,EAAY,CAAE,eAAgB,MAAA,EACpC,OAAIJ,EACK,CAAE,GAAGI,EAAW,GAAGJ,EAAgBG,CAAO,CAAA,EAE5CC,CACT,EAEMC,EAAcJ,EAChB,CACE,SAAUhB,GACV,aAAcC,GACd,UAAWC,GACX,SAAUC,EAAA,EAEZ,CAAA,EAEJ,OACEhP,EAAAA,IAACoP,EAAAA,WAAA,CACC,IAAA5O,EACA,UAAW2O,EAAc,UACzB,WAAYA,EAAc,WAC1B,gBAAiBW,EAChB,GAAGG,EACH,GAAIvQ,CAAA,CAAA,CAGX,CACF,EACAiQ,GAAY,YAAc,aAKnB,MAAMO,GAAaP,GAY1BO,GAAW,KAAOhB,GAClBgB,GAAW,MAAQd,EAAAA,WAAkB,MACrCc,GAAW,QAAUd,EAAAA,WAAkB,QACvCc,GAAW,KAAOd,EAAAA,WAAkB,KACpCc,GAAW,KAAOb,GAClBa,GAAW,SAAWV,GACtBU,GAAW,MAAQT,GACnBS,GAAW,KAAOR,GAClBQ,GAAW,KAAOtB,sWCjKZuB,GAAY,SAAe,CAC/B,WAAA/Q,EAAa,GACb,SAAAgR,EAAW,QACX,YAAAC,EAAc,GACd,eAAAC,EAAiB,GACjB,GAAG7Q,CACL,EAAe,CACb,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EAGpDO,EAAoD,CACxD,QAASC,GAAO,QAChB,OAAQA,GAAO,OACf,MAAO0Q,EAAiB1Q,GAAO,cAAgBA,GAAO,MACtD,KAAMA,GAAO,KACb,MAAOA,GAAO,KAAA,EAGVC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAEA,OACEe,EAAAA,IAACuQ,EAAAA,OAAA,CACC,SAAAH,EACA,YAAAC,EACA,oBAAqB5Q,EAAK,qBAAuB,EAAQA,EAAK,OAC7D,GAAIC,EACL,WAAYC,CAAA,CAAA,CAGlB,EACAwQ,GAAU,YAAc,QAgBjB,MAAMK,GAAcrQ,EAAAA,WACzB,SAAqB,CAAE,WAAAf,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACzD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEG+Q,EAAiB1Q,EACnB,GAAGH,GAAO,MAAM,IAAIG,CAAa,GACjCH,GAAO,OAEX,aAAQ,MAAA,CAAI,IAAAY,EAAU,UAAWiQ,EAAiB,GAAG/Q,EAAgB,CACvE,CACF,EACA8Q,GAAY,YAAc,cAkBnB,MAAME,GAAQP,GACrBO,GAAM,KAAOH,EAAAA,OAAc,KAC3BG,GAAM,QAAUH,EAAAA,OAAc,QAC9BG,GAAM,QAAUH,EAAAA,OAAc,QAC9BG,GAAM,OAASH,EAAAA,OAAc,OAC7BG,GAAM,MAAQH,EAAAA,OAAc,MAC5BG,GAAM,YAAcH,EAAAA,OAAc,YAClCG,GAAM,KAAOH,EAAAA,OAAc,KAC3BG,GAAM,MAAQH,EAAAA,OAAc,MAC5BG,GAAM,OAASF,4GC3GTG,GAAc,SAAiB,CACnC,WAAAvR,EAAa,GACb,SAAA6L,EAAW,GACX,GAAGxL,CACL,EAAiB,CACf,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EAGpDO,EAAoD,CACxD,SAAUC,GAAO,SACjB,MAAOA,GAAO,KAAA,EAGVC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAKA,MAAMiM,EACFxL,EAA2C,WAE3B,GAIdyL,EAAazL,EAA2C,UAGxD0L,EAAoBH,GAAYE,EAEtC,OACEnL,EAAAA,IAAC4Q,EAAAA,QAAA,CACC,SAAS,MACT,UAAA1F,EACA,UAAWE,EACX,WAAYzL,EACX,GAAID,CAAA,CAAA,CAGX,EACAiR,GAAY,YAAc,UAY1B,MAAME,GAAgB,SAAuB9R,EAA2B,CACtE,OAAOiB,EAAAA,IAAC4Q,EAAAA,QAAe,OAAf,CAAuB,GAAG7R,CAAA,CAAO,CAC3C,EACA8R,GAAc,YAAc,gBAU5B,MAAMC,GAAkB,SAAyB,CAC/C,WAAA1R,EAAa,GACb,GAAGK,CACL,EAAyB,CACvB,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEH,OACEM,EAAAA,IAAC4Q,EAAAA,QAAe,SAAf,CACC,UAAW7Q,EACV,GAAIL,CAAA,CAAA,CAGX,EACAoR,GAAgB,YAAc,kBAWvB,MAAMC,GAAUJ,GACvBI,GAAQ,OAASF,GACjBE,GAAQ,SAAWD,6WClINE,GAAa7Q,EAAAA,WACxB,SAAoBpB,EAAOyB,EAAK,CAC9B,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAGA,MAAAqB,EACA,YAAAC,EACA,cAAAC,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAA1B,EACA,SAAAkF,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,GAAG1G,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,cAAO+B,EAAW,KAGhBzB,EAAAA,IAACwF,EAAA,CACC,UAAAxD,EACA,MAAAC,EACA,gBAAgB,4EAChB,gBAAiB,OACjB,WAAA7C,EACA,aAAa,MACb,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,YAAAC,EACA,cAAAC,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAUqC,GAAY,CAAC,CAACC,EACxB,kBAAAA,EACA,oBAAAP,EACA,aAAa,OACb,cAAejG,IAAU,OAAYA,EAAQiH,EAC7C,oBAAqBpH,EACrB,gBACEiB,EAAAA,IAACiR,EAAAA,MAAa,MAAb,CACC,IAAAzQ,EAEC,GAAId,EACL,SAAU+F,GAAahE,EAAmB,SAC1C,MAAAvC,EACA,aAAAiH,EAEA,eAAC,MAAA,CAAI,UAAWvG,EAAO,UAAW,cAAagC,EAC5C,SAAArB,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAIR,CACF,EAEAyQ,GAAW,YAAc,aC3FzB,MAAME,GAGD,CAAC,CAAE,UAAAlP,EAAW,MAAAC,KACjBjC,EAAAA,IAAC,MAAA,CACC,MAAM,6BACN,QAAQ,YACR,KAAK,eACL,UAAAgC,EACA,MAAAC,EAEA,eAAC,SAAA,CAAO,GAAG,IAAI,GAAG,IAAI,EAAE,GAAA,CAAI,CAAA,CAC9B,EAuBWkP,GAAQhR,EAAAA,WACnB,SAAepB,EAAOyB,EAAK,CACzB,KAAM,CACJ,WAAApB,EAAa,GACb,SAAAqG,EACA,kBAAAC,EACA,SAAAQ,EACA,WAAAtE,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EACA,GAAGrC,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,MAClB,OAAOA,EAAW,OAClB,OAAOA,EAAW,QAClB,OAAOA,EAAW,UAElB,MAAM9B,EAAoD,CACxD,KAAMC,EAAO,KACb,KAAMA,EAAO,KACb,MAAOA,EAAO,MACd,MAAOA,EAAO,MACd,KAAMA,EAAO,KACb,aAAcA,EAAO,aACrB,MAAOA,EAAO,KAAA,EAGVC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,aAAeG,EAAE,aAC9B,GAAGF,EAAO,YAAY,IAAIE,EAAE,YAAY,GACxCF,EAAO,aACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,KACb,CAEA,MAAMG,EAAgB0B,EAAW,UAC3BhB,EAAaV,EACf,GAAGH,EAAO,IAAI,IAAIG,CAAa,GAC/BH,EAAO,KAEX,GAAI6F,GAAcC,EAAmB,CACnC,MAAMyD,EAAY,CAAC,EAAE1H,EAAW,SAAWA,EAAW,gBAChD2H,EAAe1D,EACf2D,EACJrJ,EAAAA,IAACoJ,EAAA,CACE,GAAGrK,EACJ,QAASoK,EACT,MAAO1H,EAAW,KAAA,CAAA,EAItB,OAAIG,EAEA5B,EAAAA,IAAC2B,GAAA,CACC,WAAAC,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EAEC,SAAAuH,CAAA,CAAA,oBAKG,SAAAA,CAAA,CAAO,CACnB,CAGA,MAAM+H,EACJpR,EAAAA,IAACiR,EAAAA,MAAA,CACC,IAAAzQ,EACA,KAAM0Q,GACN,UAAWzQ,EACX,WAAYd,EACZ,SAAU8F,GAAYS,EACrB,GAAIxG,CAAA,CAAA,EAIT,OAAIkC,EAEA5B,EAAAA,IAAC2B,GAAA,CACC,WAAAC,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EAEC,SAAAsP,CAAA,CAAA,EAKAA,CACT,CACF,EAEAD,GAAM,YAAc,QACpBA,GAAM,MAAQH,GCzKP,MAAMK,GAGR,CAAC,CAAE,QAAAC,EAAS,MAAA3O,KAEbjC,EAAAA,KAACsE,EAAAA,IAAA,CACC,UAAU,OACV,UAAWpF,GAAO,UAClB,MAAO,CAAE,QAAS,cAAe,IAAK,MAAO,WAAY,UAAA,EAExD,SAAA,CAAA+C,UAAU,OAAA,CAAK,MAAO,CAAE,WAAY,KAAQ,SAAA,CAAAA,EAAM,GAAA,EAAC,EACpD3C,EAAAA,IAAC,OAAA,CAAM,SAAAsR,EAAU,KAAO,KAAA,CAAM,CAAA,CAAA,CAAA,EAKpCD,GAAoB,YAAc,sBChB3B,MAAME,GAGR,CAAC,CAAE,QAAAD,EAAS,MAAA3O,KAEbjC,EAAAA,KAACsE,EAAAA,IAAA,CACC,UAAU,OACV,UAAWpF,GAAO,UAClB,MAAO,CAAE,QAAS,cAAe,IAAK,MAAO,WAAY,UAAA,EAExD,SAAA,CAAA+C,UAAU,OAAA,CAAK,MAAO,CAAE,WAAY,KAAQ,SAAA,CAAAA,EAAM,GAAA,EAAC,EACpD3C,EAAAA,IAAC,OAAA,CAAM,SAAAsR,EAAU,OAAS,OAAA,CAAQ,CAAA,CAAA,CAAA,EAKxCC,GAAqB,YAAc,+PCmBnC,SAASC,GAA8B/P,EAGrC,CACA,MAAM9B,EAAoD,CACxD,KAAMC,EAAO,KACb,QAASA,EAAO,QAChB,MAAOA,EAAO,MACd,UAAWA,EAAO,SAAA,EAGdC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAM,EAAIA,EACVF,EAAiB,KAAO,EAAE,KAAO,GAAGC,EAAO,IAAI,IAAI,EAAE,IAAI,GAAKA,EAAO,KACrED,EAAiB,QAAU,EAAE,QACzB,GAAGC,EAAO,OAAO,IAAI,EAAE,OAAO,GAC9BA,EAAO,QACXD,EAAiB,MAAQ,EAAE,MACvB,GAAGC,EAAO,KAAK,IAAI,EAAE,KAAK,GAC1BA,EAAO,MACXD,EAAiB,UAAY,EAAE,UAC3B,GAAGC,EAAO,SAAS,IAAI,EAAE,SAAS,GAClCA,EAAO,SACb,CAEA,MAAMG,EAAgB0B,EAAW,UAKjC,MAAO,CAAE,UAJU1B,EACf,GAAGH,EAAO,IAAI,IAAIG,CAAa,GAC/BH,EAAO,KAEqB,WAAYD,CAAA,CAC9C,CAEA,MAAM8R,GAAoBtR,EAAAA,WACxB,SACE,CAAE,WAAAf,EAAa,GAAO,YAAAsS,EAAc,aAAc,UAAAC,EAAW,GAAGlS,CAAA,EAChEe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,SAElB,MAAM0N,EAAgBqC,GAA8B/P,CAAU,EAE9D,OACEzB,EAAAA,IAAC4R,EAAAA,iBAAA,CACC,IAAApR,EACA,UAAW2O,EAAc,UACzB,WAAYA,EAAc,WAC1B,YAAAuC,EACA,UAAAC,EACA,mBAAkBD,EACjB,GAAIhS,CAAA,CAAA,CAMX,CACF,EACA+R,GAAkB,YAAc,mBAKzB,MAAMI,GAAmBJ,izBC5D1BK,GAAmD,CAAC,CAAE,MAAA5S,KACnDc,EAAAA,IAAC,MAAA,CAAI,UAAWJ,EAAO,cAAgB,SAAAV,EAAM,EASzC6S,GAAS5R,EAAAA,WACpB,SAAgBpB,EAAOyB,EAAK,CAC1B,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,gBAAAC,EACA,iBAAAC,EAEA,MAAAqB,EACA,aAAAqP,EACA,cAAAnP,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAAiE,EACA,SAAAT,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,KAAAI,EACA,UAAA0L,EAAY,GACZ,iBAAAC,EAAmB,GACnB,IAAAC,EAAM,EACN,IAAAC,EAAM,IACN,KAAAC,GAAO,EACP,SAAAC,GACA,YAAAC,EACA,GAAG9S,EAAA,EACDV,EAGE,CAACyT,GAAeC,EAAgB,EAAIC,EAAAA,SAAiB,IACrDxT,IAAU,OAAkBA,EAC5BiH,IAAiB,OAAkBA,EAChCgM,CACR,EAEKQ,GAAgBzT,IAAU,OAAYA,EAAQsT,GAC9C,CAACI,GAAYC,EAAa,EAAIH,EAAAA,SAClCC,GAAc,SAAA,CAAS,EAIzBG,EAAAA,UAAU,IAAM,CACdD,GAAcF,GAAc,UAAU,CACxC,EAAG,CAACA,EAAa,CAAC,EAElB,MAAMI,GAAqBC,GAAgB,CACrC9T,IAAU,QACZuT,GAAiBO,CAAG,EAEtBV,IAAA,MAAAA,GAAWU,EACb,EAEMC,GAAqBpO,GAA2C,CACpE,MAAMqO,GAASrO,EAAE,OAAO,MACxBgO,GAAcK,EAAM,EAEpB,MAAMC,GAAS,WAAWD,EAAM,EAChC,GAAI,CAAC,MAAMC,EAAM,EAAG,CAElB,MAAMC,GAAU,KAAK,IAAIjB,EAAK,KAAK,IAAIC,EAAKe,EAAM,CAAC,EACnDJ,GAAkBK,EAAO,CAC3B,CACF,EAEMC,GAAkB,IAAM,CAE5BR,GAAcF,GAAc,UAAU,CACxC,EAEMjT,GAAiBP,EAAmBM,GAAML,CAAU,EACpDqC,GAAa/B,GAGnB,OAAO+B,GAAW,KAClB,OAAOA,GAAW,QAClB,OAAOA,GAAW,OAClB,OAAOA,GAAW,aAGlB,MAAM9B,GAAoD,CACxD,KAAMC,EAAO,WACb,MAAOA,EAAO,YACd,IAAKA,EAAO,UACZ,MAAOA,EAAO,YACd,KAAMA,EAAO,WACb,UAAWA,EAAO,eAAA,EAGdC,GAAiB4B,GAAW,WAClC,GACE5B,IACA,OAAOA,IAAmB,UAC1B,CAAC,MAAM,QAAQA,EAAc,EAC7B,CACA,MAAMC,EAAID,GACVF,GAAiB,KAAOG,EAAE,KACtB,GAAGF,EAAO,UAAU,IAAIE,EAAE,IAAI,GAC9BF,EAAO,WACXD,GAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,WAAW,IAAIE,EAAE,KAAK,GAChCF,EAAO,YACXD,GAAiB,IAAMG,EAAE,IACrB,GAAGF,EAAO,SAAS,IAAIE,EAAE,GAAG,GAC5BF,EAAO,UACXD,GAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,WAAW,IAAIE,EAAE,KAAK,GAChCF,EAAO,YACXD,GAAiB,KAAOG,EAAE,KACtB,GAAGF,EAAO,UAAU,IAAIE,EAAE,IAAI,GAC9BF,EAAO,WACXD,GAAiB,UAAYG,EAAE,UAC3B,GAAGF,EAAO,eAAe,IAAIE,EAAE,SAAS,GACxCF,EAAO,eACb,CAEA,MAAM2F,GAAevD,EACjB,GAAGpC,EAAO,cAAc,IAAIoC,CAAS,GACrCpC,EAAO,eAEL0T,GAAc/M,EAClBvG,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAO,YAAa,cAAW,GAC7C,SAAA2G,CAAA,CACH,EACE,KAEJ,OACEvG,EAAAA,IAACwF,EAAA,CACC,IAAAhF,EACA,UAAW+E,GACX,MAAAtD,EACA,gBAAiB,OACjB,gBAAiB,OACjB,WAAA7C,EACA,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAAqC,EACA,kBAAmBC,GAAqBoM,GACxC,oBAAA3M,EACA,aAAa,OACb,cAAewN,GACf,oBAAqB,CAAE,MAAOA,EAAA,EAC9B,gBACEjS,EAAAA,KAAC,MAAA,CACC,UAAWd,EAAO,gBAClB,mBAAkBgC,EAClB,gBAAesE,EAAW,OAAS,OACnC,aAAYpD,EAAQ,OAAS,OAE5B,SAAA,CAAAwQ,GAEApB,GACClS,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAO,YAAc,SAAAuS,EAAI,EAG5CnS,EAAAA,IAAC,MAAA,CAAI,UAAWJ,EAAO,mBACrB,SAAAI,EAAAA,IAACuT,EAAAA,OAAA,CACC,WAAY5T,GACZ,SAAAuG,EACA,MAAOyM,GACP,SAAUI,GACV,YAAAR,EACA,IAAAJ,EACA,IAAAC,EACA,KAAAC,GACA,MAAOL,EACN,GAAItS,EAAA,CAAA,EAET,EAEAgB,EAAAA,KAAC,MAAA,CAAI,UAAWd,EAAO,oBACpB,SAAA,CAAA,CAACqS,GACAjS,MAAC,OAAA,CAAK,UAAWJ,EAAO,aAAe,SAAA+S,GAAc,EAEtDT,GACClS,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAO,YAAc,SAAAwS,CAAA,CAAI,CAAA,EAE9C,EAECH,GACCjS,EAAAA,IAAC,QAAA,CACC,KAAK,SACL,UAAWJ,EAAO,WAClB,MAAOgT,GACP,SAAUK,GACV,OAAQI,GACR,IAAAlB,EACA,IAAAC,EACA,KAAAC,GACA,SAAAnM,EACA,aAAYpD,EAAQ,OAAS,MAAA,CAAA,CAC/B,CAAA,CAAA,CAEJ,CAAA,CAIR,CACF,EAEAiP,GAAO,YAAc,4DChQfyB,GAASrT,EAAAA,WAAuC,SACpD,CAAE,SAAAI,EAAU,IAAAkK,EAAM,cAAe,GAAGhL,CAAA,EACpCe,EACA,CACA,MAAMb,EAAoD,CACxD,KAAMC,GAAO,IAAA,EAGTC,EAAiBJ,EAAK,WAC5B,GACEI,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,GAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,GAAO,IACvE,CAEA,MAAMG,EAAgBN,EAAK,UACrBgB,EAAaV,EACf,GAAGH,GAAO,IAAI,IAAIG,CAAa,GAC/BH,GAAO,KAEX,OACEI,EAAAA,IAACyT,EAAAA,MAAA,CACC,IAAAjT,EACA,UAAWC,EACX,WAAYd,EACX,GAAGb,GAAe,CAAE,IAAA2L,EAAK,GAAGhL,EAAiC,EAE7D,SAAAc,CAAA,CAAA,CAGP,CAAC,EACDiT,GAAO,YAAc,QAEd,MAAME,GAAQ5M,EAAAA,2BAA8C0M,EAAM,0wBC5CnEG,GAAWxT,EAAAA,WACf,SAAiBpB,EAAOyB,EAAK,CAC3B,KAAM,CACJ,WAAApB,EAAa,GACb,KAAAkH,EAAO,QACP,YAAAoL,EAAc,aACd,UAAA1P,EACA,MAAAC,EACA,GAAGxC,CAAA,EACDV,EAEEW,EAAiBP,EAAmBM,EAAML,CAAU,EAE1D,OACEY,EAAAA,IAAC4T,EAAAA,QAAA,CACC,IAAApT,EACA,YAAAkR,EACA,UAAW,GAAG9R,EAAO,IAAI,IAAI8R,IAAgB,aAAe9R,EAAO,WAAaA,EAAO,QAAQ,IAAI0G,IAAS,QAAU1G,EAAO,MAAQA,EAAO,KAAK,IAAIoC,GAAa,EAAE,GACpK,MAAAC,EACA,YAAWqE,EACX,mBAAkBoL,EAClB,WAAY,CACV,MAAO9R,EAAO,MACd,KAAMA,EAAO,KACb,SAAUA,EAAO,SACjB,kBAAmBA,EAAO,kBAC1B,SAAUA,EAAO,SACjB,UAAWA,EAAO,UAClB,gBAAiBA,EAAO,gBACxB,UAAWA,EAAO,UAClB,kBAAmBA,EAAO,kBAC1B,QAASA,EAAO,OAAA,EAEjB,GAAIF,CAAA,CAAA,CAGX,CACF,EAGamU,GAGT,OAAO,OAAOF,GAAU,CAC1B,KAAMC,EAAAA,QAAe,KACrB,UAAWA,EAAAA,QAAe,SAC5B,CAAC,EAEDD,GAAS,YAAc,0fC5CVG,GAAc3T,EAAAA,WACzB,SAAqBpB,EAAOyB,EAAK,CAC/B,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAGA,MAAAqB,EACA,YAAAC,EACA,cAAAC,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAA1B,EACA,SAAAkF,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,GAAG1G,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,cAAO+B,EAAW,KAGhBzB,EAAAA,IAACwF,EAAA,CACC,UAAAxD,EACA,MAAAC,EACA,gBAAgB,4EAChB,gBAAiB,OACjB,WAAA7C,EACA,aAAa,MACb,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,YAAAC,EACA,cAAAC,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAUqC,GAAY,CAAC,CAACC,EACxB,kBAAAA,EACA,oBAAAP,EACA,aAAa,OACb,cAAejG,IAAU,OAAYA,EAAQiH,EAC7C,oBAAqBpH,EACrB,gBACEiB,EAAAA,IAAC+T,EAAAA,OAAc,MAAd,CACC,IAAAvT,EAEC,GAAId,EACL,SAAU+F,GAAahE,EAAmB,SAC1C,MAAAvC,EACA,aAAAiH,EAEA,eAAC,MAAA,CAAI,UAAWvG,EAAO,UAAW,cAAagC,EAC5C,SAAArB,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAIR,CACF,EAEAuT,GAAY,YAAc,cCvEnB,MAAME,GAAS7T,EAAAA,WACpB,SAAgBpB,EAAOyB,EAAK,CAC1B,KAAM,CACJ,WAAApB,EAAa,GACb,SAAAqG,EACA,kBAAAC,EACA,SAAAQ,EACA,UAAA+N,EACA,WAAArS,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EACA,GAAGrC,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,MAClB,OAAOA,EAAW,OAClB,OAAOA,EAAW,QAElB,MAAM9B,EAAoD,CACxD,KAAMC,EAAO,KACb,KAAMA,EAAO,KACb,MAAOA,EAAO,MACd,MAAOA,EAAO,MACd,WAAYA,EAAO,WACnB,aAAcA,EAAO,aACrB,MAAOA,EAAO,KAAA,EAGVC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,KAAOG,EAAE,KAAO,GAAGF,EAAO,IAAI,IAAIE,EAAE,IAAI,GAAKF,EAAO,KACrED,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,WAAaG,EAAE,WAC5B,GAAGF,EAAO,UAAU,IAAIE,EAAE,UAAU,GACpCF,EAAO,WACXD,EAAiB,aAAeG,EAAE,aAC9B,GAAGF,EAAO,YAAY,IAAIE,EAAE,YAAY,GACxCF,EAAO,aACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,KACb,CAEA,MAAMG,EAAgB0B,EAAW,UAC3BhB,EAAaV,EACf,GAAGH,EAAO,IAAI,IAAIG,CAAa,GAC/BH,EAAO,KAEX,GAAI6F,GAAcC,EAAmB,CACnC,MAAMyD,EAAY,CAAC,EAAE1H,EAAW,SAAWA,EAAW,gBAChD2H,EAAe1D,EACf2D,EACJrJ,EAAAA,IAACoJ,EAAA,CACE,GAAGrK,EACJ,QAASoK,EACT,MAAO1H,EAAW,KAAA,CAAA,EAItB,OAAIG,EAEA5B,EAAAA,IAAC2B,GAAA,CACC,WAAAC,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EAEC,SAAAuH,CAAA,CAAA,oBAKG,SAAAA,CAAA,CAAO,CACnB,CAEA,MAAM6K,EACJxT,EAAAA,KAAC,MAAA,CAAI,UAAWd,EAAO,iBACrB,SAAA,CAAAI,EAAAA,IAACmU,EAAAA,UAAA,CAAU,UAAWvU,EAAO,SAAA,CAAW,EACxCI,EAAAA,IAACuJ,EAAAA,UAAA,CAAU,UAAW3J,EAAO,SAAA,CAAW,CAAA,EAC1C,EAIIwU,EACJpU,EAAAA,IAAC+T,EAAAA,OAAA,CACC,IAAAvT,EACA,UAAWC,EACX,WAAYd,EACZ,SAAU8F,GAAYS,EACtB,gBAAeT,GAAYS,GAAY,OACvC,UAAW+N,GAAaC,EACvB,GAAIxU,CAAA,CAAA,EAIT,OAAIkC,EAEA5B,EAAAA,IAAC2B,GAAA,CACC,WAAAC,EACA,UAAAZ,EACA,gBAAAa,EACA,gBAAAC,EAEC,SAAAsS,CAAA,CAAA,EAKAA,CACT,CACF,EAEAJ,GAAO,YAAc,SACrBA,GAAO,MAAQF,GCpKR,MAAMO,GAA+BtV,GACnCiB,EAAAA,IAAC,MAAA,CAAK,GAAGjB,EAAO,SAAA,QAAK,mKCmBxBuV,GAAQnU,EAAAA,WAAsC,SAAcpB,EAAOyB,EAAK,CAC5E,KAAM,CACJ,QAAAhB,EAAU,UACV,YAAAkS,EAAc,aACd,WAAAtS,EAAa,GACb,UAAA4C,EACA,GAAGvC,CAAA,EACDV,EAEEW,EAAiBP,EAAmBM,EAAML,CAAU,EAE1D,OACEY,EAAAA,IAACuU,EAAAA,KAAA,CACC,IAAA/T,EACA,QAAAhB,EACA,YAAAkS,EACA,UAAW,GAAG9R,GAAO,IAAI,IAAIoC,GAAa,EAAE,GAC5C,eAAcxC,EACd,mBAAkBkS,EAClB,WAAY,CACV,KAAM9R,GAAO,KACb,IAAKA,GAAO,IACZ,MAAOA,GAAO,KAAA,EAEf,GAAIF,CAAA,CAAA,CAGX,CAAC,EAED4U,GAAM,YAAc,OAIpB,MAAME,GAAYrU,EAAAA,WAChB,SAAkBpB,EAAOyB,EAAK,CAC5B,KAAM,CAAE,WAAApB,EAAa,GAAO,GAAGK,GAASV,EACxC,OACEiB,EAAAA,IAACuU,EAAAA,KAAY,KAAZ,CACC,IAAA/T,EACC,GAAIrB,EAAmBM,EAAML,CAAU,CAAA,CAAA,CAG9C,CACF,EACAoV,GAAU,YAAc,YAIxB,MAAMC,GAAWtU,EAAAA,WACf,SAAiBpB,EAAOyB,EAAK,CAC3B,KAAM,CAAE,WAAApB,EAAa,GAAO,GAAGK,GAASV,EACxC,OACEiB,EAAAA,IAACuU,EAAAA,KAAY,IAAZ,CACC,IAAA/T,EACC,GAAIrB,EAAmBM,EAAML,CAAU,CAAA,CAAA,CAG9C,CACF,EACAqV,GAAS,YAAc,WAIvB,MAAMC,GAAavU,EAAAA,WACjB,SAAmBpB,EAAOyB,EAAK,CAC7B,KAAM,CAAE,WAAApB,EAAa,GAAO,GAAGK,GAASV,EACxC,OACEiB,EAAAA,IAACuU,EAAAA,KAAY,MAAZ,CACC,IAAA/T,EACC,GAAIrB,EAAmBM,EAAML,CAAU,CAAA,CAAA,CAG9C,CACF,EACAsV,GAAW,YAAc,aAElB,MAAMC,GAIT,OAAO,OAAOL,GAAO,CACvB,KAAME,GACN,IAAKC,GACL,MAAOC,EACT,CAAC,EC/EKE,GAAQzU,EAAAA,WAAsC,SAClD,CAAE,WAAAf,EAAa,GAAO,QAAAI,EAAU,OAAQ,GAAGC,CAAA,EAC3Ce,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEGmV,EAAkB,8BAA8BrV,CAAO,GACvDsV,EAAkB/U,EACpB,GAAG8U,CAAe,IAAI9U,CAAa,GACnC8U,EAEJ,OACE7U,EAAAA,IAAC+U,EAAAA,KAAA,CACC,IAAAvU,EACA,UAAWsU,EACV,GAAIpV,CAAA,CAAA,CAGX,CAAC,EACDkV,GAAM,YAAc,OAab,MAAMI,GAAOlO,EAAAA,2BAA2C8N,EAAK,8JCtBvDK,GAAW9U,EAAAA,WACtB,SAAkBpB,EAAOyB,EAAK,CAC5B,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAEA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAAiE,EACA,SAAAT,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,GAAG1G,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,QAClB,OAAOA,EAAW,OAGlB,MAAM9B,EAAoD,CACxD,QAASC,GAAO,KAChB,MAAOA,GAAO,KAAA,EAGVC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,QAAUG,EAAE,QACzB,GAAGF,GAAO,IAAI,IAAIE,EAAE,OAAO,GAC3BF,GAAO,KACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,GAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,GAAO,KACb,CAEA,MAAM2F,EAAevD,EACjB,GAAGpC,GAAO,cAAc,IAAIoC,CAAS,GACrCpC,GAAO,eAEX,OACEI,EAAAA,IAACwF,EAAA,CACC,UAAWD,EACX,MAAAtD,EACA,gBAAgB,mEAChB,gBAAgB,mEAChB,WAAA7C,EACA,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAAqC,EACA,kBAAAC,EACA,oBAAAP,EACA,aAAa,OACb,cAAejG,IAAU,OAAYA,EAAQiH,EAC7C,oBAAqBpH,EACrB,gBAEEiB,EAAAA,IAACkV,EAAAA,SAAA,CACC,IAAA1U,EACA,WAAYb,EACZ,SAAAuG,EACA,MAAAhH,EACA,aAAAiH,EACA,MAAO,OACP,YAAa,OACb,MAAO,OACP,SAAU,OACV,aAAc,OACd,aAAc,CACZ,gBAAiBD,EAAW,OAAS,OACrC,aAAcpD,EAAQ,OAAS,MAAA,EAEhC,GAAIpD,CAAA,CAAA,CACP,CAAA,CAIR,CACF,EAEAuV,GAAS,YAAc,iOC9HVE,GAAYhV,EAAAA,WACvB,SAAmBpB,EAAOyB,EAAK,CAC7B,KAAM,CACJ,WAAApB,EAAa,GACb,WAAAwC,EAAa,UAGb,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EAEA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,UAAApB,EACA,MAAAC,EACA,SAAAiE,EACA,SAAAT,EACA,kBAAAC,EACA,oBAAAP,EACA,MAAAjG,EACA,aAAAiH,EACA,GAAG1G,CAAA,EACDV,EACEW,EAAiBP,EAAmBM,EAAML,CAAU,EACpDqC,EAAa/B,EAGnB,OAAO+B,EAAW,KAClB,OAAOA,EAAW,QAClB,OAAOA,EAAW,OAGlB,MAAM9B,EAAoD,CACxD,QAASC,EAAO,KAChB,MAAOA,EAAO,MACd,QAASA,EAAO,OAAA,EAGZC,EAAiB4B,EAAW,WAClC,GACE5B,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACVF,EAAiB,QAAUG,EAAE,QACzB,GAAGF,EAAO,IAAI,IAAIE,EAAE,OAAO,GAC3BF,EAAO,KACXD,EAAiB,MAAQG,EAAE,MACvB,GAAGF,EAAO,KAAK,IAAIE,EAAE,KAAK,GAC1BF,EAAO,MACXD,EAAiB,QAAUG,EAAE,QACzB,GAAGF,EAAO,OAAO,IAAIE,EAAE,OAAO,GAC9BF,EAAO,OACb,CAEA,MAAM2F,EAAevD,EACjB,GAAGpC,EAAO,cAAc,IAAIoC,CAAS,GACrCpC,EAAO,eAEX,OACEI,EAAAA,IAACwF,EAAA,CACC,UAAWD,EACX,MAAAtD,EACA,gBAAgB,qEAChB,gBAAgB,qEAChB,WAAA7C,EACA,WAAAwC,EACA,UAAAZ,EACA,eAAAC,EACA,kBAAAE,EACA,kBAAAC,EACA,iBAAAE,EACA,MAAAqB,EACA,cAAAE,EACA,kBAAAL,EACA,MAAAM,EACA,SAAA5B,EACA,aAAA6B,EACA,GAAAK,EACA,SAAAqC,EACA,kBAAAC,EACA,oBAAAP,EACA,aAAa,OACb,cAAejG,IAAU,OAAYA,EAAQiH,EAC7C,oBAAqBpH,EACrB,gBAEEiB,EAAAA,IAAC0B,EAAAA,MAAA,CACC,IAAAlB,EACA,WAAYb,EACZ,SAAAuG,EACA,MAAAhH,EACA,aAAAiH,EACA,aAAc,CACZ,gBAAiBD,EAAW,OAAS,OACrC,aAAcpD,EAAQ,OAAS,MAAA,EAEhC,GAAIpD,CAAA,CAAA,CACP,CAAA,CAIR,CACF,EAEAyV,GAAU,YAAc,YC1IjB,MAAMC,GAAyCrW,GAC7CiB,EAAAA,IAAC,MAAA,CAAK,GAAGjB,EAAO,SAAA,aAAU,maCgCtBsW,GAAe5R,EAAM,WAChC,SACE,CACE,WAAArE,EAAa,GACb,UAAAkW,EACA,cAAAC,EAAgB,UAChB,SAAAhV,EACA,GAAGd,CAAA,EAELe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EAEpDO,EAAoD,CACxD,KAAMC,GAAO,KACb,SAAUA,GAAO,SACjB,YAAaA,GAAO,YACpB,WAAYA,GAAO,WACnB,UAAWA,GAAO,SAAA,EAGdC,EAAkBH,EACrB,WACH,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAGA,MAAMuE,EAAU8R,EACd5U,EAAAA,KAAAC,EAAAA,SAAA,CACG,SAAA,CAAAJ,GAAYP,EAAAA,IAAC,MAAA,CAAI,UAAWJ,GAAO,YAAc,SAAAW,EAAS,EAC3DP,EAAAA,IAAC,MAAA,CAAI,UAAWJ,GAAO,UAAY,SAAA0V,CAAA,CAAU,CAAA,CAAA,CAC/C,EAEA/U,EAGF,OACEP,EAAAA,IAACwV,EAAAA,aAAA,CACC,IAAAhV,EACA,WAAYb,EACZ,eAAc4V,EACb,GAAI7V,EAKJ,SAAA8D,CAAA,CAAA,CAGP,CACF,EAEA6R,GAAa,YAAc,eC3D3B,MAAMI,GAAgBhS,EAAM,WAC1B,SAAkB,CAAE,WAAArE,EAAa,GAAO,GAAGK,CAAA,EAAQe,EAAK,CACtD,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EAEpDO,EAAoD,CACxD,KAAMC,GAAO,IAAA,EAGTC,EAAkBH,EACrB,WACH,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAEA,OACEe,EAAAA,IAAC0V,EAAAA,SAAA,CACC,IAAAlV,EACA,WAAYb,EACX,GAAID,CAAA,CAAA,CAMX,CACF,EAEA+V,GAAc,YAAc,WAErB,MAAME,GAAWF,GACxBE,GAAS,KAAON,GC7DT,MAAMO,GAAQzV,EAAAA,WAA2C,SAC9D,CAAE,WAAAf,EAAa,GAAO,MAAAyW,EAAQ,EAAG,GAAGpW,CAAA,EACpCe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EACpDW,EAAiBL,EACpB,UAEGmV,EAAkB,+BAA+BgB,CAAK,GACtDf,EAAkB/U,EACpB,GAAG8U,CAAe,IAAI9U,CAAa,GACnC8U,EAEJ,OACE7U,EAAAA,IAAC8V,EAAAA,MAAA,CACC,IAAAtV,EACA,MAAAqV,EACA,UAAWf,EACV,GAAIpV,CAAA,CAAA,CAGX,CAAC,EACDkW,GAAM,YAAc,6UCTPG,GAAQtS,EAAM,WACzB,SACE,CACE,WAAArE,EAAa,GACb,QAAAI,EAAU,UACV,gBAAAoN,EAAkB,GAClB,GAAGnN,CAAA,EAELe,EACA,CACA,MAAMd,EAAiBP,EAAmBM,EAAML,CAAU,EAGpDO,EAAoD,CACxD,KAAMC,GAAO,KACb,KAAMA,GAAO,KACb,MAAOA,GAAO,MACd,YAAaA,GAAO,YACpB,YAAaA,GAAO,YACpB,KAAMA,GAAO,KACb,OAAQA,GAAO,MAAA,EAGXC,EAAkBH,EACrB,WACH,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAEA,OACEe,EAAAA,IAACgW,EAAAA,aAAA,CACC,IAAAxV,EACA,gBAAAoM,EACA,WAAY,GACZ,eAAcpN,EACd,WAAYG,EACZ,QAAS,GACR,GAAID,CAAA,CAAA,CAMX,CACF,EAEAqW,GAAM,YAAc,+GC5CdE,GAAc,SAAiB,CACnC,WAAA7W,EAAa,GACb,SAAA6L,EAAW,GACX,GAAGxL,CACL,EAAiB,CACf,MAAMC,EAAiBP,EAAmBM,EAAML,CAAU,EAGpDO,EAAoD,CACxD,QAASC,GAAO,QAChB,MAAOA,GAAO,KAAA,EAGVC,EAAkBH,EAA2C,WACnE,GACEG,GACA,OAAOA,GAAmB,UAC1B,CAAC,MAAM,QAAQA,CAAc,EAC7B,CACA,MAAMC,EAAID,EACV,OAAO,KAAKC,CAAC,EAAE,QAASb,GAAQ,CAC1BU,EAAiBV,CAAG,EACtBU,EAAiBV,CAAG,EAAI,GAAGU,EAAiBV,CAAG,CAAC,IAAIa,EAAEb,CAAG,CAAC,GAE1DU,EAAiBV,CAAG,EAAIa,EAAEb,CAAG,CAEjC,CAAC,CACH,CAKA,MAAMiM,EACFxL,EAA2C,WAE3B,GAIdyL,EAAazL,EAA2C,UAGxD0L,EAAoBH,GAAYE,EAEtC,OACEnL,EAAAA,IAACkW,EAAAA,QAAA,CACC,SAAS,MACT,UAAS,GACT,UAAAhL,EACA,UAAWE,EACX,WAAYzL,EACX,GAAID,CAAA,CAAA,CAGX,EACAuW,GAAY,YAAc,UAWnB,MAAME,GAAUF,GACvBE,GAAQ,SAAWD,EAAAA,QAAe,SAClCC,GAAQ,MAAQD,EAAAA,QAAe,MChHxB,MAAME,GAA6CrX,GACjDiB,EAAAA,IAAC,MAAA,CAAK,GAAGjB,EAAO,SAAA,eAAY"}
|
|
1
|
+
{"version":3,"file":"mantine-adapter.cjs","sources":["../src/utils/filterStylingProps.ts","../src/components/Accordion/Accordion.tsx","../src/components/Label/Label.tsx","../src/components/FormControlLayout/FormControlLayout.tsx","../src/components/AssistiveElement/AssistiveElement.tsx","../src/components/FormControlWrapper/FormControlWrapper.tsx","../../adapter-common/dist/adapter-common.js","../src/components/ReadOnlyField/ReadOnlyTextField.tsx","../src/components/ReadOnlyField/ReadOnlyField.tsx","../src/components/ReadOnlyField/WithReadOnlyWrapper.tsx","../src/components/AutoComplete/AutoComplete.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Loader/Loader.tsx","../src/components/Button/Button.tsx","../src/components/Card/Card.tsx","../src/components/Checkbox/CheckboxGroup.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Container/Container.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/FileInput/FileInput.tsx","../src/components/FileUpload/FileUpload.tsx","../src/components/Flex/Flex.tsx","../src/components/Group/Group.tsx","../src/components/HoverCard/HoverCard.tsx","../src/components/Link/Link.tsx","../src/components/Menu/Menu.tsx","../src/components/Modal/Modal.tsx","../src/components/NumberInput/NumberInput.tsx","../src/components/Pagination/Pagination.icons.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Panel/Panel.tsx","../src/components/Popover/Popover.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/Radio/Radio.tsx","../src/components/ReadOnlyField/ReadOnlySwitchField.tsx","../src/components/ReadOnlyField/ReadOnlyBooleanField.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/Slider/Slider.tsx","../src/components/Stack/Stack.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Switch/SwitchGroup.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/Table.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Text/Text.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextField/TextField.tsx","../src/components/TimePicker/TimePicker.tsx","../src/components/Timeline/TimelineItem.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Title/Title.tsx","../src/components/Toast/Toast.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/TransferList/TransferList.tsx"],"sourcesContent":["/**\n * filterStylingProps\n *\n * This utility acts as the central gatekeeper for strict design-system adherence across\n * all Recursica components mapped over Mantine.\n *\n * PHILOSOPHY:\n * Recursica components are designed to be explicitly sandboxed tokens. Allowing external\n * `className` or Mantine style system props (`bg`, `p`, etc.) breaks the design system by\n * allowing developers to leak arbitrary designs into components.\n *\n * By default (`overStyled=false`), this utility actively prevents developers from overriding\n * internal component styles (such as background, colors, typography, or internal classNames).\n * It safely *permits* external layout overrides (like `margin` / `m`) so that components can\n * easily be spaced alongside other DOM elements.\n *\n * If a developer passes `overStyled={true}`, this filter allows all styling properties to\n * flow through to the underlying Mantine component natively, at the developer's own risk.\n *\n * @param props - The raw component props passed down to the wrapper\n * @param overStyled - Boolean toggle to allow raw external styling. Defaults to false.\n * @returns Sanitized component props safe for internal styling merging\n */\n\nexport const BLOCKED_STYLING_KEYS = [\n \"className\",\n \"classNames\",\n \"style\",\n \"styles\",\n \"vars\", // Internal structure hooks\n \"p\",\n \"px\",\n \"py\",\n \"pt\",\n \"pb\",\n \"pl\",\n \"pr\", // Padding\n \"bg\",\n \"c\",\n \"opacity\", // Color\n \"ff\",\n \"fz\",\n \"fw\",\n \"lts\",\n \"ta\",\n \"lh\",\n \"fs\",\n \"tt\",\n \"td\", // Typography\n \"bd\",\n \"bdw\",\n \"bds\",\n \"bdc\",\n \"bdr\", // Borders\n \"shadow\", // Effects\n \"w\",\n \"miw\",\n \"maw\",\n \"h\",\n \"mih\",\n \"mah\", // Dimensions\n] as const;\nexport {\n type RecursicaSpacing,\n type RecursicaSize,\n type RecursicaOverStyled,\n type BlockedStylingKeys,\n type ForbiddenStyles,\n} from \"@recursica/adapter-common\";\n\nconst LAYOUT_PROPS = new Set([\n \"m\",\n \"my\",\n \"mx\",\n \"mt\",\n \"mb\",\n \"ml\",\n \"mr\",\n \"gap\",\n \"rowGap\",\n \"columnGap\",\n \"top\",\n \"left\",\n \"bottom\",\n \"right\",\n]);\n\nexport const SPACING_MAP: Record<string, string> = {\n \"rec-none\": \"var(--recursica_brand_dimensions_general_none)\",\n \"rec-sm\": \"var(--recursica_brand_dimensions_general_sm)\",\n \"rec-default\": \"var(--recursica_brand_dimensions_general_default)\",\n \"rec-md\": \"var(--recursica_brand_dimensions_general_md)\",\n \"rec-lg\": \"var(--recursica_brand_dimensions_general_lg)\",\n \"rec-xl\": \"var(--recursica_brand_dimensions_general_xl)\",\n \"rec-2xl\": \"var(--recursica_brand_dimensions_general_2xl)\",\n};\n\nexport function mapLayoutProps<T extends Record<string, unknown>>(props: T): T {\n const mapped = { ...props };\n for (const [key, value] of Object.entries(mapped)) {\n if (\n typeof value === \"string\" &&\n value.startsWith(\"rec-\") &&\n LAYOUT_PROPS.has(key)\n ) {\n if (value in SPACING_MAP) {\n (mapped as Record<string, unknown>)[key] = SPACING_MAP[value];\n }\n }\n }\n return mapped;\n}\n\nexport function filterStylingProps<T extends Record<string, unknown>>(\n props: T,\n overStyled?: boolean,\n): Partial<T> {\n if (overStyled) {\n return props;\n }\n\n const sanitized = { ...props };\n\n for (const prop of BLOCKED_STYLING_KEYS) {\n if (prop in sanitized) {\n delete sanitized[prop];\n }\n }\n\n // Intercept Recursica spacing tokens for valid layout properties\n for (const [key, value] of Object.entries(sanitized)) {\n if (\n typeof value === \"string\" &&\n value.startsWith(\"rec-\") &&\n LAYOUT_PROPS.has(key)\n ) {\n if (value in SPACING_MAP) {\n (sanitized as Record<string, unknown>)[key] = SPACING_MAP[value];\n }\n }\n }\n\n return sanitized;\n}\n","import React, { forwardRef } from \"react\";\nimport {\n Accordion as MantineAccordion,\n type AccordionProps as MantineAccordionProps,\n type AccordionItemProps,\n type AccordionControlProps,\n type AccordionPanelProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Accordion.module.css\";\n\nimport {\n type RecursicaAccordionProps,\n type RecursicaAccordionItemProps,\n type RecursicaAccordionControlProps,\n} from \"@recursica/adapter-common\";\n\n// ==== ACCORDION CONTAINER ====\nexport type AccordionProps = RecursicaOverStyled<\n Omit<\n MantineAccordionProps,\n \"value\" | \"defaultValue\" | \"onChange\" | \"multiple\" | \"variant\"\n > &\n RecursicaAccordionProps\n>;\n\nconst AccordionBase = function Accordion({\n variant = \"unstyled\",\n overStyled = false,\n ...rest\n}: AccordionProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind all deep CSS module references natively into the global class mapping schema\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n item: styles.item,\n control: styles.control,\n label: styles.label,\n chevron: styles.chevron,\n panel: styles.panel,\n content: styles.content,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineAccordion\n variant={variant}\n className={classNameProp}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineAccordionProps)}\n />\n );\n};\nAccordionBase.displayName = \"Accordion\";\n\n// We need to omit and re-merge native props like in Badge\nexport type AccordionItemWrapperProps = RecursicaOverStyled<\n AccordionItemProps & RecursicaAccordionItemProps\n>;\n\nexport const AccordionItem = forwardRef<\n HTMLDivElement,\n AccordionItemWrapperProps\n>(function AccordionItem(\n { title, leftIcon, divider = true, children, overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const finalClass =\n [divider ? undefined : styles.noDivider, classNameProp]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // If the user utilizes the explicit 'title' prop from Recursica, we securely auto-construct the Mantine sub-hierarchy natively!\n // If not, we defer to raw composable children (meaning the integrator maps `<Accordion.Control>` manually).\n return (\n <MantineAccordion.Item\n ref={ref}\n className={finalClass}\n {...(sanitizedProps as unknown as AccordionItemProps)}\n >\n {title ? (\n <>\n <AccordionControl leftIcon={leftIcon}>{title}</AccordionControl>\n <AccordionPanel>{children}</AccordionPanel>\n </>\n ) : (\n children\n )}\n </MantineAccordion.Item>\n );\n});\nAccordionItem.displayName = \"AccordionItem\";\n\n// ==== ACCORDION CONTROL ====\nexport type AccordionControlWrapperProps = RecursicaOverStyled<\n AccordionControlProps & RecursicaAccordionControlProps\n>;\n\nexport const AccordionControl = forwardRef<\n HTMLButtonElement,\n AccordionControlWrapperProps\n>(function AccordionControl(\n { leftIcon, children, overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineAccordion.Control\n ref={ref}\n className={classNameProp}\n icon={\n leftIcon ? (\n <span className={styles.iconLeftWrapper} aria-hidden>\n {leftIcon}\n </span>\n ) : undefined\n }\n {...(sanitizedProps as unknown as AccordionControlProps)}\n >\n {children}\n </MantineAccordion.Control>\n );\n});\nAccordionControl.displayName = \"AccordionControl\";\n\n// ==== ACCORDION PANEL ====\nexport type AccordionPanelWrapperProps =\n RecursicaOverStyled<AccordionPanelProps>;\n\nexport const AccordionPanel = forwardRef<\n HTMLDivElement,\n AccordionPanelWrapperProps\n>(function AccordionPanel({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineAccordion.Panel\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as AccordionPanelProps)}\n />\n );\n});\nAccordionPanel.displayName = \"AccordionPanel\";\n\n// ==== DOT NOTATION EXPORT ====\ntype AccordionComponent = typeof AccordionBase & {\n Item: typeof AccordionItem;\n Control: typeof AccordionControl;\n Panel: typeof AccordionPanel;\n};\n\nexport const Accordion = AccordionBase as AccordionComponent;\nAccordion.Item = AccordionItem;\nAccordion.Control = AccordionControl;\nAccordion.Panel = AccordionPanel;\n","import React, { forwardRef } from \"react\";\nimport { Input, type InputLabelProps } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Label.module.css\";\n\nimport { type RecursicaLabelProps } from \"@recursica/adapter-common\";\n\nexport type LabelProps = RecursicaOverStyled<\n Omit<InputLabelProps, \"size\"> & RecursicaLabelProps\n>;\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(function Label(\n {\n labelSize = \"default\",\n labelAlignment,\n required = false,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n children,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const resolvedAlignment = labelAlignment || \"left\";\n\n let resolvedOptionalText: React.ReactNode | undefined;\n if (!required) {\n if (labelOptionalText === true) resolvedOptionalText = \"optional\";\n else if (labelOptionalText) resolvedOptionalText = labelOptionalText;\n }\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n label: styles.root,\n required: styles.required,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.label = o.label\n ? `${styles.root} ${o.label}`\n : styles.root;\n mergedClassNames.required = o.required\n ? `${styles.required} ${o.required}`\n : styles.required;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <Input.Label\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n data-size={labelSize}\n data-alignment={resolvedAlignment}\n required={required && !labelWithEditIcon}\n {...sanitizedProps}\n >\n <span className={styles.labelText}>{children}</span>\n {resolvedOptionalText && (\n <span className={styles.optionalText}>\n {typeof resolvedOptionalText === \"string\"\n ? `(${resolvedOptionalText})`\n : resolvedOptionalText}\n </span>\n )}\n {labelActionArea ? (\n <span className={styles.actionAreaWrapper}>{labelActionArea}</span>\n ) : labelWithEditIcon ? (\n <button\n type=\"button\"\n className={styles.editIconWrapper}\n data-replaces-asterisk={required ? \"true\" : undefined}\n onClick={onLabelEditClick}\n aria-label=\"Edit\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.5303 2.46967C11.8232 2.17678 12.2981 2.17678 12.591 2.46967L13.5303 3.40898C13.8232 3.70188 13.8232 4.17675 13.5303 4.46964L5.61288 12.3871C5.45268 12.5473 5.24434 12.6483 5.01809 12.6766L2.39534 13.0044C2.10091 13.0412 1.83856 12.7789 1.87538 12.4845L2.2032 9.86175C2.23147 9.63551 2.3325 9.42716 2.4927 9.26696L11.5303 2.46967Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : null}\n </Input.Label>\n );\n});\n\nLabel.displayName = \"Label\";\n","import React, { forwardRef } from \"react\";\nimport styles from \"./FormControlLayout.module.css\";\n\nimport { type RecursicaFormControlLayoutProps } from \"@recursica/adapter-common\";\n\nexport interface FormControlLayoutProps\n extends React.HTMLAttributes<HTMLDivElement>,\n RecursicaFormControlLayoutProps {}\n\n/**\n * A layout component used to correctly position form inputs alongside their labels.\n *\n * **When to use this:**\n * Typically, you should use `FormControlWrapper` instead, which uses this component\n * under the hood to handle layout automatically.\n *\n * However, this component is useful when you need to align standalone inputs\n * (like a `Switch` or `Checkbox` without a label) so they perfectly match the spacing\n * and alignment of your other form fields in a `side-by-side` layout.\n */\nexport const FormControlLayout = forwardRef<\n HTMLDivElement,\n FormControlLayoutProps\n>(function FormControlLayout(\n {\n formLayout = \"stacked\",\n labelSize = \"default\",\n controlMaxWidth,\n controlMinWidth,\n leftSection,\n children,\n className,\n style,\n ...rest\n },\n ref,\n) {\n const rootClass = className ? `${styles.root} ${className}` : styles.root;\n\n // We explicitly render leftSection even if null in side-by-side to preserve the empty grid column bounding constraints.\n // In stacked layouts, if there is no label, we omit the wrapper to avoid unnecessary padding.\n const hasLeftContent = leftSection !== undefined && leftSection !== null;\n const shouldRenderLeft = hasLeftContent || formLayout === \"side-by-side\";\n\n return (\n <div\n ref={ref}\n className={rootClass}\n data-form-layout={formLayout}\n style={\n {\n ...style,\n ...(controlMaxWidth\n ? { \"--form-control-max-width\": controlMaxWidth }\n : {}),\n ...(controlMinWidth\n ? { \"--form-control-min-width\": controlMinWidth }\n : {}),\n } as React.CSSProperties\n }\n {...rest}\n >\n {shouldRenderLeft && (\n <div className={styles.leftSection} data-size={labelSize}>\n {leftSection}\n </div>\n )}\n\n <div className={styles.rightSection}>{children}</div>\n </div>\n );\n});\n\nFormControlLayout.displayName = \"FormControlLayout\";\n","import React, { forwardRef } from \"react\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./AssistiveElement.module.css\";\n\nimport { type RecursicaAssistiveElementProps } from \"@recursica/adapter-common\";\n\nexport type AssistiveElementProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement> & RecursicaAssistiveElementProps\n>;\n\nconst InfoIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n);\n\nconst AlertIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n);\n\nexport const AssistiveElement = forwardRef<\n HTMLDivElement,\n AssistiveElementProps\n>(function AssistiveElement(\n {\n assistiveVariant = \"help\",\n assistiveWithIcon = true,\n children,\n className,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const rootClass = styles.root;\n const finalClass = className ? `${rootClass} ${className}` : rootClass;\n\n const IconComponent = assistiveVariant === \"error\" ? AlertIcon : InfoIcon;\n\n return (\n <div\n ref={ref}\n className={finalClass}\n data-variant={assistiveVariant}\n style={restRecord.style as React.CSSProperties}\n {...restRecord} // Spread standard HTML attributes (like id, aria-*, role) natively.\n >\n {assistiveWithIcon && (\n <span className={styles.iconWrapper}>\n <IconComponent />\n </span>\n )}\n <span className={styles.textWrapper}>{children}</span>\n </div>\n );\n});\n\nAssistiveElement.displayName = \"AssistiveElement\";\n","import React, { forwardRef, useId } from \"react\";\nimport { type InputWrapperProps } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { Label } from \"../Label/Label\";\nimport { FormControlLayout } from \"../FormControlLayout/FormControlLayout\";\nimport { AssistiveElement } from \"../AssistiveElement/AssistiveElement\";\nimport styles from \"./FormControlWrapper.module.css\";\n\nimport { type RecursicaFormControlWrapperProps } from \"@recursica/adapter-common\";\n\nexport type FormControlWrapperProps = RecursicaOverStyled<\n Omit<InputWrapperProps, \"labelProps\" | \"inputWrapperOrder\"> &\n RecursicaFormControlWrapperProps\n>;\n\nexport const FormControlWrapper = forwardRef<\n HTMLDivElement,\n FormControlWrapperProps\n>(function FormControlWrapper(\n {\n formLayout,\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n description,\n assistiveText,\n assistiveWithIcon = true,\n controlMaxWidth,\n controlMinWidth,\n error,\n required,\n withAsterisk,\n id: userProvidedId,\n children,\n className,\n overStyled = false,\n labelElement, // Extracted safely preventing bleeding into HTML domains\n ...rest\n },\n ref,\n) {\n // Generate a reliable ID to map the Label's HTML context down to the component array natively.\n const generatedId = useId();\n const id = userProvidedId || `recursica-fc-${generatedId}`;\n\n // Evaluate explicit assistive fallbacks ensuring assistiveText correctly prioritizes natively over underlying Mantine configurations!\n const resolvedAssistive = assistiveText || description;\n const assistiveId = resolvedAssistive ? `${id}-assistive` : undefined;\n const errorId = error ? `${id}-error` : undefined;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const classNameProp =\n className || (restRecord.className as string | undefined);\n const rootClass = styles.root;\n const finalClass = classNameProp\n ? `${rootClass} ${classNameProp}`\n : rootClass;\n\n // Clone ARIA identifiers directly back down into the nested children wrapper so screen-readers natively hook the external strings\n const content = React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<Record<string, unknown>>,\n {\n ...(resolvedAssistive &&\n !(children.props as Record<string, unknown>)[\"aria-describedby\"]\n ? { \"aria-describedby\": assistiveId }\n : {}),\n ...(error &&\n !(children.props as Record<string, unknown>)[\"aria-errormessage\"]\n ? { \"aria-errormessage\": errorId }\n : {}),\n },\n )\n : children;\n\n const labelNode = label ? (\n <Label\n id={id} // Directly binds ARIA references down\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n required={withAsterisk ?? required}\n // Manually propagate relevant structural logic if underlying groups dictate Label to act as generic wrapper\n {...(labelElement === \"div\" ? { as: \"div\" } : {})}\n >\n {label}\n </Label>\n ) : undefined;\n\n return (\n <FormControlLayout\n ref={ref}\n className={finalClass}\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n leftSection={labelNode}\n {...restRecord}\n >\n {/*\n The Core Input Wrapper & Controls\n Nakedly inject the actual field elements alongside natively bridged Assistive components mapped dynamically.\n */}\n <div className={styles.inputSection}>\n {content}\n\n {error && (\n <AssistiveElement\n id={errorId}\n assistiveVariant=\"error\"\n assistiveWithIcon={assistiveWithIcon}\n >\n {error}\n </AssistiveElement>\n )}\n\n {!error && resolvedAssistive && (\n <AssistiveElement\n id={assistiveId}\n assistiveVariant=\"help\"\n assistiveWithIcon={assistiveWithIcon}\n >\n {resolvedAssistive}\n </AssistiveElement>\n )}\n </div>\n </FormControlLayout>\n );\n});\n\nFormControlWrapper.displayName = \"FormControlWrapper\";\n","import { jsx as a, Fragment as p } from \"react/jsx-runtime\";\nimport T, { forwardRef as y, useEffect as A } from \"react\";\nconst C = \"_root_1qhn7_3\", E = \"_contents_1qhn7_18\", t = {\n root: C,\n contents: E\n}, R = y(function({ layer: o, contentsOnly: r, children: s, className: n, style: d, ...l }, m) {\n const u = r ? n ? `${t.root} ${t.contents} ${n}` : `${t.root} ${t.contents}` : n ? `${t.root} ${n}` : t.root;\n return /* @__PURE__ */ a(\n \"div\",\n {\n ref: m,\n className: u,\n style: d,\n ...r ? {} : { \"data-recursica-layer\": String(o) },\n ...l,\n children: s\n }\n );\n});\nR.displayName = \"Layer\";\nconst c = ({ emptyText: e = \"N/A\" }) => /* @__PURE__ */ a(T.Fragment, { children: e });\nc.displayName = \"EmptyValueRenderer\";\nc.check = (e) => e == null || e === \"\" || Array.isArray(e) && e.length === 0;\nconst i = \"data-recursica-theme\";\nfunction L({\n children: e,\n theme: o = \"light\"\n}) {\n return A(() => {\n const r = document.documentElement;\n return r.setAttribute(i, o), () => {\n r.removeAttribute(i);\n };\n }, [o]), /* @__PURE__ */ a(p, { children: e });\n}\nconst b = [\n \"Accordion\",\n \"AssistiveElement\",\n \"Autocomplete\",\n \"Avatar\",\n \"Badge\",\n \"Breadcrumb\",\n \"Button\",\n \"Card\",\n \"Checkbox\",\n \"Chip\",\n \"Container\",\n \"DatePicker\",\n \"Dropdown\",\n \"EmptyValueRenderer\",\n \"Flex\",\n \"FormControlLayout\",\n \"FormControlWrapper\",\n \"Group\",\n \"HoverCard\",\n \"Label\",\n \"Layer\",\n \"Link\",\n \"Loader\",\n \"Menu\",\n \"Modal\",\n \"NumberInput\",\n \"Pagination\",\n \"Panel\",\n \"Popover\",\n \"Radio\",\n \"ReadOnlyField\",\n \"SegmentedControl\",\n \"Slider\",\n \"Stack\",\n \"Stepper\",\n \"Switch\",\n \"Table\",\n \"Tabs\",\n \"Text\",\n \"TextArea\",\n \"TextField\",\n \"TimePicker\",\n \"Timeline\",\n \"Title\",\n \"Toast\",\n \"Tooltip\",\n \"TransferList\"\n];\nexport {\n c as EmptyValueRenderer,\n R as Layer,\n b as RECURSICA_COMPONENTS,\n L as RecursicaThemeProvider\n};\n//# sourceMappingURL=adapter-common.js.map\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\nimport { Box } from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nexport interface RecursicaReadOnlyTextFieldProps {\n /** The value strictly rendered as text output */\n value?: any;\n}\n\nexport type ReadOnlyTextFieldProps =\n RecursicaOverStyled<RecursicaReadOnlyTextFieldProps>;\n\nexport const ReadOnlyTextField: React.FC<ReadOnlyTextFieldProps> = ({\n value,\n overStyled = false,\n ...rest\n}) => {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <Box\n component=\"p\"\n className={\n classNameProp\n ? `${styles.textField} ${classNameProp}`\n : styles.textField\n }\n {...sanitizedProps}\n >\n {value != null\n ? React.isValidElement(value)\n ? value\n : Array.isArray(value)\n ? value.join(\", \")\n : String(value)\n : \"\"}\n </Box>\n );\n};\n\nReadOnlyTextField.displayName = \"ReadOnlyTextField\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n EmptyValueRenderer,\n type ReadOnlyControlProps,\n} from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type FormControlWrapperProps,\n FormControlWrapper,\n} from \"../FormControlWrapper/FormControlWrapper\";\nimport { ReadOnlyTextField } from \"./ReadOnlyTextField\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nimport { type RecursicaReadOnlyFieldProps as BaseRecursicaReadOnlyFieldProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaReadOnlyFieldProps\n extends Omit<\n FormControlWrapperProps,\n \"children\" | \"overStyled\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n Pick<ReadOnlyControlProps, \"emptyValueComponent\">,\n BaseRecursicaReadOnlyFieldProps {}\n\nexport type ReadOnlyFieldProps =\n RecursicaOverStyled<RecursicaReadOnlyFieldProps>;\n\n/**\n * A native generic form control wrapper exclusively responsible for displaying fixed data.\n * Internally maps to structural ReadOnly primitive blocks bridging standard `FormControlWrapper` layouts natively.\n */\nexport const ReadOnlyField = forwardRef<HTMLDivElement, ReadOnlyFieldProps>(\n function ReadOnlyField(\n {\n value,\n type = \"text\",\n emptyValueComponent,\n overStyled = false,\n className,\n style,\n ...rest\n },\n ref,\n ) {\n let content: React.ReactNode = null;\n\n // We still pass sanitized properties (like className/style/etc) strictly down.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const Renderer = emptyValueComponent || EmptyValueRenderer;\n const isValueEmpty = (Renderer as any).check\n ? (Renderer as any).check(value)\n : EmptyValueRenderer.check(value);\n\n const displayValue = isValueEmpty ? <Renderer value={value} /> : value;\n\n switch (type) {\n case \"boolean\":\n content = (\n <ReadOnlyTextField\n value={\n value === true ? \"True\" : value === false ? \"False\" : displayValue\n }\n overStyled={overStyled as true}\n />\n );\n break;\n case \"switch\":\n content = (\n <ReadOnlyTextField\n value={\n value === true ? \"On\" : value === false ? \"Off\" : displayValue\n }\n overStyled={overStyled as true}\n />\n );\n break;\n case \"text\":\n default:\n content = (\n <ReadOnlyTextField\n value={displayValue}\n overStyled={overStyled as true}\n />\n );\n break;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <FormControlWrapper\n ref={ref}\n overStyled={overStyled as true}\n className={wrapperClass}\n style={style}\n {...(sanitizedProps as any)}\n >\n {content}\n </FormControlWrapper>\n );\n },\n);\n\nReadOnlyField.displayName = \"ReadOnlyField\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport { type ReadOnlyFieldType } from \"@recursica/adapter-common\";\nimport {\n FormControlWrapper,\n type FormControlWrapperProps,\n} from \"../FormControlWrapper/FormControlWrapper\";\nimport { ReadOnlyField } from \"./ReadOnlyField\";\n\nexport interface WithReadOnlyWrapperProps\n extends Omit<FormControlWrapperProps, \"children\" | \"overStyled\"> {\n /** Injects whether the field defaults to reading mode natively */\n readOnly?: boolean;\n /** Explicit React component directly overtaking the baseline text renderer when read-only mode is active */\n readOnlyComponent?: React.ElementType<any>;\n /** Custom renderer explicitly responsible for formatting missing/empty value mappings (overriding default 'N/A') */\n emptyValueComponent?: React.ElementType<{ value?: any }>;\n /** The full native props dictionary securely forwarded into the custom readOnlyComponent if active */\n readOnlyNativeProps?: any;\n /** Instructs the underlying generic ReadOnlyField which raw visual structure to bridge automatically */\n readOnlyType?: ReadOnlyFieldType;\n /** The isolated raw data value intercepted explicitly into the ReadOnly formatters */\n readOnlyValue?: any;\n /** Safely enables deep Mantine overrides transparently bypassing block filters */\n overStyled?: boolean;\n /** The nested active node dynamically exposed exclusively when read-only bounds are disabled */\n activeComponent: React.ReactNode;\n}\n\n/**\n * Universal execution barrier trapping readOnly states globally.\n * Natively delegates active logic down avoiding duplicative internal component bindings dynamically.\n */\nexport const WithReadOnlyWrapper = forwardRef<\n HTMLDivElement,\n WithReadOnlyWrapperProps\n>(function WithReadOnlyWrapper(\n {\n readOnly,\n readOnlyComponent,\n readOnlyType = \"text\",\n readOnlyValue,\n readOnlyNativeProps,\n emptyValueComponent,\n activeComponent,\n overStyled,\n onLabelEditClick,\n ...wrapperProps\n },\n ref,\n) {\n if (readOnly) {\n if (readOnlyComponent) {\n const ReadOnlyComponent = readOnlyComponent;\n return (\n <FormControlWrapper\n ref={ref}\n {...wrapperProps}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n >\n <ReadOnlyComponent {...readOnlyNativeProps} />\n </FormControlWrapper>\n );\n }\n\n return (\n <ReadOnlyField\n ref={ref}\n type={readOnlyType}\n value={readOnlyValue}\n emptyValueComponent={emptyValueComponent}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n {...wrapperProps}\n />\n );\n }\n\n // Active Standard Execution natively forwarding bound children implicitly\n return (\n <FormControlWrapper\n ref={ref}\n {...wrapperProps}\n onLabelEditClick={onLabelEditClick}\n overStyled={overStyled as true}\n >\n {activeComponent}\n </FormControlWrapper>\n );\n});\n\nWithReadOnlyWrapper.displayName = \"WithReadOnlyWrapper\";\n","import React, { forwardRef } from \"react\";\nimport {\n Autocomplete as MantineAutocomplete,\n type AutocompleteProps as MantineAutocompleteProps,\n type InputWrapperProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./AutoComplete.module.css\";\n\nimport { type RecursicaAutocompleteProps as BaseRecursicaAutocompleteProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaAutoCompleteProps\n extends Omit<\n MantineAutocompleteProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\"\n >,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaAutocompleteProps {}\n\nexport type AutoCompleteProps = RecursicaOverStyled<RecursicaAutoCompleteProps>;\n\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(\n function AutoComplete(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n option: styles.option,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.section = o.section\n ? `${styles.section} ${o.section}`\n : styles.section;\n mergedClassNames.dropdown = o.dropdown\n ? `${styles.dropdown} ${o.dropdown}`\n : styles.dropdown;\n mergedClassNames.option = o.option\n ? `${styles.option} ${o.option}`\n : styles.option;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_autocomplete_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_autocomplete_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineAutocomplete\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as MantineAutocompleteProps)}\n />\n }\n />\n );\n },\n);\n\nAutoComplete.displayName = \"AutoComplete\";\n","import React, { forwardRef } from \"react\";\nimport {\n Avatar as MantineAvatar,\n type AvatarProps as MantineAvatarProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Avatar.module.css\";\n\nimport { type RecursicaAvatarProps } from \"@recursica/adapter-common\";\n\nexport type AvatarProps = RecursicaOverStyled<\n Omit<MantineAvatarProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaAvatarProps\n>;\n\nconst _Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n size = \"default\",\n variant = \"solid\",\n icon,\n children,\n src,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const mapVariant = {\n solid: \"filled\",\n outline: \"outline\",\n ghost: \"transparent\",\n } as const;\n\n const mapSize = {\n default: \"md\",\n small: \"sm\",\n large: \"lg\",\n } as const;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Determine semantic style based on provided props\n let computedStyle = \"text\";\n if (src) {\n computedStyle = \"image\";\n } else if (icon) {\n computedStyle = \"icon\";\n }\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n image: styles.image,\n placeholder: styles.placeholder,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.image = o.image\n ? `${styles.image} ${o.image}`\n : styles.image;\n mergedClassNames.placeholder = o.placeholder\n ? `${styles.placeholder} ${o.placeholder}`\n : styles.placeholder;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineAvatar\n ref={ref}\n className={classNameProp}\n classNames={mergedClassNames}\n variant={mapVariant[variant]}\n size={mapSize[size]}\n src={src}\n data-variant={variant}\n data-size={size}\n data-style={computedStyle}\n {...sanitizedProps}\n >\n {icon != null ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : children != null ? (\n <span className={styles.textWrapper}>{children}</span>\n ) : undefined}\n </MantineAvatar>\n );\n});\n_Avatar.displayName = \"Avatar\";\n\n/**\n * Recursica Avatar component wrapping Mantine's Avatar.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n */\nexport const Avatar = createPolymorphicComponent<\"div\", AvatarProps>(_Avatar);\n","import { forwardRef } from \"react\";\nimport {\n Badge as MantineBadge,\n type BadgeProps as MantineBadgeProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Badge.module.css\";\n\nimport { type RecursicaBadgeProps } from \"@recursica/adapter-common\";\n\nexport type BadgeProps = RecursicaOverStyled<\n Omit<MantineBadgeProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaBadgeProps\n>;\n\nconst _Badge = forwardRef<HTMLDivElement, BadgeProps>(function Badge(\n { variant = \"primary-color\", overStyled = false, ...rest },\n ref,\n) {\n // Strip all visual override injections unless developer has specifically opted into overStyling.\n // External layout props like margins are safely preserved.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n section: styles.section,\n label: styles.label,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.section = o.section ?? styles.section;\n mergedClassNames.label = o.label ?? styles.label;\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineBadge\n ref={ref}\n variant=\"filled\" // We manage visual style purely through our CSS variables mapping\n data-variant={variant}\n {...sanitizedProps}\n className={finalClass}\n classNames={mergedClassNames}\n />\n );\n});\n_Badge.displayName = \"Badge\";\n\n/**\n * Recursica Badge component wrapping Mantine's Badge.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n */\nexport const Badge = createPolymorphicComponent<\"div\", BadgeProps>(_Badge);\n","import { forwardRef } from \"react\";\nimport {\n Breadcrumbs as MantineBreadcrumbs,\n type BreadcrumbsProps as MantineBreadcrumbsProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Breadcrumb.module.css\";\n\n// Currently there are no Recursica prop additions specific to Breadcrumbs (like size or variant)\n// according to recursica_ui-kit.json\nimport { type RecursicaBreadcrumbProps } from \"@recursica/adapter-common\";\n\nexport type BreadcrumbProps = RecursicaOverStyled<\n Omit<MantineBreadcrumbsProps, \"variant\" | \"size\"> & RecursicaBreadcrumbProps\n>;\n\nexport const Breadcrumb = forwardRef<HTMLDivElement, BreadcrumbProps>(\n function Breadcrumb({ overStyled = false, separator = \">\", ...rest }, ref) {\n const sanitizedProps = filterStylingProps(\n { separator, ...rest },\n overStyled,\n );\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n separator: styles.separator,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>)\n .classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.separator = o.separator\n ? `${styles.separator} ${o.separator}`\n : styles.separator;\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineBreadcrumbs\n ref={ref}\n {...(sanitizedProps as unknown as MantineBreadcrumbsProps)}\n className={finalClass}\n classNames={mergedClassNames}\n />\n );\n },\n);\n\nBreadcrumb.displayName = \"Breadcrumb\";\n","import { forwardRef } from \"react\";\nimport {\n Loader as MantineLoader,\n type LoaderProps as MantineLoaderProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Loader.module.css\";\n\nimport { type RecursicaLoaderProps } from \"@recursica/adapter-common\";\n\nexport type LoaderProps = RecursicaOverStyled<\n Omit<MantineLoaderProps, \"variant\" | \"size\" | \"type\"> & RecursicaLoaderProps\n>;\n\nexport const Loader = forwardRef<HTMLSpanElement, LoaderProps>(function Loader(\n { variant = \"oval\", size = \"default\", overStyled = false, ...rest },\n ref,\n) {\n const mapSize = {\n sm: \"small\",\n md: \"default\",\n lg: \"large\",\n small: \"small\",\n default: \"default\",\n large: \"large\",\n } as const;\n\n const resolvedSize = mapSize[size] || \"default\";\n\n // Strip all visual override injections unless developer has specifically opted into overStyling.\n // External layout props like margins are safely preserved.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineLoader\n ref={ref}\n type={variant}\n data-variant={variant}\n data-size={resolvedSize}\n {...sanitizedProps}\n className={finalClass}\n classNames={mergedClassNames}\n />\n );\n});\n\nLoader.displayName = \"Loader\";\n","import React, { forwardRef } from \"react\";\nimport { Loader } from \"../Loader/Loader\";\nimport {\n Button as MantineButton,\n type ButtonProps as MantineButtonProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Button.module.css\";\n\nimport { type RecursicaButtonProps } from \"@recursica/adapter-common\";\n\nexport type ButtonProps = RecursicaOverStyled<\n Omit<MantineButtonProps, \"variant\" | \"size\" | \"leftSection\" | \"fullWidth\"> &\n RecursicaButtonProps\n>;\n\nfunction hasVisibleChildren(children: React.ReactNode): boolean {\n if (children == null || children === \"\") return false;\n if (typeof children === \"string\") return children.trim() !== \"\";\n return true;\n}\n\nconst _Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"solid\",\n size = \"default\",\n icon,\n children,\n overStyled = false,\n loaderVariant = \"oval\",\n loaderSize,\n useRecursicaLoader = true,\n ...rest\n },\n ref,\n) {\n const mapVariant = {\n solid: \"filled\",\n outline: \"outline\",\n text: \"subtle\",\n } as const;\n\n const mapSize = {\n default: \"md\",\n small: \"sm\",\n } as const;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Explicitly delete blocked semantic expansion dimension props\n delete restRecord[\"fullWidth\"];\n\n const hasLeftSection = !!icon || !!restRecord[\"leftSection\"];\n const hasRightSection = !!restRecord[\"rightSection\"];\n const hasVisibleText = hasVisibleChildren(children);\n const isIconOnly = (hasLeftSection || hasRightSection) && !hasVisibleText;\n\n let contentType = \"label\";\n if (isIconOnly) {\n contentType = \"icon-only\";\n } else if (hasLeftSection || hasRightSection) {\n contentType = \"icon-label\";\n }\n\n if (\n typeof process !== \"undefined\" &&\n process.env.NODE_ENV !== \"production\" &&\n isIconOnly &&\n !restRecord[\"aria-label\"]\n ) {\n console.warn(\n '[Recursica Button] Icon-only buttons must provide an accessible name. Pass aria-label (e.g. aria-label=\"Submit\").',\n );\n }\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n section: styles.section,\n label: styles.label,\n loader: styles.loader,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.section = o.section ?? styles.section;\n mergedClassNames.label = o.label ?? styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n const userLoaderProps = restRecord.loaderProps as\n | Record<string, unknown>\n | undefined;\n\n const resolvedLoaderSize =\n loaderSize ?? (size === \"small\" ? \"small\" : \"default\");\n\n let mergedLoaderProps = userLoaderProps;\n if (useRecursicaLoader) {\n mergedLoaderProps = {\n children: <Loader variant={loaderVariant} size={resolvedLoaderSize} />,\n ...userLoaderProps,\n };\n }\n\n return (\n <MantineButton\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n variant={mapVariant[variant]}\n size={mapSize[size]}\n loaderProps={mergedLoaderProps}\n leftSection={\n icon != null ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : undefined\n }\n data-variant={variant}\n data-size={size}\n data-content={contentType}\n {...sanitizedProps}\n disabled={!!restRecord.disabled || !!restRecord.loading}\n >\n <span className={styles.labelText}>{children}</span>\n </MantineButton>\n );\n});\n_Button.displayName = \"Button\";\n\n/**\n * Recursica Button component wrapping Mantine's Button.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * This is particularly useful when you need a button that behaves as a hyperlink (rendering an `<a>` tag)\n * or integrates with a routing library (e.g., `react-router-dom` or Next.js), while preserving full visual styling.\n *\n * @example\n * ```tsx\n * // Renders as an <a> tag natively\n * <Button component=\"a\" href=\"/dashboard\" target=\"_blank\">Navigate</Button>\n *\n * // Renders using a custom router link\n * <Button renderRoot={(props) => <Link to=\"/home\" {...props} />}>Home</Button>\n * ```\n */\nexport const Button = createPolymorphicComponent<\"button\", ButtonProps>(\n _Button,\n);\n","import { forwardRef } from \"react\";\nimport {\n Card as MantineCard,\n type CardProps as MantineCardProps,\n type CardSectionProps as MantineCardSectionProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Card.module.css\";\n\nimport {\n type RecursicaCardProps,\n type RecursicaCardSectionProps,\n} from \"@recursica/adapter-common\";\n\n// ==== CARD CONTAINER ====\nexport type CardProps = RecursicaOverStyled<\n MantineCardProps & RecursicaCardProps\n>;\n\n/**\n * The root Card elevation box. It establishes the global background color, border radius, nested component gap, and outer shadow governed by the current `Layer` context.\n */\nconst CardBase = forwardRef<HTMLDivElement, CardProps>(function Card(\n { overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard\n ref={ref}\n className={classNameProp}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineCardProps)}\n />\n );\n});\nCardBase.displayName = \"Card\";\n\nexport type CardSectionProps = RecursicaOverStyled<\n MantineCardSectionProps & RecursicaCardSectionProps\n>;\n\n/**\n * A generalized edge-to-edge structural wrapper native to Mantine. Strips typical boundary padding via negative margins to allow content (like maps or header images) to touch the border seamlessly.\n */\nexport const CardSection = forwardRef<HTMLDivElement, CardSectionProps>(\n function CardSection({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n className={\n classNameProp ? `${styles.section} ${classNameProp}` : styles.section\n }\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n />\n );\n },\n);\nCardSection.displayName = \"CardSection\";\n\n// ==== EXPLICIT CARD.HEADER ====\nexport type CardHeaderProps = RecursicaOverStyled<RecursicaCardSectionProps>;\n\n/**\n * Replaces standard generic Mantine `<Card.Section>` wrappers by directly injecting the strict Recursica design tokens for header sizing, background drops, and intrinsic padding limits.\n */\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n function CardHeader({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n className={\n classNameProp ? `${styles.header} ${classNameProp}` : styles.header\n }\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n />\n );\n },\n);\nCardHeader.displayName = \"CardHeader\";\n\n// ==== EXPLICIT CARD.FOOTER ====\nexport type CardFooterProps = RecursicaOverStyled<RecursicaCardSectionProps>;\n\n/**\n * Counterpart to `Card.Header`, applying specific footer elevation margins, sizes, and padding natively.\n */\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n function CardFooter({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineCard.Section\n ref={ref}\n className={\n classNameProp ? `${styles.footer} ${classNameProp}` : styles.footer\n }\n {...(sanitizedProps as unknown as MantineCardSectionProps)}\n />\n );\n },\n);\nCardFooter.displayName = \"CardFooter\";\n\n// ==== EXPLICIT CARD.CONTENT ====\nexport type CardContentProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Internal container that safely binds typography and structural flex gaps driven by the active UI kit tokens natively, preserving correct padding blocks compared to rigid `Card.Section` edges.\n */\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(\n function CardContent({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <div\n ref={ref}\n className={\n classNameProp ? `${styles.content} ${classNameProp}` : styles.content\n }\n {...sanitizedProps}\n />\n );\n },\n);\nCardContent.displayName = \"CardContent\";\n\n// ==== DOT NOTATION EXPORT ====\n\n/**\n * Recursica Card component wrapping Mantine's Card (Paper).\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * Use dot-notation sub-components for structured card layouts.\n */\nconst PolymorphicCard = createPolymorphicComponent<\n \"div\",\n CardProps,\n {\n Section: typeof CardSection;\n Header: typeof CardHeader;\n Footer: typeof CardFooter;\n Content: typeof CardContent;\n }\n>(CardBase);\n\n// Attach static components for dot-notation access\nconst _card = PolymorphicCard as unknown as Record<string, unknown>;\n_card.Section = CardSection;\n_card.Header = CardHeader;\n_card.Footer = CardFooter;\n_card.Content = CardContent;\n\nexport const Card = PolymorphicCard as typeof PolymorphicCard & {\n Section: typeof CardSection;\n Header: typeof CardHeader;\n Footer: typeof CardFooter;\n Content: typeof CardContent;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Checkbox as MantineCheckbox,\n type CheckboxGroupProps as MantineCheckboxGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Checkbox.module.css\";\n\nimport { type RecursicaCheckboxGroupProps as BaseRecursicaCheckboxGroupProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaCheckboxGroupProps\n extends Omit<MantineCheckboxGroupProps, \"size\" | \"labelProps\">,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaCheckboxGroupProps {}\n\nexport type CheckboxGroupProps =\n RecursicaOverStyled<RecursicaCheckboxGroupProps>;\n\nexport const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n function CheckboxGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing the variables\n delete restRecord[\"size\"];\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_checkbox-item_properties_max-width)\"\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive checkboxes nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n <MantineCheckbox.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineCheckboxGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value}\n defaultValue={defaultValue}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineCheckbox.Group>\n }\n />\n );\n },\n);\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n","import { forwardRef } from \"react\";\nimport {\n Checkbox as MantineCheckbox,\n type CheckboxProps as MantineCheckboxProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport { CheckboxGroup } from \"./CheckboxGroup\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type RequireAccessibleLabel,\n type RecursicaCheckboxProps,\n} from \"@recursica/adapter-common\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\n\nimport styles from \"./Checkbox.module.css\";\n\nexport type CheckboxWrapperProps = Omit<\n MantineCheckboxProps,\n \"size\" | \"color\" | \"radius\" | \"iconColor\" | \"variant\"\n> &\n RecursicaCheckboxProps &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >;\n\nexport type RecursicaCheckboxPropsAlias =\n RequireAccessibleLabel<CheckboxWrapperProps>;\n\nexport type CheckboxProps = RecursicaOverStyled<RecursicaCheckboxPropsAlias>;\n\ntype CheckboxComponent = React.ForwardRefExoticComponent<\n CheckboxProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof CheckboxGroup;\n};\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n // Checkbox doesn't use Label onLabelEditClick natively since it isn't mapped inside FormControlWrapper intrinsically.\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Actively delete dimension bindings that bypass the abstraction\n delete restRecord[\"size\"];\n delete restRecord[\"color\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"iconColor\"];\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n body: styles.body,\n inner: styles.inner,\n input: styles.input,\n icon: styles.icon,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.body = o.body ? `${styles.body} ${o.body}` : styles.body;\n mergedClassNames.inner = o.inner\n ? `${styles.inner} ${o.inner}`\n : styles.inner;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.icon = o.icon ? `${styles.icon} ${o.icon}` : styles.icon;\n mergedClassNames.labelWrapper = o.labelWrapper\n ? `${styles.labelWrapper} ${o.labelWrapper}`\n : styles.labelWrapper;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Checkbox.module.css\n const checkboxNode = (\n <MantineCheckbox\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n disabled={readOnly || disabled}\n {...(sanitizedProps as unknown as MantineCheckboxProps)}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {checkboxNode}\n </FormControlLayout>\n );\n }\n\n return checkboxNode;\n },\n) as CheckboxComponent;\n\nCheckbox.displayName = \"Checkbox\";\nCheckbox.Group = CheckboxGroup;\n","import React, { forwardRef } from \"react\";\nimport {\n Chip as MantineChip,\n type ChipProps as MantineChipProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Chip.module.css\";\nimport { type RecursicaChipProps } from \"@recursica/adapter-common\";\n\nexport type ChipProps = RecursicaOverStyled<\n Omit<MantineChipProps, \"variant\" | \"size\" | \"color\" | \"radius\"> &\n RecursicaChipProps\n>;\n\nfunction CloseIcon(props: React.ComponentPropsWithoutRef<\"svg\">) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n );\n}\n\nexport const Chip = forwardRef<HTMLInputElement, ChipProps>(function Chip(\n {\n error = false,\n icon,\n onRemove,\n removeLabel = \"Remove\",\n children,\n overStyled = false,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n label: styles.label,\n input: styles.input,\n iconWrapper: styles.mantineIconWrapper,\n checkIcon: styles.checkIcon,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n // Determine state\n const dataError = error ? \"\" : undefined;\n const isIconOnly = !children && (!!icon || !!onRemove);\n const isInteractive =\n restRecord.checked !== undefined ||\n restRecord.defaultChecked !== undefined ||\n onRemove !== undefined ||\n restRecord.onClick !== undefined;\n\n return (\n <MantineChip\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n wrapperProps={dataError !== undefined ? { \"data-error\": \"\" } : undefined}\n {...(isIconOnly ? { \"data-icon-only\": \"\" } : {})}\n {...(!isInteractive ? { tabIndex: -1, \"aria-hidden\": true } : {})}\n {...sanitizedProps}\n >\n <span className={styles.innerWrapper}>\n {icon && (\n <span className={styles.leadingIcon} aria-hidden>\n {icon}\n </span>\n )}\n\n <span className={styles.children}>{children}</span>\n\n {onRemove && (\n <span\n role=\"button\"\n className={styles.removeIcon}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onRemove(e);\n }}\n aria-label={removeLabel}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n e.stopPropagation();\n onRemove(\n e as unknown as React.MouseEvent<HTMLSpanElement, MouseEvent>,\n );\n }\n }}\n tabIndex={0}\n >\n <CloseIcon />\n </span>\n )}\n </span>\n </MantineChip>\n );\n});\n\nChip.displayName = \"Chip\";\n","import { forwardRef } from \"react\";\nimport {\n Container as MantineContainer,\n type ContainerProps as MantineContainerProps,\n} from \"@mantine/core\";\nimport styles from \"./Container.module.css\";\n\nimport { type RecursicaContainerProps } from \"@recursica/adapter-common\";\n\n/**\n * Container layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type ContainerProps = Omit<MantineContainerProps, \"size\"> &\n RecursicaContainerProps;\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ children, size, ...rest }, ref) {\n const mapSize: Record<string, string> = {\n \"rec-sm\": \"sm\",\n \"rec-default\": \"md\",\n \"rec-md\": \"md\",\n \"rec-lg\": \"lg\",\n \"rec-xl\": \"xl\",\n \"rec-2xl\": \"xl\",\n };\n\n const resolvedSize =\n typeof size === \"string\" && mapSize[size] ? mapSize[size] : size;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineContainer\n ref={ref}\n size={resolvedSize}\n className={finalClass}\n classNames={mergedClassNames}\n {...rest}\n >\n {children}\n </MantineContainer>\n );\n },\n);\n\nContainer.displayName = \"Container\";\n","import React, { forwardRef } from \"react\";\nimport { DatePickerInput, type DatePickerInputProps } from \"@mantine/dates\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./DatePicker.module.css\";\n\nimport { type RecursicaDatePickerProps as BaseRecursicaDatePickerProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaDatePickerProps\n extends Omit<\n DatePickerInputProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"label\"\n | \"error\"\n | \"required\"\n | \"withAsterisk\"\n | \"id\"\n | \"description\"\n >,\n Pick<\n DatePickerInputProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaDatePickerProps {}\n\nexport type DatePickerProps = RecursicaOverStyled<RecursicaDatePickerProps>;\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n function DatePicker(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"description\"]; // Managed by FormControlWrapper via assistiveText\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n day: styles.day,\n calendarHeader: styles.calendarHeader,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.section = o.section\n ? `${styles.section} ${o.section}`\n : styles.section;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth={undefined}\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={\n value !== undefined\n ? String(value)\n : defaultValue\n ? String(defaultValue)\n : undefined\n }\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <DatePickerInput\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n // @ts-expect-error Mantine 8 DatePickerInput types are overly complex for unified wrappers\n value={value}\n // @ts-expect-error Mantine 8 DatePickerInput types are overly complex for unified wrappers\n defaultValue={defaultValue}\n label={undefined} // Disable Mantine's native label\n description={undefined} // Disable Mantine's native description\n error={undefined} // Disable Mantine's native error text (handled by wrapper)\n withAsterisk={false} // Handled by wrapper\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as DatePickerInputProps)}\n />\n }\n />\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n","import React, { forwardRef } from \"react\";\nimport {\n Select as MantineSelect,\n type SelectProps as MantineSelectProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Dropdown.module.css\";\n\nimport { type RecursicaDropdownProps as BaseRecursicaDropdownProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaDropdownProps\n extends Omit<\n MantineSelectProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\"\n >,\n Pick<\n RecursicaFormControlWrapperProps,\n | \"assistiveText\"\n | \"assistiveWithIcon\"\n | \"formLayout\"\n | \"labelSize\"\n | \"labelAlignment\"\n | \"labelOptionalText\"\n | \"labelWithEditIcon\"\n | \"onLabelEditClick\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaDropdownProps {}\n\nexport type DropdownProps = RecursicaOverStyled<RecursicaDropdownProps>;\n\nexport const Dropdown = forwardRef<HTMLInputElement, DropdownProps>(\n function Dropdown(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n containerWidth,\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n data,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n dropdown: styles.dropdown,\n option: styles.option,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.section = o.section\n ? `${styles.section} ${o.section}`\n : styles.section;\n mergedClassNames.dropdown = o.dropdown\n ? `${styles.dropdown} ${o.dropdown}`\n : styles.dropdown;\n mergedClassNames.option = o.option\n ? `${styles.option} ${o.option}`\n : styles.option;\n }\n\n const injectedStyles = {\n ...((style as React.CSSProperties) || {}),\n width: containerWidth || \"100%\",\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={injectedStyles}\n controlMaxWidth=\"var(--recursica_ui-kit_components_dropdown_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_dropdown_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={\n value !== undefined\n ? String(value)\n : defaultValue\n ? String(defaultValue)\n : undefined\n }\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Select execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineSelect\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n data={data || []}\n label={undefined}\n description={undefined}\n error={undefined}\n required={undefined}\n withAsterisk={undefined}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as MantineSelectProps)}\n />\n }\n />\n );\n },\n);\n\nDropdown.displayName = \"Dropdown\";\n","import React from \"react\";\n\nexport type FileInputProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const FileInput: React.FC<FileInputProps> = (props) => {\n return <div {...props}>FileInput</div>;\n};\n","import React from \"react\";\n\nexport type FileUploadProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const FileUpload: React.FC<FileUploadProps> = (props) => {\n return <div {...props}>FileUpload</div>;\n};\n","import { forwardRef } from \"react\";\nimport {\n Flex as MantineFlex,\n type FlexProps as MantineFlexProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport { mapLayoutProps } from \"../../utils/filterStylingProps\";\nimport styles from \"./Flex.module.css\";\n\nimport { type RecursicaFlexProps } from \"@recursica/adapter-common\";\n\n/**\n * Flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type FlexProps = MantineFlexProps & RecursicaFlexProps;\n\nconst _Flex = forwardRef<HTMLDivElement, FlexProps>(function Flex(\n { children, gap = \"rec-default\", rowGap, columnGap, ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineFlex\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, rowGap, columnGap, ...rest } as Record<\n string,\n unknown\n >)}\n >\n {children}\n </MantineFlex>\n );\n});\n_Flex.displayName = \"Flex\";\n\n/**\n * Recursica Flex layout wrapper.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * @example\n * ```tsx\n * <Flex component=\"nav\">...</Flex>\n * <Flex component=\"section\">...</Flex>\n * ```\n */\nexport const Flex = createPolymorphicComponent<\"div\", FlexProps>(_Flex);\n","import { forwardRef } from \"react\";\nimport {\n Group as MantineGroup,\n type GroupProps as MantineGroupProps,\n} from \"@mantine/core\";\nimport { mapLayoutProps } from \"../../utils/filterStylingProps\";\nimport styles from \"./Group.module.css\";\n\nimport { type RecursicaGroupProps } from \"@recursica/adapter-common\";\n\n/**\n * Group flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type GroupProps = MantineGroupProps & RecursicaGroupProps;\n\nexport const Group = forwardRef<HTMLDivElement, GroupProps>(function Group(\n { children, gap = \"rec-default\", ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineGroup\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, ...rest } as Record<string, unknown>)}\n >\n {children}\n </MantineGroup>\n );\n});\n\nGroup.displayName = \"Group\";\n","import {\n HoverCard as MantineHoverCard,\n type HoverCardProps as MantineHoverCardProps,\n type HoverCardTargetProps as MantineHoverCardTargetProps,\n type HoverCardDropdownProps as MantineHoverCardDropdownProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./HoverCard.module.css\";\n\n// ============================================================\n// HOVERCARD ROOT\n// ============================================================\n\n/**\n * Recursica-specific props for HoverCard.\n */\nimport { type RecursicaHoverCardProps } from \"@recursica/adapter-common\";\n\n/**\n * Recursica HoverCard component wrapping Mantine's composable HoverCard.\n *\n * Displays a dropdown panel when the user hovers over a target element.\n * Uses the composable dot-notation pattern:\n * ```tsx\n * <HoverCard withBeak>\n * <HoverCard.Target>\n * <Button>Hover me</Button>\n * </HoverCard.Target>\n * <HoverCard.Dropdown>\n * Content displayed on hover\n * </HoverCard.Dropdown>\n * </HoverCard>\n * ```\n */\nexport type HoverCardProps = RecursicaOverStyled<\n MantineHoverCardProps & RecursicaHoverCardProps\n>;\n\nconst HoverCardBase = function HoverCard({\n overStyled = false,\n withBeak = true,\n ...rest\n}: HoverCardProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n dropdown: styles.dropdown,\n arrow: styles.arrow,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px).\n const arrowSize =\n ((sanitizedProps as Record<string, unknown>).arrowSize as\n | number\n | undefined) ?? 16;\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const withArrow = (sanitizedProps as Record<string, unknown>).withArrow as\n | boolean\n | undefined;\n const resolvedWithArrow = withBeak ?? withArrow;\n\n return (\n <MantineHoverCard\n position=\"top\" /* Recursica default; Mantine defaults to \"bottom\" */\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineHoverCardProps)}\n />\n );\n};\nHoverCardBase.displayName = \"HoverCard\";\n\n// ============================================================\n// HOVERCARD TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the hover card.\n * Requires a single child element that supports ref forwarding.\n */\nexport type HoverCardTargetProps = MantineHoverCardTargetProps;\n\nconst HoverCardTarget = function HoverCardTarget(props: HoverCardTargetProps) {\n return <MantineHoverCard.Target {...props} />;\n};\nHoverCardTarget.displayName = \"HoverCardTarget\";\n\n// ============================================================\n// HOVERCARD DROPDOWN\n// ============================================================\n\n/** The dropdown panel displayed when hovering over the target. */\nexport type HoverCardDropdownProps =\n RecursicaOverStyled<MantineHoverCardDropdownProps>;\n\nconst HoverCardDropdown = function HoverCardDropdown({\n overStyled = false,\n ...rest\n}: HoverCardDropdownProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineHoverCard.Dropdown\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineHoverCardDropdownProps)}\n />\n );\n};\nHoverCardDropdown.displayName = \"HoverCardDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype HoverCardComponent = typeof HoverCardBase & {\n Target: typeof HoverCardTarget;\n Dropdown: typeof HoverCardDropdown;\n};\n\nexport const HoverCard = HoverCardBase as HoverCardComponent;\nHoverCard.Target = HoverCardTarget;\nHoverCard.Dropdown = HoverCardDropdown;\n","import React, { forwardRef } from \"react\";\nimport {\n Anchor as MantineAnchor,\n type AnchorProps as MantineAnchorProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Link.module.css\";\n\nimport { type RecursicaLinkProps } from \"@recursica/adapter-common\";\n\nexport type LinkProps = RecursicaOverStyled<\n Omit<MantineAnchorProps, \"underline\"> & RecursicaLinkProps\n>;\n\nconst _Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(\n { icon, children, overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineAnchor\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n underline=\"never\"\n {...(icon ? { \"data-has-icon\": \"\" } : {})}\n {...sanitizedProps}\n >\n {icon && (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n )}\n <span className={styles.labelText}>{children}</span>\n </MantineAnchor>\n );\n});\n_Link.displayName = \"Link\";\n\n/**\n * Recursica Link component wrapping Mantine's Anchor.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering (e.g. react-router Link).\n * @example\n * ```tsx\n * <Link component=\"a\" href=\"https://example.com\">External Link</Link>\n * <Link renderRoot={(props) => <RouterLink to=\"/home\" {...props} />}>Home</Link>\n * ```\n */\nexport const Link = createPolymorphicComponent<\"a\", LinkProps>(_Link);\n","import { forwardRef } from \"react\";\nimport {\n Menu as MantineMenu,\n type MenuProps as MantineMenuProps,\n type MenuTargetProps as MantineMenuTargetProps,\n type MenuDropdownProps as MantineMenuDropdownProps,\n type MenuItemProps as MantineMenuItemProps,\n type MenuDividerProps as MantineMenuDividerProps,\n type MenuLabelProps as MantineMenuLabelProps,\n type MenuSubProps as MantineMenuSubProps,\n type MenuSubTargetProps as MantineMenuSubTargetProps,\n type MenuSubDropdownProps as MantineMenuSubDropdownProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Menu.module.css\";\n\nimport { type RecursicaMenuProps } from \"@recursica/adapter-common\";\n\n// ============================================================\n// MENU ROOT\n// ============================================================\n\n/**\n * Recursica Menu component wrapping Mantine's composable Menu.\n *\n * Usage follows the composable dot-notation pattern:\n * ```tsx\n * <Menu>\n * <Menu.Target><Button>Open</Button></Menu.Target>\n * <Menu.Dropdown>\n * <Menu.Label>Section</Menu.Label>\n * <Menu.Item>Action</Menu.Item>\n * <Menu.Divider />\n * <Menu.Item>Another action</Menu.Item>\n * </Menu.Dropdown>\n * </Menu>\n * ```\n */\nexport type MenuProps = RecursicaOverStyled<\n MantineMenuProps & RecursicaMenuProps\n>;\n\nconst MenuBase = function Menu({ overStyled = false, ...rest }: MenuProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n dropdown: styles.dropdown,\n item: styles.item,\n itemLabel: styles.itemLabel,\n itemSection: styles.itemSection,\n divider: styles.divider,\n label: styles.label,\n chevron: styles.chevron,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineMenu\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineMenuProps)}\n />\n );\n};\nMenuBase.displayName = \"Menu\";\n\n// ============================================================\n// MENU TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the menu.\n * Requires a single child element that supports ref forwarding.\n */\nexport type MenuTargetProps = MantineMenuTargetProps;\n\nconst MenuTarget = function MenuTarget(props: MenuTargetProps) {\n return <MantineMenu.Target {...props} />;\n};\nMenuTarget.displayName = \"MenuTarget\";\n\n// ============================================================\n// MENU DROPDOWN\n// ============================================================\n\n/** The dropdown panel containing menu items, dividers, and labels. */\nexport type MenuDropdownProps = RecursicaOverStyled<MantineMenuDropdownProps>;\n\nconst MenuDropdown = forwardRef<HTMLDivElement, MenuDropdownProps>(\n function MenuDropdown({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Dropdown\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuDropdownProps)}\n />\n );\n },\n);\nMenuDropdown.displayName = \"MenuDropdown\";\n\n// ============================================================\n// MENU ITEM\n// ============================================================\n\n/**\n * An individual actionable item within the menu dropdown.\n *\n * **Note:** Mantine's `color` prop is stripped in strict mode to enforce\n * design token adherence. Use `overStyled={true}` if you need to bypass.\n */\nexport type MenuItemProps = RecursicaOverStyled<\n Omit<MantineMenuItemProps, \"color\">\n>;\n\nconst _MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(\n function MenuItem({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Strip Mantine's `color` prop to enforce token-driven styling\n if (!overStyled) {\n delete restRecord[\"color\"];\n }\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineMenu.Item\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuItemProps)}\n />\n );\n },\n);\n_MenuItem.displayName = \"MenuItem\";\n\n/**\n * An individual actionable item within the menu dropdown.\n *\n * Supports polymorphism via the `component` prop for link-style items.\n * @example\n * ```tsx\n * <Menu.Item component=\"a\" href=\"/settings\">Settings</Menu.Item>\n * ```\n */\nconst MenuItem = createPolymorphicComponent<\"button\", MenuItemProps>(_MenuItem);\n\n// ============================================================\n// MENU DIVIDER\n// ============================================================\n\n/** A visual separator between groups of menu items. */\nexport type MenuDividerProps = RecursicaOverStyled<MantineMenuDividerProps>;\n\nconst MenuDivider = forwardRef<HTMLHRElement, MenuDividerProps>(\n function MenuDivider({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Divider\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuDividerProps)}\n />\n );\n },\n);\nMenuDivider.displayName = \"MenuDivider\";\n\n// ============================================================\n// MENU LABEL\n// ============================================================\n\n/** A non-interactive section label used to categorize groups of menu items. */\nexport type MenuLabelProps = RecursicaOverStyled<MantineMenuLabelProps>;\n\nconst MenuLabel = forwardRef<HTMLDivElement, MenuLabelProps>(function MenuLabel(\n { overStyled = false, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Label\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuLabelProps)}\n />\n );\n});\nMenuLabel.displayName = \"MenuLabel\";\n\n// ============================================================\n// MENU SUB (SUBMENU CONTAINER)\n// ============================================================\n\n/** Container for a submenu, wrapping Menu.Sub.Target and Menu.Sub.Dropdown. */\nexport type MenuSubProps = MantineMenuSubProps;\n\nconst MenuSubBase = function MenuSub(props: MenuSubProps) {\n return <MantineMenu.Sub {...props} />;\n};\nMenuSubBase.displayName = \"MenuSub\";\n\n// ============================================================\n// MENU SUB TARGET\n// ============================================================\n\n/** Wrapper for the element that triggers the submenu. */\nexport type MenuSubTargetProps = MantineMenuSubTargetProps;\n\nconst MenuSubTarget = function MenuSubTarget(props: MenuSubTargetProps) {\n return <MantineMenu.Sub.Target {...props} />;\n};\nMenuSubTarget.displayName = \"MenuSubTarget\";\n\n// ============================================================\n// MENU SUB ITEM (triggers submenu)\n// ============================================================\n\n/**\n * A menu item that acts as a submenu trigger.\n * Renders within Menu.Sub.Target and displays a chevron indicator.\n */\nexport type MenuSubItemProps = RecursicaOverStyled<\n Omit<MantineMenuItemProps, \"color\">\n>;\n\nconst _MenuSubItem = forwardRef<HTMLButtonElement, MenuSubItemProps>(\n function MenuSubItem({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n if (!overStyled) {\n delete restRecord[\"color\"];\n }\n\n const classNameProp = restRecord.className as string | undefined;\n\n return (\n <MantineMenu.Sub.Item\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuItemProps)}\n />\n );\n },\n);\n_MenuSubItem.displayName = \"MenuSubItem\";\n\n/**\n * A menu item that acts as a submenu trigger.\n *\n * Supports polymorphism via the `component` prop.\n */\nconst MenuSubItem = createPolymorphicComponent<\"button\", MenuSubItemProps>(\n _MenuSubItem,\n);\n\n// ============================================================\n// MENU SUB DROPDOWN\n// ============================================================\n\n/** The dropdown panel for a submenu. */\nexport type MenuSubDropdownProps =\n RecursicaOverStyled<MantineMenuSubDropdownProps>;\n\nconst MenuSubDropdown = forwardRef<HTMLDivElement, MenuSubDropdownProps>(\n function MenuSubDropdown({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantineMenu.Sub.Dropdown\n ref={ref}\n className={classNameProp}\n {...(sanitizedProps as unknown as MantineMenuSubDropdownProps)}\n />\n );\n },\n);\nMenuSubDropdown.displayName = \"MenuSubDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype MenuSubComponent = typeof MenuSubBase & {\n Target: typeof MenuSubTarget;\n Item: typeof MenuSubItem;\n Dropdown: typeof MenuSubDropdown;\n};\n\nconst MenuSub = MenuSubBase as MenuSubComponent;\nMenuSub.Target = MenuSubTarget;\nMenuSub.Item = MenuSubItem;\nMenuSub.Dropdown = MenuSubDropdown;\n\ntype MenuComponent = typeof MenuBase & {\n Target: typeof MenuTarget;\n Dropdown: typeof MenuDropdown;\n Item: typeof MenuItem;\n Divider: typeof MenuDivider;\n Label: typeof MenuLabel;\n Sub: MenuSubComponent;\n};\n\nexport const Menu = MenuBase as MenuComponent;\nMenu.Target = MenuTarget;\nMenu.Dropdown = MenuDropdown;\nMenu.Item = MenuItem;\nMenu.Divider = MenuDivider;\nMenu.Label = MenuLabel;\nMenu.Sub = MenuSub;\n","import React from \"react\";\nimport {\n Modal as MantineModal,\n type ModalProps as MantineModalProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Modal.module.css\";\n\nimport { type RecursicaModalProps } from \"@recursica/adapter-common\";\n\n/**\n * Properties for the strictly-tokenized Modal component.\n * Native Mantine abstract properties like `size`, `radius`, and `shadow` have been stripped out\n * because they directly conflict with the non-negotiable pixel boundaries defined in the Recursica UI Kit.\n */\nexport type ModalProps = RecursicaOverStyled<\n Omit<MantineModalProps, \"size\" | \"radius\" | \"shadow\"> & RecursicaModalProps\n>;\n\n/**\n * The `Modal` component displays a window overlaid on the primary viewport.\n *\n * **Recursica Abstract:**\n * This component acts as a strict structural wrapper around Mantine's `<Modal>`.\n * It automatically enforces Figma UI Kit geometries (`max-width: 960px`, `min-width: 304px`)\n * and handles internal body scrolling explicitly via CSS module overrides.\n *\n * @example\n * ```tsx\n * <Modal opened={opened} onClose={close} title=\"Hello World\">\n * Modal Content\n * </Modal>\n * ```\n */\nconst ModalInner = React.forwardRef<HTMLDivElement, ModalProps>(function Modal(\n {\n overStyled = false,\n children,\n title,\n withCloseButton = true,\n overlayProps,\n withOverlay = true,\n closeButtonProps,\n ...rest\n },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n inner: styles.inner,\n content: styles.content,\n header: styles.header,\n title: styles.title,\n close: styles.close,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineModal.Root\n ref={ref}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as Omit<\n MantineModalProps,\n \"size\" | \"radius\" | \"shadow\"\n >)}\n >\n {withOverlay && <MantineModal.Overlay {...overlayProps} />}\n <MantineModal.Content>\n {(title || withCloseButton) && (\n <MantineModal.Header>\n {title && <MantineModal.Title>{title}</MantineModal.Title>}\n {withCloseButton && (\n <MantineModal.CloseButton {...closeButtonProps} />\n )}\n </MantineModal.Header>\n )}\n <ModalBody>{children}</ModalBody>\n </MantineModal.Content>\n </MantineModal.Root>\n );\n});\n\nModalInner.displayName = \"Modal\";\n\n/**\n * The `Modal.Footer` provides a perfectly padded container for modal actions.\n *\n * **Recursica Abstract:**\n * By default, this container aligns its children to the right (`justify-content: flex-end`)\n * and applies the standard Figma button-gap spacing.\n *\n * > [!IMPORTANT]\n * > **Button Hierarchy:** Recursica design language explicitly requires that the\n * > primary action button MUST be the right-most element, with the secondary\n * > (outline variant) action placed immediately to the left of it.\n */\nconst ModalFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<\"div\">\n>(function ModalFooter({ className, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={`${styles.footer} ${className || \"\"}`}\n {...rest}\n />\n );\n});\nModalFooter.displayName = \"Modal.Footer\";\n\nconst ModalBody = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof MantineModal.Body>\n>(function ModalBody({ className, onScroll, children, ...rest }, ref) {\n const internalRef = React.useRef<HTMLDivElement>(null);\n const [scrolledTop, setScrolledTop] = React.useState(false);\n const [scrolledBottom, setScrolledBottom] = React.useState(false);\n\n const checkScroll = React.useCallback(() => {\n if (internalRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = internalRef.current;\n setScrolledTop(scrollTop > 0);\n setScrolledBottom(Math.ceil(scrollTop + clientHeight) < scrollHeight);\n }\n }, []);\n\n // Re-check scroll on mount and window resize\n React.useEffect(() => {\n checkScroll();\n window.addEventListener(\"resize\", checkScroll);\n return () => window.removeEventListener(\"resize\", checkScroll);\n }, [checkScroll, children]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n checkScroll();\n onScroll?.(e);\n };\n\n // Intercept children to pull Modal.Footer out of the scrolling container\n let footer: React.ReactNode = null;\n const bodyChildren: React.ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (\n React.isValidElement(child) &&\n (child.type === ModalFooter ||\n (child.type as React.ComponentType)?.displayName === \"Modal.Footer\")\n ) {\n footer = child;\n } else {\n bodyChildren.push(child);\n }\n });\n\n return (\n <MantineModal.Body\n {...rest}\n ref={(node) => {\n if (typeof ref === \"function\") ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n className={`${styles.bodyWrapper} ${className || \"\"}`}\n >\n <div\n ref={internalRef}\n onScroll={handleScroll}\n data-scrolled-top={scrolledTop || undefined}\n data-scrolled-bottom={scrolledBottom || undefined}\n className={styles.scrollArea}\n >\n {bodyChildren}\n </div>\n {footer}\n </MantineModal.Body>\n );\n});\nModalBody.displayName = \"Modal.Body\";\n\ninterface ModalComponent\n extends React.ForwardRefExoticComponent<\n ModalProps & React.RefAttributes<HTMLDivElement>\n > {\n Root: typeof MantineModal.Root;\n Overlay: typeof MantineModal.Overlay;\n Content: typeof MantineModal.Content;\n Header: typeof MantineModal.Header;\n Title: typeof MantineModal.Title;\n CloseButton: typeof MantineModal.CloseButton;\n Body: typeof ModalBody;\n Footer: typeof ModalFooter;\n}\n\nexport const Modal = ModalInner as ModalComponent & {\n Footer: typeof ModalFooter;\n};\nModal.Root = MantineModal.Root;\nModal.Overlay = MantineModal.Overlay;\nModal.Content = MantineModal.Content;\nModal.Header = MantineModal.Header;\nModal.Title = MantineModal.Title;\nModal.CloseButton = MantineModal.CloseButton;\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n","import React, { forwardRef } from \"react\";\nimport {\n NumberInput as MantineNumberInput,\n type NumberInputProps as MantineNumberInputProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./NumberInput.module.css\";\n\nimport { type RecursicaNumberInputProps as BaseRecursicaNumberInputProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaNumberInputProps\n extends Omit<\n MantineNumberInputProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\" | \"classNames\" | \"styles\"\n >,\n Pick<\n RecursicaFormControlWrapperProps,\n | \"assistiveText\"\n | \"assistiveWithIcon\"\n | \"formLayout\"\n | \"labelSize\"\n | \"labelAlignment\"\n | \"labelOptionalText\"\n | \"labelWithEditIcon\"\n | \"onLabelEditClick\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaNumberInputProps {}\n\nexport type NumberInputProps = RecursicaOverStyled<RecursicaNumberInputProps>;\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n function NumberInput(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n hideControls = false,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n controls: styles.controls,\n control: styles.control,\n };\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_number-input_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_number-input_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={\n value !== undefined ? value?.toString() : defaultValue?.toString()\n }\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineNumberInput\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n hideControls={hideControls}\n label={undefined}\n description={undefined}\n error={undefined}\n required={undefined}\n withAsterisk={undefined}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n \"data-with-left-section\": restRecord.leftSection\n ? \"true\"\n : undefined,\n \"data-with-right-section\":\n restRecord.rightSection || !hideControls ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as MantineNumberInputProps)}\n />\n }\n />\n );\n },\n);\n\nNumberInput.displayName = \"NumberInput\";\n","import styles from \"./Pagination.module.css\";\n\nconst NextPath =\n \"M8.781 8l-3.3-3.3.943-.943L10.667 8l-4.243 4.243-.943-.943 3.3-3.3z\";\nconst PrevPath =\n \"M7.219 8l3.3 3.3-.943.943L5.333 8l4.243-4.243.943.943-3.3 3.3z\";\nconst FirstPath =\n \"M6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645C6.65829 2.95118 6.34171 2.95118 6.14645 3.14645L2.14645 7.14645C1.95118 7.34171 1.95118 7.65829 2.14645 7.85355L6.14645 11.8536C6.34171 12.0488 6.65829 12.0488 6.85355 11.8536C7.04882 11.6583 7.04882 11.3417 6.85355 11.1464L3.20711 7.5L6.85355 3.85355ZM12.8536 3.85355C13.0488 3.65829 13.0488 3.34171 12.8536 3.14645C12.6583 2.95118 12.3417 2.95118 12.1464 3.14645L8.14645 7.14645C7.95118 7.34171 7.95118 7.65829 8.14645 7.85355L12.1464 11.8536C12.3417 12.0488 12.6583 12.0488 12.8536 11.8536C13.0488 11.6583 13.0488 11.3417 12.8536 11.1464L9.20711 7.5L12.8536 3.85355Z\";\nconst LastPath =\n \"M2.14645 11.1464C1.95118 11.3417 1.95118 11.6583 2.14645 11.8536C2.34171 12.0488 2.65829 12.0488 2.85355 11.8536L6.85355 7.85355C7.04882 7.65829 7.04882 7.34171 6.85355 7.14645L2.85355 3.14645C2.65829 2.95118 2.34171 2.95118 2.14645 3.14645C1.95118 3.34171 1.95118 3.65829 2.14645 3.85355L5.79289 7.5L2.14645 11.1464ZM8.14645 11.1464C7.95118 11.3417 7.95118 11.6583 8.14645 11.8536C8.34171 12.0488 8.65829 12.0488 8.85355 11.8536L12.8536 7.85355C13.0488 7.65829 13.0488 7.34171 12.8536 7.14645L8.85355 3.14645C8.65829 2.95118 8.34171 2.95118 8.14645 3.14645C7.95118 3.34171 7.95118 3.65829 8.14645 3.85355L11.7929 7.5L8.14645 11.1464Z\";\n\nexport type PaginationIconType = \"next\" | \"prev\" | \"first\" | \"last\";\n\nconst paths: Record<PaginationIconType, string> = {\n next: NextPath,\n prev: PrevPath,\n first: FirstPath,\n last: LastPath,\n};\n\nexport const PaginationIcon = ({\n type,\n className,\n ...props\n}: React.ComponentProps<\"svg\"> & { type: PaginationIconType }) => (\n <svg\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.baseIcon} ${className || \"\"}`.trim()}\n {...props}\n >\n <path d={paths[type as PaginationIconType]} fill=\"currentColor\" />\n </svg>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const NextWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <span>Next</span>\n <PaginationIcon type=\"next\" {...props} />\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const PrevWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <PaginationIcon type=\"prev\" {...props} />\n <span>Prev</span>\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const FirstWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <PaginationIcon type=\"first\" {...props} />\n <span>First</span>\n </div>\n);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const LastWithLabel = (props: any) => (\n <div className={styles.iconWithLabel}>\n <span>Last</span>\n <PaginationIcon type=\"last\" {...props} />\n </div>\n);\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Pagination as MantinePagination,\n type PaginationProps as MantinePaginationProps,\n type PaginationRootProps as MantinePaginationRootProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Pagination.module.css\";\nimport {\n NextWithLabel,\n PrevWithLabel,\n FirstWithLabel,\n LastWithLabel,\n PaginationIcon,\n} from \"./Pagination.icons\";\n\nimport { type RecursicaPaginationProps } from \"@recursica/adapter-common\";\n\nexport type PaginationProps = RecursicaOverStyled<\n MantinePaginationProps & RecursicaPaginationProps\n>;\n\nexport type PaginationRootProps =\n RecursicaOverStyled<MantinePaginationRootProps>;\n\nexport type PaginationEdgeProps<T extends React.ElementType> =\n React.ComponentProps<T> & {\n /** If set to true, displays text labels alongside the icon. */\n withLabel?: boolean;\n icon?: any;\n };\n\nfunction usePaginationClassNames(restRecord: Record<string, unknown>): {\n className: string;\n classNames: Partial<Record<string, string>>;\n} {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n control: styles.control,\n dots: styles.dots,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.control = o.control\n ? `${styles.control} ${o.control}`\n : styles.control;\n mergedClassNames.dots = o.dots ? `${styles.dots} ${o.dots}` : styles.dots;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return { className: finalClass, classNames: mergedClassNames };\n}\n\nconst _PaginationRoot = forwardRef<HTMLDivElement, PaginationRootProps>(\n function PaginationRoot({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const stylingParams = usePaginationClassNames(\n sanitizedProps as Record<string, unknown>,\n );\n\n return (\n <MantinePagination.Root\n ref={ref}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n {...(sanitizedProps as MantinePaginationRootProps)}\n />\n );\n },\n);\n_PaginationRoot.displayName = \"Pagination.Root\";\n\nconst _PaginationNext = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Next>\n>(function PaginationNext({ withLabel, icon, ...props }, ref) {\n const renderIcon = icon || (withLabel ? NextWithLabel : undefined);\n return (\n <MantinePagination.Next\n ref={ref}\n data-variant=\"text\"\n icon={renderIcon as any}\n {...props}\n />\n );\n});\n_PaginationNext.displayName = \"Pagination.Next\";\n\nconst _PaginationPrevious = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Previous>\n>(function PaginationPrevious({ withLabel, icon, ...props }, ref) {\n const renderIcon = icon || (withLabel ? PrevWithLabel : undefined);\n return (\n <MantinePagination.Previous\n ref={ref}\n data-variant=\"text\"\n icon={renderIcon as any}\n {...props}\n />\n );\n});\n_PaginationPrevious.displayName = \"Pagination.Previous\";\n\nconst _PaginationFirst = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.First>\n>(function PaginationFirst({ withLabel, icon, ...props }, ref) {\n const renderIcon = icon || (withLabel ? FirstWithLabel : undefined);\n return (\n <MantinePagination.First\n ref={ref}\n data-variant=\"text\"\n icon={renderIcon as any}\n {...props}\n />\n );\n});\n_PaginationFirst.displayName = \"Pagination.First\";\n\nconst _PaginationLast = forwardRef<\n HTMLButtonElement,\n PaginationEdgeProps<typeof MantinePagination.Last>\n>(function PaginationLast({ withLabel, icon, ...props }, ref) {\n const renderIcon = icon || (withLabel ? LastWithLabel : undefined);\n return (\n <MantinePagination.Last\n ref={ref}\n data-variant=\"text\"\n icon={renderIcon as any}\n {...props}\n />\n );\n});\n_PaginationLast.displayName = \"Pagination.Last\";\n\nconst _Pagination = forwardRef<HTMLDivElement, PaginationProps>(\n function Pagination(\n { overStyled = false, getControlProps, withLabels, ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const stylingParams = usePaginationClassNames(\n sanitizedProps as Record<string, unknown>,\n );\n\n const mergedGetControlProps = (\n control: \"first\" | \"previous\" | \"last\" | \"next\",\n ) => {\n const baseProps = { \"data-variant\": \"text\" };\n if (getControlProps) {\n return { ...baseProps, ...getControlProps(control) };\n }\n return baseProps;\n };\n\n const labelsIcons = withLabels\n ? {\n nextIcon: NextWithLabel,\n previousIcon: PrevWithLabel,\n firstIcon: FirstWithLabel,\n lastIcon: LastWithLabel,\n }\n : {};\n\n return (\n <MantinePagination\n ref={ref}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n getControlProps={mergedGetControlProps}\n {...labelsIcons}\n {...(sanitizedProps as MantinePaginationProps)}\n />\n );\n },\n);\n_Pagination.displayName = \"Pagination\";\n\n/**\n * Recursica Pagination component wrapping Mantine's Pagination.\n */\nexport const Pagination = _Pagination as typeof _Pagination & {\n Root: typeof _PaginationRoot;\n Items: typeof MantinePagination.Items;\n Control: typeof MantinePagination.Control;\n Dots: typeof MantinePagination.Dots;\n Next: typeof _PaginationNext;\n Previous: typeof _PaginationPrevious;\n First: typeof _PaginationFirst;\n Last: typeof _PaginationLast;\n Icon: typeof PaginationIcon;\n};\n\nPagination.Root = _PaginationRoot;\nPagination.Items = MantinePagination.Items;\nPagination.Control = MantinePagination.Control;\nPagination.Dots = MantinePagination.Dots;\nPagination.Next = _PaginationNext;\nPagination.Previous = _PaginationPrevious;\nPagination.First = _PaginationFirst;\nPagination.Last = _PaginationLast;\nPagination.Icon = PaginationIcon;\n","import { forwardRef } from \"react\";\nimport {\n Drawer as MantineDrawer,\n type DrawerProps as MantineDrawerProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Panel.module.css\";\n\n// ============================================================\n// PANEL (Drawer)\n// ============================================================\n\nimport { type RecursicaPanelProps } from \"@recursica/adapter-common\";\n\n/**\n * Recursica Panel root props. Extends Mantine Drawer.\n */\nexport type PanelProps = RecursicaOverStyled<RecursicaPanelProps>;\n\n/**\n * Recursica Panel component wrapping Mantine's Drawer.\n *\n * Panels slide in or expand from the edge of the screen to reveal\n * additional content or functionality. They are commonly used to provide\n * supplementary information, navigation options, or toolsets without\n * cluttering the main interface.\n *\n * ```tsx\n * <Panel opened={opened} onClose={close} title=\"Panel Title\" position=\"right\">\n * <Panel.Body>\n * Content goes here\n * </Panel.Body>\n * </Panel>\n * ```\n *\n * Mantine Drawer sub-components available via dot-notation:\n * - `Panel.Header` — Top section with title and close button\n * - `Panel.Title` — Title text within the header\n * - `Panel.CloseButton` — Close button within the header\n * - `Panel.Body` — Scrollable body content area\n * - `Panel.Content` — Outer content container\n * - `Panel.Overlay` — Background overlay\n * - `Panel.Root` — Root element for advanced composition\n * - `Panel.Stack` — Stacked drawer context\n */\nconst PanelBase = function Panel({\n overStyled = false,\n position = \"right\",\n keepMounted = true,\n wrapHeaderText = false,\n ...rest\n}: PanelProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n content: styles.content,\n header: styles.header,\n title: wrapHeaderText ? styles.titleTruncate : styles.title,\n body: styles.body,\n inner: styles.inner,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineDrawer\n position={position} /* Recursica default: right; Mantine default: left */\n keepMounted={keepMounted}\n closeOnClickOutside={rest.closeOnClickOutside ?? Boolean(rest.opened)}\n {...(sanitizedProps as unknown as MantineDrawerProps)}\n classNames={mergedClassNames}\n />\n );\n};\nPanelBase.displayName = \"Panel\";\n\n// ============================================================\n// PANEL FOOTER (custom — Mantine Drawer has no Footer sub-component)\n// ============================================================\n\nexport type PanelFooterProps = RecursicaOverStyled<\n React.HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Panel footer section with action buttons.\n * Separated from the body by a divider. Remains fixed at the bottom.\n * This is a Recursica-specific sub-component; Mantine Drawer does not\n * natively provide a footer.\n */\nexport const PanelFooter = forwardRef<HTMLDivElement, PanelFooterProps>(\n function PanelFooter({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const finalClassName = classNameProp\n ? `${styles.footer} ${classNameProp}`\n : styles.footer;\n\n return <div ref={ref} className={finalClassName} {...sanitizedProps} />;\n },\n);\nPanelFooter.displayName = \"PanelFooter\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype PanelComponent = typeof PanelBase & {\n Root: typeof MantineDrawer.Root;\n Overlay: typeof MantineDrawer.Overlay;\n Content: typeof MantineDrawer.Content;\n Header: typeof MantineDrawer.Header;\n Title: typeof MantineDrawer.Title;\n CloseButton: typeof MantineDrawer.CloseButton;\n Body: typeof MantineDrawer.Body;\n Stack: typeof MantineDrawer.Stack;\n Footer: typeof PanelFooter;\n};\n\nexport const Panel = PanelBase as PanelComponent;\nPanel.Root = MantineDrawer.Root;\nPanel.Overlay = MantineDrawer.Overlay;\nPanel.Content = MantineDrawer.Content;\nPanel.Header = MantineDrawer.Header;\nPanel.Title = MantineDrawer.Title;\nPanel.CloseButton = MantineDrawer.CloseButton;\nPanel.Body = MantineDrawer.Body;\nPanel.Stack = MantineDrawer.Stack;\nPanel.Footer = PanelFooter;\n","import {\n Popover as MantinePopover,\n type PopoverProps as MantinePopoverProps,\n type PopoverTargetProps as MantinePopoverTargetProps,\n type PopoverDropdownProps as MantinePopoverDropdownProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Popover.module.css\";\n\n// ============================================================\n// POPOVER ROOT\n// ============================================================\n\n/**\n * Recursica-specific props for Popover.\n */\nimport { type RecursicaPopoverProps } from \"@recursica/adapter-common\";\n\n/**\n * Recursica Popover component wrapping Mantine's composable Popover.\n *\n * Displays a dropdown panel when the user clicks or interacts with a target element.\n * Uses the composable dot-notation pattern:\n * ```tsx\n * <Popover withBeak>\n * <Popover.Target>\n * <Button>Click me</Button>\n * </Popover.Target>\n * <Popover.Dropdown>\n * Content displayed in popover\n * </Popover.Dropdown>\n * </Popover>\n * ```\n */\nexport type PopoverProps = RecursicaOverStyled<\n MantinePopoverProps & RecursicaPopoverProps\n>;\n\nconst PopoverBase = function Popover({\n overStyled = false,\n withBeak = true,\n ...rest\n}: PopoverProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n dropdown: styles.dropdown,\n arrow: styles.arrow,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px).\n const arrowSize =\n ((sanitizedProps as Record<string, unknown>).arrowSize as\n | number\n | undefined) ?? 16;\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const withArrow = (sanitizedProps as Record<string, unknown>).withArrow as\n | boolean\n | undefined;\n const resolvedWithArrow = withBeak ?? withArrow;\n\n return (\n <MantinePopover\n position=\"top\" /* Recursica default; Mantine defaults to \"bottom\" */\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantinePopoverProps)}\n />\n );\n};\nPopoverBase.displayName = \"Popover\";\n\n// ============================================================\n// POPOVER TARGET\n// ============================================================\n\n/**\n * Wrapper for the element that triggers the popover.\n * Requires a single child element that supports ref forwarding.\n */\nexport type PopoverTargetProps = MantinePopoverTargetProps;\n\nconst PopoverTarget = function PopoverTarget(props: PopoverTargetProps) {\n return <MantinePopover.Target {...props} />;\n};\nPopoverTarget.displayName = \"PopoverTarget\";\n\n// ============================================================\n// POPOVER DROPDOWN\n// ============================================================\n\n/** The dropdown panel displayed from the popover. */\nexport type PopoverDropdownProps =\n RecursicaOverStyled<MantinePopoverDropdownProps>;\n\nconst PopoverDropdown = function PopoverDropdown({\n overStyled = false,\n ...rest\n}: PopoverDropdownProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n return (\n <MantinePopover.Dropdown\n className={classNameProp}\n {...(sanitizedProps as unknown as MantinePopoverDropdownProps)}\n />\n );\n};\nPopoverDropdown.displayName = \"PopoverDropdown\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype PopoverComponent = typeof PopoverBase & {\n Target: typeof PopoverTarget;\n Dropdown: typeof PopoverDropdown;\n};\n\nexport const Popover = PopoverBase as PopoverComponent;\nPopover.Target = PopoverTarget;\nPopover.Dropdown = PopoverDropdown;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Radio as MantineRadio,\n type RadioGroupProps as MantineRadioGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Radio.module.css\";\n\nimport { type RecursicaRadioGroupProps as BaseRecursicaRadioGroupProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaRadioGroupProps\n extends Omit<MantineRadioGroupProps, \"size\" | \"labelProps\">,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaRadioGroupProps {}\n\nexport type RadioGroupProps = RecursicaOverStyled<RecursicaRadioGroupProps>;\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n function RadioGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing the variables\n delete restRecord[\"size\"];\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_radio-button-item_properties_max-width)\"\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive radios nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n <MantineRadio.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineRadioGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value}\n defaultValue={defaultValue}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineRadio.Group>\n }\n />\n );\n },\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n","import { forwardRef } from \"react\";\nimport {\n Radio as MantineRadio,\n type RadioProps as MantineRadioProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport { RadioGroup } from \"./RadioGroup\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type RequireAccessibleLabel,\n type RecursicaRadioProps,\n} from \"@recursica/adapter-common\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\n\nimport styles from \"./Radio.module.css\";\n\nconst RadioIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n className={className}\n style={style}\n >\n <circle cx=\"8\" cy=\"8\" r=\"5\" />\n </svg>\n);\n\nexport type RadioWrapperProps = Omit<\n MantineRadioProps,\n \"size\" | \"color\" | \"radius\" | \"iconColor\" | \"variant\"\n> &\n RecursicaRadioProps &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >;\n\nexport type RecursicaRadioPropsAlias =\n RequireAccessibleLabel<RadioWrapperProps>;\n\nexport type RadioProps = RecursicaOverStyled<RecursicaRadioPropsAlias>;\n\ntype RadioComponent = React.ForwardRefExoticComponent<\n RadioProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof RadioGroup;\n};\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Actively delete dimension bindings that bypass the abstraction\n delete restRecord[\"size\"];\n delete restRecord[\"color\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"iconColor\"];\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n body: styles.body,\n inner: styles.inner,\n radio: styles.radio,\n icon: styles.icon,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.body = o.body ? `${styles.body} ${o.body}` : styles.body;\n mergedClassNames.inner = o.inner\n ? `${styles.inner} ${o.inner}`\n : styles.inner;\n mergedClassNames.radio = o.radio\n ? `${styles.radio} ${o.radio}`\n : styles.radio;\n mergedClassNames.icon = o.icon ? `${styles.icon} ${o.icon}` : styles.icon;\n mergedClassNames.labelWrapper = o.labelWrapper\n ? `${styles.labelWrapper} ${o.labelWrapper}`\n : styles.labelWrapper;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Radio.module.css\n const radioNode = (\n <MantineRadio\n ref={ref}\n icon={RadioIcon}\n className={finalClass}\n classNames={mergedClassNames}\n disabled={readOnly || disabled}\n {...(sanitizedProps as unknown as MantineRadioProps)}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {radioNode}\n </FormControlLayout>\n );\n }\n\n return radioNode;\n },\n) as RadioComponent;\n\nRadio.displayName = \"Radio\";\nRadio.Group = RadioGroup;\n","import React from \"react\";\nimport { Box } from \"@mantine/core\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nexport const ReadOnlySwitchField: React.FC<{\n checked: boolean;\n label?: React.ReactNode;\n}> = ({ checked, label }) => {\n return (\n <Box\n component=\"span\"\n className={styles.textField}\n style={{ display: \"inline-flex\", gap: \"8px\", alignItems: \"baseline\" }}\n >\n {label && <span style={{ fontWeight: 500 }}>{label}:</span>}\n <span>{checked ? \"On\" : \"Off\"}</span>\n </Box>\n );\n};\n\nReadOnlySwitchField.displayName = \"ReadOnlySwitchField\";\n","import React from \"react\";\nimport { Box } from \"@mantine/core\";\nimport styles from \"./ReadOnlyField.module.css\";\n\nexport const ReadOnlyBooleanField: React.FC<{\n checked: boolean;\n label?: React.ReactNode;\n}> = ({ checked, label }) => {\n return (\n <Box\n component=\"span\"\n className={styles.textField}\n style={{ display: \"inline-flex\", gap: \"8px\", alignItems: \"baseline\" }}\n >\n {label && <span style={{ fontWeight: 500 }}>{label}:</span>}\n <span>{checked ? \"True\" : \"False\"}</span>\n </Box>\n );\n};\n\nReadOnlyBooleanField.displayName = \"ReadOnlyBooleanField\";\n","import { forwardRef } from \"react\";\nimport {\n SegmentedControl as MantineSegmentedControl,\n type SegmentedControlProps as MantineSegmentedControlProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./SegmentedControl.module.css\";\n\nimport { type RecursicaSegmentedControlProps } from \"@recursica/adapter-common\";\n\nexport type SegmentedControlProps = RecursicaOverStyled<\n Omit<\n MantineSegmentedControlProps,\n | \"variant\"\n | \"size\"\n | \"radius\"\n | \"color\"\n | \"classNames\"\n | \"className\"\n | \"disabled\"\n > & {\n className?: string;\n classNames?: Partial<Record<string, string>>;\n } & RecursicaSegmentedControlProps\n>;\n\nfunction useSegmentedControlClassNames(restRecord: Record<string, unknown>): {\n className: string;\n classNames: Partial<Record<string, string>>;\n} {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n control: styles.control,\n label: styles.label,\n indicator: styles.indicator,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.control = o.control\n ? `${styles.control} ${o.control}`\n : styles.control;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n mergedClassNames.indicator = o.indicator\n ? `${styles.indicator} ${o.indicator}`\n : styles.indicator;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return { className: finalClass, classNames: mergedClassNames };\n}\n\nconst _SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControl(\n { overStyled = false, orientation = \"horizontal\", fullWidth, ...rest },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Explicitly prevent consumers from bypassing the disabled restriction\n delete restRecord[\"disabled\"];\n\n const stylingParams = useSegmentedControlClassNames(restRecord);\n\n return (\n <MantineSegmentedControl\n ref={ref}\n className={stylingParams.className}\n classNames={stylingParams.classNames}\n orientation={orientation}\n fullWidth={fullWidth}\n data-orientation={orientation}\n {...(sanitizedProps as Omit<\n MantineSegmentedControlProps,\n \"variant\" | \"size\"\n >)}\n />\n );\n },\n);\n_SegmentedControl.displayName = \"SegmentedControl\";\n\n/**\n * Recursica SegmentedControl component wrapping Mantine's SegmentedControl.\n */\nexport const SegmentedControl = _SegmentedControl;\n","import React, { forwardRef, useState, useEffect } from \"react\";\nimport {\n Slider as MantineSlider,\n type SliderProps as MantineSliderProps,\n type InputWrapperProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\n\nimport styles from \"./Slider.module.css\";\n\nimport { type RecursicaSliderProps as BaseRecursicaSliderProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaSliderProps\n extends Omit<\n MantineSliderProps,\n | \"size\"\n | \"variant\"\n | \"radius\"\n | \"wrapperProps\"\n | \"classNames\"\n | \"styles\"\n | \"label\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n Pick<InputWrapperProps, \"error\" | \"required\" | \"withAsterisk\">,\n ReadOnlyControlProps,\n BaseRecursicaSliderProps {}\n\nexport type SliderProps = RecursicaOverStyled<RecursicaSliderProps>;\n\n/**\n * Custom Read-Only visual representation of the Slider value.\n * Utilizes component-specific read-only typography variables.\n */\nconst SliderReadOnlyValue: React.FC<{ value: number }> = ({ value }) => {\n return <div className={styles.readOnlyValue}>{value}</div>;\n};\n\n/**\n * Recursica Slider component wrapping Mantine's Slider.\n *\n * Implements a bidirectional text input field next to the slider track, responsive layouts,\n * custom typography-bound min/max labels, an optional leading icon, and an explicit read-only layout.\n */\nexport const Slider = forwardRef<HTMLDivElement, SliderProps>(\n function Slider(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n labelActionArea,\n onLabelEditClick,\n\n label,\n tooltipLabel,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n icon,\n showInput = false,\n showMinMaxLabels = true,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n onChangeEnd,\n ...rest\n } = props;\n\n // Bidirectional state linking the slider track value to the input field string representation\n const [internalValue, setInternalValue] = useState<number>(() => {\n if (value !== undefined) return value;\n if (defaultValue !== undefined) return defaultValue;\n return min;\n });\n\n const resolvedValue = value !== undefined ? value : internalValue;\n const [inputValue, setInputValue] = useState<string>(\n resolvedValue.toString(),\n );\n\n // Synchronize text input whenever the slider value changes\n useEffect(() => {\n setInputValue(resolvedValue.toString());\n }, [resolvedValue]);\n\n const handleValueChange = (val: number) => {\n if (value === undefined) {\n setInternalValue(val);\n }\n onChange?.(val);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const valStr = e.target.value;\n setInputValue(valStr);\n\n const parsed = parseFloat(valStr);\n if (!isNaN(parsed)) {\n // Clamp input value to bounds\n const clamped = Math.max(min, Math.min(max, parsed));\n handleValueChange(clamped);\n }\n };\n\n const handleInputBlur = () => {\n // Clean up text field on blur to reflect the final clamped resolved value\n setInputValue(resolvedValue.toString());\n };\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"wrapperProps\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.sliderRoot,\n track: styles.sliderTrack,\n bar: styles.sliderBar,\n thumb: styles.sliderThumb,\n mark: styles.sliderMark,\n markLabel: styles.sliderMarkLabel,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root\n ? `${styles.sliderRoot} ${o.root}`\n : styles.sliderRoot;\n mergedClassNames.track = o.track\n ? `${styles.sliderTrack} ${o.track}`\n : styles.sliderTrack;\n mergedClassNames.bar = o.bar\n ? `${styles.sliderBar} ${o.bar}`\n : styles.sliderBar;\n mergedClassNames.thumb = o.thumb\n ? `${styles.sliderThumb} ${o.thumb}`\n : styles.sliderThumb;\n mergedClassNames.mark = o.mark\n ? `${styles.sliderMark} ${o.mark}`\n : styles.sliderMark;\n mergedClassNames.markLabel = o.markLabel\n ? `${styles.sliderMarkLabel} ${o.markLabel}`\n : styles.sliderMarkLabel;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n const leadingIcon = icon ? (\n <span className={styles.iconWrapper} aria-hidden>\n {icon}\n </span>\n ) : null;\n\n return (\n <WithReadOnlyWrapper\n ref={ref}\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth={undefined}\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n labelActionArea={labelActionArea}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent || SliderReadOnlyValue}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={resolvedValue}\n readOnlyNativeProps={{ value: resolvedValue }}\n activeComponent={\n <div\n className={styles.sliderContainer}\n data-form-layout={formLayout}\n data-disabled={disabled ? \"true\" : undefined}\n data-error={error ? \"true\" : undefined}\n >\n {leadingIcon}\n\n {showMinMaxLabels && (\n <span className={styles.minMaxGuide}>{min}</span>\n )}\n\n <div className={styles.sliderTrackWrapper}>\n <MantineSlider\n classNames={mergedClassNames}\n disabled={disabled}\n value={resolvedValue}\n onChange={handleValueChange}\n onChangeEnd={onChangeEnd}\n min={min}\n max={max}\n step={step}\n label={tooltipLabel}\n {...(sanitizedProps as unknown as MantineSliderProps)}\n />\n </div>\n\n <div className={styles.rightGuideContainer}>\n {!showInput && (\n <span className={styles.currentValue}>{resolvedValue}</span>\n )}\n {showMinMaxLabels && (\n <span className={styles.minMaxGuide}>{max}</span>\n )}\n </div>\n\n {showInput && (\n <input\n type=\"number\"\n className={styles.inputField}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n data-error={error ? \"true\" : undefined}\n />\n )}\n </div>\n }\n />\n );\n },\n);\n\nSlider.displayName = \"Slider\";\n","import { forwardRef } from \"react\";\nimport {\n Stack as MantineStack,\n type StackProps as MantineStackProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport { mapLayoutProps } from \"../../utils/filterStylingProps\";\nimport styles from \"./Stack.module.css\";\n\nimport { type RecursicaStackProps } from \"@recursica/adapter-common\";\n\n/**\n * Stack flex layout wrapper.\n *\n * Note: Unlike complex UI components, primitive layout components (Flex, Stack, Group, Container)\n * DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass\n * width, height, padding, margins, and flexbox alignment props to construct structural layouts.\n */\nexport type StackProps = MantineStackProps & RecursicaStackProps;\n\nconst _Stack = forwardRef<HTMLDivElement, StackProps>(function Stack(\n { children, gap = \"rec-default\", ...rest },\n ref,\n) {\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = rest.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n }\n\n const classNameProp = rest.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n return (\n <MantineStack\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n {...mapLayoutProps({ gap, ...rest } as Record<string, unknown>)}\n >\n {children}\n </MantineStack>\n );\n});\n_Stack.displayName = \"Stack\";\n\nexport const Stack = createPolymorphicComponent<\"div\", StackProps>(_Stack);\n","import React, { forwardRef } from \"react\";\nimport {\n Stepper as MantineStepper,\n type StepperProps as MantineStepperProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Stepper.module.css\";\n\nimport { type RecursicaStepperProps } from \"@recursica/adapter-common\";\n\nexport type StepperProps = RecursicaOverStyled<RecursicaStepperProps>;\n\nconst _Stepper = forwardRef<HTMLDivElement, StepperProps>(\n function Stepper(props, ref) {\n const {\n overStyled = false,\n size = \"large\",\n orientation = \"horizontal\",\n className,\n style,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n return (\n <MantineStepper\n ref={ref}\n orientation={orientation}\n className={`${styles.root} ${orientation === \"horizontal\" ? styles.horizontal : styles.vertical} ${size === \"large\" ? styles.large : styles.small} ${className || \"\"}`}\n style={style as React.CSSProperties}\n data-size={size}\n data-orientation={orientation}\n classNames={{\n steps: styles.steps,\n step: styles.step,\n stepIcon: styles.stepIcon,\n stepCompletedIcon: styles.stepCompletedIcon,\n stepBody: styles.stepBody,\n stepLabel: styles.stepLabel,\n stepDescription: styles.stepDescription,\n separator: styles.separator,\n verticalSeparator: styles.verticalSeparator,\n content: styles.content,\n }}\n {...(sanitizedProps as MantineStepperProps)}\n />\n );\n },\n);\n\n// We need to re-export the static components Step and Completed\nexport const Stepper: typeof _Stepper & {\n Step: typeof MantineStepper.Step;\n Completed: typeof MantineStepper.Completed;\n} = Object.assign(_Stepper, {\n Step: MantineStepper.Step,\n Completed: MantineStepper.Completed,\n});\n\n_Stepper.displayName = \"Stepper\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { forwardRef } from \"react\";\nimport {\n Switch as MantineSwitch,\n type SwitchGroupProps as MantineSwitchGroupProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./Switch.module.css\";\n\nimport { type RecursicaSwitchGroupProps as BaseRecursicaSwitchGroupProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaSwitchGroupProps\n extends Omit<MantineSwitchGroupProps, \"size\" | \"labelProps\">,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaSwitchGroupProps {}\n\nexport type SwitchGroupProps = RecursicaOverStyled<RecursicaSwitchGroupProps>;\n\nexport const SwitchGroup = forwardRef<HTMLDivElement, SwitchGroupProps>(\n function SwitchGroup(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label Wrappers\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n // Base Mantine Extracted Attributes\n label,\n description,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n children,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing the variables\n delete restRecord[\"size\"];\n\n return (\n <WithReadOnlyWrapper\n className={className}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_switch-item_properties_label-max-width)\"\n controlMinWidth={undefined}\n overStyled={overStyled as true}\n labelElement=\"div\" // Strictly override. ARIA grouping prohibits interactive switches nested natively inside <label>.\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n description={description}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly && !!readOnlyComponent}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n <MantineSwitch.Group\n ref={ref}\n /* Natively bind local disabled lock dynamically */\n {...(sanitizedProps as unknown as MantineSwitchGroupProps)}\n disabled={readOnly || (restRecord as any).disabled}\n value={value}\n defaultValue={defaultValue}\n >\n <div className={styles.groupRoot} data-layout={formLayout}>\n {children}\n </div>\n </MantineSwitch.Group>\n }\n />\n );\n },\n);\n\nSwitchGroup.displayName = \"SwitchGroup\";\n","import { forwardRef } from \"react\";\nimport {\n Switch as MantineSwitch,\n type SwitchProps as MantineSwitchProps,\n CheckIcon,\n CloseIcon,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\n\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport {\n type RequireAccessibleLabel,\n type RecursicaSwitchProps,\n} from \"@recursica/adapter-common\";\nimport {\n FormControlLayout,\n type FormControlLayoutProps,\n} from \"../FormControlLayout/FormControlLayout\";\nimport styles from \"./Switch.module.css\";\n\nimport { SwitchGroup } from \"./SwitchGroup\";\n\nexport type SwitchWrapperProps = Omit<\n MantineSwitchProps,\n \"size\" | \"color\" | \"radius\" | \"variant\"\n> &\n RecursicaSwitchProps &\n ReadOnlyControlProps &\n Pick<\n FormControlLayoutProps,\n \"formLayout\" | \"labelSize\" | \"controlMaxWidth\" | \"controlMinWidth\"\n >;\n\nexport type RecursicaSwitchPropsAlias =\n RequireAccessibleLabel<SwitchWrapperProps>;\n\nexport type SwitchProps = RecursicaOverStyled<RecursicaSwitchPropsAlias>;\n\ntype SwitchComponent = React.ForwardRefExoticComponent<\n SwitchProps & React.RefAttributes<HTMLInputElement>\n> & {\n Group: typeof SwitchGroup;\n};\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n function Switch(props, ref) {\n const {\n overStyled = false,\n readOnly,\n readOnlyComponent,\n disabled,\n thumbIcon,\n formLayout,\n labelSize,\n controlMaxWidth,\n controlMinWidth,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Actively delete dimension bindings that bypass the abstraction\n delete restRecord[\"size\"];\n delete restRecord[\"color\"];\n delete restRecord[\"radius\"];\n delete restRecord[\"variant\"];\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n body: styles.body,\n track: styles.track,\n thumb: styles.thumb,\n trackLabel: styles.trackLabel,\n labelWrapper: styles.labelWrapper,\n label: styles.label,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.root = o.root ? `${styles.root} ${o.root}` : styles.root;\n mergedClassNames.body = o.body ? `${styles.body} ${o.body}` : styles.body;\n mergedClassNames.track = o.track\n ? `${styles.track} ${o.track}`\n : styles.track;\n mergedClassNames.thumb = o.thumb\n ? `${styles.thumb} ${o.thumb}`\n : styles.thumb;\n mergedClassNames.trackLabel = o.trackLabel\n ? `${styles.trackLabel} ${o.trackLabel}`\n : styles.trackLabel;\n mergedClassNames.labelWrapper = o.labelWrapper\n ? `${styles.labelWrapper} ${o.labelWrapper}`\n : styles.labelWrapper;\n mergedClassNames.label = o.label\n ? `${styles.label} ${o.label}`\n : styles.label;\n }\n\n const classNameProp = restRecord.className as string | undefined;\n const finalClass = classNameProp\n ? `${styles.root} ${classNameProp}`\n : styles.root;\n\n if (readOnly && !!readOnlyComponent) {\n const isChecked = !!(restRecord.checked ?? restRecord.defaultChecked);\n const ReadOnlyComp = readOnlyComponent;\n const roNode = (\n <ReadOnlyComp\n {...props}\n checked={isChecked}\n label={restRecord.label as React.ReactNode}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {roNode}\n </FormControlLayout>\n );\n }\n\n return <>{roNode}</>;\n }\n\n const FinalThumbIcon = (\n <div className={styles.thumbIconWrapper}>\n <CheckIcon className={styles.checkIcon} />\n <CloseIcon className={styles.closeIcon} />\n </div>\n );\n\n // We omit Mantine's sizing/coloring so we rely strictly on variables from Switch.module.css\n const switchNode = (\n <MantineSwitch\n ref={ref}\n className={finalClass}\n classNames={mergedClassNames}\n disabled={readOnly || disabled}\n data-disabled={readOnly || disabled || undefined}\n thumbIcon={thumbIcon ?? FinalThumbIcon}\n {...(sanitizedProps as unknown as MantineSwitchProps)}\n />\n );\n\n if (formLayout) {\n return (\n <FormControlLayout\n formLayout={formLayout}\n labelSize={labelSize}\n controlMaxWidth={controlMaxWidth}\n controlMinWidth={controlMinWidth}\n >\n {switchNode}\n </FormControlLayout>\n );\n }\n\n return switchNode;\n },\n) as SwitchComponent;\n\nSwitch.displayName = \"Switch\";\nSwitch.Group = SwitchGroup;\n","import React from \"react\";\nimport { type RecursicaTableProps } from \"@recursica/adapter-common\";\n\nexport type TableProps = React.HTMLAttributes<HTMLDivElement> &\n RecursicaTableProps;\n\nexport const Table: React.FC<TableProps> = (props) => {\n return <div {...props}>Table</div>;\n};\n","import { forwardRef } from \"react\";\nimport {\n Tabs as MantineTabs,\n type TabsProps as MantineTabsProps,\n type TabsListProps as MantineTabsListProps,\n type TabsTabProps as MantineTabsTabProps,\n type TabsPanelProps as MantineTabsPanelProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Tabs.module.css\";\n\nimport { type RecursicaTabsProps } from \"@recursica/adapter-common\";\n\nexport type TabsProps = RecursicaOverStyled<RecursicaTabsProps>;\n\nconst _Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(props, ref) {\n const {\n variant = \"default\",\n orientation = \"horizontal\",\n overStyled = false,\n className,\n ...rest\n } = props;\n\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n return (\n <MantineTabs\n ref={ref}\n variant={variant}\n orientation={orientation}\n className={`${styles.root} ${className || \"\"}`}\n data-variant={variant}\n data-orientation={orientation}\n classNames={{\n list: styles.list,\n tab: styles.tab,\n panel: styles.panel,\n }}\n {...(sanitizedProps as MantineTabsProps)}\n />\n );\n});\n\n_Tabs.displayName = \"Tabs\";\n\nexport type TabsListProps = RecursicaOverStyled<MantineTabsListProps>;\n\nconst _TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n function TabsList(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.List\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsListProps)}\n />\n );\n },\n);\n_TabsList.displayName = \"Tabs.List\";\n\nexport type TabsTabProps = RecursicaOverStyled<MantineTabsTabProps>;\n\nconst _TabsTab = forwardRef<HTMLButtonElement, TabsTabProps>(\n function TabsTab(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.Tab\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsTabProps)}\n />\n );\n },\n);\n_TabsTab.displayName = \"Tabs.Tab\";\n\nexport type TabsPanelProps = RecursicaOverStyled<MantineTabsPanelProps>;\n\nconst _TabsPanel = forwardRef<HTMLDivElement, TabsPanelProps>(\n function TabsPanel(props, ref) {\n const { overStyled = false, ...rest } = props;\n return (\n <MantineTabs.Panel\n ref={ref}\n {...(filterStylingProps(rest, overStyled) as MantineTabsPanelProps)}\n />\n );\n },\n);\n_TabsPanel.displayName = \"Tabs.Panel\";\n\nexport const Tabs: typeof _Tabs & {\n List: typeof _TabsList;\n Tab: typeof _TabsTab;\n Panel: typeof _TabsPanel;\n} = Object.assign(_Tabs, {\n List: _TabsList,\n Tab: _TabsTab,\n Panel: _TabsPanel,\n});\n","import { forwardRef } from \"react\";\nimport {\n Text as MantineText,\n type TextProps as MantineTextProps,\n createPolymorphicComponent,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\n\nimport { type RecursicaTextProps } from \"@recursica/adapter-common\";\n\nexport type TextProps = RecursicaOverStyled<RecursicaTextProps>;\n\nconst _Text = forwardRef<HTMLDivElement, TextProps>(function Text(\n { overStyled = false, variant = \"body\", ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const typographyClass = `recursica_brand_typography_${variant}`;\n const mergedClassName = classNameProp\n ? `${typographyClass} ${classNameProp}`\n : typographyClass;\n\n return (\n <MantineText\n ref={ref}\n className={mergedClassName}\n {...(sanitizedProps as unknown as MantineTextProps)}\n />\n );\n});\n_Text.displayName = \"Text\";\n\n/**\n * A generalized typographical wrapper limiting text properties to bounded Recursica UI-kit tokens inherently.\n * Do not use for semantic headings; use the explicit `<Title>` component for `<h1>` - `<h6>`.\n *\n * Supports polymorphism via the `component` prop or `renderRoot` for custom element rendering.\n * @example\n * ```tsx\n * <Text component=\"span\">Inline text</Text>\n * <Text component=\"label\" htmlFor=\"input-id\">Label text</Text>\n * ```\n */\nexport const Text = createPolymorphicComponent<\"p\", TextProps>(_Text);\n","import React, { forwardRef } from \"react\";\nimport {\n Textarea as MantineTextarea,\n type TextareaProps as MantineTextareaProps,\n} from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./TextArea.module.css\";\n\nimport { type RecursicaTextAreaProps as BaseRecursicaTextAreaProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaTextAreaProps\n extends Omit<\n MantineTextareaProps,\n \"size\" | \"variant\" | \"radius\" | \"wrapperProps\"\n >,\n Pick<\n RecursicaFormControlWrapperProps,\n | \"assistiveText\"\n | \"assistiveWithIcon\"\n | \"formLayout\"\n | \"labelSize\"\n | \"labelAlignment\"\n | \"labelOptionalText\"\n | \"labelWithEditIcon\"\n | \"onLabelEditClick\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaTextAreaProps {}\n\nexport type TextAreaProps = RecursicaOverStyled<RecursicaTextAreaProps>;\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextArea(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_textarea_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_textarea_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <MantineTextarea\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n label={undefined}\n description={undefined}\n error={undefined}\n required={undefined}\n withAsterisk={undefined}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as MantineTextareaProps)}\n />\n }\n />\n );\n },\n);\n\nTextArea.displayName = \"TextArea\";\n","import React, { forwardRef } from \"react\";\nimport { Input, type InputProps, type InputWrapperProps } from \"@mantine/core\";\nimport { type ReadOnlyControlProps } from \"@recursica/adapter-common\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport { type RecursicaFormControlWrapperProps } from \"../FormControlWrapper/FormControlWrapper\";\nimport { WithReadOnlyWrapper } from \"../ReadOnlyField/WithReadOnlyWrapper\";\nimport styles from \"./TextField.module.css\";\n\nimport { type RecursicaTextFieldProps as BaseRecursicaTextFieldProps } from \"@recursica/adapter-common\";\n\nexport interface RecursicaTextFieldProps\n extends Omit<InputProps, \"size\" | \"variant\" | \"radius\" | \"wrapperProps\">,\n Pick<\n InputWrapperProps,\n \"label\" | \"error\" | \"required\" | \"withAsterisk\" | \"id\"\n >,\n Omit<\n React.ComponentPropsWithoutRef<\"input\">,\n \"size\" | \"style\" | \"className\" | \"id\"\n >,\n Omit<\n RecursicaFormControlWrapperProps,\n \"controlMaxWidth\" | \"controlMinWidth\"\n >,\n ReadOnlyControlProps,\n BaseRecursicaTextFieldProps {}\n\nexport type TextFieldProps = RecursicaOverStyled<RecursicaTextFieldProps>;\n\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(\n function TextField(props, ref) {\n const {\n overStyled = false,\n formLayout = \"stacked\",\n\n // Label & Wrapper Maps\n labelSize,\n labelAlignment,\n labelOptionalText,\n labelWithEditIcon,\n onLabelEditClick,\n\n label,\n assistiveText,\n assistiveWithIcon,\n error,\n required,\n withAsterisk,\n id,\n className,\n style,\n disabled,\n readOnly,\n readOnlyComponent,\n emptyValueComponent,\n value,\n defaultValue,\n ...rest\n } = props;\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const restRecord = sanitizedProps as Record<string, unknown>;\n\n // Delete prohibited sizing hooks from bypassing variables natively\n delete restRecord[\"size\"];\n delete restRecord[\"variant\"];\n delete restRecord[\"radius\"];\n\n // Securely map core native blocks down ensuring nested CSS modules map precisely\n const mergedClassNames: Partial<Record<string, string>> = {\n wrapper: styles.root, // The nested Input internal relative wrapper bounding box\n input: styles.input,\n section: styles.section,\n };\n\n const classNamesProp = restRecord.classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Partial<Record<string, string>>;\n mergedClassNames.wrapper = o.wrapper\n ? `${styles.root} ${o.wrapper}`\n : styles.root;\n mergedClassNames.input = o.input\n ? `${styles.input} ${o.input}`\n : styles.input;\n mergedClassNames.section = o.section\n ? `${styles.section} ${o.section}`\n : styles.section;\n }\n\n const wrapperClass = className\n ? `${styles.layoutOverride} ${className}`\n : styles.layoutOverride;\n\n return (\n <WithReadOnlyWrapper\n className={wrapperClass}\n style={style as React.CSSProperties}\n controlMaxWidth=\"var(--recursica_ui-kit_components_text-field_properties_max-width)\"\n controlMinWidth=\"var(--recursica_ui-kit_components_text-field_properties_min-width)\"\n overStyled={overStyled as true}\n formLayout={formLayout}\n labelSize={labelSize}\n labelAlignment={labelAlignment}\n labelOptionalText={labelOptionalText}\n labelWithEditIcon={labelWithEditIcon}\n onLabelEditClick={onLabelEditClick}\n label={label}\n assistiveText={assistiveText}\n assistiveWithIcon={assistiveWithIcon}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n id={id}\n readOnly={readOnly}\n readOnlyComponent={readOnlyComponent}\n emptyValueComponent={emptyValueComponent}\n readOnlyType=\"text\"\n readOnlyValue={value !== undefined ? value : defaultValue}\n readOnlyNativeProps={props}\n activeComponent={\n /* Naked Input execution safely decoupled from Mantine's macro Input.Wrapper DOM hooks */\n <Input\n ref={ref}\n classNames={mergedClassNames}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n wrapperProps={{\n \"data-disabled\": disabled ? \"true\" : undefined,\n \"data-error\": error ? \"true\" : undefined,\n }}\n {...(sanitizedProps as unknown as InputProps)}\n />\n }\n />\n );\n },\n);\n\nTextField.displayName = \"TextField\";\n","import React from \"react\";\nimport { type RecursicaTimePickerProps } from \"@recursica/adapter-common\";\n\nexport type TimePickerProps = React.HTMLAttributes<HTMLDivElement> &\n RecursicaTimePickerProps;\n\nexport const TimePicker: React.FC<TimePickerProps> = (props) => {\n return <div {...props}>TimePicker</div>;\n};\n","import React from \"react\";\nimport {\n TimelineItem as MantineTimelineItem,\n type TimelineItemProps as MantineTimelineItemProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Timeline.module.css\";\n\nimport { type RecursicaTimelineItemProps } from \"@recursica/adapter-common\";\n\nexport type TimelineItemProps = RecursicaOverStyled<\n Omit<MantineTimelineItemProps, \"radius\" | \"color\" | \"lineVariant\"> &\n RecursicaTimelineItemProps\n>;\n\n/**\n * The individual item component for the Timeline.\n *\n * **Recursica Abstract:**\n * The `Timeline.Item` has been extended to support a `timestamp` string natively,\n * rendering it below the body content. It also accepts a `bulletVariant` to morph\n * the structural dimensions of the node circle automatically.\n */\nexport const TimelineItem = React.forwardRef<HTMLDivElement, TimelineItemProps>(\n function TimelineItem(\n {\n overStyled = false,\n timestamp,\n bulletVariant = \"default\",\n children,\n ...rest\n },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n item: styles.item,\n itemBody: styles.itemBody,\n itemContent: styles.itemContent,\n itemBullet: styles.itemBullet,\n itemTitle: styles.itemTitle,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>)\n .classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n // Embed timestamp inside children if provided, wrapped in a specific class\n const content = timestamp ? (\n <>\n {children && <div className={styles.description}>{children}</div>}\n <div className={styles.timestamp}>{timestamp}</div>\n </>\n ) : (\n children\n );\n\n return (\n <MantineTimelineItem\n ref={ref}\n classNames={mergedClassNames}\n data-variant={bulletVariant}\n {...(sanitizedProps as unknown as Omit<\n MantineTimelineItemProps,\n \"radius\" | \"color\" | \"lineVariant\"\n >)}\n >\n {content}\n </MantineTimelineItem>\n );\n },\n);\n\nTimelineItem.displayName = \"TimelineItem\";\n","import React from \"react\";\nimport {\n Timeline as MantineTimeline,\n type TimelineProps as MantineTimelineProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Timeline.module.css\";\nimport { TimelineItem } from \"./TimelineItem\";\n\nimport { type RecursicaTimelineProps } from \"@recursica/adapter-common\";\n\n/**\n * Properties for the strictly-tokenized Timeline component.\n * Native Mantine abstract properties like `color`, `radius`, `bulletSize`, and `lineWidth`\n * have been stripped out to strictly enforce the structural mappings of the Recursica UI Kit.\n */\nexport type TimelineProps = RecursicaOverStyled<\n Omit<MantineTimelineProps, \"color\" | \"radius\" | \"bulletSize\" | \"lineWidth\"> &\n RecursicaTimelineProps\n>;\n\ninterface TimelineComponent\n extends React.ForwardRefExoticComponent<\n TimelineProps & React.RefAttributes<HTMLDivElement>\n > {\n Item: typeof TimelineItem;\n}\n\n/**\n * The `Timeline` component displays a list of events in chronological order.\n *\n * **Recursica Abstract:**\n * This component acts as a structural wrapper around Mantine's `<Timeline>`.\n * It forces alignment and geometry strictly via the UI Kit's `.itemBullet` and connector definitions.\n *\n * @example\n * ```tsx\n * <Timeline active={1}>\n * <Timeline.Item title=\"Event 1\" timestamp=\"Yesterday\">Description</Timeline.Item>\n * </Timeline>\n * ```\n */\nconst TimelineInner = React.forwardRef<HTMLDivElement, TimelineProps>(\n function Timeline({ overStyled = false, ...rest }, ref) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>)\n .classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineTimeline\n ref={ref}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as Omit<\n MantineTimelineProps,\n \"color\" | \"radius\" | \"bulletSize\" | \"lineWidth\"\n >)}\n />\n );\n },\n);\n\nTimelineInner.displayName = \"Timeline\";\n\nexport const Timeline = TimelineInner as TimelineComponent;\nTimeline.Item = TimelineItem;\n","import { forwardRef } from \"react\";\nimport {\n Title as MantineTitle,\n type TitleProps as MantineTitleProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\n\nimport { type RecursicaTitleProps } from \"@recursica/adapter-common\";\n\nexport type TitleProps = RecursicaOverStyled<RecursicaTitleProps>;\n\n/**\n * Enforces highly accessible structural markup utilizing semantic `<h1>` through `<h6>` tags securely bound directly to Recursica typographic scales.\n */\nexport const Title = forwardRef<HTMLHeadingElement, TitleProps>(function Title(\n { overStyled = false, order = 1, ...rest },\n ref,\n) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n const classNameProp = (sanitizedProps as Record<string, unknown>)\n .className as string | undefined;\n\n const typographyClass = `recursica_brand_typography_h${order}`;\n const mergedClassName = classNameProp\n ? `${typographyClass} ${classNameProp}`\n : typographyClass;\n\n return (\n <MantineTitle\n ref={ref}\n order={order}\n className={mergedClassName}\n {...(sanitizedProps as unknown as MantineTitleProps)}\n />\n );\n});\nTitle.displayName = \"Title\";\n","import React from \"react\";\nimport {\n Notification as MantineNotification,\n type NotificationProps as MantineNotificationProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Toast.module.css\";\n\nimport { type RecursicaToastProps } from \"@recursica/adapter-common\";\n\n/**\n * Toast component wrapping Mantine's Notification.\n *\n * Can be used as a standalone visual component to display a notification or message.\n */\nexport type ToastProps = RecursicaOverStyled<\n Omit<MantineNotificationProps, \"color\" | \"radius\" | \"variant\" | \"loading\"> &\n RecursicaToastProps\n>;\n\nexport const Toast = React.forwardRef<HTMLDivElement, ToastProps>(\n function Toast(\n {\n overStyled = false,\n variant = \"default\",\n withCloseButton = true,\n ...rest\n },\n ref,\n ) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n root: styles.root,\n body: styles.body,\n title: styles.title,\n description: styles.description,\n closeButton: styles.closeButton,\n icon: styles.icon,\n loader: styles.loader,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>)\n .classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n return (\n <MantineNotification\n ref={ref}\n withCloseButton={withCloseButton}\n withBorder={false} // Border is handled via CSS or tokens if needed\n data-variant={variant}\n classNames={mergedClassNames}\n loading={false}\n {...(sanitizedProps as unknown as Omit<\n MantineNotificationProps,\n \"color\" | \"radius\" | \"variant\" | \"loading\"\n >)}\n />\n );\n },\n);\n\nToast.displayName = \"Toast\";\n","import {\n Tooltip as MantineTooltip,\n type TooltipProps as MantineTooltipProps,\n} from \"@mantine/core\";\nimport {\n filterStylingProps,\n type RecursicaOverStyled,\n} from \"../../utils/filterStylingProps\";\nimport styles from \"./Tooltip.module.css\";\n\n// ============================================================\n// TOOLTIP\n// ============================================================\n\n/**\n * Recursica-specific props for Tooltip.\n */\nimport { type RecursicaTooltipProps } from \"@recursica/adapter-common\";\n\n/**\n * Recursica Tooltip component wrapping Mantine's Tooltip.\n *\n * Displays a floating label when the user hovers over or focuses a target element.\n * Unlike HoverCard, Tooltip is a single component (not composable) — content is\n * passed via the `label` prop, and the trigger is passed as `children`.\n *\n * ```tsx\n * <Tooltip label=\"Helpful information\" withBeak>\n * <Button>Hover me</Button>\n * </Tooltip>\n * ```\n *\n * Static sub-components available via dot-notation:\n * - `Tooltip.Floating` — Tooltip that follows the cursor\n * - `Tooltip.Group` — Shared hover delay group for multiple tooltips\n */\nexport type TooltipProps = RecursicaOverStyled<\n MantineTooltipProps & RecursicaTooltipProps\n>;\n\nconst TooltipBase = function Tooltip({\n overStyled = false,\n withBeak = true,\n ...rest\n}: TooltipProps) {\n const sanitizedProps = filterStylingProps(rest, overStyled);\n\n // Bind CSS module classes to Mantine's internal classNames API\n const mergedClassNames: Partial<Record<string, string>> = {\n tooltip: styles.tooltip,\n arrow: styles.arrow,\n };\n\n const classNamesProp = (sanitizedProps as Record<string, unknown>).classNames;\n if (\n classNamesProp &&\n typeof classNamesProp === \"object\" &&\n !Array.isArray(classNamesProp)\n ) {\n const o = classNamesProp as Record<string, string>;\n Object.keys(o).forEach((key) => {\n if (mergedClassNames[key]) {\n mergedClassNames[key] = `${mergedClassNames[key]} ${o[key]}`;\n } else {\n mergedClassNames[key] = o[key];\n }\n });\n }\n\n // arrowSize must be a JS number prop — Mantine uses it for inline width/height\n // and positioning offset (-arrowSize/2) calculations that cannot be CSS-driven.\n // Default to 16 to match the Recursica beak-size token (16px).\n const arrowSize =\n ((sanitizedProps as Record<string, unknown>).arrowSize as\n | number\n | undefined) ?? 16;\n\n // Resolve withBeak (Recursica) vs withArrow (Mantine).\n // withBeak takes precedence when both are provided.\n const withArrow = (sanitizedProps as Record<string, unknown>).withArrow as\n | boolean\n | undefined;\n const resolvedWithArrow = withBeak ?? withArrow;\n\n return (\n <MantineTooltip\n position=\"top\" /* Recursica default; Mantine defaults to \"bottom\" */\n multiline /* Always allow text wrapping within max-width */\n arrowSize={arrowSize}\n withArrow={resolvedWithArrow}\n classNames={mergedClassNames}\n {...(sanitizedProps as unknown as MantineTooltipProps)}\n />\n );\n};\nTooltipBase.displayName = \"Tooltip\";\n\n// ============================================================\n// DOT NOTATION EXPORT\n// ============================================================\n\ntype TooltipComponent = typeof TooltipBase & {\n Floating: typeof MantineTooltip.Floating;\n Group: typeof MantineTooltip.Group;\n};\n\nexport const Tooltip = TooltipBase as TooltipComponent;\nTooltip.Floating = MantineTooltip.Floating;\nTooltip.Group = MantineTooltip.Group;\n","import React from \"react\";\nimport { type RecursicaTransferListProps } from \"@recursica/adapter-common\";\n\nexport type TransferListProps = React.HTMLAttributes<HTMLDivElement> &\n RecursicaTransferListProps;\n\nexport const TransferList: React.FC<TransferListProps> = (props) => {\n return <div {...props}>TransferList</div>;\n};\n"],"names":["BLOCKED_STYLING_KEYS","LAYOUT_PROPS","SPACING_MAP","mapLayoutProps","props","mapped","key","value","filterStylingProps","overStyled","sanitized","prop","AccordionBase","variant","rest","sanitizedProps","mergedClassNames","styles","classNamesProp","o","classNameProp","jsx","MantineAccordion","AccordionItem","forwardRef","title","leftIcon","divider","children","ref","finalClass","jsxs","Fragment","AccordionControl","AccordionPanel","Accordion","Label","labelSize","labelAlignment","required","labelOptionalText","labelWithEditIcon","labelActionArea","onLabelEditClick","resolvedAlignment","resolvedOptionalText","restRecord","Input","FormControlLayout","formLayout","controlMaxWidth","controlMinWidth","leftSection","className","style","rootClass","shouldRenderLeft","InfoIcon","AlertIcon","AssistiveElement","assistiveVariant","assistiveWithIcon","IconComponent","FormControlWrapper","label","description","assistiveText","error","withAsterisk","userProvidedId","labelElement","generatedId","useId","id","resolvedAssistive","assistiveId","errorId","content","React","labelNode","C","E","t","R","y","r","s","n","d","l","m","u","a","c","e","T","i","L","A","p","b","ReadOnlyTextField","Box","ReadOnlyField","type","emptyValueComponent","Renderer","EmptyValueRenderer","displayValue","wrapperClass","WithReadOnlyWrapper","readOnly","readOnlyComponent","readOnlyType","readOnlyValue","readOnlyNativeProps","activeComponent","wrapperProps","ReadOnlyComponent","AutoComplete","disabled","defaultValue","MantineAutocomplete","_Avatar","size","icon","src","mapVariant","mapSize","computedStyle","MantineAvatar","Avatar","createPolymorphicComponent","_Badge","MantineBadge","Badge","Breadcrumb","separator","MantineBreadcrumbs","Loader","resolvedSize","MantineLoader","hasVisibleChildren","_Button","loaderVariant","loaderSize","useRecursicaLoader","hasLeftSection","hasRightSection","hasVisibleText","isIconOnly","contentType","userLoaderProps","resolvedLoaderSize","mergedLoaderProps","MantineButton","Button","CardBase","MantineCard","CardSection","CardHeader","CardFooter","CardContent","PolymorphicCard","_card","Card","CheckboxGroup","MantineCheckbox","Checkbox","isChecked","ReadOnlyComp","roNode","checkboxNode","CloseIcon","Chip","onRemove","removeLabel","dataError","isInteractive","MantineChip","Container","MantineContainer","DatePicker","DatePickerInput","Dropdown","containerWidth","data","injectedStyles","MantineSelect","FileInput","FileUpload","_Flex","gap","rowGap","columnGap","MantineFlex","Flex","Group","MantineGroup","HoverCardBase","withBeak","arrowSize","withArrow","resolvedWithArrow","MantineHoverCard","HoverCardTarget","HoverCardDropdown","HoverCard","_Link","MantineAnchor","Link","MenuBase","MantineMenu","MenuTarget","MenuDropdown","_MenuItem","MenuItem","MenuDivider","MenuLabel","MenuSubBase","MenuSubTarget","_MenuSubItem","MenuSubItem","MenuSubDropdown","MenuSub","Menu","ModalInner","withCloseButton","overlayProps","withOverlay","closeButtonProps","MantineModal","ModalBody","ModalFooter","onScroll","internalRef","scrolledTop","setScrolledTop","scrolledBottom","setScrolledBottom","checkScroll","scrollTop","scrollHeight","clientHeight","handleScroll","footer","bodyChildren","child","_a","node","Modal","NumberInput","hideControls","MantineNumberInput","NextPath","PrevPath","FirstPath","LastPath","paths","PaginationIcon","NextWithLabel","PrevWithLabel","FirstWithLabel","LastWithLabel","usePaginationClassNames","_PaginationRoot","stylingParams","MantinePagination","_PaginationNext","withLabel","renderIcon","_PaginationPrevious","_PaginationFirst","_PaginationLast","_Pagination","getControlProps","withLabels","mergedGetControlProps","control","baseProps","labelsIcons","Pagination","PanelBase","position","keepMounted","wrapHeaderText","MantineDrawer","PanelFooter","finalClassName","Panel","PopoverBase","MantinePopover","PopoverTarget","PopoverDropdown","Popover","RadioGroup","MantineRadio","RadioIcon","Radio","radioNode","ReadOnlySwitchField","checked","ReadOnlyBooleanField","useSegmentedControlClassNames","_SegmentedControl","orientation","fullWidth","MantineSegmentedControl","SegmentedControl","SliderReadOnlyValue","Slider","tooltipLabel","showInput","showMinMaxLabels","min","max","step","onChange","onChangeEnd","internalValue","setInternalValue","useState","resolvedValue","inputValue","setInputValue","useEffect","handleValueChange","val","handleInputChange","valStr","parsed","clamped","handleInputBlur","leadingIcon","MantineSlider","_Stack","MantineStack","Stack","_Stepper","MantineStepper","Stepper","SwitchGroup","MantineSwitch","Switch","thumbIcon","FinalThumbIcon","CheckIcon","switchNode","Table","_Tabs","MantineTabs","_TabsList","_TabsTab","_TabsPanel","Tabs","_Text","typographyClass","mergedClassName","MantineText","Text","TextArea","MantineTextarea","TextField","TimePicker","TimelineItem","timestamp","bulletVariant","MantineTimelineItem","TimelineInner","MantineTimeline","Timeline","Title","order","MantineTitle","Toast","MantineNotification","TooltipBase","MantineTooltip","Tooltip","TransferList"],"mappings":"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"}
|