@recursica/mantine-adapter 0.26.1 → 0.28.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 +22 -0
- package/dist/mantine-adapter.cjs +11 -1
- package/dist/mantine-adapter.cjs.map +1 -1
- package/dist/mantine-adapter.css +1 -1
- package/dist/mantine-adapter.js +2203 -1995
- package/dist/mantine-adapter.js.map +1 -1
- package/dist/src/components/Accordion/Accordion.d.ts +3 -4
- package/dist/src/components/AutoComplete/AutoComplete.d.ts +4 -6
- package/dist/src/components/Avatar/Avatar.d.ts +2 -3
- package/dist/src/components/Badge/Badge.d.ts +1 -1
- package/dist/src/components/Button/Button.d.ts +1 -1
- package/dist/src/components/Card/Card.d.ts +10 -2
- package/dist/src/components/Checkbox/CheckboxGroup.d.ts +2 -6
- package/dist/src/components/Container/Container.d.ts +14 -2
- package/dist/src/components/DatePicker/DatePicker.d.ts +1 -5
- package/dist/src/components/Dropdown/Dropdown.d.ts +1 -1
- package/dist/src/components/Flex/Flex.d.ts +26 -3
- package/dist/src/components/FormControlWrapper/FormControlWrapper.d.ts +1 -0
- package/dist/src/components/Group/Group.d.ts +14 -2
- package/dist/src/components/Link/Link.d.ts +3 -4
- package/dist/src/components/Menu/Menu.d.ts +2 -2
- package/dist/src/components/Panel/Panel.d.ts +6 -4
- package/dist/src/components/Radio/RadioGroup.d.ts +2 -6
- package/dist/src/components/Slider/Slider.d.ts +1 -5
- package/dist/src/components/Stack/Stack.d.ts +27 -4
- package/dist/src/components/Stepper/Stepper.d.ts +4 -2
- package/dist/src/components/Switch/SwitchGroup.d.ts +2 -6
- package/dist/src/components/Table/Table.d.ts +16 -3
- package/dist/src/components/Tabs/Tabs.d.ts +4 -2
- package/dist/src/components/Text/Text.d.ts +3 -2
- package/dist/src/components/TextArea/TextArea.d.ts +1 -1
- package/dist/src/components/TextField/TextField.d.ts +1 -5
- package/dist/src/components/Title/Title.d.ts +2 -1
- package/dist/src/components/index.d.ts +1 -0
- package/dist/src/index.d.ts +153 -1
- package/dist/src/utils/filterStylingProps.d.ts +1 -1
- package/package.json +1 -1
- package/src/OverStyling.tsx +67 -3
- package/src/components/Accordion/Accordion.tsx +1 -1
- package/src/components/AutoComplete/AutoComplete.tsx +13 -4
- package/src/components/Avatar/Avatar.tsx +1 -1
- package/src/components/Card/CARD_IMPLEMENTATION_NOTES.md +7 -0
- package/src/components/Card/Card.module.css +1 -0
- package/src/components/Card/Card.tsx +27 -1
- package/src/components/Checkbox/CheckboxGroup.tsx +6 -3
- package/src/components/Container/Container.tsx +4 -2
- package/src/components/DatePicker/DatePicker.tsx +1 -3
- package/src/components/Dropdown/Dropdown.tsx +4 -11
- package/src/components/Flex/Flex.tsx +7 -2
- package/src/components/FormControlWrapper/FormControlWrapper.tsx +1 -0
- package/src/components/Group/Group.tsx +7 -2
- package/src/components/Link/Link.tsx +3 -3
- package/src/components/Panel/PANEL_IMPLEMENTATION_NOTES.md +3 -3
- package/src/components/Panel/Panel.stories.tsx +8 -8
- package/src/components/Panel/Panel.tsx +11 -4
- package/src/components/Radio/RadioGroup.tsx +6 -3
- package/src/components/ReadOnlyField/ReadOnlyField.tsx +5 -1
- package/src/components/Stack/Stack.tsx +7 -2
- package/src/components/Stepper/Stepper.tsx +5 -1
- package/src/components/Switch/SwitchGroup.tsx +6 -3
- package/src/components/Table/Table.module.css +7 -0
- package/src/components/Table/Table.stories.tsx +33 -3
- package/src/components/Table/Table.tsx +56 -5
- package/src/components/Tabs/Tabs.tsx +5 -1
- package/src/components/Text/Text.tsx +3 -1
- package/src/components/TextArea/TextArea.tsx +2 -9
- package/src/components/Title/Title.tsx +3 -1
- package/src/components/index.ts +1 -0
- package/src/index.ts +168 -1
- package/src/utils/filterStylingProps.ts +1 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { TextProps as MantineTextProps } from '@mantine/core';
|
|
1
2
|
import { RecursicaOverStyled } from '../../utils/filterStylingProps';
|
|
2
3
|
import { RecursicaTextProps } from '@recursica/adapter-common';
|
|
3
|
-
export type TextProps = RecursicaOverStyled<RecursicaTextProps>;
|
|
4
|
+
export type TextProps = RecursicaOverStyled<Omit<MantineTextProps, "variant"> & RecursicaTextProps>;
|
|
4
5
|
/**
|
|
5
6
|
* A generalized typographical wrapper limiting text properties to bounded Recursica UI-kit tokens inherently.
|
|
6
7
|
* Do not use for semantic headings; use the explicit `<Title>` component for `<h1>` - `<h6>`.
|
|
@@ -14,7 +15,7 @@ export type TextProps = RecursicaOverStyled<RecursicaTextProps>;
|
|
|
14
15
|
*/
|
|
15
16
|
export declare const Text: (<C = "p">(props: import('@mantine/core').PolymorphicComponentProps<C, TextProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<((TextProps & {
|
|
16
17
|
component?: any;
|
|
17
|
-
}) & Omit<Omit<any, "ref">, "variant" | "children" | "overStyled" | "component"> & {
|
|
18
|
+
}) & 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" | "variant" | "span" | "color" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "attributes" | "overStyled" | "inherit" | "inline" | "size" | "__staticSelector" | "component" | "gradient" | "lineClamp" | "truncate"> & {
|
|
18
19
|
ref?: any;
|
|
19
20
|
renderRoot?: (props: any) => any;
|
|
20
21
|
}) | (TextProps & {
|
|
@@ -3,7 +3,7 @@ import { TextareaProps as MantineTextareaProps } from '@mantine/core';
|
|
|
3
3
|
import { ReadOnlyControlProps, RecursicaTextAreaProps as BaseRecursicaTextAreaProps } from '@recursica/adapter-common';
|
|
4
4
|
import { RecursicaOverStyled } from '../../utils/filterStylingProps';
|
|
5
5
|
import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormControlWrapper';
|
|
6
|
-
export interface RecursicaTextAreaProps extends Omit<MantineTextareaProps, "size" | "variant" | "radius" | "wrapperProps">,
|
|
6
|
+
export interface RecursicaTextAreaProps extends Omit<MantineTextareaProps, "size" | "variant" | "radius" | "wrapperProps">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth">, ReadOnlyControlProps, BaseRecursicaTextAreaProps {
|
|
7
7
|
}
|
|
8
8
|
export type TextAreaProps = RecursicaOverStyled<RecursicaTextAreaProps>;
|
|
9
9
|
export declare const TextArea: React.ForwardRefExoticComponent<TextAreaProps & React.RefAttributes<HTMLTextAreaElement>>;
|
|
@@ -6,8 +6,4 @@ import { RecursicaFormControlWrapperProps } from '../FormControlWrapper/FormCont
|
|
|
6
6
|
export interface RecursicaTextFieldProps extends Omit<InputProps, "size" | "variant" | "radius" | "wrapperProps">, Pick<InputWrapperProps, "label" | "error" | "required" | "withAsterisk" | "id">, Omit<React.ComponentPropsWithoutRef<"input">, "size" | "style" | "className" | "id">, Omit<RecursicaFormControlWrapperProps, "controlMaxWidth" | "controlMinWidth">, ReadOnlyControlProps, BaseRecursicaTextFieldProps {
|
|
7
7
|
}
|
|
8
8
|
export type TextFieldProps = RecursicaOverStyled<RecursicaTextFieldProps>;
|
|
9
|
-
export declare const TextField: React.ForwardRefExoticComponent<
|
|
10
|
-
overStyled?: false | undefined;
|
|
11
|
-
}, "ref"> | Omit<RecursicaTextFieldProps & {
|
|
12
|
-
overStyled: true;
|
|
13
|
-
}, "ref">) & React.RefAttributes<HTMLInputElement>>;
|
|
9
|
+
export declare const TextField: React.ForwardRefExoticComponent<TextFieldProps & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { TitleProps as MantineTitleProps } from '@mantine/core';
|
|
1
2
|
import { RecursicaOverStyled } from '../../utils/filterStylingProps';
|
|
2
3
|
import { RecursicaTitleProps } from '@recursica/adapter-common';
|
|
3
|
-
export type TitleProps = RecursicaOverStyled<RecursicaTitleProps>;
|
|
4
|
+
export type TitleProps = RecursicaOverStyled<Omit<MantineTitleProps, "size"> & RecursicaTitleProps>;
|
|
4
5
|
/**
|
|
5
6
|
* Enforces highly accessible structural markup utilizing semantic `<h1>` through `<h6>` tags securely bound directly to Recursica typographic scales.
|
|
6
7
|
*/
|
|
@@ -42,6 +42,7 @@ export * from './TextArea/TextArea';
|
|
|
42
42
|
export * from './TextField/TextField';
|
|
43
43
|
export * from './TimePicker/TimePicker';
|
|
44
44
|
export * from './Timeline/Timeline';
|
|
45
|
+
export * from './Timeline/TimelineItem';
|
|
45
46
|
export * from './Title/Title';
|
|
46
47
|
export * from './Toast';
|
|
47
48
|
export * from './Tooltip/Tooltip';
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,2 +1,154 @@
|
|
|
1
|
-
|
|
1
|
+
import * as rawComponents from "./components";
|
|
2
2
|
export * from '@recursica/adapter-common';
|
|
3
|
+
export declare const Flex: (<C = "div">(props: import('@mantine/core').PolymorphicComponentProps<C, rawComponents.FlexProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<(Omit<import('@mantine/core').FlexProps & import('@recursica/adapter-common').RecursicaFlexProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
|
|
4
|
+
m?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
5
|
+
mx?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
6
|
+
my?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
7
|
+
mt?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
8
|
+
mb?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
9
|
+
ml?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
10
|
+
mr?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
11
|
+
gap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
12
|
+
rowGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
13
|
+
columnGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
14
|
+
} & {
|
|
15
|
+
component?: any;
|
|
16
|
+
} & 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" | "variant" | "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" | "attributes" | "justify" | "component" | "wrap" | "align" | "direction"> & {
|
|
17
|
+
ref?: any;
|
|
18
|
+
renderRoot?: (props: any) => any;
|
|
19
|
+
}) | (Omit<import('@mantine/core').FlexProps & import('@recursica/adapter-common').RecursicaFlexProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
|
|
20
|
+
m?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
21
|
+
mx?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
22
|
+
my?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
23
|
+
mt?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
24
|
+
mb?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
25
|
+
ml?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
26
|
+
mr?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
27
|
+
gap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
28
|
+
rowGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
29
|
+
columnGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
30
|
+
} & {
|
|
31
|
+
component: React.ElementType;
|
|
32
|
+
renderRoot?: (props: Record<string, any>) => any;
|
|
33
|
+
})>, never> & Record<string, never>;
|
|
34
|
+
export declare const Group: import('react').ForwardRefExoticComponent<Omit<import('@mantine/core').GroupProps & import('@recursica/adapter-common').RecursicaGroupProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
|
|
35
|
+
m?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
36
|
+
mx?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
37
|
+
my?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
38
|
+
mt?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
39
|
+
mb?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
40
|
+
ml?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
41
|
+
mr?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
42
|
+
gap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
43
|
+
rowGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
44
|
+
columnGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
45
|
+
} & import('react').RefAttributes<HTMLDivElement>>;
|
|
46
|
+
export declare const Stack: (<C = "div">(props: import('@mantine/core').PolymorphicComponentProps<C, rawComponents.StackProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<(Omit<import('@mantine/core').StackProps & import('@recursica/adapter-common').RecursicaStackProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
|
|
47
|
+
m?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
48
|
+
mx?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
49
|
+
my?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
50
|
+
mt?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
51
|
+
mb?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
52
|
+
ml?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
53
|
+
mr?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
54
|
+
gap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
55
|
+
rowGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
56
|
+
columnGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
57
|
+
} & {
|
|
58
|
+
component?: any;
|
|
59
|
+
} & 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" | "variant" | "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" | "attributes" | "justify" | "component" | "align"> & {
|
|
60
|
+
ref?: any;
|
|
61
|
+
renderRoot?: (props: any) => any;
|
|
62
|
+
}) | (Omit<import('@mantine/core').StackProps & import('@recursica/adapter-common').RecursicaStackProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
|
|
63
|
+
m?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
64
|
+
mx?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
65
|
+
my?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
66
|
+
mt?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
67
|
+
mb?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
68
|
+
ml?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
69
|
+
mr?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
70
|
+
gap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
71
|
+
rowGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
72
|
+
columnGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
73
|
+
} & {
|
|
74
|
+
component: React.ElementType;
|
|
75
|
+
renderRoot?: (props: Record<string, any>) => any;
|
|
76
|
+
})>, never> & Record<string, never>;
|
|
77
|
+
export declare const Container: import('react').ForwardRefExoticComponent<Omit<Omit<import('@mantine/core').ContainerProps, "size"> & import('@recursica/adapter-common').RecursicaContainerProps, "m" | "my" | "mx" | "mt" | "mb" | "ml" | "mr" | "gap" | "rowGap" | "columnGap"> & {
|
|
78
|
+
m?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
79
|
+
mx?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
80
|
+
my?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
81
|
+
mt?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
82
|
+
mb?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
83
|
+
ml?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
84
|
+
mr?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
85
|
+
gap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
86
|
+
rowGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
87
|
+
columnGap?: string | number | import('@recursica/adapter-common').RecursicaSpacing;
|
|
88
|
+
} & import('react').RefAttributes<HTMLDivElement>>;
|
|
89
|
+
export declare const Link: (<C = "a">(props: import('@mantine/core').PolymorphicComponentProps<C, rawComponents.LinkProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<((rawComponents.LinkProps & {
|
|
90
|
+
component?: any;
|
|
91
|
+
}) & 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" | "variant" | "color" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "attributes" | "overStyled" | "icon" | "inherit" | "inline" | "size" | "__staticSelector" | "component" | "gradient" | "lineClamp" | "truncate"> & {
|
|
92
|
+
ref?: any;
|
|
93
|
+
renderRoot?: (props: any) => any;
|
|
94
|
+
}) | (rawComponents.LinkProps & {
|
|
95
|
+
component: React.ElementType;
|
|
96
|
+
renderRoot?: (props: Record<string, any>) => any;
|
|
97
|
+
})>, never> & Record<string, never>;
|
|
98
|
+
export declare const Text: (<C = "p">(props: import('@mantine/core').PolymorphicComponentProps<C, rawComponents.TextProps>) => React.ReactElement) & Omit<import('react').FunctionComponent<((rawComponents.TextProps & {
|
|
99
|
+
component?: any;
|
|
100
|
+
}) & 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" | "variant" | "span" | "color" | "children" | "__vars" | "__size" | "hiddenFrom" | "visibleFrom" | "lightHidden" | "darkHidden" | "mod" | "ms" | "me" | "ps" | "pe" | "bdrs" | "bgsz" | "bgp" | "bgr" | "bga" | "pos" | "inset" | "display" | "flex" | "unstyled" | "attributes" | "overStyled" | "inherit" | "inline" | "size" | "__staticSelector" | "component" | "gradient" | "lineClamp" | "truncate"> & {
|
|
101
|
+
ref?: any;
|
|
102
|
+
renderRoot?: (props: any) => any;
|
|
103
|
+
}) | (rawComponents.TextProps & {
|
|
104
|
+
component: React.ElementType;
|
|
105
|
+
renderRoot?: (props: Record<string, any>) => any;
|
|
106
|
+
})>, never> & Record<string, never>;
|
|
107
|
+
export declare const Accordion: typeof rawComponents.Accordion;
|
|
108
|
+
export declare const AccordionItem: typeof rawComponents.AccordionItem;
|
|
109
|
+
export declare const AccordionControl: typeof rawComponents.AccordionControl;
|
|
110
|
+
export declare const AccordionPanel: typeof rawComponents.AccordionPanel;
|
|
111
|
+
export declare const AutoComplete: typeof rawComponents.AutoComplete;
|
|
112
|
+
export declare const Avatar: typeof rawComponents.Avatar;
|
|
113
|
+
export declare const Badge: typeof rawComponents.Badge;
|
|
114
|
+
export declare const Breadcrumb: typeof rawComponents.Breadcrumb;
|
|
115
|
+
export declare const Button: typeof rawComponents.Button;
|
|
116
|
+
export declare const Card: typeof rawComponents.Card;
|
|
117
|
+
export declare const Checkbox: typeof rawComponents.Checkbox;
|
|
118
|
+
export declare const CheckboxGroup: typeof rawComponents.CheckboxGroup;
|
|
119
|
+
export declare const Chip: typeof rawComponents.Chip;
|
|
120
|
+
export declare const DatePicker: typeof rawComponents.DatePicker;
|
|
121
|
+
export declare const Dropdown: typeof rawComponents.Dropdown;
|
|
122
|
+
export declare const FileInput: typeof rawComponents.FileInput;
|
|
123
|
+
export declare const FileUpload: typeof rawComponents.FileUpload;
|
|
124
|
+
export declare const FormControlLayout: typeof rawComponents.FormControlLayout;
|
|
125
|
+
export declare const HoverCard: typeof rawComponents.HoverCard;
|
|
126
|
+
export declare const Loader: typeof rawComponents.Loader;
|
|
127
|
+
export declare const Label: typeof rawComponents.Label;
|
|
128
|
+
export declare const Menu: typeof rawComponents.Menu;
|
|
129
|
+
export declare const Modal: typeof rawComponents.Modal;
|
|
130
|
+
export declare const NumberInput: typeof rawComponents.NumberInput;
|
|
131
|
+
export declare const Pagination: typeof rawComponents.Pagination;
|
|
132
|
+
export declare const Panel: typeof rawComponents.Panel;
|
|
133
|
+
export declare const PanelFooter: typeof rawComponents.PanelFooter;
|
|
134
|
+
export declare const Popover: typeof rawComponents.Popover;
|
|
135
|
+
export declare const Radio: typeof rawComponents.Radio;
|
|
136
|
+
export declare const RadioGroup: typeof rawComponents.RadioGroup;
|
|
137
|
+
export declare const ReadOnlyField: typeof rawComponents.ReadOnlyField;
|
|
138
|
+
export declare const SegmentedControl: typeof rawComponents.SegmentedControl;
|
|
139
|
+
export declare const Slider: typeof rawComponents.Slider;
|
|
140
|
+
export declare const Stepper: typeof rawComponents.Stepper;
|
|
141
|
+
export declare const Switch: typeof rawComponents.Switch;
|
|
142
|
+
export declare const SwitchGroup: typeof rawComponents.SwitchGroup;
|
|
143
|
+
export declare const Table: typeof rawComponents.Table;
|
|
144
|
+
export declare const Tabs: typeof rawComponents.Tabs;
|
|
145
|
+
export declare const TextArea: typeof rawComponents.TextArea;
|
|
146
|
+
export declare const TextField: typeof rawComponents.TextField;
|
|
147
|
+
export declare const TimePicker: typeof rawComponents.TimePicker;
|
|
148
|
+
export declare const Timeline: typeof rawComponents.Timeline;
|
|
149
|
+
export declare const TimelineItem: typeof rawComponents.TimelineItem;
|
|
150
|
+
export declare const Title: typeof rawComponents.Title;
|
|
151
|
+
export declare const Toast: typeof rawComponents.Toast;
|
|
152
|
+
export declare const Tooltip: typeof rawComponents.Tooltip;
|
|
153
|
+
export declare const TransferList: typeof rawComponents.TransferList;
|
|
154
|
+
export type { RecursicaCheckboxGroupProps, RecursicaDatePickerProps, RecursicaDropdownProps, RecursicaNumberInputProps, RecursicaRadioGroupProps, RecursicaReadOnlyFieldProps, RecursicaReadOnlyTextFieldProps, RecursicaSliderProps, RecursicaSwitchGroupProps, RecursicaTextAreaProps, RecursicaTextFieldProps, } from './components';
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @returns Sanitized component props safe for internal styling merging
|
|
23
23
|
*/
|
|
24
24
|
export declare const BLOCKED_STYLING_KEYS: readonly ["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", "bdw", "bds", "bdc", "bdr", "shadow", "w", "miw", "maw", "h", "mih", "mah"];
|
|
25
|
-
export { type RecursicaSpacing, type RecursicaSize, type RecursicaOverStyled, type BlockedStylingKeys, type ForbiddenStyles, } from '@recursica/adapter-common';
|
|
25
|
+
export { type RecursicaSpacing, type RecursicaSize, type RecursicaOverStyled, type BlockedStylingKeys, type ForbiddenStyles, type WithRecursicaSpacing, } from '@recursica/adapter-common';
|
|
26
26
|
export declare const SPACING_MAP: Record<string, string>;
|
|
27
27
|
export declare function mapLayoutProps<T extends Record<string, unknown>>(props: T): T;
|
|
28
28
|
export declare function filterStylingProps<T extends Record<string, unknown>>(props: T, overStyled?: boolean): Partial<T>;
|
package/package.json
CHANGED
package/src/OverStyling.tsx
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
Container,
|
|
3
|
+
Card,
|
|
4
|
+
Title,
|
|
5
|
+
Text as RawText,
|
|
6
|
+
Group,
|
|
7
|
+
Stack,
|
|
8
|
+
Switch as RawSwitch,
|
|
9
|
+
} from "./components";
|
|
10
|
+
import { Button as RawButton } from "./components/Button/Button";
|
|
11
|
+
import {
|
|
12
|
+
useGlobalOverStyled,
|
|
13
|
+
toggleGlobalOverStyled,
|
|
14
|
+
wrapComponent,
|
|
15
|
+
} from "@recursica/adapter-common";
|
|
16
|
+
|
|
17
|
+
const Button = wrapComponent(RawButton);
|
|
18
|
+
const Text = wrapComponent(RawText);
|
|
19
|
+
const Switch = wrapComponent(RawSwitch);
|
|
3
20
|
|
|
4
21
|
export const OverStylingInfo = () => {
|
|
22
|
+
const isHighlightActive = useGlobalOverStyled();
|
|
5
23
|
return (
|
|
6
24
|
<Container size="md" style={{ padding: "32px 0" }}>
|
|
7
25
|
<Card>
|
|
@@ -197,6 +215,52 @@ export const OverStylingInfo = () => {
|
|
|
197
215
|
mb="rec-xl"
|
|
198
216
|
/>
|
|
199
217
|
|
|
218
|
+
<Title order={3} mb="rec-sm">
|
|
219
|
+
Visual Auditing & Highlights (Development Only)
|
|
220
|
+
</Title>
|
|
221
|
+
<Text mb="rec-sm">
|
|
222
|
+
To make it easy to spot technical debt and design system violations,
|
|
223
|
+
Recursica automatically tracks any component that uses the{" "}
|
|
224
|
+
<code>overStyled={`{true}`}</code> prop.
|
|
225
|
+
</Text>
|
|
226
|
+
<Text mb="rec-sm">
|
|
227
|
+
In <strong>development builds</strong>, you can highlight all
|
|
228
|
+
over-styled components on the page. Open your browser's developer
|
|
229
|
+
console and run:
|
|
230
|
+
</Text>
|
|
231
|
+
<Stack
|
|
232
|
+
style={{
|
|
233
|
+
padding: 12,
|
|
234
|
+
backgroundColor: "#f5f5f5",
|
|
235
|
+
borderRadius: 6,
|
|
236
|
+
fontSize: 13,
|
|
237
|
+
marginTop: 8,
|
|
238
|
+
marginBottom: 16,
|
|
239
|
+
}}
|
|
240
|
+
>
|
|
241
|
+
<code>recursica.toggleOverStyled()</code>
|
|
242
|
+
</Stack>
|
|
243
|
+
<Group mb="rec-md">
|
|
244
|
+
<Switch
|
|
245
|
+
label="Highlight Over-Styled Components"
|
|
246
|
+
checked={isHighlightActive}
|
|
247
|
+
onChange={() => toggleGlobalOverStyled()}
|
|
248
|
+
/>
|
|
249
|
+
</Group>
|
|
250
|
+
<Text mb="rec-xl">
|
|
251
|
+
This toggles a <strong>cyan 2px box shadow</strong> outline around
|
|
252
|
+
the children of all over-styled components. The wrapping elements
|
|
253
|
+
use <code>display: contents</code> under the hood to ensure they
|
|
254
|
+
occupy zero DOM space and do not affect flex, grid, or absolute
|
|
255
|
+
positioning flow. In production builds, this debugging helper is
|
|
256
|
+
completely disabled and stripped with zero performance overhead.
|
|
257
|
+
</Text>
|
|
258
|
+
|
|
259
|
+
<Stack
|
|
260
|
+
style={{ height: 1, backgroundColor: "#eaeaea" }}
|
|
261
|
+
mb="rec-xl"
|
|
262
|
+
/>
|
|
263
|
+
|
|
200
264
|
<Title order={3} mb="rec-md">
|
|
201
265
|
Live Example
|
|
202
266
|
</Title>
|
|
@@ -217,7 +281,7 @@ export const OverStylingInfo = () => {
|
|
|
217
281
|
</Stack>
|
|
218
282
|
<Stack gap="rec-sm">
|
|
219
283
|
<Text overStyled size="sm" c="dimmed">
|
|
220
|
-
overStyled
|
|
284
|
+
overStyled
|
|
221
285
|
</Text>
|
|
222
286
|
<Button overStyled={true} bg="pink" c="black" radius="xl">
|
|
223
287
|
Unsafe Pink Marketing Button
|
|
@@ -18,7 +18,13 @@ import { type RecursicaAutocompleteProps as BaseRecursicaAutocompleteProps } fro
|
|
|
18
18
|
export interface RecursicaAutoCompleteProps
|
|
19
19
|
extends Omit<
|
|
20
20
|
MantineAutocompleteProps,
|
|
21
|
-
|
|
21
|
+
| "size"
|
|
22
|
+
| "variant"
|
|
23
|
+
| "radius"
|
|
24
|
+
| "wrapperProps"
|
|
25
|
+
| "data"
|
|
26
|
+
| "defaultValue"
|
|
27
|
+
| "value"
|
|
22
28
|
>,
|
|
23
29
|
Pick<
|
|
24
30
|
InputWrapperProps,
|
|
@@ -29,7 +35,10 @@ export interface RecursicaAutoCompleteProps
|
|
|
29
35
|
"controlMaxWidth" | "controlMinWidth"
|
|
30
36
|
>,
|
|
31
37
|
ReadOnlyControlProps,
|
|
32
|
-
BaseRecursicaAutocompleteProps {
|
|
38
|
+
BaseRecursicaAutocompleteProps {
|
|
39
|
+
/** Current input value */
|
|
40
|
+
value?: string;
|
|
41
|
+
}
|
|
33
42
|
|
|
34
43
|
export type AutoCompleteProps = RecursicaOverStyled<RecursicaAutoCompleteProps>;
|
|
35
44
|
|
|
@@ -140,8 +149,8 @@ export const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(
|
|
|
140
149
|
ref={ref}
|
|
141
150
|
classNames={mergedClassNames}
|
|
142
151
|
disabled={disabled}
|
|
143
|
-
value={value}
|
|
144
|
-
defaultValue={defaultValue}
|
|
152
|
+
value={value as string | undefined}
|
|
153
|
+
defaultValue={defaultValue as string | undefined}
|
|
145
154
|
wrapperProps={{
|
|
146
155
|
"data-disabled": disabled ? "true" : undefined,
|
|
147
156
|
"data-error": error ? "true" : undefined,
|
|
@@ -8,3 +8,10 @@ Because Mantine natively constructs `Card` bounding boxes with generic inner `<C
|
|
|
8
8
|
- `<Card.Footer>` explicitly hooks `--recursica_ui-kit_components_card_properties_footer-background` and corresponding padding variables.
|
|
9
9
|
|
|
10
10
|
Mantine's generic `<Card.Section>` calculates negative margins implicitly. Because of this, it is crucial that our local CSS module declares `--card-padding: var(--recursica_ui-kit_components_card_properties_padding)` directly on `.root` so that all generic or explicit section wrappers natively stretch across the bounding box properly.
|
|
11
|
+
|
|
12
|
+
## Layout Alignment Exceptions
|
|
13
|
+
|
|
14
|
+
To allow Cards to fit cleanly inside dynamic/flex layouts (like dashboard panels, grid tracks, or sidebar layout segments), the Card wrapper implements a custom gatekeeper bypass for outer styling properties:
|
|
15
|
+
|
|
16
|
+
- Exposes a safe subset of flexbox/dimensions styling properties (`flex`, `flexGrow`, `flexShrink`, `flexBasis`, `grow`, `h`, `height`) on the root `<Card>` component to allow proper sizing alongside layout siblings.
|
|
17
|
+
- Sets `<Card.Content>` to `flex-grow: 1;` by default via CSS modules. Since the root `<Card>` has `display: flex; flex-direction: column;`, this makes the content area expand to fill all vertical space, pushing `<Card.Footer>` to align at the absolute bottom of the bounding box.
|
|
@@ -19,7 +19,15 @@ import {
|
|
|
19
19
|
// ==== CARD CONTAINER ====
|
|
20
20
|
export type CardProps = RecursicaOverStyled<
|
|
21
21
|
MantineCardProps & RecursicaCardProps
|
|
22
|
-
|
|
22
|
+
> & {
|
|
23
|
+
flex?: string | number;
|
|
24
|
+
flexGrow?: string | number;
|
|
25
|
+
flexShrink?: string | number;
|
|
26
|
+
flexBasis?: string | number;
|
|
27
|
+
grow?: string | number;
|
|
28
|
+
h?: string | number;
|
|
29
|
+
height?: string | number;
|
|
30
|
+
};
|
|
23
31
|
|
|
24
32
|
/**
|
|
25
33
|
* 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.
|
|
@@ -30,6 +38,24 @@ const CardBase = forwardRef<HTMLDivElement, CardProps>(function Card(
|
|
|
30
38
|
) {
|
|
31
39
|
const sanitizedProps = filterStylingProps(rest, overStyled);
|
|
32
40
|
|
|
41
|
+
// Expose outer layout/flexbox properties on Card to allow structuring alongside siblings
|
|
42
|
+
const safeCardLayoutKeys = [
|
|
43
|
+
"flex",
|
|
44
|
+
"flexGrow",
|
|
45
|
+
"flexShrink",
|
|
46
|
+
"flexBasis",
|
|
47
|
+
"grow",
|
|
48
|
+
"h",
|
|
49
|
+
"height",
|
|
50
|
+
] as const;
|
|
51
|
+
safeCardLayoutKeys.forEach((key) => {
|
|
52
|
+
if (key in rest && !(key in sanitizedProps)) {
|
|
53
|
+
(sanitizedProps as Record<string, unknown>)[key] = (
|
|
54
|
+
rest as Record<string, unknown>
|
|
55
|
+
)[key];
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
33
59
|
const mergedClassNames: Partial<Record<string, string>> = {
|
|
34
60
|
root: styles.root,
|
|
35
61
|
};
|
|
@@ -16,7 +16,10 @@ import styles from "./Checkbox.module.css";
|
|
|
16
16
|
import { type RecursicaCheckboxGroupProps as BaseRecursicaCheckboxGroupProps } from "@recursica/adapter-common";
|
|
17
17
|
|
|
18
18
|
export interface RecursicaCheckboxGroupProps
|
|
19
|
-
extends Omit<
|
|
19
|
+
extends Omit<
|
|
20
|
+
MantineCheckboxGroupProps,
|
|
21
|
+
"size" | "labelProps" | "defaultValue" | "value" | "onChange"
|
|
22
|
+
>,
|
|
20
23
|
Omit<
|
|
21
24
|
RecursicaFormControlWrapperProps,
|
|
22
25
|
"controlMaxWidth" | "controlMinWidth"
|
|
@@ -99,8 +102,8 @@ export const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(
|
|
|
99
102
|
/* Natively bind local disabled lock dynamically */
|
|
100
103
|
{...(sanitizedProps as unknown as MantineCheckboxGroupProps)}
|
|
101
104
|
disabled={readOnly || (restRecord as any).disabled}
|
|
102
|
-
value={value}
|
|
103
|
-
defaultValue={defaultValue}
|
|
105
|
+
value={value as any}
|
|
106
|
+
defaultValue={defaultValue as any}
|
|
104
107
|
>
|
|
105
108
|
<div className={styles.groupRoot} data-layout={formLayout}>
|
|
106
109
|
{children}
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
} from "@mantine/core";
|
|
6
6
|
import styles from "./Container.module.css";
|
|
7
7
|
|
|
8
|
+
import { type WithRecursicaSpacing } from "../../utils/filterStylingProps";
|
|
8
9
|
import { type RecursicaContainerProps } from "@recursica/adapter-common";
|
|
9
10
|
|
|
10
11
|
/**
|
|
@@ -14,8 +15,9 @@ import { type RecursicaContainerProps } from "@recursica/adapter-common";
|
|
|
14
15
|
* DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass
|
|
15
16
|
* width, height, padding, margins, and flexbox alignment props to construct structural layouts.
|
|
16
17
|
*/
|
|
17
|
-
export type ContainerProps =
|
|
18
|
-
RecursicaContainerProps
|
|
18
|
+
export type ContainerProps = WithRecursicaSpacing<
|
|
19
|
+
Omit<MantineContainerProps, "size"> & RecursicaContainerProps
|
|
20
|
+
>;
|
|
19
21
|
|
|
20
22
|
export const Container = forwardRef<HTMLDivElement, ContainerProps>(
|
|
21
23
|
function Container({ children, size, ...rest }, ref) {
|
|
@@ -38,7 +38,7 @@ export interface RecursicaDatePickerProps
|
|
|
38
38
|
|
|
39
39
|
export type DatePickerProps = RecursicaOverStyled<RecursicaDatePickerProps>;
|
|
40
40
|
|
|
41
|
-
export const DatePicker = forwardRef<
|
|
41
|
+
export const DatePicker = forwardRef<HTMLButtonElement, DatePickerProps>(
|
|
42
42
|
function DatePicker(props, ref) {
|
|
43
43
|
const {
|
|
44
44
|
overStyled = false,
|
|
@@ -148,9 +148,7 @@ export const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(
|
|
|
148
148
|
ref={ref}
|
|
149
149
|
classNames={mergedClassNames}
|
|
150
150
|
disabled={disabled}
|
|
151
|
-
// @ts-expect-error Mantine 8 DatePickerInput types are overly complex for unified wrappers
|
|
152
151
|
value={value}
|
|
153
|
-
// @ts-expect-error Mantine 8 DatePickerInput types are overly complex for unified wrappers
|
|
154
152
|
defaultValue={defaultValue}
|
|
155
153
|
label={undefined} // Disable Mantine's native label
|
|
156
154
|
description={undefined} // Disable Mantine's native description
|
|
@@ -17,18 +17,11 @@ import { type RecursicaDropdownProps as BaseRecursicaDropdownProps } from "@recu
|
|
|
17
17
|
export interface RecursicaDropdownProps
|
|
18
18
|
extends Omit<
|
|
19
19
|
MantineSelectProps,
|
|
20
|
-
"size" | "variant" | "radius" | "wrapperProps"
|
|
20
|
+
"size" | "variant" | "radius" | "wrapperProps" | "data"
|
|
21
21
|
>,
|
|
22
|
-
|
|
22
|
+
Omit<
|
|
23
23
|
RecursicaFormControlWrapperProps,
|
|
24
|
-
| "
|
|
25
|
-
| "assistiveWithIcon"
|
|
26
|
-
| "formLayout"
|
|
27
|
-
| "labelSize"
|
|
28
|
-
| "labelAlignment"
|
|
29
|
-
| "labelOptionalText"
|
|
30
|
-
| "labelWithEditIcon"
|
|
31
|
-
| "onLabelEditClick"
|
|
24
|
+
"controlMaxWidth" | "controlMinWidth"
|
|
32
25
|
>,
|
|
33
26
|
ReadOnlyControlProps,
|
|
34
27
|
BaseRecursicaDropdownProps {}
|
|
@@ -157,7 +150,7 @@ export const Dropdown = forwardRef<HTMLInputElement, DropdownProps>(
|
|
|
157
150
|
disabled={disabled}
|
|
158
151
|
value={value}
|
|
159
152
|
defaultValue={defaultValue}
|
|
160
|
-
data={data || []}
|
|
153
|
+
data={(data as unknown as MantineSelectProps["data"]) || []}
|
|
161
154
|
label={undefined}
|
|
162
155
|
description={undefined}
|
|
163
156
|
error={undefined}
|
|
@@ -4,7 +4,10 @@ import {
|
|
|
4
4
|
type FlexProps as MantineFlexProps,
|
|
5
5
|
createPolymorphicComponent,
|
|
6
6
|
} from "@mantine/core";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
mapLayoutProps,
|
|
9
|
+
type WithRecursicaSpacing,
|
|
10
|
+
} from "../../utils/filterStylingProps";
|
|
8
11
|
import styles from "./Flex.module.css";
|
|
9
12
|
|
|
10
13
|
import { type RecursicaFlexProps } from "@recursica/adapter-common";
|
|
@@ -16,7 +19,9 @@ import { type RecursicaFlexProps } from "@recursica/adapter-common";
|
|
|
16
19
|
* DO NOT use the `RecursicaOverStyled` gatekeeper. Developers must be able to freely pass
|
|
17
20
|
* width, height, padding, margins, and flexbox alignment props to construct structural layouts.
|
|
18
21
|
*/
|
|
19
|
-
export type FlexProps =
|
|
22
|
+
export type FlexProps = WithRecursicaSpacing<
|
|
23
|
+
MantineFlexProps & RecursicaFlexProps
|
|
24
|
+
>;
|
|
20
25
|
|
|
21
26
|
const _Flex = forwardRef<HTMLDivElement, FlexProps>(function Flex(
|
|
22
27
|
{ children, gap = "rec-default", rowGap, columnGap, ...rest },
|
|
@@ -10,6 +10,7 @@ import { AssistiveElement } from "../AssistiveElement/AssistiveElement";
|
|
|
10
10
|
import styles from "./FormControlWrapper.module.css";
|
|
11
11
|
|
|
12
12
|
import { type RecursicaFormControlWrapperProps } from "@recursica/adapter-common";
|
|
13
|
+
export type { RecursicaFormControlWrapperProps };
|
|
13
14
|
|
|
14
15
|
export type FormControlWrapperProps = RecursicaOverStyled<
|
|
15
16
|
Omit<InputWrapperProps, "labelProps" | "inputWrapperOrder"> &
|