reshaped 3.6.0-canary.6 → 3.6.0-canary.8
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 +14 -1
- package/dist/bundle.css +1 -1
- package/dist/bundle.d.ts +4 -0
- package/dist/bundle.js +11 -11
- package/dist/cjs/cli/theming/reshaped.config.js +0 -1
- package/dist/cjs/themes/_generator/definitions/slate.d.ts +2 -2
- package/dist/cjs/themes/_generator/tokens/color/color.transforms.js +7 -5
- package/dist/cjs/themes/_generator/tokens/color/color.types.d.ts +3 -2
- package/dist/cjs/themes/_generator/tokens/color/utilities/convert.d.ts +1 -1
- package/dist/cjs/themes/_generator/tokens/color/utilities/generateColors.d.ts +2 -2
- package/dist/cjs/themes/_generator/tokens/color/utilities/generateColors.js +1 -1
- package/dist/cjs/themes/_generator/tokens/color/utilities/generateMetaColors.d.ts +2 -2
- package/dist/cjs/themes/_generator/tokens/shadow/shadow.transforms.js +1 -1
- package/dist/cjs/themes/_generator/tokens/types.d.ts +7 -4
- package/dist/cjs/themes/_generator/transform.js +5 -2
- package/dist/cjs/themes/slate/theme.css +1 -1
- package/dist/cjs/types/config.d.ts +1 -0
- package/dist/cli/theming/reshaped.config.js +0 -1
- package/dist/components/Badge/Badge.module.css +1 -1
- package/dist/components/Button/Button.module.css +1 -1
- package/dist/components/Button/tests/Button.stories.js +39 -6
- package/dist/components/Calendar/Calendar.module.css +1 -1
- package/dist/components/Card/Card.module.css +1 -1
- package/dist/components/Checkbox/Checkbox.module.css +1 -1
- package/dist/components/FileUpload/FileUpload.module.css +1 -1
- package/dist/components/Link/Link.module.css +1 -1
- package/dist/components/MenuItem/MenuItem.module.css +1 -1
- package/dist/components/Modal/tests/Modal.test.stories.js +1 -1
- package/dist/components/NumberField/NumberField.module.css +1 -1
- package/dist/components/NumberField/NumberFieldControlled.js +3 -1
- package/dist/components/NumberField/tests/NumberField.stories.d.ts +1 -0
- package/dist/components/NumberField/tests/NumberField.stories.js +24 -6
- package/dist/components/Overlay/tests/Overlay.stories.js +3 -3
- package/dist/components/Overlay/tests/Overlay.test.stories.js +1 -1
- package/dist/components/Radio/Radio.module.css +1 -1
- package/dist/components/Resizable/Resizable.js +5 -27
- package/dist/components/Resizable/Resizable.module.css +1 -1
- package/dist/components/Resizable/Resizable.types.d.ts +5 -2
- package/dist/components/Resizable/ResizableHandle.d.ts +5 -0
- package/dist/components/Resizable/ResizableHandle.js +32 -0
- package/dist/components/Resizable/tests/Resizable.stories.d.ts +22 -1
- package/dist/components/Resizable/tests/Resizable.stories.js +154 -65
- package/dist/components/Select/Select.js +1 -1
- package/dist/components/Select/Select.module.css +1 -1
- package/dist/components/Tabs/Tabs.module.css +1 -1
- package/dist/components/ToggleButton/ToggleButton.d.ts +3 -0
- package/dist/components/ToggleButton/ToggleButton.js +11 -0
- package/dist/components/ToggleButton/ToggleButton.types.d.ts +20 -0
- package/dist/components/ToggleButton/ToggleButton.types.js +1 -0
- package/dist/components/ToggleButton/ToggleButtonControlled.d.ts +3 -0
- package/dist/components/ToggleButton/ToggleButtonControlled.js +22 -0
- package/dist/components/ToggleButton/ToggleButtonUncontrolled.d.ts +3 -0
- package/dist/components/ToggleButton/ToggleButtonUncontrolled.js +15 -0
- package/dist/components/ToggleButton/index.d.ts +2 -0
- package/dist/components/ToggleButton/index.js +1 -0
- package/dist/components/ToggleButton/tests/ToggleButton.stories.d.ts +23 -0
- package/dist/components/ToggleButton/tests/ToggleButton.stories.js +87 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.context.d.ts +5 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.context.js +5 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.d.ts +3 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.js +11 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.types.d.ts +24 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.types.js +1 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.d.ts +3 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +44 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroupUncontrolled.d.ts +4 -0
- package/dist/components/ToggleButtonGroup/ToggleButtonGroupUncontrolled.js +18 -0
- package/dist/components/ToggleButtonGroup/index.d.ts +3 -0
- package/dist/components/ToggleButtonGroup/index.js +2 -0
- package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.d.ts +21 -0
- package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.js +115 -0
- package/dist/hooks/tests/useDrag.stories.js +1 -1
- package/dist/hooks/tests/useToggle.stories.js +1 -1
- package/dist/hooks/useToggle.d.ts +1 -1
- package/dist/hooks/useToggle.js +2 -2
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/styles/bleed/bleed.module.css +1 -1
- package/dist/themes/_generator/definitions/slate.d.ts +2 -2
- package/dist/themes/_generator/tokens/color/color.transforms.js +7 -5
- package/dist/themes/_generator/tokens/color/color.types.d.ts +3 -2
- package/dist/themes/_generator/tokens/color/utilities/convert.d.ts +1 -1
- package/dist/themes/_generator/tokens/color/utilities/generateColors.d.ts +2 -2
- package/dist/themes/_generator/tokens/color/utilities/generateColors.js +1 -1
- package/dist/themes/_generator/tokens/color/utilities/generateMetaColors.d.ts +2 -2
- package/dist/themes/_generator/tokens/shadow/shadow.transforms.js +1 -1
- package/dist/themes/_generator/tokens/types.d.ts +7 -4
- package/dist/themes/_generator/transform.js +5 -2
- package/dist/themes/slate/theme.css +1 -1
- package/dist/types/config.d.ts +1 -0
- package/package.json +27 -27
- package/dist/components/Resizable/tests/Resizable.test.stories.d.ts +0 -18
- package/dist/components/Resizable/tests/Resizable.test.stories.js +0 -25
@@ -139,21 +139,39 @@ export const value = {
|
|
139
139
|
},
|
140
140
|
};
|
141
141
|
export const minMax = {
|
142
|
-
name: "min, max
|
143
|
-
render: () => (<NumberField name="test-name" defaultValue={6} min={5} max={
|
142
|
+
name: "min, max",
|
143
|
+
render: () => (<NumberField name="test-name" defaultValue={6} min={5} max={10} increaseAriaLabel="Increase" decreaseAriaLabel="Decrease" inputAttributes={{ "aria-label": "Label" }}/>),
|
144
144
|
play: async ({ canvas }) => {
|
145
145
|
const input = canvas.getByRole("textbox");
|
146
146
|
const [increaseButton, decreaseButton] = canvas.getAllByRole("button");
|
147
147
|
expect(input).toHaveValue("6");
|
148
148
|
await userEvent.click(increaseButton);
|
149
|
-
|
149
|
+
await userEvent.click(increaseButton);
|
150
|
+
await userEvent.click(increaseButton);
|
151
|
+
await userEvent.click(increaseButton);
|
152
|
+
await userEvent.click(increaseButton);
|
153
|
+
expect(input).toHaveValue("10");
|
154
|
+
await userEvent.click(decreaseButton);
|
155
|
+
await userEvent.click(decreaseButton);
|
156
|
+
await userEvent.click(decreaseButton);
|
157
|
+
await userEvent.click(decreaseButton);
|
150
158
|
await userEvent.click(decreaseButton);
|
151
159
|
await userEvent.click(decreaseButton);
|
152
160
|
expect(input).toHaveValue("5");
|
161
|
+
},
|
162
|
+
};
|
163
|
+
export const step = {
|
164
|
+
name: "step",
|
165
|
+
render: () => (<NumberField name="test-name" defaultValue={6} step={0.5} increaseAriaLabel="Increase" decreaseAriaLabel="Decrease" inputAttributes={{ "aria-label": "Label" }}/>),
|
166
|
+
play: async ({ canvas }) => {
|
167
|
+
const input = canvas.getByRole("textbox");
|
168
|
+
const [increaseButton, decreaseButton] = canvas.getAllByRole("button");
|
169
|
+
expect(input).toHaveValue("6");
|
153
170
|
await userEvent.click(increaseButton);
|
154
|
-
|
155
|
-
await userEvent.click(
|
156
|
-
|
171
|
+
expect(input).toHaveValue("6.5");
|
172
|
+
await userEvent.click(decreaseButton);
|
173
|
+
await userEvent.click(decreaseButton);
|
174
|
+
expect(input).toHaveValue("5.5");
|
157
175
|
},
|
158
176
|
};
|
159
177
|
export const className = {
|
@@ -18,7 +18,7 @@ export const base = {
|
|
18
18
|
const overlayToggle = useToggle(false);
|
19
19
|
return (<Example>
|
20
20
|
<Example.Item title="base">
|
21
|
-
<Button onClick={overlayToggle.
|
21
|
+
<Button onClick={overlayToggle.activate}>Open overlay</Button>
|
22
22
|
<Overlay active={overlayToggle.active} onClose={overlayToggle.deactivate}>
|
23
23
|
Overlay content
|
24
24
|
</Overlay>
|
@@ -36,7 +36,7 @@ export const transparent = {
|
|
36
36
|
const overlayToggle = useToggle(false);
|
37
37
|
return (<Example>
|
38
38
|
<Example.Item title="base">
|
39
|
-
<Button onClick={overlayToggle.
|
39
|
+
<Button onClick={overlayToggle.activate}>Open overlay</Button>
|
40
40
|
<Overlay active={overlayToggle.active} onClose={overlayToggle.deactivate} transparent>
|
41
41
|
Overlay content
|
42
42
|
</Overlay>
|
@@ -54,7 +54,7 @@ export const blurred = {
|
|
54
54
|
const overlayToggle = useToggle(false);
|
55
55
|
return (<Example>
|
56
56
|
<Example.Item title="base">
|
57
|
-
<Button onClick={overlayToggle.
|
57
|
+
<Button onClick={overlayToggle.activate}>Open overlay</Button>
|
58
58
|
<Overlay active={overlayToggle.active} onClose={overlayToggle.deactivate} blurred>
|
59
59
|
Overlay content
|
60
60
|
</Overlay>
|
@@ -36,7 +36,7 @@ export const handlers = {
|
|
36
36
|
render: (args) => {
|
37
37
|
const overlayToggle = useToggle();
|
38
38
|
return (<>
|
39
|
-
<Button onClick={overlayToggle.toggle}>Open overlay</Button>
|
39
|
+
<Button onClick={() => overlayToggle.toggle()}>Open overlay</Button>
|
40
40
|
<Overlay active={overlayToggle.active} onClose={(closeArgs) => {
|
41
41
|
overlayToggle.deactivate();
|
42
42
|
args.handleClose(closeArgs);
|
@@ -1 +1 @@
|
|
1
|
-
.root{align-items:center;cursor:pointer;display:inline-flex;gap:var(--rs-radio-gap);user-select:none;vertical-align:top;-webkit-tap-highlight-color:transparent}.root:hover .decorator{background:var(--rs-color-background-neutral-faded)}.field{position:relative}.decorator{background:var(--rs-color-background-elevation-base);border:1px solid var(--rs-color-border-neutral);border-radius:50%;height:var(--rs-radio-line-height);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:background-color,border-color;width:var(--rs-radio-line-height)}.decorator:after{background:var(--rs-color-on-background-primary);border-radius:50%;content:"";height:calc(var(--rs-radio-line-height) * .4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform;width:calc(var(--rs-radio-line-height) * .4)}.--size-small{--rs-radio-line-height:var(--rs-line-height-caption-1);--rs-radio-gap:var(--rs-unit-x1)}.--size-medium{--rs-radio-line-height:var(--rs-line-height-body-3);--rs-radio-gap:var(--rs-unit-x2)}.--size-large{--rs-radio-line-height:var(--rs-line-height-body-2);--rs-radio-gap:var(--rs-unit-x2)}[data-rs-keyboard] .input:focus+.decorator{box-shadow:var(--rs-focus-shadow)}.root.--error .decorator{border-color:var(--rs-color-border-critical)}.input:checked+.decorator{background:var(--rs-color-background-primary);border-color:var(--rs-color-background-primary)}.input:checked+.decorator:after{opacity:1;transform:translate(-50%,-50%) scale(1)}.root.--disabled{color:var(--rs-color-foreground-disabled);cursor:not-allowed}.root.--disabled .decorator{background:var(--rs-color-background-disabled-faded);border-color:var(--rs-color-border-disabled)}.root.--disabled .decorator:after{background-color:var(--rs-color-foreground-disabled)}.root.--disabled .input:checked+.decorator{background:var(--rs-color-background-disabled);border-color:transparent}@media (--rs-viewport-m ){.--size-small--m{--rs-radio-line-height:var(--rs-line-height-caption-1);--rs-radio-gap:var(--rs-unit-x1)}.--size-medium--m{--rs-radio-line-height:var(--rs-line-height-body-3);--rs-radio-gap:var(--rs-unit-x2)}.--size-large--m{--rs-radio-line-height:var(--rs-line-height-body-2);--rs-radio-gap:var(--rs-unit-x2)}}@media (--rs-viewport-l ){.--size-small--l{--rs-radio-line-height:var(--rs-line-height-caption-1);--rs-radio-gap:var(--rs-unit-x1)}.--size-medium--l{--rs-radio-line-height:var(--rs-line-height-body-3);--rs-radio-gap:var(--rs-unit-x2)}.--size-large--l{--rs-radio-line-height:var(--rs-line-height-body-2);--rs-radio-gap:var(--rs-unit-x2)}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-radio-line-height:var(--rs-line-height-caption-1);--rs-radio-gap:var(--rs-unit-x1)}.--size-medium--xl{--rs-radio-line-height:var(--rs-line-height-body-3);--rs-radio-gap:var(--rs-unit-x2)}.--size-large--xl{--rs-radio-line-height:var(--rs-line-height-body-2);--rs-radio-gap:var(--rs-unit-x2)}}
|
1
|
+
.root{align-items:center;cursor:pointer;display:inline-flex;gap:var(--rs-radio-gap);user-select:none;vertical-align:top;-webkit-tap-highlight-color:transparent}@media (hover:hover) and (pointer:fine){.root:hover .decorator{background:var(--rs-color-background-neutral-faded)}}.field{position:relative}.decorator{background:var(--rs-color-background-elevation-base);border:1px solid var(--rs-color-border-neutral);border-radius:50%;height:var(--rs-radio-line-height);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:background-color,border-color;width:var(--rs-radio-line-height)}.decorator:after{background:var(--rs-color-on-background-primary);border-radius:50%;content:"";height:calc(var(--rs-radio-line-height) * .4);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform;width:calc(var(--rs-radio-line-height) * .4)}.--size-small{--rs-radio-line-height:var(--rs-line-height-caption-1);--rs-radio-gap:var(--rs-unit-x1)}.--size-medium{--rs-radio-line-height:var(--rs-line-height-body-3);--rs-radio-gap:var(--rs-unit-x2)}.--size-large{--rs-radio-line-height:var(--rs-line-height-body-2);--rs-radio-gap:var(--rs-unit-x2)}[data-rs-keyboard] .input:focus+.decorator{box-shadow:var(--rs-focus-shadow)}.root.--error .decorator{border-color:var(--rs-color-border-critical)}.input:checked+.decorator{background:var(--rs-color-background-primary);border-color:var(--rs-color-background-primary)}.input:checked+.decorator:after{opacity:1;transform:translate(-50%,-50%) scale(1)}.root.--disabled{color:var(--rs-color-foreground-disabled);cursor:not-allowed}.root.--disabled .decorator{background:var(--rs-color-background-disabled-faded);border-color:var(--rs-color-border-disabled)}.root.--disabled .decorator:after{background-color:var(--rs-color-foreground-disabled)}.root.--disabled .input:checked+.decorator{background:var(--rs-color-background-disabled);border-color:transparent}@media (--rs-viewport-m ){.--size-small--m{--rs-radio-line-height:var(--rs-line-height-caption-1);--rs-radio-gap:var(--rs-unit-x1)}.--size-medium--m{--rs-radio-line-height:var(--rs-line-height-body-3);--rs-radio-gap:var(--rs-unit-x2)}.--size-large--m{--rs-radio-line-height:var(--rs-line-height-body-2);--rs-radio-gap:var(--rs-unit-x2)}}@media (--rs-viewport-l ){.--size-small--l{--rs-radio-line-height:var(--rs-line-height-caption-1);--rs-radio-gap:var(--rs-unit-x1)}.--size-medium--l{--rs-radio-line-height:var(--rs-line-height-body-3);--rs-radio-gap:var(--rs-unit-x2)}.--size-large--l{--rs-radio-line-height:var(--rs-line-height-body-2);--rs-radio-gap:var(--rs-unit-x2)}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-radio-line-height:var(--rs-line-height-caption-1);--rs-radio-gap:var(--rs-unit-x1)}.--size-medium--xl{--rs-radio-line-height:var(--rs-line-height-body-3);--rs-radio-gap:var(--rs-unit-x2)}.--size-large--xl{--rs-radio-line-height:var(--rs-line-height-body-2);--rs-radio-gap:var(--rs-unit-x2)}}
|
@@ -2,31 +2,9 @@
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
3
3
|
import React from "react";
|
4
4
|
import { classNames } from "../../utilities/props.js";
|
5
|
-
import useDrag from "../../hooks/_private/useDrag.js";
|
6
5
|
import View from "../View/index.js";
|
6
|
+
import ResizableHandle, { ResizableHandleContext } from "./ResizableHandle.js";
|
7
7
|
import s from "./Resizable.module.css";
|
8
|
-
const PrivateResizableHandle = (props) => {
|
9
|
-
const { containerRef, onDrag, index, direction, children } = props;
|
10
|
-
const { ref, active } = useDrag((args) => {
|
11
|
-
onDrag({ ...args, index });
|
12
|
-
}, {
|
13
|
-
containerRef,
|
14
|
-
orientation: direction === "row" ? "horizontal" : "vertical",
|
15
|
-
});
|
16
|
-
const handleClassNames = classNames(s.handle, active && s["handle--dragging"]);
|
17
|
-
if (children)
|
18
|
-
return _jsx(View.Item, { children: children({ ref }) });
|
19
|
-
return (_jsx(View.Item, { className: handleClassNames, attributes: {
|
20
|
-
role: "button",
|
21
|
-
tabIndex: 0,
|
22
|
-
"aria-hidden": true,
|
23
|
-
ref: (el) => {
|
24
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
25
|
-
// @ts-ignore
|
26
|
-
ref.current = el;
|
27
|
-
},
|
28
|
-
} }));
|
29
|
-
};
|
30
8
|
const PrivateResizableItem = React.forwardRef((props, ref) => {
|
31
9
|
const { children, defaultSize, minSize, maxSize } = props;
|
32
10
|
const itemRef = React.useRef(null);
|
@@ -135,10 +113,10 @@ const Resizable = (props) => {
|
|
135
113
|
}, [horizontal]);
|
136
114
|
const output = React.Children.map(children, (child) => {
|
137
115
|
const isComponent = React.isValidElement(child);
|
138
|
-
if (isComponent && child.
|
139
|
-
return (_jsx(
|
116
|
+
if (isComponent && child.props && child.type !== Resizable.Item) {
|
117
|
+
return (_jsx(ResizableHandleContext.Provider, { value: { containerRef, index: currentHandleIndex++, onDrag, direction }, children: child }));
|
140
118
|
}
|
141
|
-
if (isComponent && child.type === Resizable.Item
|
119
|
+
if (isComponent && child.props && child.type === Resizable.Item) {
|
142
120
|
const index = currentHandleIndex;
|
143
121
|
return (_jsx(PrivateResizableItem, { ...child.props, index: currentItemIndex++, ref: (el) => {
|
144
122
|
itemsRef.current[index] = { el, props: child.props };
|
@@ -149,6 +127,6 @@ const Resizable = (props) => {
|
|
149
127
|
return (_jsx(View, { attributes: { ...attributes, ref: containerRef }, className: rootClassNames, height: height, direction: direction, align: "stretch", gap: gap, children: output }));
|
150
128
|
};
|
151
129
|
Resizable.Item = () => null;
|
152
|
-
Resizable.Handle =
|
130
|
+
Resizable.Handle = ResizableHandle;
|
153
131
|
Resizable.displayName = "Resizable";
|
154
132
|
export default Resizable;
|
@@ -1 +1 @@
|
|
1
|
-
.item{--rs-resizable-default-size:none;--rs-resizable-min-size:0;--rs-resizable-max-size:100%;flex-grow:100;max-width:var(--rs-resizable-default-size);min-width:var(--rs-resizable-default-size);overflow:hidden}.handle{flex-shrink:0;position:relative}.handle:after,.handle:before{border-radius:999px;content:"";position:absolute}.handle:after{transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,background-color}.--variant-bordered .handle:after{background:var(--rs-color-border-neutral-faded)}.--variant-bordered .handle--dragging:after,.--variant-bordered .handle:hover:after,.--variant-borderless .handle:after,[data-rs-keyboard] .--variant-bordered .handle:focus:after{background:var(--rs-color-border-neutral)}.--variant-borderless .handle:after{opacity:0}.--variant-borderless .handle--dragging:after,.--variant-borderless .handle:hover:after,[data-rs-keyboard] .--variant-borderless .handle:focus:after{opacity:.6}body:has(.handle--dragging) .--variant-borderless .handle:not(.handle--dragging){opacity:0}body:has(.handle--dragging) .--variant-bordered .handle:not(.handle--dragging):after{background:var(--rs-color-border-neutral-faded)}body:has(.--direction-row>.handle--dragging){cursor:ew-resize}body:has(.--direction-column>.handle--dragging){cursor:ns-resize}.--direction-row>.handle{cursor:ew-resize}.--direction-row>.handle:after,.--direction-row>.handle:before{inset-block:0;inset-inline-start:50%;transform:translateX(-50%)}.--direction-row>.handle:before{width:var(--rs-unit-
|
1
|
+
.root{isolation:isolate}.item{--rs-resizable-default-size:none;--rs-resizable-min-size:0;--rs-resizable-max-size:100%;flex-grow:100;max-width:var(--rs-resizable-default-size);min-width:var(--rs-resizable-default-size);overflow:hidden}.handle{flex-shrink:0;position:relative;z-index:var(--rs-z-index-raised)}.handle:after,.handle:before{border-radius:999px;content:"";position:absolute}.handle:after{transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,background-color}.--variant-bordered .handle:after{background:var(--rs-color-border-neutral-faded)}.--variant-bordered .handle--dragging:after,.--variant-bordered .handle:hover:after,.--variant-borderless .handle:after,[data-rs-keyboard] .--variant-bordered .handle:focus:after{background:var(--rs-color-border-neutral)}.--variant-borderless .handle:after{opacity:0}.--variant-borderless .handle--dragging:after,.--variant-borderless .handle:hover:after,[data-rs-keyboard] .--variant-borderless .handle:focus:after{opacity:.6}body:has(.handle--dragging) .--variant-borderless .handle:not(.handle--dragging){opacity:0}body:has(.handle--dragging) .--variant-bordered .handle:not(.handle--dragging):after{background:var(--rs-color-border-neutral-faded)}body:has(.--direction-row>.handle--dragging){cursor:ew-resize}body:has(.--direction-column>.handle--dragging){cursor:ns-resize}.--direction-row>.handle{cursor:ew-resize}.--direction-row>.handle:after,.--direction-row>.handle:before{inset-block:0;inset-inline-start:50%;transform:translateX(-50%)}.--direction-row>.handle:before{width:var(--rs-unit-x6)}.--variant-borderless.--direction-row>.handle:after{width:var(--rs-unit-x1)}.--variant-bordered.--direction-row>.handle:after{width:1px}.--direction-row>.item[data-rs-resizable-item-mounted]{max-width:var(--rs-resizable-max-size);min-width:var(--rs-resizable-min-size)}.--direction-column>.handle{cursor:ns-resize}.--direction-column>.handle:after,.--direction-column>.handle:before{inset-block-start:50%;inset-inline:0;transform:translateY(-50%)}.--direction-column>.handle:before{height:var(--rs-unit-x6)}.--variant-borderless.--direction-column>.handle:after{height:var(--rs-unit-x1)}.--variant-bordered.--direction-column>.handle:after{height:1px}.--direction-column>.item[data-rs-resizable-item-mounted]{max-height:var(--rs-resizable-max-size);min-height:var(--rs-resizable-min-size)}
|
@@ -3,7 +3,8 @@ import type { ViewProps } from "../View";
|
|
3
3
|
import type { UseDragCallbackArgs } from "../../hooks/_private/useDrag";
|
4
4
|
export type Props = {
|
5
5
|
variant?: "bordered" | "borderless";
|
6
|
-
|
6
|
+
direction?: Extract<ViewProps["direction"], "row" | "column">;
|
7
|
+
} & Pick<ViewProps, "children" | "className" | "attributes" | "height" | "gap">;
|
7
8
|
export type ItemProps = {
|
8
9
|
children: React.ReactNode;
|
9
10
|
minSize?: `${number}px`;
|
@@ -16,9 +17,11 @@ export type PrivateItemProps = ItemProps & {
|
|
16
17
|
export type HandleProps = {
|
17
18
|
children?: (attributes: {
|
18
19
|
ref: React.RefObject<HTMLButtonElement | null>;
|
20
|
+
}, props: Pick<Props, "direction"> & {
|
21
|
+
status: "idle" | "dragging";
|
19
22
|
}) => React.ReactNode;
|
20
23
|
};
|
21
|
-
export type
|
24
|
+
export type HandleContext = {
|
22
25
|
containerRef: React.RefObject<HTMLDivElement | null>;
|
23
26
|
index: number;
|
24
27
|
onDrag: (args: UseDragCallbackArgs & {
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"use client";
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
3
|
+
import React from "react";
|
4
|
+
import { classNames } from "../../utilities/props.js";
|
5
|
+
import View from "../View/index.js";
|
6
|
+
import useDrag from "../../hooks/_private/useDrag.js";
|
7
|
+
import s from "./Resizable.module.css";
|
8
|
+
export const ResizableHandleContext = React.createContext({});
|
9
|
+
const ResizableHandle = (props) => {
|
10
|
+
const { children } = props;
|
11
|
+
const { containerRef, onDrag, index, direction } = React.useContext(ResizableHandleContext);
|
12
|
+
const { ref, active } = useDrag((args) => {
|
13
|
+
onDrag({ ...args, index });
|
14
|
+
}, {
|
15
|
+
containerRef,
|
16
|
+
orientation: direction === "row" ? "horizontal" : "vertical",
|
17
|
+
});
|
18
|
+
const handleClassNames = classNames(s.handle, active && s["handle--dragging"]);
|
19
|
+
if (children)
|
20
|
+
return (_jsx(View.Item, { children: children({ ref }, { direction, status: active ? "dragging" : "idle" }) }));
|
21
|
+
return (_jsx(View.Item, { className: handleClassNames, attributes: {
|
22
|
+
role: "button",
|
23
|
+
tabIndex: 0,
|
24
|
+
"aria-hidden": true,
|
25
|
+
ref: (el) => {
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
27
|
+
// @ts-ignore
|
28
|
+
ref.current = el;
|
29
|
+
},
|
30
|
+
} }));
|
31
|
+
};
|
32
|
+
export default ResizableHandle;
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { StoryObj } from "@storybook/react-vite";
|
1
2
|
declare const _default: {
|
2
3
|
title: string;
|
3
4
|
component: import("react").FC<import("./..").ResizableProps> & {
|
@@ -14,4 +15,24 @@ declare const _default: {
|
|
14
15
|
};
|
15
16
|
};
|
16
17
|
export default _default;
|
17
|
-
export declare const
|
18
|
+
export declare const direction: {
|
19
|
+
name: string;
|
20
|
+
render: () => import("react").JSX.Element;
|
21
|
+
};
|
22
|
+
export declare const children: {
|
23
|
+
name: string;
|
24
|
+
render: () => import("react").JSX.Element;
|
25
|
+
};
|
26
|
+
export declare const variant: {
|
27
|
+
name: string;
|
28
|
+
render: () => import("react").JSX.Element;
|
29
|
+
};
|
30
|
+
export declare const size: {
|
31
|
+
name: string;
|
32
|
+
render: () => import("react").JSX.Element;
|
33
|
+
};
|
34
|
+
export declare const layout: {
|
35
|
+
name: string;
|
36
|
+
render: () => import("react").JSX.Element;
|
37
|
+
};
|
38
|
+
export declare const className: StoryObj;
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { expect } from "storybook/test";
|
1
2
|
import { Example } from "../../../utilities/storybook/index.js";
|
2
3
|
import Resizable from "../index.js";
|
3
4
|
import View from "../../View/index.js";
|
@@ -7,7 +8,7 @@ export default {
|
|
7
8
|
component: Resizable,
|
8
9
|
parameters: {
|
9
10
|
iframe: {
|
10
|
-
url: "https://reshaped.so/docs/utilities/
|
11
|
+
url: "https://reshaped.so/docs/utilities/resizable",
|
11
12
|
},
|
12
13
|
// Skip because of the aria-hidden applied to buttons, they're not needed for the screen reader navigation
|
13
14
|
a11y: {
|
@@ -15,82 +16,170 @@ export default {
|
|
15
16
|
},
|
16
17
|
},
|
17
18
|
};
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
</View>
|
19
|
+
const Panel = (props) => (<View backgroundColor="neutral-faded" borderRadius="medium" align="center" justify="center" height={props.height ?? "100%"}>
|
20
|
+
Panel
|
21
|
+
</View>);
|
22
|
+
const Handle = () => {
|
23
|
+
return (<Resizable.Handle>
|
24
|
+
{(attributes, props) => (<View backgroundColor={props.status === "dragging" ? "primary" : "primary-faded"} padding={props.direction === "column" ? 1 : 8} height="100%" align="center" justify="center" borderRadius="small" animated>
|
25
|
+
<Button attributes={attributes} type="button">
|
26
|
+
Drag me
|
27
|
+
</Button>
|
28
|
+
</View>)}
|
29
|
+
</Resizable.Handle>);
|
30
|
+
};
|
31
|
+
export const direction = {
|
32
|
+
name: "direction",
|
33
|
+
render: () => {
|
34
|
+
return (<Example>
|
35
|
+
<Example.Item title="row">
|
36
|
+
<Resizable height="200px">
|
37
|
+
<Resizable.Item>
|
38
|
+
<Panel />
|
39
39
|
</Resizable.Item>
|
40
40
|
<Resizable.Handle />
|
41
41
|
<Resizable.Item>
|
42
|
-
<
|
43
|
-
Panel
|
44
|
-
</View>
|
42
|
+
<Panel />
|
45
43
|
</Resizable.Item>
|
46
|
-
<Resizable.Handle
|
47
|
-
{(attributes) => (<View backgroundColor="primary-faded" padding={1} align="center" borderRadius="small">
|
48
|
-
<Button attributes={attributes} type="button">
|
49
|
-
Drag me
|
50
|
-
</Button>
|
51
|
-
</View>)}
|
52
|
-
</Resizable.Handle>
|
44
|
+
<Resizable.Handle />
|
53
45
|
<Resizable.Item>
|
54
|
-
<
|
55
|
-
Panel
|
56
|
-
</View>
|
46
|
+
<Panel />
|
57
47
|
</Resizable.Item>
|
58
48
|
</Resizable>
|
59
|
-
</
|
60
|
-
|
61
|
-
|
49
|
+
</Example.Item>
|
50
|
+
<Example.Item title="column">
|
51
|
+
<Resizable height="400px" direction="column">
|
52
|
+
<Resizable.Item>
|
53
|
+
<Panel />
|
54
|
+
</Resizable.Item>
|
55
|
+
<Resizable.Handle />
|
56
|
+
<Resizable.Item>
|
57
|
+
<Panel />
|
58
|
+
</Resizable.Item>
|
59
|
+
<Resizable.Handle />
|
60
|
+
<Resizable.Item>
|
61
|
+
<Panel />
|
62
|
+
</Resizable.Item>
|
63
|
+
</Resizable>
|
64
|
+
</Example.Item>
|
62
65
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
<Resizable.Handle />
|
77
|
-
<Resizable.Item>
|
78
|
-
<Resizable height="100%" direction="column" variant="bordered" gap={0}>
|
79
|
-
<Resizable.Item minSize="50px" maxSize="100px">
|
80
|
-
<View align="center" justify="center" height="100%">
|
81
|
-
Panel
|
82
|
-
</View>
|
66
|
+
{/* Test that page doesn't scroll on dragging */}
|
67
|
+
<div style={{ height: 2000 }}/>
|
68
|
+
</Example>);
|
69
|
+
},
|
70
|
+
};
|
71
|
+
export const children = {
|
72
|
+
name: "children",
|
73
|
+
render: () => {
|
74
|
+
return (<Example>
|
75
|
+
<Example.Item title="render props, row">
|
76
|
+
<Resizable height="200px">
|
77
|
+
<Resizable.Item>
|
78
|
+
<Panel />
|
83
79
|
</Resizable.Item>
|
84
80
|
<Resizable.Handle />
|
85
81
|
<Resizable.Item>
|
86
|
-
<
|
87
|
-
|
88
|
-
|
82
|
+
<Panel />
|
83
|
+
</Resizable.Item>
|
84
|
+
<Handle />
|
85
|
+
<Resizable.Item>
|
86
|
+
<Panel />
|
87
|
+
</Resizable.Item>
|
88
|
+
</Resizable>
|
89
|
+
</Example.Item>
|
90
|
+
<Example.Item title="render props, column">
|
91
|
+
<Resizable height="400px" direction="column">
|
92
|
+
<Resizable.Item>
|
93
|
+
<Panel />
|
94
|
+
</Resizable.Item>
|
95
|
+
<Resizable.Handle />
|
96
|
+
<Resizable.Item>
|
97
|
+
<Panel />
|
98
|
+
</Resizable.Item>
|
99
|
+
<Handle />
|
100
|
+
<Resizable.Item>
|
101
|
+
<Panel />
|
89
102
|
</Resizable.Item>
|
90
103
|
</Resizable>
|
104
|
+
</Example.Item>
|
105
|
+
</Example>);
|
106
|
+
},
|
107
|
+
};
|
108
|
+
export const variant = {
|
109
|
+
name: "variant",
|
110
|
+
render: () => (<Example>
|
111
|
+
<Example.Item title="bordered, row">
|
112
|
+
<Resizable height="200px" variant="bordered">
|
113
|
+
<Resizable.Item>
|
114
|
+
<Panel />
|
115
|
+
</Resizable.Item>
|
116
|
+
<Resizable.Handle />
|
117
|
+
<Resizable.Item>
|
118
|
+
<Panel />
|
119
|
+
</Resizable.Item>
|
120
|
+
<Resizable.Handle />
|
121
|
+
<Resizable.Item>
|
122
|
+
<Panel />
|
123
|
+
</Resizable.Item>
|
124
|
+
</Resizable>
|
125
|
+
</Example.Item>
|
126
|
+
<Example.Item title="bordered, column">
|
127
|
+
<Resizable height="400px" direction="column" variant="bordered">
|
128
|
+
<Resizable.Item>
|
129
|
+
<Panel />
|
130
|
+
</Resizable.Item>
|
131
|
+
<Resizable.Handle />
|
132
|
+
<Resizable.Item>
|
133
|
+
<Panel />
|
134
|
+
</Resizable.Item>
|
135
|
+
<Resizable.Handle />
|
136
|
+
<Resizable.Item>
|
137
|
+
<Panel />
|
138
|
+
</Resizable.Item>
|
139
|
+
</Resizable>
|
140
|
+
</Example.Item>
|
141
|
+
</Example>),
|
142
|
+
};
|
143
|
+
export const size = {
|
144
|
+
name: "minSize, maxSize, defaultSize",
|
145
|
+
render: () => (<Resizable className="test-classname" attributes={{ id: "test-id" }} height="200px">
|
146
|
+
<Resizable.Item>
|
147
|
+
<Panel />
|
148
|
+
</Resizable.Item>
|
149
|
+
<Resizable.Handle />
|
150
|
+
<Resizable.Item minSize="200px" maxSize="500px" defaultSize="300px">
|
151
|
+
<Panel />
|
152
|
+
</Resizable.Item>
|
153
|
+
</Resizable>),
|
154
|
+
};
|
155
|
+
export const layout = {
|
156
|
+
name: "height, gap",
|
157
|
+
render: () => (<Resizable height="100px" gap={8}>
|
158
|
+
<Resizable.Item>
|
159
|
+
<Panel />
|
160
|
+
</Resizable.Item>
|
161
|
+
<Resizable.Handle />
|
162
|
+
<Resizable.Item>
|
163
|
+
<Panel />
|
164
|
+
</Resizable.Item>
|
165
|
+
</Resizable>),
|
166
|
+
};
|
167
|
+
export const className = {
|
168
|
+
name: "className, attributes",
|
169
|
+
render: () => (<div data-testid="root">
|
170
|
+
<Resizable className="test-classname" attributes={{ id: "test-id" }} height="200px">
|
171
|
+
<Resizable.Item>
|
172
|
+
<Panel />
|
173
|
+
</Resizable.Item>
|
174
|
+
<Resizable.Handle />
|
175
|
+
<Resizable.Item>
|
176
|
+
<Panel />
|
91
177
|
</Resizable.Item>
|
92
178
|
</Resizable>
|
93
|
-
</
|
94
|
-
|
95
|
-
|
96
|
-
|
179
|
+
</div>),
|
180
|
+
play: async ({ canvas }) => {
|
181
|
+
const root = canvas.getByTestId("root").firstChild;
|
182
|
+
expect(root).toHaveClass("test-classname");
|
183
|
+
expect(root).toHaveAttribute("id", "test-id");
|
184
|
+
},
|
185
|
+
};
|
@@ -45,7 +45,7 @@ const Select = (props) => {
|
|
45
45
|
...inputAttributes,
|
46
46
|
onFocus: onFocus || inputAttributes?.onFocus,
|
47
47
|
onBlur: onBlur || inputAttributes?.onBlur,
|
48
|
-
}, children: [startContent, children
|
48
|
+
}, children: [startContent, children ? _jsx(Text, { maxLines: 1, children: children }) : null, placeholder && !children ? _jsx(Text, { color: "neutral-faded", children: placeholder }) : null] }), _jsx("input", { type: "hidden", value: value, name: name })] })), _jsx("div", { className: s.arrow, children: _jsx(Icon, { svg: IconArrow, color: disabled ? "disabled" : "neutral-faded", size: responsivePropDependency(size, (size) => {
|
49
49
|
return size === "large" || size === "xlarge" ? 5 : 4;
|
50
50
|
}) }) })] }));
|
51
51
|
};
|
@@ -1 +1 @@
|
|
1
|
-
.root{background:var(--rs-color-background-elevation-base);border:1px solid var(--rs-color-border-neutral);display:flex;overflow:hidden;padding:calc(var(--rs-unit-x1) - 1px) 0;position:relative;z-index:0}.root:focus-within{border-color:var(--rs-color-border-primary);box-shadow:0 0 0 1px var(--rs-color-border-primary)}.input{align-items:center;-webkit-appearance:none;appearance:none;background:none;border:0;box-sizing:border-box;color:var(--rs-color-foreground-neutral);cursor:pointer;display:flex;flex-grow:1;font-family:var(--rs-font-family-body);font-weight:var(--rs-font-weight-regular);outline:none;padding-inline-end:calc(var(--rs-select-chevron-size) + var(--rs-select-gap) * 2 + var(--rs-unit-x1));padding-inline-start:var(--rs-select-gap);position:relative;width:100%;z-index:1}.input::-ms-expand{display:none}.slot{align-items:center;display:flex;flex-shrink:0;padding-inline-start:var(--rs-select-gap);position:relative;z-index:5}.input .slot{padding-inline-end:var(--rs-select-gap);padding-inline-start:0}.arrow{color:var(--rs-color-foreground-neutral-faded);display:flex;inset-block-start:50%;inset-inline-end:var(--rs-select-gap);pointer-events:none;position:absolute;transform:translateY(-50%);z-index:5}.--size-small{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-small .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:0}.--size-medium{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-medium .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:var(--rs-unit-x1)}.--size-large{--rs-select-gap:var(--rs-unit-x3);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-large .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x2)}.--size-xlarge{--rs-select-gap:var(--rs-unit-x4);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-xlarge .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x3)}.root.--variant-faded{background:var(--rs-color-background-neutral-faded);border-color:transparent}.root.--variant-faded:focus-within{border-color:var(--rs-color-border-primary)}.root.--variant-headless{background:transparent;border-color:transparent}.root.--variant-headless.--status-error,.root.--variant-headless.--status-error:focus-within,.root.--variant-headless:focus-within{border-color:transparent;box-shadow:none}.root.--status-error{border-color:var(--rs-color-border-critical)}.root.--status-error:focus-within{border-color:var(--rs-color-border-primary)}.root.--placeholder .input{color:var(--rs-color-foreground-neutral-faded)}.root.--disabled{background:var(--rs-color-background-disabled-faded);border-color:var(--rs-color-border-disabled)}.root.--disabled .arrow,.root.--disabled .input{color:var(--rs-color-foreground-disabled);cursor:not-allowed}@media (--rs-viewport-s ) and (hover:none){.input{font-size:var(--rs-font-size-body-2)!important}}@media (--rs-viewport-m ){.--size-small--m{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-small--m .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:0}.--size-medium--m{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-medium--m .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:var(--rs-unit-x1)}.--size-large--m{--rs-select-gap:var(--rs-unit-x3);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-large--m .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x2)}.--size-xlarge--m{--rs-select-gap:var(--rs-unit-x4);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-xlarge--m .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x3)}}@media (--rs-viewport-l ){.--size-small--l{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-small--l .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:0}.--size-medium--l{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-medium--l .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:var(--rs-unit-x1)}.--size-large--l{--rs-select-gap:var(--rs-unit-x3);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-large--l .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x2)}.--size-xlarge--l{--rs-select-gap:var(--rs-unit-x4);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-xlarge--l .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x3)}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-small--xl .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:0}.--size-medium--xl{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-medium--xl .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:var(--rs-unit-x1)}.--size-large--xl{--rs-select-gap:var(--rs-unit-x3);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-large--xl .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x2)}.--size-xlarge--xl{--rs-select-gap:var(--rs-unit-x4);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-xlarge--xl .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x3)}}
|
1
|
+
.root{background:var(--rs-color-background-elevation-base);border:1px solid var(--rs-color-border-neutral);display:flex;overflow:hidden;padding:calc(var(--rs-unit-x1) - 1px) 0;position:relative;z-index:0}.root:focus-within{border-color:var(--rs-color-border-primary);box-shadow:0 0 0 1px var(--rs-color-border-primary)}.input{align-items:center;-webkit-appearance:none;appearance:none;background:none;border:0;box-sizing:border-box;color:var(--rs-color-foreground-neutral);cursor:pointer;display:flex;flex-grow:1;font-family:var(--rs-font-family-body);font-weight:var(--rs-font-weight-regular);outline:none;padding-inline-end:calc(var(--rs-select-chevron-size) + var(--rs-select-gap) * 2 + var(--rs-unit-x1));padding-inline-start:var(--rs-select-gap);position:relative;text-overflow:ellipsis;width:100%;z-index:1}.input::-ms-expand{display:none}.slot{align-items:center;display:flex;flex-shrink:0;padding-inline-start:var(--rs-select-gap);position:relative;z-index:5}.input .slot{padding-inline-end:var(--rs-select-gap);padding-inline-start:0}.arrow{color:var(--rs-color-foreground-neutral-faded);display:flex;inset-block-start:50%;inset-inline-end:var(--rs-select-gap);pointer-events:none;position:absolute;transform:translateY(-50%);z-index:5}.--size-small{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-small .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:0}.--size-medium{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-medium .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:var(--rs-unit-x1)}.--size-large{--rs-select-gap:var(--rs-unit-x3);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-large .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x2)}.--size-xlarge{--rs-select-gap:var(--rs-unit-x4);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-xlarge .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x3)}.root.--variant-faded{background:var(--rs-color-background-neutral-faded);border-color:transparent}.root.--variant-faded:focus-within{border-color:var(--rs-color-border-primary)}.root.--variant-headless{background:transparent;border-color:transparent}.root.--variant-headless.--status-error,.root.--variant-headless.--status-error:focus-within,.root.--variant-headless:focus-within{border-color:transparent;box-shadow:none}.root.--status-error{border-color:var(--rs-color-border-critical)}.root.--status-error:focus-within{border-color:var(--rs-color-border-primary)}.root.--placeholder .input{color:var(--rs-color-foreground-neutral-faded)}.root.--disabled{background:var(--rs-color-background-disabled-faded);border-color:var(--rs-color-border-disabled)}.root.--disabled .arrow,.root.--disabled .input{color:var(--rs-color-foreground-disabled);cursor:not-allowed}@media (--rs-viewport-s ) and (hover:none){.input{font-size:var(--rs-font-size-body-2)!important}}@media (--rs-viewport-m ){.--size-small--m{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-small--m .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:0}.--size-medium--m{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-medium--m .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:var(--rs-unit-x1)}.--size-large--m{--rs-select-gap:var(--rs-unit-x3);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-large--m .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x2)}.--size-xlarge--m{--rs-select-gap:var(--rs-unit-x4);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-xlarge--m .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x3)}}@media (--rs-viewport-l ){.--size-small--l{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-small--l .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:0}.--size-medium--l{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-medium--l .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:var(--rs-unit-x1)}.--size-large--l{--rs-select-gap:var(--rs-unit-x3);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-large--l .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x2)}.--size-xlarge--l{--rs-select-gap:var(--rs-unit-x4);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-xlarge--l .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x3)}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-small--xl .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:0}.--size-medium--xl{--rs-select-gap:var(--rs-unit-x2);--rs-select-chevron-size:var(--rs-unit-x4);border-radius:var(--rs-radius-small)}.--size-medium--xl .input{font-size:var(--rs-font-size-body-3);letter-spacing:var(--rs-letter-spacing-body-3);line-height:var(--rs-line-height-body-3);padding-block:var(--rs-unit-x1)}.--size-large--xl{--rs-select-gap:var(--rs-unit-x3);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-large--xl .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x2)}.--size-xlarge--xl{--rs-select-gap:var(--rs-unit-x4);--rs-select-chevron-size:var(--rs-unit-x5);border-radius:var(--rs-radius-medium)}.--size-xlarge--xl .input{font-size:var(--rs-font-size-body-2);letter-spacing:var(--rs-letter-spacing-body-2);line-height:var(--rs-line-height-body-2);padding-block:var(--rs-unit-x3)}}
|
@@ -1 +1 @@
|
|
1
|
-
@property --rs-tabs-mid-l{syntax:"<length>";initial-value:-24px;inherits:false}@property --rs-tabs-stop-l{syntax:"<length>";initial-value:0;inherits:false}@property --rs-tabs-stop-r{syntax:"<length-percentage>";initial-value:100%;inherits:false}@property --rs-tabs-mid-r{syntax:"<length-percentage>";initial-value:calc(100% + 24px);inherits:false}.root{box-sizing:initial;max-width:100%}.list,.root{position:relative}.list{--rs-tabs-gap:var(--rs-unit-x6);gap:var(--rs-tabs-gap)}.inner{mask-image:linear-gradient(to right,transparent 0,transparent var(--rs-tabs-mid-l),#000 var(--rs-tabs-stop-l),#000 var(--rs-tabs-stop-r),transparent var(--rs-tabs-mid-r),transparent 100%);transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:--rs-tabs-stop-l,--rs-tabs-stop-r,--rs-tabs-mid-l,--rs-tabs-mid-r}.inner:after{background-color:var(--rs-color-border-neutral-faded);content:"";position:absolute;z-index:2}.listItem{flex-shrink:0;position:relative}.button{overflow:hidden;position:relative;z-index:1;-webkit-tap-highlight-color:transparent}.button,.buttonContent{border-radius:var(--rs-radius-medium);width:100%}.buttonContent{align-items:center;box-sizing:border-box;display:flex}.buttonContent:hover{color:var(--rs-color-foreground-neutral-faded)}.icon{color:inherit;transition:color var(--rs-duration-fast) var(--rs-easing-standard)}[data-rs-keyboard] .radio:focus+.buttonContent{box-shadow:var(--rs-focus-inset-shadow)}.icon:not(:last-child){margin-inline-end:var(--rs-unit-x2)}.--item-active:after{content:""}.--item-active:after,.selector{background:var(--rs-color-border-primary);border-radius:calc(var(--rs-radius-medium) - 1px);position:absolute;z-index:var(--rs-z-index-raised)}.selector{--rs-tab-selection-x:0;--rs-tab-selection-y:0;--rs-tab-selection-scale-x:0;--rs-tab-selection-scale-y:0;transform:translate(calc(var(--rs-tab-selection-x) * 1px),calc(var(--rs-tab-selection-y) * 1px)) translateZ(0);transform-origin:0 0}.--selector-hidden{visibility:hidden}.--selector-animated{transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:transform,height,width;will-change:transform,height,width}.control{align-items:center;display:none;inset-block:0;opacity:0;pointer-events:none;position:absolute;transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:opacity,transform;z-index:var(--rs-z-index-raised)}.control.control--active{opacity:1;pointer-events:all;transform:translateX(0)}[dir=rtl] .control{transform:scaleX(-1)}.control--next{inset-inline-end:0;transform:translateX(var(--rs-unit-x2))}.control--prev{inset-inline-start:0;transform:translateX(calc(var(--rs-unit-x2) * -1))}.panel{outline:none}[data-rs-keyboard] .panel:focus{box-shadow:var(--rs-focus-shadow)}.--panel-hidden{display:none}.--direction-row .inner{margin:0 calc(var(--rs-unit-x2) * -1);overflow:auto;padding:0 var(--rs-unit-x2);white-space:nowrap;-ms-overflow-style:none;overflow:-moz-scrollbars-none;scrollbar-width:none}.--direction-row .inner::-webkit-scrollbar{display:none}.--direction-row .inner:after{height:1px;inset-inline:var(--rs-unit-x2);bottom:0}.--direction-row .list{align-items:center;display:inline-flex;flex-wrap:nowrap;vertical-align:top}.--direction-row .--item-active:after{height:2px;inset-inline:0;bottom:0}.--direction-row .selector{bottom:0;height:2px;left:0;width:calc(var(--rs-tab-selection-scale-x) * 1px)}.--direction-row .button{box-sizing:initial;margin:var(--rs-unit-x1) calc(var(--rs-unit-x2) * -1);padding:0 var(--rs-unit-x2)}.--direction-row .buttonContent{justify-content:center;padding:var(--rs-tabs-item-p-v) 0}.--direction-column .inner:after{bottom:0;height:100%;inset-inline-end:0;top:0;width:1px}.--direction-column .list{--rs-tabs-gap:var(--rs-unit-x1);display:flex;flex-direction:column}.--direction-column .item{padding-inline-end:var(--rs-unit-x1)}.--direction-column .--item-active:after{bottom:0}.--direction-column .--item-active:after,.--direction-column .selector{height:100%;inset-inline-end:0;width:2px}.--direction-column .selector{height:calc(var(--rs-tab-selection-scale-y) * 1px);top:0}.--direction-column .button{margin-inline-start:calc(var(--rs-unit-x2) * -1);padding:var(--rs-unit-x2);width:calc(100% + var(--rs-unit-x1))}.--direction-column .buttonContent{justify-content:flex-start}.--variant-borderless .inner:after,.--variant-pills .inner:after,.--variant-pills-elevated .inner:after{content:none}.--variant-pills .button,.--variant-pills-elevated .button{margin:0;padding:0}.--variant-pills .buttonContent,.--variant-pills-elevated .buttonContent{margin:0;padding:var(--rs-tabs-item-p-v) var(--rs-tabs-item-p-h)}.--variant-pills .buttonContent:hover,.--variant-pills-elevated .buttonContent:hover{background:none}.--variant-pills-elevated .buttonContent{padding:calc(var(--rs-tabs-item-p-v) - var(--rs-unit-x1) / 2) var(--rs-tabs-item-p-h)}.--variant-pills .list,.--variant-pills-elevated .list{--rs-tabs-gap:var(--rs-unit-x1)}.--variant-pills .selector,.--variant-pills-elevated .selector{background-color:var(--rs-color-background-neutral);height:calc(var(--rs-tab-selection-scale-y) * 1px);opacity:.6;width:calc(var(--rs-tab-selection-scale-x) * 1px);z-index:0}.--direction-column.--variant-pills .selector,.--direction-column.--variant-pills-elevated .selector{left:0}.--direction-row.--variant-pills .selector,.--direction-row.--variant-pills-elevated .selector{top:0}.--variant-pills .--item-active:after,.--variant-pills-elevated .--item-active:after{background-color:var(--rs-color-background-neutral);opacity:.6;z-index:0}.--direction-column.--variant-pills .--item-active:after,.--direction-column.--variant-pills-elevated .--item-active:after{width:100%}.--direction-row.--variant-pills .--item-active:after,.--direction-row.--variant-pills-elevated .--item-active:after{height:100%}.--variant-pills-elevated .list{background:var(--rs-color-background-neutral-faded);border:2px solid transparent;border-radius:var(--rs-radius-medium)}.--variant-pills-elevated .--item-active:after,.--variant-pills-elevated .selector{background:var(--rs-color-background-elevation-raised);box-shadow:var(--rs-shadow-raised);box-sizing:border-box;opacity:1}.--size-medium{--rs-tabs-item-p-v:var(--rs-unit-x2);--rs-tabs-item-p-h:var(--rs-unit-x3)}.--size-large{--rs-tabs-item-p-v:var(--rs-unit-x3);--rs-tabs-item-p-h:var(--rs-unit-x4)}.--item-width-equal{max-width:none}.--item-width-equal .inner{flex-wrap:wrap;overflow:hidden}.--item-width-equal .list{display:flex}.--item-width-equal .listItem{flex-basis:0;flex-grow:1;margin:0}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:100%;--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 12)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:0px;--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 12)}@media (pointer:fine){.control{display:flex}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:calc(100% - var(--rs-unit-x1) * 6);--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 12)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:calc(var(--rs-unit-x1) * 6);--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 12)}}
|
1
|
+
@property --rs-tabs-mid-l{syntax:"<length>";initial-value:-24px;inherits:false}@property --rs-tabs-stop-l{syntax:"<length>";initial-value:0;inherits:false}@property --rs-tabs-stop-r{syntax:"<length-percentage>";initial-value:100%;inherits:false}@property --rs-tabs-mid-r{syntax:"<length-percentage>";initial-value:calc(100% + 24px);inherits:false}.root{box-sizing:initial;max-width:100%}.list,.root{position:relative}.list{--rs-tabs-gap:var(--rs-unit-x6);gap:var(--rs-tabs-gap)}.inner{mask-image:linear-gradient(to right,transparent 0,transparent var(--rs-tabs-mid-l),#000 var(--rs-tabs-stop-l),#000 var(--rs-tabs-stop-r),transparent var(--rs-tabs-mid-r),transparent 100%);transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:--rs-tabs-stop-l,--rs-tabs-stop-r,--rs-tabs-mid-l,--rs-tabs-mid-r}.inner:after{background-color:var(--rs-color-border-neutral-faded);content:"";position:absolute;z-index:2}.listItem{flex-shrink:0;position:relative}.button{overflow:hidden;position:relative;z-index:1;-webkit-tap-highlight-color:transparent}.button,.buttonContent{border-radius:var(--rs-radius-medium);width:100%}.buttonContent{align-items:center;box-sizing:border-box;display:flex}@media (hover:hover) and (pointer:fine){.buttonContent:hover{color:var(--rs-color-foreground-neutral-faded)}}.icon{color:inherit;transition:color var(--rs-duration-fast) var(--rs-easing-standard)}[data-rs-keyboard] .radio:focus+.buttonContent{box-shadow:var(--rs-focus-inset-shadow)}.icon:not(:last-child){margin-inline-end:var(--rs-unit-x2)}.--item-active:after{content:""}.--item-active:after,.selector{background:var(--rs-color-border-primary);border-radius:calc(var(--rs-radius-medium) - 1px);position:absolute;z-index:var(--rs-z-index-raised)}.selector{--rs-tab-selection-x:0;--rs-tab-selection-y:0;--rs-tab-selection-scale-x:0;--rs-tab-selection-scale-y:0;transform:translate(calc(var(--rs-tab-selection-x) * 1px),calc(var(--rs-tab-selection-y) * 1px)) translateZ(0);transform-origin:0 0}.--selector-hidden{visibility:hidden}.--selector-animated{transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:transform,height,width;will-change:transform,height,width}.control{align-items:center;display:none;inset-block:0;opacity:0;pointer-events:none;position:absolute;transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:opacity,transform;z-index:var(--rs-z-index-raised)}.control.control--active{opacity:1;pointer-events:all;transform:translateX(0)}[dir=rtl] .control{transform:scaleX(-1)}.control--next{inset-inline-end:0;transform:translateX(var(--rs-unit-x2))}.control--prev{inset-inline-start:0;transform:translateX(calc(var(--rs-unit-x2) * -1))}.panel{outline:none}[data-rs-keyboard] .panel:focus{box-shadow:var(--rs-focus-shadow)}.--panel-hidden{display:none}.--direction-row .inner{margin:0 calc(var(--rs-unit-x2) * -1);overflow:auto;padding:0 var(--rs-unit-x2);white-space:nowrap;-ms-overflow-style:none;overflow:-moz-scrollbars-none;scrollbar-width:none}.--direction-row .inner::-webkit-scrollbar{display:none}.--direction-row .inner:after{height:1px;inset-inline:var(--rs-unit-x2);bottom:0}.--direction-row .list{align-items:center;display:inline-flex;flex-wrap:nowrap;vertical-align:top}.--direction-row .--item-active:after{height:2px;inset-inline:0;bottom:0}.--direction-row .selector{bottom:0;height:2px;left:0;width:calc(var(--rs-tab-selection-scale-x) * 1px)}.--direction-row .button{box-sizing:initial;margin:var(--rs-unit-x1) calc(var(--rs-unit-x2) * -1);padding:0 var(--rs-unit-x2)}.--direction-row .buttonContent{justify-content:center;padding:var(--rs-tabs-item-p-v) 0}.--direction-column .inner:after{bottom:0;height:100%;inset-inline-end:0;top:0;width:1px}.--direction-column .list{--rs-tabs-gap:var(--rs-unit-x1);display:flex;flex-direction:column}.--direction-column .item{padding-inline-end:var(--rs-unit-x1)}.--direction-column .--item-active:after{bottom:0}.--direction-column .--item-active:after,.--direction-column .selector{height:100%;inset-inline-end:0;width:2px}.--direction-column .selector{height:calc(var(--rs-tab-selection-scale-y) * 1px);top:0}.--direction-column .button{margin-inline-start:calc(var(--rs-unit-x2) * -1);padding:var(--rs-unit-x2);width:calc(100% + var(--rs-unit-x1))}.--direction-column .buttonContent{justify-content:flex-start}.--variant-borderless .inner:after,.--variant-pills .inner:after,.--variant-pills-elevated .inner:after{content:none}.--variant-pills .button,.--variant-pills-elevated .button{margin:0;padding:0}.--variant-pills .buttonContent,.--variant-pills-elevated .buttonContent{margin:0;padding:var(--rs-tabs-item-p-v) var(--rs-tabs-item-p-h)}@media (hover:hover) and (pointer:fine){.--variant-pills .buttonContent:hover,.--variant-pills-elevated .buttonContent:hover{background:none}}.--variant-pills-elevated .buttonContent{padding:calc(var(--rs-tabs-item-p-v) - var(--rs-unit-x1) / 2) var(--rs-tabs-item-p-h)}.--variant-pills .list,.--variant-pills-elevated .list{--rs-tabs-gap:var(--rs-unit-x1)}.--variant-pills .selector,.--variant-pills-elevated .selector{background-color:var(--rs-color-background-neutral);height:calc(var(--rs-tab-selection-scale-y) * 1px);opacity:.6;width:calc(var(--rs-tab-selection-scale-x) * 1px);z-index:0}.--direction-column.--variant-pills .selector,.--direction-column.--variant-pills-elevated .selector{left:0}.--direction-row.--variant-pills .selector,.--direction-row.--variant-pills-elevated .selector{top:0}.--variant-pills .--item-active:after,.--variant-pills-elevated .--item-active:after{background-color:var(--rs-color-background-neutral);opacity:.6;z-index:0}.--direction-column.--variant-pills .--item-active:after,.--direction-column.--variant-pills-elevated .--item-active:after{width:100%}.--direction-row.--variant-pills .--item-active:after,.--direction-row.--variant-pills-elevated .--item-active:after{height:100%}.--variant-pills-elevated .list{background:var(--rs-color-background-neutral-faded);border:2px solid transparent;border-radius:var(--rs-radius-medium)}.--variant-pills-elevated .--item-active:after,.--variant-pills-elevated .selector{background:var(--rs-color-background-elevation-raised);box-shadow:var(--rs-shadow-raised);box-sizing:border-box;opacity:1}.--size-medium{--rs-tabs-item-p-v:var(--rs-unit-x2);--rs-tabs-item-p-h:var(--rs-unit-x3)}.--size-large{--rs-tabs-item-p-v:var(--rs-unit-x3);--rs-tabs-item-p-h:var(--rs-unit-x4)}.--item-width-equal{max-width:none}.--item-width-equal .inner{flex-wrap:wrap;overflow:hidden}.--item-width-equal .list{display:flex}.--item-width-equal .listItem{flex-basis:0;flex-grow:1;margin:0}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:100%;--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 12)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:0px;--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 12)}@media (pointer:fine){.control{display:flex}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:calc(100% - var(--rs-unit-x1) * 6);--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 12)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:calc(var(--rs-unit-x1) * 6);--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 12)}}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import ToggleButtonControlled from "./ToggleButtonControlled.js";
|
3
|
+
import ToggleButtonUncontrolled from "./ToggleButtonUncontrolled.js";
|
4
|
+
const ToggleButton = (props) => {
|
5
|
+
const { checked } = props;
|
6
|
+
if (checked !== undefined)
|
7
|
+
return _jsx(ToggleButtonControlled, { ...props });
|
8
|
+
return _jsx(ToggleButtonUncontrolled, { ...props });
|
9
|
+
};
|
10
|
+
ToggleButton.displayName = "ToggleButton";
|
11
|
+
export default ToggleButton;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import type { ButtonProps } from "../Button";
|
2
|
+
type BaseProps = Omit<ButtonProps, "variant" | "higlighted"> & {
|
3
|
+
variant?: Extract<ButtonProps["variant"], "outline" | "ghost">;
|
4
|
+
value?: string;
|
5
|
+
onChange?: (args: {
|
6
|
+
checked: boolean;
|
7
|
+
value: string;
|
8
|
+
event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>;
|
9
|
+
}) => void;
|
10
|
+
};
|
11
|
+
export type ControlledProps = BaseProps & {
|
12
|
+
defaultChecked?: never;
|
13
|
+
checked: boolean;
|
14
|
+
};
|
15
|
+
export type UncontrolledProps = BaseProps & {
|
16
|
+
defaultChecked?: boolean;
|
17
|
+
checked?: never;
|
18
|
+
};
|
19
|
+
export type Props = ControlledProps | UncontrolledProps;
|
20
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|