reshaped 3.1.4 → 3.1.6
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 +21 -0
- package/dist/bundle.css +1 -1
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.js +11 -12
- package/dist/components/Actionable/Actionable.d.ts +1 -1
- package/dist/components/Actionable/Actionable.js +2 -2
- package/dist/components/Actionable/Actionable.module.css +1 -1
- package/dist/components/Actionable/Actionable.types.d.ts +1 -0
- package/dist/components/Autocomplete/Autocomplete.js +10 -4
- package/dist/components/Button/Button.js +1 -1
- package/dist/components/Card/Card.d.ts +1 -1
- package/dist/components/Card/tests/Card.stories.d.ts +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +1 -1
- package/dist/components/FormControl/FormControl.context.d.ts +2 -1
- package/dist/components/Grid/Grid.d.ts +6 -0
- package/dist/components/Grid/Grid.js +46 -0
- package/dist/components/Grid/Grid.module.css +1 -0
- package/dist/components/Grid/Grid.types.d.ts +31 -0
- package/dist/components/Grid/Grid.types.js +1 -0
- package/dist/components/Grid/index.d.ts +2 -0
- package/dist/components/Grid/index.js +1 -0
- package/dist/components/Grid/tests/Grid.stories.d.ts +18 -0
- package/dist/components/Grid/tests/Grid.stories.js +170 -0
- package/dist/components/Icon/Icon.module.css +1 -1
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/Loader/Loader.module.css +1 -1
- package/dist/components/Loader/Loader.types.d.ts +1 -1
- package/dist/components/Loader/tests/Loader.stories.js +5 -3
- package/dist/components/Overlay/tests/Overlay.stories.js +1 -1
- package/dist/components/Popover/Popover.js +2 -4
- package/dist/components/Popover/Popover.types.d.ts +1 -1
- package/dist/components/Select/Select.js +1 -1
- package/dist/components/Table/Table.js +6 -4
- package/dist/components/Table/Table.types.d.ts +6 -1
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- package/dist/components/Tabs/Tabs.module.css +1 -1
- package/dist/components/Tabs/TabsItem.d.ts +1 -1
- package/dist/components/Tabs/TabsItem.js +2 -3
- package/dist/components/Tabs/tests/Tabs.stories.d.ts +15 -13
- package/dist/components/Tabs/tests/Tabs.stories.js +71 -8
- package/dist/components/Tooltip/Tooltip.js +1 -1
- package/dist/components/View/View.js +7 -3
- package/dist/components/View/View.module.css +1 -1
- package/dist/components/View/View.types.d.ts +2 -2
- package/dist/components/_private/Expandable/Expandable.js +9 -5
- package/dist/components/_private/Flyout/Flyout.module.css +1 -1
- package/dist/components/_private/Flyout/Flyout.types.d.ts +11 -2
- package/dist/components/_private/Flyout/FlyoutControlled.js +33 -18
- package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +1 -0
- package/dist/components/_private/Flyout/tests/Flyout.stories.js +28 -18
- package/dist/components/_private/Flyout/useFlyout.d.ts +2 -1
- package/dist/components/_private/Flyout/useFlyout.js +46 -57
- package/dist/components/_private/Flyout/utilities/calculatePosition.js +16 -11
- package/dist/components/_private/Flyout/utilities/cooldown.d.ts +1 -1
- package/dist/components/_private/Flyout/utilities/cooldown.js +17 -5
- package/dist/components/_private/Flyout/utilities/getPositionFallbacks.d.ts +3 -0
- package/dist/components/_private/Flyout/utilities/getPositionFallbacks.js +39 -0
- package/dist/config/tailwind.d.ts +1 -1
- package/dist/hooks/_private/useOnClickOutside.js +3 -2
- package/dist/hooks/_private/useSingletonHotkeys.js +16 -13
- package/dist/hooks/tests/useHotkeys.stories.js +6 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/styles/align/align.module.css +1 -0
- package/dist/styles/align/index.d.ts +3 -0
- package/dist/styles/align/index.js +10 -0
- package/dist/styles/justify/index.d.ts +3 -0
- package/dist/styles/justify/index.js +10 -0
- package/dist/styles/justify/justify.module.css +1 -0
- package/dist/styles/types.d.ts +2 -0
- package/dist/tests/ShadowDOM.stories.d.ts +6 -0
- package/dist/tests/ShadowDOM.stories.js +110 -0
- package/dist/themes/_generator/tests/themes.stories.js +1 -1
- package/dist/utilities/a11y/TrapFocus.d.ts +1 -1
- package/dist/utilities/a11y/TrapFocus.js +14 -5
- package/dist/utilities/a11y/focus.d.ts +1 -1
- package/dist/utilities/a11y/focus.js +10 -5
- package/dist/utilities/dom.d.ts +2 -1
- package/dist/utilities/dom.js +12 -2
- package/package.json +31 -29
@@ -1,4 +1,4 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import type * as T from "./Actionable.types";
|
3
|
-
declare const Actionable: React.ForwardRefExoticComponent<T.Props & React.RefAttributes<
|
3
|
+
declare const Actionable: React.ForwardRefExoticComponent<T.Props & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
4
4
|
export default Actionable;
|
@@ -5,8 +5,8 @@ import { classNames } from "../../utilities/helpers.js";
|
|
5
5
|
import * as keys from "../../constants/keys.js";
|
6
6
|
import s from "./Actionable.module.css";
|
7
7
|
const Actionable = forwardRef((props, ref) => {
|
8
|
-
const { children, href, onClick, type, disabled, insetFocus, borderRadius, as, fullWidth, className, attributes, } = props;
|
9
|
-
const rootClassNames = classNames(s.root, className, disabled && s["--disabled"], borderRadius && s[`--radius-${borderRadius}`], insetFocus && s["--inset"], fullWidth && s["--full-width"]);
|
8
|
+
const { children, href, onClick, type, disabled, insetFocus, disableFocusRing, borderRadius, as, fullWidth, className, attributes, } = props;
|
9
|
+
const rootClassNames = classNames(s.root, className, disabled && s["--disabled"], borderRadius && s[`--radius-${borderRadius}`], insetFocus && s["--inset"], disableFocusRing && s["--disabled-focus-ring"], fullWidth && s["--full-width"]);
|
10
10
|
const rootAttributes = { ...attributes };
|
11
11
|
const hasClickHandler = onClick || attributes?.onClick;
|
12
12
|
const hasFocusHandler = attributes?.onFocus || attributes?.onBlur;
|
@@ -1 +1 @@
|
|
1
|
-
@layer rs.reset{.root{background:none;border:0;color:inherit;display:inline-block;font-size:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0;position:relative;text-align:initial;text-decoration:none;vertical-align:top;-webkit-tap-highlight-color:transparent}}.root:focus{outline:none}.root:focus-visible{box-shadow:var(--rs-focus-shadow);outline:none;z-index:var(--rs-z-index-raised)}.root.--inset:focus-visible{box-shadow:var(--rs-focus-inset-shadow)}.root.--radius-inherit:focus-visible{box-shadow:none}.root.--radius-inherit:focus-visible>*{box-shadow:var(--rs-focus-shadow)}.root.--radius-inherit.--inset:focus-visible>*{box-shadow:var(--rs-focus-inset-shadow)}[role=button].root,button.root{cursor:pointer;user-select:none}.root.--disabled,.root[disabled]{cursor:not-allowed}.root.--disabled:active,.root[disabled]:active{transform:none}.root.--full-width{width:100%}
|
1
|
+
@layer rs.reset{.root{background:none;border:0;color:inherit;display:inline-block;font-size:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0;position:relative;text-align:initial;text-decoration:none;vertical-align:top;-webkit-tap-highlight-color:transparent}}.root:focus{outline:none}.root:focus-visible{box-shadow:var(--rs-focus-shadow);outline:none;z-index:var(--rs-z-index-raised)}.root.--inset:focus-visible{box-shadow:var(--rs-focus-inset-shadow)}.root.--disabled-focus-ring:focus-visible{box-shadow:none}.root.--radius-inherit:focus-visible{box-shadow:none}.root.--radius-inherit:focus-visible>*{box-shadow:var(--rs-focus-shadow)}.root.--radius-inherit.--inset:focus-visible>*{box-shadow:var(--rs-focus-inset-shadow)}[role=button].root,button.root{cursor:pointer;user-select:none}.root.--disabled,.root[disabled]{cursor:not-allowed}.root.--disabled:active,.root[disabled]:active{transform:none}.root.--full-width{width:100%}
|
@@ -19,7 +19,11 @@ const Autocomplete = (props) => {
|
|
19
19
|
const [active, setActive] = React.useState(false);
|
20
20
|
const hasChildren = !!React.Children.toArray(children).filter(Boolean).length;
|
21
21
|
const lockedRef = React.useRef(false);
|
22
|
-
const handleOpen = React.useCallback(() =>
|
22
|
+
const handleOpen = React.useCallback(() => {
|
23
|
+
if (lockedRef.current)
|
24
|
+
return;
|
25
|
+
setActive(true);
|
26
|
+
}, []);
|
23
27
|
const handleClose = () => setActive(false);
|
24
28
|
useHotkeys({
|
25
29
|
[keys.BACKSPACE]: () => onBackspaceRef.current?.(),
|
@@ -28,9 +32,11 @@ const Autocomplete = (props) => {
|
|
28
32
|
disabled: !onBackspaceRef.current,
|
29
33
|
});
|
30
34
|
useHotkeys({
|
31
|
-
[keys.DOWN]: () =>
|
35
|
+
[keys.DOWN]: () => {
|
36
|
+
handleOpen();
|
37
|
+
},
|
32
38
|
[keys.ENTER]: () => {
|
33
|
-
const el = getActiveElement();
|
39
|
+
const el = getActiveElement(inputRef.current);
|
34
40
|
el?.click();
|
35
41
|
},
|
36
42
|
}, [handleOpen], { ref: inputRef, preventDefault: true });
|
@@ -50,7 +56,7 @@ const Autocomplete = (props) => {
|
|
50
56
|
onInput?.({ value: e.currentTarget.value, name, event: e });
|
51
57
|
textFieldProps.inputAttributes?.onInput?.(e);
|
52
58
|
};
|
53
|
-
return (_jsx(AutocompleteContext.Provider, { value: { onItemClick: handleItemClick }, children: _jsxs(DropdownMenu, { position: "bottom", width: "trigger", triggerType: "focus", trapFocusMode: "selection-menu", active:
|
59
|
+
return (_jsx(AutocompleteContext.Provider, { value: { onItemClick: handleItemClick }, children: _jsxs(DropdownMenu, { position: "bottom", width: "trigger", triggerType: "focus", trapFocusMode: "selection-menu", active: hasChildren && active, onClose: handleClose, onOpen: handleOpen, containerRef: containerRef, disableHideAnimation: true, instanceRef: instanceRef, children: [_jsx(DropdownMenu.Trigger, { children: ({ ref, ...attributes }) => (_jsx(TextField, { ...textFieldProps, name: name, onChange: handleChange, focused: hasChildren && active,
|
54
60
|
// Ignoring the type check since TS can't infer the correct html element type
|
55
61
|
attributes: { ...textFieldProps.attributes, ref }, inputAttributes: {
|
56
62
|
...textFieldProps.inputAttributes,
|
@@ -27,7 +27,7 @@ const Button = forwardRef((props, ref) => {
|
|
27
27
|
});
|
28
28
|
return (_jsx(Icon, { className: iconClassName, svg: (position === "start" ? icon : endIcon), size: iconSize, autoWidth: true }));
|
29
29
|
};
|
30
|
-
return (_jsxs(Actionable, { disabled: disabled || loading, className: rootClassName, attributes: { ...attributes, "data-rs-aligner-target": true }, type: type, onClick: onClick, href: href, ref: ref, as: as, children: [loading && (_jsx("div", { className: s.loader, children: _jsx(Loader, {
|
30
|
+
return (_jsxs(Actionable, { disabled: disabled || loading, className: rootClassName, attributes: { ...attributes, "data-rs-aligner-target": true }, type: type, onClick: onClick, href: href, ref: ref, as: as, children: [loading && (_jsx("div", { className: s.loader, children: _jsx(Loader, { color: "inherit" }) })), renderIcon("start"), children && _jsx("span", { className: s.text, children: children }), renderIcon("end")] }));
|
31
31
|
});
|
32
32
|
Button.Group = ButtonGroup;
|
33
33
|
Button.Aligner = ButtonAligner;
|
@@ -9,7 +9,7 @@ declare const Card: React.ForwardRefExoticComponent<{
|
|
9
9
|
href?: string;
|
10
10
|
as?: keyof JSX.IntrinsicElements | undefined;
|
11
11
|
className?: import("../../types/global").ClassName;
|
12
|
-
attributes?: (import("../../types/global").Attributes<keyof JSX.IntrinsicElements> & ((import("../../types/global").Attributes<"button"> & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "form" | "slot" | "style" | "title" | "disabled" | "className" | "color" | "hidden" | "content" | "ref" | "children" | "type" | "key" | "value" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "
|
12
|
+
attributes?: (import("../../types/global").Attributes<keyof JSX.IntrinsicElements> & ((import("../../types/global").Attributes<"button"> & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "form" | "slot" | "style" | "title" | "disabled" | "className" | "color" | "hidden" | "content" | "ref" | "children" | "type" | "key" | "value" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "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" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "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" | "onResize" | "onResizeCapture" | "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" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & {
|
13
13
|
ref?: React.RefObject<HTMLButtonElement | HTMLAnchorElement>;
|
14
14
|
}) | undefined)) | undefined;
|
15
15
|
} & Pick<import("../View").ViewProps, "height"> & React.RefAttributes<HTMLElement>>;
|
@@ -11,7 +11,7 @@ declare const _default: {
|
|
11
11
|
href?: string;
|
12
12
|
as?: keyof JSX.IntrinsicElements | undefined;
|
13
13
|
className?: import("../../../types/global").ClassName;
|
14
|
-
attributes?: (import("../../../types/global").Attributes<keyof JSX.IntrinsicElements> & ((import("../../../types/global").Attributes<"button"> & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "children" | "ref" | "style" | "form" | "slot" | "title" | "className" | "aria-orientation" | "role" | "hidden" | "color" | "content" | "disabled" | "suppressHydrationWarning" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "dir" | "name" | "key" | "accessKey" | "autoFocus" | "contentEditable" | "contextMenu" | "draggable" | "nonce" | "spellCheck" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "
|
14
|
+
attributes?: (import("../../../types/global").Attributes<keyof JSX.IntrinsicElements> & ((import("../../../types/global").Attributes<"button"> & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "children" | "ref" | "style" | "form" | "slot" | "title" | "className" | "aria-orientation" | "role" | "hidden" | "color" | "content" | "disabled" | "suppressHydrationWarning" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "dir" | "name" | "key" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "draggable" | "enterKeyHint" | "nonce" | "spellCheck" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "type" | "id" | "lang" | "tabIndex" | "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-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" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "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" | "onResize" | "onResizeCapture" | "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" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & {
|
15
15
|
ref?: React.RefObject<HTMLButtonElement | HTMLAnchorElement>;
|
16
16
|
}) | undefined)) | undefined;
|
17
17
|
} & Pick<import("../../View").ViewProps, "height"> & React.RefAttributes<HTMLElement>>;
|
@@ -2,7 +2,7 @@ import type React from "react";
|
|
2
2
|
import type { PopoverProps, PopoverInstance } from "../Popover";
|
3
3
|
import type { FlyoutContentProps } from "../_private/Flyout";
|
4
4
|
export type Instance = PopoverInstance;
|
5
|
-
export type Props = Pick<PopoverProps, "children" | "position" | "forcePosition" | "triggerType" | "contentGap" | "onOpen" | "onClose" | "active" | "defaultActive" | "width" | "disableHideAnimation" | "disableCloseOnOutsideClick" | "instanceRef" | "containerRef"> & {
|
5
|
+
export type Props = Pick<PopoverProps, "children" | "position" | "forcePosition" | "fallbackPositions" | "triggerType" | "contentGap" | "onOpen" | "onClose" | "active" | "defaultActive" | "width" | "disableHideAnimation" | "disableCloseOnOutsideClick" | "instanceRef" | "containerRef"> & {
|
6
6
|
trapFocusMode?: Extract<PopoverProps["trapFocusMode"], "action-menu" | "selection-menu">;
|
7
7
|
};
|
8
8
|
export type ContentProps = Pick<FlyoutContentProps, "attributes" | "children" | "className">;
|
@@ -9,12 +9,14 @@ export declare const useFormControl: () => {
|
|
9
9
|
suppressContentEditableWarning?: boolean | undefined;
|
10
10
|
suppressHydrationWarning?: boolean | undefined;
|
11
11
|
accessKey?: string | undefined;
|
12
|
+
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
|
12
13
|
autoFocus?: boolean | undefined;
|
13
14
|
className?: string | undefined;
|
14
15
|
contentEditable?: (boolean | "false" | "true") | "inherit" | "plaintext-only" | undefined;
|
15
16
|
contextMenu?: string | undefined;
|
16
17
|
dir?: string | undefined;
|
17
18
|
draggable?: (boolean | "false" | "true") | undefined;
|
19
|
+
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
|
18
20
|
hidden?: boolean | undefined;
|
19
21
|
id?: string | undefined;
|
20
22
|
lang?: string | undefined;
|
@@ -38,7 +40,6 @@ export declare const useFormControl: () => {
|
|
38
40
|
rev?: string | undefined;
|
39
41
|
typeof?: string | undefined;
|
40
42
|
vocab?: string | undefined;
|
41
|
-
autoCapitalize?: string | undefined;
|
42
43
|
autoCorrect?: string | undefined;
|
43
44
|
autoSave?: string | undefined;
|
44
45
|
color?: string | undefined;
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import type * as T from "./Grid.types";
|
2
|
+
declare const Grid: {
|
3
|
+
<As extends keyof JSX.IntrinsicElements = "div">(props: T.Props<As>): import("react/jsx-runtime").JSX.Element;
|
4
|
+
Item: <As extends keyof JSX.IntrinsicElements = "div">(props: T.ItemProps<As>) => import("react/jsx-runtime").JSX.Element;
|
5
|
+
};
|
6
|
+
export default Grid;
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { classNames, responsiveVariables, responsivePropDependency } from "../../utilities/helpers.js";
|
3
|
+
import getAlignStyles from "../../styles/align/index.js";
|
4
|
+
import getJustifyStyles from "../../styles/justify/index.js";
|
5
|
+
import s from "./Grid.module.css";
|
6
|
+
const GridItem = (props) => {
|
7
|
+
const { area, colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, children, className, as: TagName = "div", attributes, } = props;
|
8
|
+
const itemClassNames = classNames(s.item, className);
|
9
|
+
const resolvedColSpan = responsivePropDependency(colSpan, (value) => value && `span ${value}`);
|
10
|
+
const resolvedRowSpan = responsivePropDependency(rowSpan, (value) => value && `span ${value}`);
|
11
|
+
const rootVariables = {
|
12
|
+
...responsiveVariables("--rs-grid-area", area),
|
13
|
+
...responsiveVariables("--rs-grid-col-end", resolvedColSpan),
|
14
|
+
// both span and end use the same css variable but end has a higher prioerity
|
15
|
+
...responsiveVariables("--rs-grid-col-end", colEnd),
|
16
|
+
...responsiveVariables("--rs-grid-col-start", colStart),
|
17
|
+
...responsiveVariables("--rs-grid-row-end", resolvedRowSpan),
|
18
|
+
...responsiveVariables("--rs-grid-row-end", rowEnd),
|
19
|
+
...responsiveVariables("--rs-grid-row-start", rowStart),
|
20
|
+
};
|
21
|
+
return (_jsx(TagName, { ...attributes, className: itemClassNames, style: rootVariables, children: children }));
|
22
|
+
};
|
23
|
+
const Grid = (props) => {
|
24
|
+
const { areas, columns, rows, gap, align, justify, autoColumns, autoRows, autoFlow, children, className, as: TagName = "div", attributes, } = props;
|
25
|
+
const alignStyles = getAlignStyles(align);
|
26
|
+
const justifyStyles = getJustifyStyles(justify);
|
27
|
+
const resolvedRows = responsivePropDependency(rows, (value) => typeof value === "number" ? `repeat(${value}, 1fr)` : value);
|
28
|
+
const resolvedColumns = responsivePropDependency(columns, (value) => typeof value === "number" ? `repeat(${value}, 1fr)` : value);
|
29
|
+
const resolvedAreas = responsivePropDependency(areas, (value) => value
|
30
|
+
? `"${value?.join('" "')}"
|
31
|
+
`
|
32
|
+
: undefined);
|
33
|
+
const rootClassNames = classNames(s.root, alignStyles?.classNames, justifyStyles?.classNames, className);
|
34
|
+
const rootVariables = {
|
35
|
+
...responsiveVariables("--rs-grid-gap", gap),
|
36
|
+
...responsiveVariables("--rs-grid-rows", resolvedRows),
|
37
|
+
...responsiveVariables("--rs-grid-columns", resolvedColumns),
|
38
|
+
...responsiveVariables("--rs-grid-areas", resolvedAreas),
|
39
|
+
...responsiveVariables("--rs-grid-auto-flow", autoFlow),
|
40
|
+
...responsiveVariables("--rs-grid-auto-columns", autoColumns),
|
41
|
+
...responsiveVariables("--rs-grid-auto-rows", autoRows),
|
42
|
+
};
|
43
|
+
return (_jsx(TagName, { ...attributes, className: rootClassNames, style: rootVariables, children: children }));
|
44
|
+
};
|
45
|
+
Grid.Item = GridItem;
|
46
|
+
export default Grid;
|
@@ -0,0 +1 @@
|
|
1
|
+
.root{display:grid}[style*="--rs-grid-gap"]{--rs-grid-gap-value:calc(var(--rs-grid-gap) * var(--rs-unit-x1));gap:var(--rs-grid-gap-value);--rs-grid-gap-s:0;--rs-grid-gap-m:var(--rs-grid-gap-s);--rs-grid-gap-l:var(--rs-grid-gap-m);--rs-grid-gap-xl:var(--rs-grid-gap-l);--rs-grid-gap:var(--rs-grid-gap-s)}[style*="--rs-grid-rows"]{grid-template-rows:var(--rs-grid-rows);--rs-grid-rows-s: ;--rs-grid-rows-m:var(--rs-grid-rows-s);--rs-grid-rows-l:var(--rs-grid-rows-m);--rs-grid-rows-xl:var(--rs-grid-rows-l);--rs-grid-rows:var(--rs-grid-rows-s)}[style*="--rs-grid-columns"]{grid-template-columns:var(--rs-grid-columns);--rs-grid-columns-s: ;--rs-grid-columns-m:var(--rs-grid-columns-s);--rs-grid-columns-l:var(--rs-grid-columns-m);--rs-grid-columns-xl:var(--rs-grid-columns-l);--rs-grid-columns:var(--rs-grid-columns-s)}[style*="--rs-grid-areas"]{grid-template-areas:var(--rs-grid-areas);--rs-grid-areas-s: ;--rs-grid-areas-m:var(--rs-grid-areas-s);--rs-grid-areas-l:var(--rs-grid-areas-m);--rs-grid-areas-xl:var(--rs-grid-areas-l);--rs-grid-areas:var(--rs-grid-areas-s)}[style*="--rs-grid-auto-flow"]{grid-auto-flow:var(--rs-grid-auto-flow);--rs-grid-auto-flow-s: ;--rs-grid-auto-flow-m:var(--rs-grid-auto-flow-s);--rs-grid-auto-flow-l:var(--rs-grid-auto-flow-m);--rs-grid-auto-flow-xl:var(--rs-grid-auto-flow-l);--rs-grid-auto-flow:var(--rs-grid-auto-flow-s)}[style*="--rs-grid-auto-columns"]{grid-auto-columns:var(--rs-grid-auto-columns);--rs-grid-auto-columns-s: ;--rs-grid-auto-columns-m:var(--rs-grid-auto-columns-s);--rs-grid-auto-columns-l:var(--rs-grid-auto-columns-m);--rs-grid-auto-columns-xl:var(--rs-grid-auto-columns-l);--rs-grid-auto-columns:var(--rs-grid-auto-columns-s)}[style*="--rs-grid-auto-rows"]{grid-auto-rows:var(--rs-grid-auto-rows);--rs-grid-auto-rows-s: ;--rs-grid-auto-rows-m:var(--rs-grid-auto-rows-s);--rs-grid-auto-rows-l:var(--rs-grid-auto-rows-m);--rs-grid-auto-rows-xl:var(--rs-grid-auto-rows-l);--rs-grid-auto-rows:var(--rs-grid-auto-rows-s)}[style*="--rs-grid-area"]{grid-area:var(--rs-grid-area);--rs-grid-area-s: ;--rs-grid-area-m:var(--rs-grid-area-s);--rs-grid-area-l:var(--rs-grid-area-m);--rs-grid-area-xl:var(--rs-grid-area-l);--rs-grid-area:var(--rs-grid-area-s)}[style*="--rs-grid-col-start"]{grid-column-start:var(--rs-grid-col-start);--rs-grid-col-start-s: ;--rs-grid-col-start-m:var(--rs-grid-col-start-s);--rs-grid-col-start-l:var(--rs-grid-col-start-m);--rs-grid-col-start-xl:var(--rs-grid-col-start-l);--rs-grid-col-start:var(--rs-grid-col-start-s)}[style*="--rs-grid-col-end"]{grid-column-end:var(--rs-grid-col-end);--rs-grid-col-end-s: ;--rs-grid-col-end-m:var(--rs-grid-col-end-s);--rs-grid-col-end-l:var(--rs-grid-col-end-m);--rs-grid-col-end-xl:var(--rs-grid-col-end-l);--rs-grid-col-end:var(--rs-grid-col-end-s)}[style*="--rs-grid-row-start"]{grid-row-start:var(--rs-grid-row-start);--rs-grid-row-start-s: ;--rs-grid-row-start-m:var(--rs-grid-row-start-s);--rs-grid-row-start-l:var(--rs-grid-row-start-m);--rs-grid-row-start-xl:var(--rs-grid-row-start-l);--rs-grid-row-start:var(--rs-grid-row-start-s)}[style*="--rs-grid-row-end"]{grid-row-end:var(--rs-grid-row-end);--rs-grid-row-end-s: ;--rs-grid-row-end-m:var(--rs-grid-row-end-s);--rs-grid-row-end-l:var(--rs-grid-row-end-m);--rs-grid-row-end-xl:var(--rs-grid-row-end-l);--rs-grid-row-end:var(--rs-grid-row-end-s)}@media (--rs-viewport-m ){[style*="--rs-grid-gap"]{--rs-grid-gap:var(--rs-grid-gap-m)}[style*="--rs-grid-rows"]{--rs-grid-rows:var(--rs-grid-rows-m)}[style*="--rs-grid-columns"]{--rs-grid-columns:var(--rs-grid-columns-m)}[style*="--rs-grid-areas"]{--rs-grid-areas:var(--rs-grid-areas-m)}[style*="--rs-grid-auto-flow"]{--rs-grid-auto-flow:var(--rs-grid-auto-flow-m)}[style*="--rs-grid-auto-columns"]{--rs-grid-auto-columns:var(--rs-grid-auto-columns-m)}[style*="--rs-grid-auto-rows"]{--rs-grid-auto-rows:var(--rs-grid-auto-rows-m)}[style*="--rs-grid-area"]{--rs-grid-area:var(--rs-grid-area-m)}[style*="--rs-grid-col-start"]{--rs-grid-col-start:var(--rs-grid-col-start-m)}[style*="--rs-grid-col-end"]{--rs-grid-col-end:var(--rs-grid-col-end-m)}[style*="--rs-grid-row-start"]{--rs-grid-row-start:var(--rs-grid-row-start-m)}[style*="--rs-grid-row-end"]{--rs-grid-row-end:var(--rs-grid-row-end-m)}}@media (--rs-viewport-l ){[style*="--rs-grid-gap"]{--rs-grid-gap:var(--rs-grid-gap-l)}[style*="--rs-grid-rows"]{--rs-grid-rows:var(--rs-grid-rows-l)}[style*="--rs-grid-columns"]{--rs-grid-columns:var(--rs-grid-columns-l)}[style*="--rs-grid-areas"]{--rs-grid-areas:var(--rs-grid-areas-l)}[style*="--rs-grid-auto-flow"]{--rs-grid-auto-flow:var(--rs-grid-auto-flow-l)}[style*="--rs-grid-auto-columns"]{--rs-grid-auto-columns:var(--rs-grid-auto-columns-l)}[style*="--rs-grid-auto-rows"]{--rs-grid-auto-rows:var(--rs-grid-auto-rows-l)}[style*="--rs-grid-area"]{--rs-grid-area:var(--rs-grid-area-l)}[style*="--rs-grid-col-start"]{--rs-grid-col-start:var(--rs-grid-col-start-l)}[style*="--rs-grid-col-end"]{--rs-grid-col-end:var(--rs-grid-col-end-l)}[style*="--rs-grid-row-start"]{--rs-grid-row-start:var(--rs-grid-row-start-l)}[style*="--rs-grid-row-end"]{--rs-grid-row-end:var(--rs-grid-row-end-l)}}@media (--rs-viewport-xl ){[style*="--rs-grid-gap"]{--rs-grid-gap:var(--rs-grid-gap-xl)}[style*="--rs-grid-rows"]{--rs-grid-rows:var(--rs-grid-rows-xl)}[style*="--rs-grid-columns"]{--rs-grid-columns:var(--rs-grid-columns-xl)}[style*="--rs-grid-areas"]{--rs-grid-areas:var(--rs-grid-areas-xl)}[style*="--rs-grid-auto-flow"]{--rs-grid-auto-flow:var(--rs-grid-auto-flow-xl)}[style*="--rs-grid-auto-columns"]{--rs-grid-auto-columns:var(--rs-grid-auto-columns-xl)}[style*="--rs-grid-auto-rows"]{--rs-grid-auto-rows:var(--rs-grid-auto-rows-xl)}[style*="--rs-grid-area"]{--rs-grid-area:var(--rs-grid-area-xl)}[style*="--rs-grid-col-start"]{--rs-grid-col-start:var(--rs-grid-col-start-xl)}[style*="--rs-grid-col-end"]{--rs-grid-col-end:var(--rs-grid-col-end-xl)}[style*="--rs-grid-row-start"]{--rs-grid-row-start:var(--rs-grid-row-start-xl)}[style*="--rs-grid-row-end"]{--rs-grid-row-end:var(--rs-grid-row-end-xl)}}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import type { Property } from "csstype";
|
2
|
+
import type * as G from "../../types/global";
|
3
|
+
import type * as TStyles from "../../styles/types";
|
4
|
+
export type Props<TagName extends keyof JSX.IntrinsicElements = "div"> = {
|
5
|
+
gap?: G.Responsive<number>;
|
6
|
+
align?: G.Responsive<TStyles.Align>;
|
7
|
+
justify?: G.Responsive<TStyles.Justify>;
|
8
|
+
rows?: G.Responsive<number | Property.GridTemplateRows>;
|
9
|
+
columns?: G.Responsive<number | Property.GridTemplateColumns>;
|
10
|
+
areas?: G.Responsive<string[]>;
|
11
|
+
autoFlow?: G.Responsive<Property.GridAutoFlow>;
|
12
|
+
autoColumns?: G.Responsive<Property.GridAutoColumns>;
|
13
|
+
autoRows?: G.Responsive<Property.GridAutoRows>;
|
14
|
+
children?: React.ReactNode;
|
15
|
+
as?: TagName;
|
16
|
+
className?: G.ClassName;
|
17
|
+
attributes?: G.Attributes<TagName>;
|
18
|
+
};
|
19
|
+
export type ItemProps<TagName extends keyof JSX.IntrinsicElements = "div"> = {
|
20
|
+
area?: string;
|
21
|
+
colStart?: G.Responsive<number>;
|
22
|
+
colEnd?: G.Responsive<number>;
|
23
|
+
colSpan?: G.Responsive<number>;
|
24
|
+
rowStart?: G.Responsive<number>;
|
25
|
+
rowEnd?: G.Responsive<number>;
|
26
|
+
rowSpan?: G.Responsive<number>;
|
27
|
+
children?: React.ReactNode;
|
28
|
+
as?: TagName;
|
29
|
+
className?: G.ClassName;
|
30
|
+
attributes?: G.Attributes<TagName>;
|
31
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from "./Grid.js";
|
@@ -0,0 +1,18 @@
|
|
1
|
+
declare const _default: {
|
2
|
+
title: string;
|
3
|
+
component: {
|
4
|
+
<As extends keyof JSX.IntrinsicElements = "div">(props: import("./..").GridProps<As>): import("react").JSX.Element;
|
5
|
+
Item: <As extends keyof JSX.IntrinsicElements = "div">(props: import("./..").GridItemProps<As>) => import("react").JSX.Element;
|
6
|
+
};
|
7
|
+
parameters: {
|
8
|
+
iframe: {
|
9
|
+
url: string;
|
10
|
+
};
|
11
|
+
};
|
12
|
+
};
|
13
|
+
export default _default;
|
14
|
+
export declare const base: () => import("react").JSX.Element;
|
15
|
+
export declare const layout: () => import("react").JSX.Element;
|
16
|
+
export declare const itemLayout: () => import("react").JSX.Element;
|
17
|
+
export declare const areas: () => import("react").JSX.Element;
|
18
|
+
export declare const auto: () => import("react").JSX.Element;
|
@@ -0,0 +1,170 @@
|
|
1
|
+
import { Example } from "../../../utilities/storybook/index.js";
|
2
|
+
import Grid from "../index.js";
|
3
|
+
import View from "../../View/index.js";
|
4
|
+
export default {
|
5
|
+
title: "Utilities/Grid",
|
6
|
+
component: Grid,
|
7
|
+
parameters: {
|
8
|
+
iframe: {
|
9
|
+
url: "https://reshaped.so/docs/utilities/grid",
|
10
|
+
},
|
11
|
+
},
|
12
|
+
};
|
13
|
+
export const base = () => (<Example>
|
14
|
+
<Example.Item title="gap: 2">
|
15
|
+
<Grid gap={2} columns={2}>
|
16
|
+
{[1, 2].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
17
|
+
{i}
|
18
|
+
</View>))}
|
19
|
+
</Grid>
|
20
|
+
</Example.Item>
|
21
|
+
<Example.Item title="align: center">
|
22
|
+
<Grid gap={2} columns={2} align="center">
|
23
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4}>
|
24
|
+
1
|
25
|
+
</View>
|
26
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={8}>
|
27
|
+
2
|
28
|
+
</View>
|
29
|
+
</Grid>
|
30
|
+
</Example.Item>
|
31
|
+
<Example.Item title="justify: center">
|
32
|
+
<Grid gap={2} columns="200px 200px" justify="center">
|
33
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4}>
|
34
|
+
1
|
35
|
+
</View>
|
36
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4}>
|
37
|
+
2
|
38
|
+
</View>
|
39
|
+
</Grid>
|
40
|
+
</Example.Item>
|
41
|
+
</Example>);
|
42
|
+
export const layout = () => (<Example>
|
43
|
+
<Example.Item title="simple: 2 rows, 3 columns">
|
44
|
+
<Grid gap={4} columns={3} rows={2}>
|
45
|
+
{[1, 2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
46
|
+
{i}
|
47
|
+
</View>))}
|
48
|
+
</Grid>
|
49
|
+
</Example.Item>
|
50
|
+
<Example.Item title="columns template, 1fr 2fr 1fr">
|
51
|
+
<Grid gap={4} columns="1fr 2fr 1fr" rows={2}>
|
52
|
+
{[1, 2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
53
|
+
{i}
|
54
|
+
</View>))}
|
55
|
+
</Grid>
|
56
|
+
</Example.Item>
|
57
|
+
<Example.Item title="rows template, 1fr 2fr">
|
58
|
+
<Grid gap={4} columns={3} rows="1fr 2fr">
|
59
|
+
{[1, 2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
60
|
+
{i}
|
61
|
+
</View>))}
|
62
|
+
</Grid>
|
63
|
+
</Example.Item>
|
64
|
+
<Example.Item title="responsive">
|
65
|
+
<Grid gap={4} columns={{ s: 3, m: "1fr 2fr 1fr" }} rows={{ s: 2, m: "1fr 2fr" }}>
|
66
|
+
{[1, 2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
67
|
+
{i}
|
68
|
+
</View>))}
|
69
|
+
</Grid>
|
70
|
+
</Example.Item>
|
71
|
+
</Example>);
|
72
|
+
export const itemLayout = () => (<Example>
|
73
|
+
<Example.Item title="column, start 1, end 3">
|
74
|
+
<Grid gap={4} columns={3} rows={2}>
|
75
|
+
<Grid.Item colStart={1} colEnd={3}>
|
76
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
77
|
+
1
|
78
|
+
</View>
|
79
|
+
</Grid.Item>
|
80
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
81
|
+
{i}
|
82
|
+
</View>))}
|
83
|
+
</Grid>
|
84
|
+
</Example.Item>
|
85
|
+
<Example.Item title="column, start 1, span 2">
|
86
|
+
<Grid gap={4} columns={3} rows={2}>
|
87
|
+
<Grid.Item colStart={1} colSpan={2}>
|
88
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
89
|
+
1
|
90
|
+
</View>
|
91
|
+
</Grid.Item>
|
92
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
93
|
+
{i}
|
94
|
+
</View>))}
|
95
|
+
</Grid>
|
96
|
+
</Example.Item>
|
97
|
+
|
98
|
+
<Example.Item title="row, start 1, end 3">
|
99
|
+
<Grid gap={4} columns={3} rows={2}>
|
100
|
+
<Grid.Item rowStart={1} rowEnd={3}>
|
101
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
102
|
+
1
|
103
|
+
</View>
|
104
|
+
</Grid.Item>
|
105
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
106
|
+
{i}
|
107
|
+
</View>))}
|
108
|
+
</Grid>
|
109
|
+
</Example.Item>
|
110
|
+
|
111
|
+
<Example.Item title="row, start 1, span 2">
|
112
|
+
<Grid gap={4} columns={3} rows={2}>
|
113
|
+
<Grid.Item rowStart={1} rowSpan={2}>
|
114
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
115
|
+
1
|
116
|
+
</View>
|
117
|
+
</Grid.Item>
|
118
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
119
|
+
{i}
|
120
|
+
</View>))}
|
121
|
+
</Grid>
|
122
|
+
</Example.Item>
|
123
|
+
|
124
|
+
<Example.Item title="responsive">
|
125
|
+
<Grid gap={4} columns={3} rows={2}>
|
126
|
+
<Grid.Item rowStart={1} rowSpan={{ s: 1, m: 2 }} colStart={1} colSpan={{ s: 1, m: 2 }}>
|
127
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
128
|
+
1
|
129
|
+
</View>
|
130
|
+
</Grid.Item>
|
131
|
+
{[2, 3, 4, 5].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
132
|
+
{i}
|
133
|
+
</View>))}
|
134
|
+
</Grid>
|
135
|
+
</Example.Item>
|
136
|
+
</Example>);
|
137
|
+
export const areas = () => (<Example>
|
138
|
+
<Example.Item title="simple: 2 rows, 3 columns">
|
139
|
+
<Grid gap={4} rows={2} areas={["a .", "a b"]}>
|
140
|
+
{["a", "b"].map((area) => (<Grid.Item area={area} key={area}>
|
141
|
+
<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} height="100%">
|
142
|
+
{area}
|
143
|
+
</View>
|
144
|
+
</Grid.Item>))}
|
145
|
+
</Grid>
|
146
|
+
</Example.Item>
|
147
|
+
</Example>);
|
148
|
+
export const auto = () => (<Example>
|
149
|
+
<Example.Item title="auto flow: column">
|
150
|
+
<Grid gap={4} autoFlow="column" rows={2} columns={2}>
|
151
|
+
{[1, 2, 3].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
152
|
+
{i}
|
153
|
+
</View>))}
|
154
|
+
</Grid>
|
155
|
+
</Example.Item>
|
156
|
+
<Example.Item title="auto rows">
|
157
|
+
<Grid gap={4} autoRows="100px" columns={2}>
|
158
|
+
{[1, 2, 3].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
159
|
+
{i}
|
160
|
+
</View>))}
|
161
|
+
</Grid>
|
162
|
+
</Example.Item>
|
163
|
+
<Example.Item title="auto columns">
|
164
|
+
<Grid gap={4} autoColumns="100px" autoFlow="column">
|
165
|
+
{[1, 2, 3].map((i) => (<View backgroundColor="neutral-faded" borderRadius="medium" padding={4} key={i}>
|
166
|
+
{i}
|
167
|
+
</View>))}
|
168
|
+
</Grid>
|
169
|
+
</Example.Item>
|
170
|
+
</Example>);
|
@@ -1 +1 @@
|
|
1
|
-
.root{aspect-ratio:1;display:flex;justify-content:center}.--auto{aspect-ratio:auto;justify-content:flex-start;width:auto}.root svg{display:block;height:100%;min-width:100
|
1
|
+
.root{aspect-ratio:1;display:flex;justify-content:center}.--auto{aspect-ratio:auto;justify-content:flex-start;width:auto}.root svg{display:block;height:100%;min-width:100%;width:auto}.--color-neutral{color:var(--rs-color-foreground-neutral)}.--color-neutral-faded{color:var(--rs-color-foreground-neutral-faded)}.--color-primary{color:var(--rs-color-foreground-primary)}.--color-positive{color:var(--rs-color-foreground-positive)}.--color-warning{color:var(--rs-color-foreground-warning)}.--color-critical{color:var(--rs-color-foreground-critical)}.--color-disabled{color:var(--rs-color-foreground-disabled)}
|
@@ -2,5 +2,5 @@ declare const Link: import("react").ForwardRefExoticComponent<Pick<import("../Ac
|
|
2
2
|
icon?: import("../Icon").IconProps["svg"];
|
3
3
|
color?: "inherit" | "critical" | "primary" | "positive" | "warning";
|
4
4
|
variant?: "plain" | "underline";
|
5
|
-
} & import("react").RefAttributes<
|
5
|
+
} & import("react").RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
6
6
|
export default Link;
|
@@ -1 +1 @@
|
|
1
|
-
@keyframes rs-reshaped-loader{0%{transform:rotate(0deg)}50%{transform:rotate(540deg)}to{transform:rotate(3turn)}}.root{animation:rs-reshaped-loader 2.2s cubic-bezier(.445,.05,.55,.95) infinite;display:block;height:var(--rs-loader-size);position:relative;width:var(--rs-loader-size)}.root:after,.root:before{background:var(--rs-loader-color);border-radius:50%;content:"";height:var(--rs-loader-stroke);position:absolute;top:50%;transform:translateY(-50%);width:var(--rs-loader-stroke);z-index:2}.root:before{left:0}.root:after{right:0}.inner:after,.inner:before{border:var(--rs-loader-stroke) solid var(--rs-loader-color);border-radius:50%;content:"";inset:0;position:absolute}.inner:before{opacity:.28}.inner:after{border-bottom-color:transparent;border-left-color:transparent;transform:rotate(-45deg)}.--color-inherit{--rs-loader-color:currentcolor}.--color-primary{--rs-loader-color:var(--rs-color-border-primary)}.--color-positive{--rs-loader-color:var(--rs-color-border-positive)}.--color-critical{--rs-loader-color:var(--rs-color-border-critical)}.--size-small{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}@media (--rs-viewport-m ){.--size-small--m{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--m{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}}@media (--rs-viewport-l ){.--size-small--l{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--l{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--xl{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}}
|
1
|
+
@keyframes rs-reshaped-loader{0%{transform:rotate(0deg)}50%{transform:rotate(540deg)}to{transform:rotate(3turn)}}.root{animation:rs-reshaped-loader 2.2s cubic-bezier(.445,.05,.55,.95) infinite;display:block;height:var(--rs-loader-size);position:relative;width:var(--rs-loader-size)}.root:after,.root:before{background:var(--rs-loader-color);border-radius:50%;content:"";height:var(--rs-loader-stroke);position:absolute;top:50%;transform:translateY(-50%);width:var(--rs-loader-stroke);z-index:2}.root:before{left:0}.root:after{right:0}.inner:after,.inner:before{border:var(--rs-loader-stroke) solid var(--rs-loader-color);border-radius:50%;content:"";inset:0;position:absolute}.inner:before{opacity:.28}.inner:after{border-bottom-color:transparent;border-left-color:transparent;transform:rotate(-45deg)}.--color-inherit{--rs-loader-color:currentcolor}.--color-primary{--rs-loader-color:var(--rs-color-border-primary)}.--color-positive{--rs-loader-color:var(--rs-color-border-positive)}.--color-critical{--rs-loader-color:var(--rs-color-border-critical)}.--size-small{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}.--size-large{--rs-loader-size:var(--rs-unit-x10);--rs-loader-stroke:5px}@media (--rs-viewport-m ){.--size-small--m{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--m{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}.--size-large--m{--rs-loader-size:var(--rs-unit-x10);--rs-loader-stroke:5px}}@media (--rs-viewport-l ){.--size-small--l{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--l{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}.--size-large--l{--rs-loader-size:var(--rs-unit-x10);--rs-loader-stroke:5px}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-loader-size:var(--rs-unit-x4);--rs-loader-stroke:2px}.--size-medium--xl{--rs-loader-size:var(--rs-unit-x6);--rs-loader-stroke:3px}.--size-large--xl{--rs-loader-size:var(--rs-unit-x10);--rs-loader-stroke:5px}}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type * as G from "../../types/global";
|
2
2
|
export type Props = {
|
3
|
-
size?: G.Responsive<"small" | "medium">;
|
3
|
+
size?: G.Responsive<"small" | "medium" | "large">;
|
4
4
|
color?: "primary" | "critical" | "positive" | "inherit";
|
5
5
|
className?: G.ClassName;
|
6
6
|
attributes?: G.Attributes<"span">;
|
@@ -10,13 +10,15 @@ export default {
|
|
10
10
|
},
|
11
11
|
};
|
12
12
|
export const size = () => {
|
13
|
-
const attributes = {};
|
14
13
|
return (<Example>
|
15
14
|
<Example.Item title="size: medium">
|
16
|
-
<Loader size="medium"
|
15
|
+
<Loader size="medium"/>
|
17
16
|
</Example.Item>
|
18
17
|
<Example.Item title="size: small">
|
19
|
-
<Loader size="small"
|
18
|
+
<Loader size="small"/>
|
19
|
+
</Example.Item>
|
20
|
+
<Example.Item title="size: large">
|
21
|
+
<Loader size="large"/>
|
20
22
|
</Example.Item>
|
21
23
|
<Example.Item title={["responsive size", "[s] small", "[m+] medium"]}>
|
22
24
|
<Loader size={{ s: "small", m: "medium" }}/>
|
@@ -5,14 +5,12 @@ import Dismissible from "../Dismissible/index.js";
|
|
5
5
|
import s from "./Popover.module.css";
|
6
6
|
import getPaddingStyles from "../../styles/padding/index.js";
|
7
7
|
const Popover = (props) => {
|
8
|
-
const {
|
8
|
+
const { width, variant = "elevated", triggerType = "click", position = "bottom", ...flyoutProps } = props;
|
9
9
|
const padding = props.padding ?? (variant === "headless" ? 0 : 4);
|
10
10
|
const trapFocusMode = props.trapFocusMode || (triggerType === "hover" ? "content-menu" : undefined);
|
11
11
|
const paddingStyles = getPaddingStyles(padding);
|
12
12
|
const contentClassName = classNames(s.content, !!width && s["content--has-width"], variant && s[`content--variant-${variant}`], paddingStyles?.classNames);
|
13
|
-
return (
|
14
|
-
// @ts-ignore
|
15
|
-
_jsx(Flyout, { id: id, instanceRef: instanceRef, position: position, forcePosition: forcePosition, onOpen: onOpen, onClose: onClose, trapFocusMode: trapFocusMode, triggerType: triggerType, active: active, defaultActive: defaultActive, width: width, disableHideAnimation: disableHideAnimation, disableContentHover: disableContentHover, disableCloseOnOutsideClick: disableCloseOnOutsideClick, contentGap: contentGap, containerRef: containerRef, contentClassName: contentClassName, contentAttributes: { style: { ...paddingStyles?.variables } }, children: children }));
|
13
|
+
return (_jsx(Flyout, { ...flyoutProps, position: position, trapFocusMode: trapFocusMode, triggerType: triggerType, width: width, contentClassName: contentClassName, contentAttributes: { style: { ...paddingStyles?.variables } } }));
|
16
14
|
};
|
17
15
|
const PopoverDismissible = (props) => {
|
18
16
|
const { handleClose } = useFlyoutContext();
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type React from "react";
|
2
2
|
import type { FlyoutProps, FlyoutInstance } from "../_private/Flyout";
|
3
3
|
export type Instance = FlyoutInstance;
|
4
|
-
export type Props = Pick<FlyoutProps, "id" | "position" | "forcePosition" | "onOpen" | "onClose" | "width" | "trapFocusMode" | "active" | "defaultActive" | "contentGap" | "instanceRef" | "triggerType" | "disableHideAnimation" | "disableContentHover" | "disableCloseOnOutsideClick" | "containerRef"> & {
|
4
|
+
export type Props = Pick<FlyoutProps, "id" | "position" | "forcePosition" | "fallbackPositions" | "onOpen" | "onClose" | "width" | "trapFocusMode" | "active" | "defaultActive" | "contentGap" | "instanceRef" | "triggerType" | "disableHideAnimation" | "disableContentHover" | "disableCloseOnOutsideClick" | "containerRef" | "initialFocusRef"> & {
|
5
5
|
children?: React.ReactNode;
|
6
6
|
padding?: number;
|
7
7
|
variant?: "elevated" | "headless";
|