@recursica/mantine-adapter 0.20.0 → 0.22.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/CHANGELOG.md +13 -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 +1624 -1498
- package/dist/mantine-adapter.js.map +1 -1
- package/dist/src/components/AutoComplete/AutoComplete.d.ts +9 -0
- package/dist/src/components/Avatar/Avatar.d.ts +1 -1
- package/dist/src/components/Badge/Badge.d.ts +1 -1
- package/dist/src/components/Button/Button.d.ts +11 -1
- package/dist/src/components/Card/Card.d.ts +1 -1
- package/dist/src/components/Flex/Flex.d.ts +1 -1
- package/dist/src/components/Link/Link.d.ts +1 -1
- package/dist/src/components/SegmentedControl/SegmentedControl.d.ts +6 -1
- package/dist/src/components/Text/Text.d.ts +1 -1
- package/dist/src/components/Toast/Toast.d.ts +1 -1
- package/dist/src/components/index.d.ts +1 -0
- package/package.json +5 -2
- package/src/GlobalExemptions.modules.css +13 -0
- package/src/components/AutoComplete/AUTOCOMPLETE_IMPLEMENTATION_NOTES.md +21 -0
- package/src/components/AutoComplete/AutoComplete.module.css +311 -0
- package/src/components/AutoComplete/AutoComplete.stories.tsx +187 -0
- package/src/components/AutoComplete/AutoComplete.tsx +154 -0
- package/src/components/Avatar/Avatar.module.css +40 -36
- package/src/components/Badge/Badge.module.css +4 -1
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +3 -10
- package/src/components/Button/Button.module.css +220 -57
- package/src/components/Button/Button.stories.tsx +68 -0
- package/src/components/Button/Button.tsx +42 -3
- package/src/components/Button/IMPLEMENTATION_NOTES.md +16 -0
- package/src/components/Card/Card.module.css +58 -1
- package/src/components/Card/Card.stories.tsx +4 -2
- package/src/components/Checkbox/Checkbox.module.css +74 -46
- package/src/components/Checkbox/Checkbox.stories.tsx +3 -0
- package/src/components/Checkbox/CheckboxGroup.tsx +1 -9
- package/src/components/Chip/Chip.module.css +19 -1
- package/src/components/DatePicker/DatePicker.module.css +45 -0
- package/src/components/Dropdown/Dropdown.module.css +42 -15
- package/src/components/Dropdown/Dropdown.stories.tsx +3 -0
- package/src/components/Dropdown/Dropdown.tsx +5 -1
- package/src/components/FileInput/FileInput.module.css +50 -0
- package/src/components/FileUpload/FileUpload.module.css +43 -0
- package/src/components/FormControlLayout/FormControlLayout.module.css +12 -2
- package/src/components/FormControlWrapper/FormControlWrapper.module.css +66 -0
- package/src/components/HoverCard/HoverCard.module.css +12 -5
- package/src/components/Label/Label.module.css +11 -3
- package/src/components/Link/Link.module.css +8 -0
- package/src/components/Menu/Menu.module.css +73 -30
- package/src/components/Modal/Modal.module.css +92 -47
- package/src/components/NumberInput/NumberInput.module.css +46 -15
- package/src/components/NumberInput/NumberInput.tsx +5 -1
- package/src/components/Pagination/Pagination.module.css +123 -41
- package/src/components/Panel/Panel.module.css +55 -3
- package/src/components/Popover/Popover.module.css +6 -4
- package/src/components/Radio/Radio.module.css +72 -59
- package/src/components/Radio/Radio.stories.tsx +3 -0
- package/src/components/Radio/RadioGroup.tsx +1 -8
- package/src/components/ReadOnlyField/ReadOnlyField.module.css +14 -0
- package/src/components/ReadOnlyField/ReadOnlyField.tsx +16 -1
- package/src/components/SegmentedControl/SegmentedControl.module.css +106 -41
- package/src/components/SegmentedControl/SegmentedControl.stories.tsx +1 -4
- package/src/components/SegmentedControl/SegmentedControl.tsx +18 -4
- package/src/components/Slider/Slider.module.css +89 -0
- package/src/components/Stepper/Stepper.module.css +53 -2
- package/src/components/Switch/Switch.module.css +62 -23
- package/src/components/Switch/Switch.stories.tsx +3 -0
- package/src/components/Switch/Switch.tsx +1 -0
- package/src/components/Switch/SwitchGroup.tsx +3 -10
- package/src/components/Tabs/Tabs.module.css +33 -12
- package/src/components/TextArea/TextArea.module.css +58 -120
- package/src/components/TextArea/TextArea.stories.tsx +3 -0
- package/src/components/TextArea/TextArea.tsx +7 -3
- package/src/components/TextField/TextField.module.css +46 -15
- package/src/components/TextField/TextField.tsx +5 -1
- package/src/components/TimePicker/TimePicker.module.css +44 -0
- package/src/components/Timeline/Timeline.module.css +6 -0
- package/src/components/Toast/Toast.module.css +62 -1
- package/src/components/Toast/Toast.tsx +1 -1
- package/src/components/Tooltip/Tooltip.module.css +9 -0
- package/src/components/TransferList/TransferList.module.css +41 -0
- package/src/components/index.ts +1 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { AutocompleteProps as MantineAutocompleteProps, InputWrapperProps } from '@mantine/core';
|
|
3
|
+
import { ReadOnlyControlProps } from '@recursica/adapter-common';
|
|
4
|
+
import { RecursicaOverStyled } from '../../utils/filterStylingProps';
|
|
5
|
+
import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
|
|
6
|
+
export interface RecursicaAutoCompleteProps extends Omit<MantineAutocompleteProps, "size" | "variant" | "radius" | "wrapperProps">, Pick<InputWrapperProps, "label" | "error" | "required" | "withAsterisk" | "id">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth">, ReadOnlyControlProps {
|
|
7
|
+
}
|
|
8
|
+
export type AutoCompleteProps = RecursicaOverStyled<RecursicaAutoCompleteProps>;
|
|
9
|
+
export declare const AutoComplete: React.ForwardRefExoticComponent<AutoCompleteProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -14,7 +14,7 @@ export type AvatarProps = RecursicaOverStyled<Omit<MantineAvatarProps, "variant"
|
|
|
14
14
|
*/
|
|
15
15
|
export declare const Avatar: (<C = "div">(props: import('@mantine/core').PolymorphicComponentProps<C, AvatarProps>) => React.ReactElement) & Omit<React.FunctionComponent<((AvatarProps & {
|
|
16
16
|
component?: any;
|
|
17
|
-
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "name" | "icon" | "size" | "
|
|
17
|
+
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "name" | "icon" | "size" | "component" | "alt" | "src" | "gradient" | "imageProps" | "autoContrast" | "allowedInitialsColors"> & {
|
|
18
18
|
ref?: any;
|
|
19
19
|
renderRoot?: (props: any) => any;
|
|
20
20
|
}) | (AvatarProps & {
|
|
@@ -12,7 +12,7 @@ export type BadgeProps = RecursicaOverStyled<Omit<MantineBadgeProps, "variant" |
|
|
|
12
12
|
*/
|
|
13
13
|
export declare const Badge: (<C = "div">(props: import('@mantine/core').PolymorphicComponentProps<C, BadgeProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<((BadgeProps & {
|
|
14
14
|
component?: any;
|
|
15
|
-
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "circle" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "
|
|
15
|
+
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "circle" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "component" | "leftSection" | "rightSection" | "gradient" | "autoContrast" | "fullWidth"> & {
|
|
16
16
|
ref?: any;
|
|
17
17
|
renderRoot?: (props: any) => any;
|
|
18
18
|
}) | (BadgeProps & {
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
+
import { RecursicaLoaderProps } from '../Loader/Loader';
|
|
2
3
|
import { ButtonProps as MantineButtonProps } from '@mantine/core';
|
|
3
4
|
import { RecursicaOverStyled } from '../../utils/filterStylingProps';
|
|
4
5
|
export interface RecursicaButtonProps {
|
|
6
|
+
/** The visual style variant of the button */
|
|
5
7
|
variant?: "solid" | "outline" | "text";
|
|
8
|
+
/** The size of the button */
|
|
6
9
|
size?: "default" | "small";
|
|
10
|
+
/** An optional icon element to display to the left of the button text. Replaces Mantine's leftSection. */
|
|
7
11
|
icon?: React.ReactNode;
|
|
12
|
+
/** Which Recursica Loader variant to use */
|
|
13
|
+
loaderVariant?: RecursicaLoaderProps["variant"];
|
|
14
|
+
/** The size variant for the loader */
|
|
15
|
+
loaderSize?: RecursicaLoaderProps["size"];
|
|
16
|
+
/** Whether to use the Recursica loader or fallback to the Mantine loader */
|
|
17
|
+
useRecursicaLoader?: boolean;
|
|
8
18
|
}
|
|
9
19
|
export type ButtonProps = RecursicaOverStyled<Omit<MantineButtonProps, "variant" | "size" | "leftSection" | "fullWidth"> & RecursicaButtonProps>;
|
|
10
20
|
/**
|
|
@@ -25,7 +35,7 @@ export type ButtonProps = RecursicaOverStyled<Omit<MantineButtonProps, "variant"
|
|
|
25
35
|
*/
|
|
26
36
|
export declare const Button: (<C = "button">(props: import('@mantine/core').PolymorphicComponentProps<C, ButtonProps>) => React.ReactElement) & Omit<React.FunctionComponent<((ButtonProps & {
|
|
27
37
|
component?: any;
|
|
28
|
-
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "color" | "children" | "radius" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "disabled" | "icon" | "justify" | "size" | "gradient" | "autoContrast" | "
|
|
38
|
+
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "color" | "children" | "radius" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "disabled" | "icon" | "justify" | "size" | "component" | "rightSection" | "data-disabled" | "gradient" | "autoContrast" | "loading" | "loaderProps" | "loaderVariant" | "loaderSize" | "useRecursicaLoader"> & {
|
|
29
39
|
ref?: any;
|
|
30
40
|
renderRoot?: (props: any) => any;
|
|
31
41
|
}) | (ButtonProps & {
|
|
@@ -32,7 +32,7 @@ export declare const CardContent: import('react').ForwardRefExoticComponent<Card
|
|
|
32
32
|
*/
|
|
33
33
|
declare const PolymorphicCard: (<C = "div">(props: import('@mantine/core').PolymorphicComponentProps<C, CardProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<((CardProps & {
|
|
34
34
|
component?: any;
|
|
35
|
-
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "shadow" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "children" | "radius" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "component" | "
|
|
35
|
+
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "shadow" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "children" | "radius" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "component" | "padding" | "withBorder"> & {
|
|
36
36
|
ref?: any;
|
|
37
37
|
renderRoot?: (props: any) => any;
|
|
38
38
|
}) | (CardProps & {
|
|
@@ -29,7 +29,7 @@ export type FlexProps = MantineFlexProps & RecursicaFlexProps;
|
|
|
29
29
|
*/
|
|
30
30
|
export declare const Flex: (<C = "div">(props: import('@mantine/core').PolymorphicComponentProps<C, FlexProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<(MantineFlexProps & RecursicaFlexProps & {
|
|
31
31
|
component?: any;
|
|
32
|
-
} & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap" | "top" | "left" | "bottom" | "right" | "key" | "defaultValue" | "onChange" | "slot" | "title" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "hidden" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "content" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "exportparts" | "part" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "justify" | "component" | "
|
|
32
|
+
} & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap" | "top" | "left" | "bottom" | "right" | "key" | "defaultValue" | "onChange" | "slot" | "title" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "hidden" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "content" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "exportparts" | "part" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "justify" | "component" | "wrap" | "align" | "direction"> & {
|
|
33
33
|
ref?: any;
|
|
34
34
|
renderRoot?: (props: any) => any;
|
|
35
35
|
}) | (MantineFlexProps & RecursicaFlexProps & {
|
|
@@ -24,7 +24,7 @@ export type LinkProps = RecursicaOverStyled<Omit<MantineAnchorProps, "underline"
|
|
|
24
24
|
*/
|
|
25
25
|
export declare const Link: (<C = "a">(props: import('@mantine/core').PolymorphicComponentProps<C, LinkProps>) => React.ReactElement) & Omit<React.FunctionComponent<((LinkProps & {
|
|
26
26
|
component?: any;
|
|
27
|
-
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "color" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "icon" | "inherit" | "inline" | "size" | "
|
|
27
|
+
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "color" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "icon" | "inherit" | "inline" | "size" | "__staticSelector" | "component" | "gradient" | "lineClamp" | "truncate"> & {
|
|
28
28
|
ref?: any;
|
|
29
29
|
renderRoot?: (props: any) => any;
|
|
30
30
|
}) | (LinkProps & {
|
|
@@ -5,8 +5,13 @@ export interface RecursicaSegmentedControlProps {
|
|
|
5
5
|
orientation?: "horizontal" | "vertical";
|
|
6
6
|
/** If true, the control will take up the full width of its container */
|
|
7
7
|
fullWidth?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* SegmentedControl should NOT be allowed to be disabled by design.
|
|
10
|
+
* This component explicitly disables the `disabled` prop.
|
|
11
|
+
*/
|
|
12
|
+
disabled?: never;
|
|
8
13
|
}
|
|
9
|
-
export type SegmentedControlProps = RecursicaOverStyled<Omit<MantineSegmentedControlProps, "variant" | "size" | "radius" | "color" | "classNames" | "className"> & {
|
|
14
|
+
export type SegmentedControlProps = RecursicaOverStyled<Omit<MantineSegmentedControlProps, "variant" | "size" | "radius" | "color" | "classNames" | "className" | "disabled"> & {
|
|
10
15
|
className?: string;
|
|
11
16
|
classNames?: Partial<Record<string, string>>;
|
|
12
17
|
} & RecursicaSegmentedControlProps>;
|
|
@@ -23,7 +23,7 @@ export type TextProps = RecursicaOverStyled<RecursicaTextProps>;
|
|
|
23
23
|
*/
|
|
24
24
|
export declare const Text: (<C = "p">(props: import('@mantine/core').PolymorphicComponentProps<C, TextProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<((TextProps & {
|
|
25
25
|
component?: any;
|
|
26
|
-
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "span" | "color" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "inherit" | "inline" | "size" | "
|
|
26
|
+
}) & Omit<Omit<any, "ref">, "className" | "classNames" | "style" | "styles" | "vars" | "p" | "px" | "py" | "pt" | "pb" | "pl" | "pr" | "bg" | "c" | "opacity" | "ff" | "fz" | "fw" | "lts" | "ta" | "lh" | "fs" | "tt" | "td" | "bd" | "w" | "miw" | "maw" | "h" | "mih" | "mah" | "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "top" | "left" | "bottom" | "right" | "span" | "color" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "variant" | "attributes" | "overStyled" | "inherit" | "inline" | "size" | "__staticSelector" | "component" | "gradient" | "lineClamp" | "truncate"> & {
|
|
27
27
|
ref?: any;
|
|
28
28
|
renderRoot?: (props: any) => any;
|
|
29
29
|
}) | (TextProps & {
|
|
@@ -6,7 +6,7 @@ export interface RecursicaToastProps {
|
|
|
6
6
|
* The visual variant of the toast.
|
|
7
7
|
* @default "default"
|
|
8
8
|
*/
|
|
9
|
-
variant?: "default";
|
|
9
|
+
variant?: "default" | "error" | "success";
|
|
10
10
|
/**
|
|
11
11
|
* Loading state is natively unsupported by Recursica UI Kit.
|
|
12
12
|
* If a loading state is required, pass a `<Loader size="sm" />` directly into the `icon` prop.
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"url": "git+https://github.com/borderux/recursica.git",
|
|
14
14
|
"directory": "packages/mantine-adapter"
|
|
15
15
|
},
|
|
16
|
-
"version": "0.
|
|
16
|
+
"version": "0.22.0",
|
|
17
17
|
"type": "module",
|
|
18
18
|
"main": "./dist/mantine-adapter.cjs",
|
|
19
19
|
"module": "./dist/mantine-adapter.js",
|
|
@@ -47,7 +47,9 @@
|
|
|
47
47
|
"build": "vite build --mode library",
|
|
48
48
|
"build-storybook": "storybook build -o storybook-static",
|
|
49
49
|
"lint": "eslint .",
|
|
50
|
-
"storybook": "storybook dev -p 6006"
|
|
50
|
+
"storybook": "storybook dev -p 6006",
|
|
51
|
+
"analyze-tokens": "analyze-tokens --css recursica_variables_scoped.css --dir src/components --output token-analysis.json",
|
|
52
|
+
"prebuild": "npm run analyze-tokens"
|
|
51
53
|
},
|
|
52
54
|
"devDependencies": {
|
|
53
55
|
"@chromatic-com/storybook": "^5.1.1",
|
|
@@ -55,6 +57,7 @@
|
|
|
55
57
|
"@recursica/adapter-common": "*",
|
|
56
58
|
"@recursica/recursica-postcss-vars": "*",
|
|
57
59
|
"@recursica/storybook-template": "*",
|
|
60
|
+
"@recursica/token-analyzer": "*",
|
|
58
61
|
"@repo/typescript-config": "*",
|
|
59
62
|
"@storybook/addon-a11y": "^10.3.3",
|
|
60
63
|
"@storybook/addon-docs": "^10.3.3",
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GLOBAL EXEMPTIONS
|
|
3
|
+
*
|
|
4
|
+
* This file hosts global, brand, and layout variables that are defined in
|
|
5
|
+
* recursica_variables_scoped.css but are not used by any specific component.
|
|
6
|
+
* Isolating them here keeps individual component stylesheets clean and focused.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/* ==== GLOBAL ICON STYLE ====
|
|
10
|
+
Global layout option specifying the overall SVG rendering style (solid/outline).
|
|
11
|
+
Note to Forge Devs: style is not a CSS property or variable type and cannot be applied in standard CSS stylesheets.
|
|
12
|
+
This variable is ignored in the UI adapters and should be reviewed by the Forge team. */
|
|
13
|
+
/* recursica-ignore: --recursica_ui-kit_globals_icon_style */
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# AutoComplete Implementation Notes
|
|
2
|
+
|
|
3
|
+
## Form Control Wrapping
|
|
4
|
+
|
|
5
|
+
The `AutoComplete` component is wrapped using the `WithReadOnlyWrapper` to seamlessly bridge standard `InputWrapperProps` attributes (like `label`, `error`, `assistiveText`) directly onto the macro Recursica `<FormControlWrapper>`.
|
|
6
|
+
|
|
7
|
+
## CSS Layout Execution
|
|
8
|
+
|
|
9
|
+
The baseline structure maps identical `HARDCODED VALUES` as standard text inputs (`border-width: 1px`, `display: flex`). The `.root` dynamically overrides the `--input-left-section-size` and `--input-right-section-size` to accurately allocate whitespace for prepended or appended icons natively matching the underlying UI token layout system securely.
|
|
10
|
+
|
|
11
|
+
## Dropdown Styling
|
|
12
|
+
|
|
13
|
+
The Mantine `<Autocomplete>` dropdown menu and options are styled strictly using native UI-Kit variables mapping border radii, shadows, and base colors (`.dropdown` and `.option`).
|
|
14
|
+
|
|
15
|
+
## State Cascade Architecture
|
|
16
|
+
|
|
17
|
+
Focus, errors, and disabled visual states are enforced explicitly via the outer `<FormControlWrapper>` boundary emitting context down structurally (`[data-error]`, `[data-disabled]`) and evaluated efficiently against scoped nested selectors natively inside `AutoComplete.module.css`.
|
|
18
|
+
|
|
19
|
+
## Missing Active Option Color
|
|
20
|
+
|
|
21
|
+
Currently, there is no explicit JSON token for the background color of an active/hovered option in the AutoComplete dropdown. We temporarily map `.option:hover` and `.option[data-combobox-active]` to the `--recursica_ui-kit_components_autocomplete_variants_states_focus_properties_colors_background` variable. Because this variable maps to the base field background, the highlight is currently invisible. This will be updated once the correct token is added to the UI kit.
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/* EXEMPTIONS:
|
|
2
|
+
- state-specific border-size variables are ignored because the input box uses a uniform static boundary to prevent
|
|
3
|
+
unexpected layout shifts or flickering when switching between active, focused, or error states. */
|
|
4
|
+
/* recursica-ignore: --recursica_ui-kit_components_autocomplete_variants_states_default_properties_border-size */
|
|
5
|
+
/* recursica-ignore: --recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_border-size */
|
|
6
|
+
/* recursica-ignore: --recursica_ui-kit_components_autocomplete_variants_states_error_properties_border-size */
|
|
7
|
+
/* recursica-ignore: --recursica_ui-kit_components_autocomplete_variants_states_focus_properties_border-size */
|
|
8
|
+
|
|
9
|
+
/* LAYOUT SPACING OVERRIDES:
|
|
10
|
+
- Sets the --form-control-margin-bottom spacing hook to map component-specific layout tokens. */
|
|
11
|
+
.layoutOverride {
|
|
12
|
+
--form-control-margin-bottom: var(
|
|
13
|
+
--recursica_ui-kit_components_autocomplete_variants_layouts_stacked_properties_top-bottom-margin
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.layoutOverride[data-form-layout="side-by-side"] {
|
|
18
|
+
--form-control-margin-bottom: var(
|
|
19
|
+
--recursica_ui-kit_components_autocomplete_variants_layouts_side-by-side_properties_top-bottom-margin
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* HARDCODED VALUES:
|
|
24
|
+
- border-width: 1px. Native geometric boundary for the input box.
|
|
25
|
+
- border-style: solid. Native structural rendering rule.
|
|
26
|
+
- outline: none. Bypassing browser focus rings to rely strictly on Recursica focus states natively.
|
|
27
|
+
- flex/layout: display: flex on the root wrapper safely encapsulating internal section rendering.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
.root {
|
|
31
|
+
display: flex;
|
|
32
|
+
position: relative;
|
|
33
|
+
width: 100%;
|
|
34
|
+
min-height: var(
|
|
35
|
+
--recursica_ui-kit_components_autocomplete_properties_min-height
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
/* Override Mantine native Input variables governing section spacing padding mathematics safely */
|
|
39
|
+
--input-left-section-size: calc(
|
|
40
|
+
var(
|
|
41
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
42
|
+
) +
|
|
43
|
+
var(--recursica_ui-kit_components_autocomplete_properties_icon-size) +
|
|
44
|
+
var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap)
|
|
45
|
+
);
|
|
46
|
+
--input-right-section-size: calc(
|
|
47
|
+
var(
|
|
48
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
49
|
+
) +
|
|
50
|
+
var(--recursica_ui-kit_components_autocomplete_properties_icon-size) +
|
|
51
|
+
var(--recursica_ui-kit_components_autocomplete_properties_icon-text-gap)
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.input {
|
|
56
|
+
/* Structural Overrides */
|
|
57
|
+
width: 100%;
|
|
58
|
+
box-sizing: border-box;
|
|
59
|
+
margin: 0;
|
|
60
|
+
|
|
61
|
+
/* Box Geometry */
|
|
62
|
+
min-height: var(
|
|
63
|
+
--recursica_ui-kit_components_autocomplete_properties_min-height
|
|
64
|
+
);
|
|
65
|
+
padding-top: var(
|
|
66
|
+
--recursica_ui-kit_components_autocomplete_properties_vertical-padding
|
|
67
|
+
);
|
|
68
|
+
padding-bottom: var(
|
|
69
|
+
--recursica_ui-kit_components_autocomplete_properties_vertical-padding
|
|
70
|
+
);
|
|
71
|
+
padding-left: var(
|
|
72
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
73
|
+
);
|
|
74
|
+
padding-right: var(
|
|
75
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
76
|
+
);
|
|
77
|
+
border-radius: var(
|
|
78
|
+
--recursica_ui-kit_components_autocomplete_properties_border-radius
|
|
79
|
+
);
|
|
80
|
+
border-width: 1px;
|
|
81
|
+
border-style: solid;
|
|
82
|
+
|
|
83
|
+
/* Strict Typography Unification */
|
|
84
|
+
font-family: var(
|
|
85
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-family
|
|
86
|
+
);
|
|
87
|
+
font-size: var(
|
|
88
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-size
|
|
89
|
+
);
|
|
90
|
+
font-style: var(
|
|
91
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-style
|
|
92
|
+
);
|
|
93
|
+
font-weight: var(
|
|
94
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-weight
|
|
95
|
+
);
|
|
96
|
+
letter-spacing: var(
|
|
97
|
+
--recursica_ui-kit_components_autocomplete_properties_text_letter-spacing
|
|
98
|
+
);
|
|
99
|
+
line-height: var(
|
|
100
|
+
--recursica_ui-kit_components_autocomplete_properties_text_line-height
|
|
101
|
+
);
|
|
102
|
+
text-decoration: var(
|
|
103
|
+
--recursica_ui-kit_components_autocomplete_properties_text_text-decoration
|
|
104
|
+
);
|
|
105
|
+
text-transform: var(
|
|
106
|
+
--recursica_ui-kit_components_autocomplete_properties_text_text-transform
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
/* Base State Default Execution */
|
|
110
|
+
background-color: var(
|
|
111
|
+
--recursica_ui-kit_components_autocomplete_variants_states_default_properties_colors_background
|
|
112
|
+
);
|
|
113
|
+
border-color: var(
|
|
114
|
+
--recursica_ui-kit_components_autocomplete_variants_states_default_properties_colors_border-color
|
|
115
|
+
);
|
|
116
|
+
color: var(
|
|
117
|
+
--recursica_ui-kit_components_autocomplete_variants_states_default_properties_colors_text
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
outline: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.input::placeholder {
|
|
124
|
+
opacity: var(
|
|
125
|
+
--recursica_ui-kit_components_autocomplete_properties_placeholder-opacity
|
|
126
|
+
);
|
|
127
|
+
color: inherit;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Dynamic Padding Overrides */
|
|
131
|
+
.root[data-with-left-section] .input {
|
|
132
|
+
padding-left: var(--input-left-section-size);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.root[data-with-right-section] .input {
|
|
136
|
+
padding-right: var(--input-right-section-size);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* Flexible End-Caps (Icons, actions) */
|
|
140
|
+
.section {
|
|
141
|
+
display: flex;
|
|
142
|
+
align-items: center;
|
|
143
|
+
height: 100%;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.section[data-position="left"] {
|
|
147
|
+
justify-content: flex-start;
|
|
148
|
+
padding-left: var(
|
|
149
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.section[data-position="right"] {
|
|
154
|
+
justify-content: flex-end;
|
|
155
|
+
padding-right: var(
|
|
156
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.section :global(svg) {
|
|
161
|
+
width: var(--recursica_ui-kit_components_autocomplete_properties_icon-size);
|
|
162
|
+
height: var(--recursica_ui-kit_components_autocomplete_properties_icon-size);
|
|
163
|
+
color: var(
|
|
164
|
+
--recursica_ui-kit_components_autocomplete_variants_states_default_properties_colors_leading-icon
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.section[data-position="right"] :global(svg) {
|
|
169
|
+
color: var(
|
|
170
|
+
--recursica_ui-kit_components_autocomplete_variants_states_default_properties_colors_trailing-icon
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* Dropdown and Options */
|
|
175
|
+
/* We want to make sure the dropdown inherits font correctly. */
|
|
176
|
+
.dropdown {
|
|
177
|
+
background-color: var(
|
|
178
|
+
--recursica_ui-kit_components_autocomplete_variants_states_default_properties_colors_background
|
|
179
|
+
);
|
|
180
|
+
border: 1px solid
|
|
181
|
+
var(
|
|
182
|
+
--recursica_ui-kit_components_autocomplete_variants_states_default_properties_colors_border-color
|
|
183
|
+
);
|
|
184
|
+
border-radius: var(
|
|
185
|
+
--recursica_ui-kit_components_autocomplete_properties_border-radius
|
|
186
|
+
);
|
|
187
|
+
box-shadow: var(--recursica_ui-kit_components_menu_properties_elevation);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.option {
|
|
191
|
+
font-family: var(
|
|
192
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-family
|
|
193
|
+
);
|
|
194
|
+
font-size: var(
|
|
195
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-size
|
|
196
|
+
);
|
|
197
|
+
font-weight: var(
|
|
198
|
+
--recursica_ui-kit_components_autocomplete_properties_text_font-weight
|
|
199
|
+
);
|
|
200
|
+
color: var(
|
|
201
|
+
--recursica_ui-kit_components_autocomplete_variants_states_default_properties_colors_text
|
|
202
|
+
);
|
|
203
|
+
padding: calc(
|
|
204
|
+
var(
|
|
205
|
+
--recursica_ui-kit_components_autocomplete_properties_vertical-padding
|
|
206
|
+
) *
|
|
207
|
+
0.75
|
|
208
|
+
)
|
|
209
|
+
var(
|
|
210
|
+
--recursica_ui-kit_components_autocomplete_properties_horizontal-padding
|
|
211
|
+
);
|
|
212
|
+
cursor: pointer;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.option[data-selected="true"],
|
|
216
|
+
.option[data-selected],
|
|
217
|
+
.option[data-combobox-selected="true"],
|
|
218
|
+
.option[data-combobox-selected],
|
|
219
|
+
.option[data-combobox-active="true"],
|
|
220
|
+
.option[data-combobox-active],
|
|
221
|
+
.option[data-hovered="true"],
|
|
222
|
+
.option[data-hovered],
|
|
223
|
+
.option:hover {
|
|
224
|
+
background-color: var(
|
|
225
|
+
--recursica_ui-kit_components_autocomplete_variants_states_focus_properties_colors_background
|
|
226
|
+
);
|
|
227
|
+
color: var(
|
|
228
|
+
--recursica_ui-kit_components_autocomplete_variants_states_focus_properties_colors_text
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* -------------------------------------
|
|
233
|
+
STATE CASCADE ARCHITECTURE
|
|
234
|
+
-------------------------------------- */
|
|
235
|
+
|
|
236
|
+
/* Focus State Mapping (Triggered internally via browser pseudo-pseudo-class) */
|
|
237
|
+
.input:focus-within,
|
|
238
|
+
.input:focus {
|
|
239
|
+
border-color: var(
|
|
240
|
+
--recursica_ui-kit_components_autocomplete_variants_states_focus_properties_colors_border-color
|
|
241
|
+
);
|
|
242
|
+
background-color: var(
|
|
243
|
+
--recursica_ui-kit_components_autocomplete_variants_states_focus_properties_colors_background
|
|
244
|
+
);
|
|
245
|
+
color: var(
|
|
246
|
+
--recursica_ui-kit_components_autocomplete_variants_states_focus_properties_colors_text
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.root:focus-within .section[data-position="left"] :global(svg) {
|
|
251
|
+
color: var(
|
|
252
|
+
--recursica_ui-kit_components_autocomplete_variants_states_focus_properties_colors_leading-icon
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.root:focus-within .section[data-position="right"] :global(svg) {
|
|
257
|
+
color: var(
|
|
258
|
+
--recursica_ui-kit_components_autocomplete_variants_states_focus_properties_colors_trailing-icon
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* Error State Mapping (Propagated strictly down from the wrapper DOM context) */
|
|
263
|
+
.root[data-error] .input {
|
|
264
|
+
border-color: var(
|
|
265
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_border-color
|
|
266
|
+
);
|
|
267
|
+
background-color: var(
|
|
268
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_background
|
|
269
|
+
);
|
|
270
|
+
color: var(
|
|
271
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_text
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.root[data-error] .section[data-position="left"] :global(svg) {
|
|
276
|
+
color: var(
|
|
277
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_leading-icon
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.root[data-error] .section[data-position="right"] :global(svg) {
|
|
282
|
+
color: var(
|
|
283
|
+
--recursica_ui-kit_components_autocomplete_variants_states_error_properties_colors_trailing-icon
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/* Disabled State Mapping (Propagated strictly down from the wrapper DOM context) */
|
|
288
|
+
.root[data-disabled] .input {
|
|
289
|
+
border-color: var(
|
|
290
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_border-color
|
|
291
|
+
);
|
|
292
|
+
background-color: var(
|
|
293
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_background
|
|
294
|
+
);
|
|
295
|
+
color: var(
|
|
296
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_text
|
|
297
|
+
);
|
|
298
|
+
cursor: not-allowed;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.root[data-disabled] .section[data-position="left"] :global(svg) {
|
|
302
|
+
color: var(
|
|
303
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_leading-icon
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.root[data-disabled] .section[data-position="right"] :global(svg) {
|
|
308
|
+
color: var(
|
|
309
|
+
--recursica_ui-kit_components_autocomplete_variants_states_disabled_properties_colors_trailing-icon
|
|
310
|
+
);
|
|
311
|
+
}
|