@viraui/react 0.0.15 → 0.0.17
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/dist/catalog.json +6 -0
- package/dist/components/avatar/avatar.css +1 -55
- package/dist/components/avatar/avatar.d.ts +1 -2
- package/dist/components/avatar/avatar.js +49 -14
- package/dist/components/avatar/avatar.module.js +7 -0
- package/dist/components/avatar/index.d.ts +2 -2
- package/dist/components/basic-input/basic-input.css +1 -45
- package/dist/components/basic-input/basic-input.d.ts +0 -1
- package/dist/components/basic-input/basic-input.js +24 -13
- package/dist/components/basic-input/basic-input.module.js +3 -0
- package/dist/components/basic-input/field-helper-copy.d.ts +2 -1
- package/dist/components/basic-input/field-helper-copy.js +43 -24
- package/dist/components/basic-input/field-label.css +1 -0
- package/dist/components/basic-input/field-label.d.ts +10 -0
- package/dist/components/basic-input/field-label.js +24 -0
- package/dist/components/basic-input/field-label.module.js +3 -0
- package/dist/components/basic-input/index.d.ts +7 -2
- package/dist/components/basic-input/input-control-group.d.ts +2 -0
- package/dist/components/basic-input/input-control-group.js +40 -7
- package/dist/components/button/button.css +1 -156
- package/dist/components/button/button.d.ts +3 -3
- package/dist/components/button/button.js +104 -14
- package/dist/components/button/button.module.js +7 -0
- package/dist/components/button/index.d.ts +2 -2
- package/dist/components/checkbox/checkbox.css +1 -0
- package/dist/components/checkbox/checkbox.d.ts +65 -0
- package/dist/components/checkbox/checkbox.guide.json +22 -0
- package/dist/components/checkbox/checkbox.js +73 -0
- package/dist/components/checkbox/checkbox.module.js +10 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/clamp-text/clamp-text.css +1 -12
- package/dist/components/clamp-text/clamp-text.d.ts +1 -2
- package/dist/components/clamp-text/clamp-text.js +27 -22
- package/dist/components/clamp-text/clamp-text.module.js +3 -0
- package/dist/components/clamp-text/index.d.ts +2 -2
- package/dist/components/elevator/elevator.d.ts +5 -5
- package/dist/components/elevator/elevator.js +27 -27
- package/dist/components/elevator/index.d.ts +2 -2
- package/dist/components/icon/icon.css +1 -7
- package/dist/components/icon/icon.d.ts +2 -3
- package/dist/components/icon/icon.js +18 -9
- package/dist/components/icon/icon.module.js +3 -0
- package/dist/components/icon/index.d.ts +2 -2
- package/dist/components/icon-button/icon-button.d.ts +2 -2
- package/dist/components/icon-button/icon-button.js +10 -3
- package/dist/components/icon-button/index.d.ts +2 -2
- package/dist/components/index.d.ts +18 -17
- package/dist/components/select/index.d.ts +2 -2
- package/dist/components/select/select-group.d.ts +1 -1
- package/dist/components/select/select-group.js +37 -9
- package/dist/components/select/select-indicator-slot.js +33 -10
- package/dist/components/select/select-option.d.ts +1 -1
- package/dist/components/select/select-option.js +40 -10
- package/dist/components/select/select-separator.js +14 -6
- package/dist/components/select/select.css +1 -193
- package/dist/components/select/select.d.ts +10 -11
- package/dist/components/select/select.js +156 -32
- package/dist/components/select/select.module.js +19 -0
- package/dist/components/skeleton/index.d.ts +2 -2
- package/dist/components/skeleton/skeleton.css +1 -36
- package/dist/components/skeleton/skeleton.d.ts +2 -3
- package/dist/components/skeleton/skeleton.js +26 -15
- package/dist/components/skeleton/skeleton.module.js +6 -0
- package/dist/components/slider/index.d.ts +2 -2
- package/dist/components/slider/slider-control.d.ts +1 -2
- package/dist/components/slider/slider-control.js +43 -19
- package/dist/components/slider/slider-utils.js +6 -3
- package/dist/components/slider/slider.css +1 -64
- package/dist/components/slider/slider.d.ts +5 -8
- package/dist/components/slider/slider.js +83 -17
- package/dist/components/slider/slider.module.js +12 -0
- package/dist/components/spinner/index.d.ts +2 -2
- package/dist/components/spinner/spinner.css +1 -45
- package/dist/components/spinner/spinner.d.ts +1 -2
- package/dist/components/spinner/spinner.js +29 -6
- package/dist/components/spinner/spinner.module.js +7 -0
- package/dist/components/stack/index.d.ts +2 -2
- package/dist/components/stack/stack.css +1 -57
- package/dist/components/stack/stack.d.ts +2 -3
- package/dist/components/stack/stack.js +40 -36
- package/dist/components/stack/stack.module.js +3 -0
- package/dist/components/surface/index.d.ts +2 -2
- package/dist/components/surface/surface.css +1 -70
- package/dist/components/surface/surface.d.ts +10 -6
- package/dist/components/surface/surface.js +43 -40
- package/dist/components/surface/surface.module.js +6 -0
- package/dist/components/switch/index.d.ts +2 -2
- package/dist/components/switch/switch.css +1 -73
- package/dist/components/switch/switch.d.ts +17 -5
- package/dist/components/switch/switch.js +59 -13
- package/dist/components/switch/switch.module.js +7 -0
- package/dist/components/text/index.d.ts +2 -2
- package/dist/components/text/text.css +1 -140
- package/dist/components/text/text.d.ts +8 -3
- package/dist/components/text/text.js +46 -41
- package/dist/components/text/text.module.js +3 -0
- package/dist/components/textarea/index.d.ts +2 -2
- package/dist/components/textarea/textarea.css +1 -45
- package/dist/components/textarea/textarea.d.ts +3 -4
- package/dist/components/textarea/textarea.js +51 -11
- package/dist/components/textarea/textarea.module.js +7 -0
- package/dist/components/textfield/index.d.ts +2 -2
- package/dist/components/textfield/textfield.css +1 -87
- package/dist/components/textfield/textfield.d.ts +3 -4
- package/dist/components/textfield/textfield.js +58 -12
- package/dist/components/textfield/textfield.module.js +9 -0
- package/dist/components/title/index.d.ts +2 -2
- package/dist/components/title/title.css +1 -127
- package/dist/components/title/title.d.ts +8 -3
- package/dist/components/title/title.js +44 -39
- package/dist/components/title/title.module.js +3 -0
- package/dist/consumption.json +8 -4
- package/dist/core/elevation/elevation-types.js +6 -3
- package/dist/core/elevation/get-elevation-props.d.ts +1 -1
- package/dist/core/elevation/get-elevation-props.js +14 -11
- package/dist/core/props/intrinsic-vira-props.js +12 -9
- package/dist/core/styles/resolve-axis-padding.d.ts +1 -1
- package/dist/core/styles/resolve-axis-padding.js +15 -16
- package/dist/core/theme/resolve-theme-value.d.ts +1 -1
- package/dist/core/theme/resolve-theme-value.js +7 -6
- package/dist/index.d.ts +2 -2
- package/dist/index.js +21 -1
- package/dist/internal-icons/icon-registry.d.ts +242 -239
- package/dist/internal-icons/icon-registry.js +247 -238
- package/dist/internal-icons/icons/duo/Magnifier.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Magnifier.js +13 -0
- package/dist/internal-icons/icons/duo/Minus.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Minus.js +13 -0
- package/dist/internal-icons/icons/duo/Plus.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Plus.js +13 -0
- package/dist/internal-icons/icons/duo/index.d.ts +241 -238
- package/dist/internal-icons/icons/duo/index.js +241 -238
- package/dist/preflight-surface.json +160 -0
- package/dist/preflight.css +1 -1
- package/package.json +11 -9
- package/dist/components/avatar/index.js +0 -1
- package/dist/components/basic-input/index.js +0 -1
- package/dist/components/button/index.js +0 -1
- package/dist/components/clamp-text/index.js +0 -1
- package/dist/components/elevator/index.js +0 -1
- package/dist/components/icon/index.js +0 -1
- package/dist/components/icon-button/index.js +0 -1
- package/dist/components/index.js +0 -17
- package/dist/components/select/index.js +0 -1
- package/dist/components/skeleton/index.js +0 -1
- package/dist/components/slider/index.js +0 -1
- package/dist/components/slider/slider-control.css +0 -71
- package/dist/components/spinner/index.js +0 -1
- package/dist/components/stack/index.js +0 -1
- package/dist/components/surface/index.js +0 -1
- package/dist/components/switch/index.js +0 -1
- package/dist/components/text/index.js +0 -1
- package/dist/components/textarea/index.js +0 -1
- package/dist/components/textfield/index.js +0 -1
- package/dist/components/title/index.js +0 -1
|
@@ -1,36 +1 @@
|
|
|
1
|
-
|
|
2
|
-
:scope {
|
|
3
|
-
--skeleton-background: var(--global-contrast);
|
|
4
|
-
--skeleton-border-radius: var(--radius-small);
|
|
5
|
-
--skeleton-inline-size: auto;
|
|
6
|
-
--skeleton-block-size: auto;
|
|
7
|
-
--skeleton-min-inline-size: var(--space-x-large);
|
|
8
|
-
--skeleton-min-block-size: var(--space-medium);
|
|
9
|
-
|
|
10
|
-
display: inline-block;
|
|
11
|
-
box-sizing: border-box;
|
|
12
|
-
inline-size: var(--skeleton-inline-size);
|
|
13
|
-
block-size: var(--skeleton-block-size);
|
|
14
|
-
min-inline-size: var(--skeleton-min-inline-size);
|
|
15
|
-
min-block-size: var(--skeleton-min-block-size);
|
|
16
|
-
max-inline-size: 100%;
|
|
17
|
-
background: var(--skeleton-background);
|
|
18
|
-
border-radius: var(--skeleton-border-radius);
|
|
19
|
-
vertical-align: middle;
|
|
20
|
-
animation: skeleton-fade var(--duration-slow) var(--easing-standard) infinite alternate;
|
|
21
|
-
|
|
22
|
-
@media (prefers-reduced-motion: reduce) {
|
|
23
|
-
animation: none;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@keyframes skeleton-fade {
|
|
29
|
-
from {
|
|
30
|
-
opacity: 0.52;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
to {
|
|
34
|
-
opacity: 1;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
1
|
+
.skeleton-module_Skeleton_pn7Xk{--skeleton-background:var(--global-contrast);--skeleton-border-radius:var(--radius-small);--skeleton-inline-size:auto;--skeleton-block-size:auto;--skeleton-min-inline-size:var(--space-x-large);--skeleton-min-block-size:var(--space-medium);display:inline-block;box-sizing:border-box;inline-size:var(--skeleton-inline-size);block-size:var(--skeleton-block-size);min-inline-size:var(--skeleton-min-inline-size);min-block-size:var(--skeleton-min-block-size);max-inline-size:100%;background:var(--skeleton-background);border-radius:var(--skeleton-border-radius);vertical-align:middle;animation:skeleton-module_skeleton-fade_XHkG4 var(--duration-slow) var(--easing-standard) infinite alternate;@media (prefers-reduced-motion:reduce){animation:none}}@keyframes skeleton-module_skeleton-fade_XHkG4{0%{opacity:.52}to{opacity:1}}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { ThemeTypes } from '@viraui/foundation/vira/types';
|
|
2
|
+
import { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props';
|
|
3
3
|
import type * as React from 'react';
|
|
4
|
-
import './skeleton.css';
|
|
5
4
|
/**
|
|
6
5
|
* Public Skeleton props.
|
|
7
6
|
*
|
|
@@ -1,17 +1,28 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { extractIntrinsicViraProps } from '../../core/props/intrinsic-vira-props.js';
|
|
3
|
-
import { resolveThemeValue } from '../../core/theme/resolve-theme-value.js';
|
|
4
|
-
import clsx from 'clsx';
|
|
5
1
|
import './skeleton.css';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
|
|
3
|
+
import { resolveThemeValue } from "../../core/theme/resolve-theme-value.js";
|
|
4
|
+
import skeleton_module_default from "./skeleton.module.js";
|
|
5
|
+
import clsx$1 from "clsx";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/skeleton/skeleton.tsx
|
|
8
|
+
var Skeleton = ({ className, height, minHeight, minWidth, radius, ref, style, width, ...otherProps }) => {
|
|
9
|
+
const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
|
|
10
|
+
const dynamicStyle = {
|
|
11
|
+
"--skeleton-border-radius": resolveThemeValue(radius, "radius", "var(--radius-small)"),
|
|
12
|
+
...width ? { "--skeleton-inline-size": width } : {},
|
|
13
|
+
...height ? { "--skeleton-block-size": height } : {},
|
|
14
|
+
...minWidth ? { "--skeleton-min-inline-size": minWidth } : {},
|
|
15
|
+
...minHeight ? { "--skeleton-min-block-size": minHeight } : {},
|
|
16
|
+
...style
|
|
17
|
+
};
|
|
18
|
+
return /* @__PURE__ */ jsx("span", {
|
|
19
|
+
...componentProps,
|
|
20
|
+
...intrinsicAttributes,
|
|
21
|
+
ref,
|
|
22
|
+
"aria-hidden": "true",
|
|
23
|
+
className: clsx$1(skeleton_module_default.Skeleton, className),
|
|
24
|
+
style: dynamicStyle
|
|
25
|
+
});
|
|
17
26
|
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { Skeleton };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Slider } from './slider
|
|
2
|
-
export type { SliderProps } from './slider
|
|
1
|
+
export { Slider } from './slider';
|
|
2
|
+
export type { SliderProps } from './slider';
|
|
@@ -1,22 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
1
|
+
"use client";
|
|
2
|
+
import { Stack } from "../stack/stack.js";
|
|
3
|
+
import slider_module_default from "./slider.module.js";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Slider } from "@base-ui/react/slider";
|
|
6
|
+
//#region src/components/slider/slider-control.tsx
|
|
6
7
|
function resolveThumbAriaLabels(thumbAriaLabel, isRange) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return { first: thumbAriaLabel[0], second: thumbAriaLabel[1] };
|
|
15
|
-
}
|
|
16
|
-
return { first: thumbAriaLabel[0] };
|
|
8
|
+
if (thumbAriaLabel === void 0) return {};
|
|
9
|
+
if (typeof thumbAriaLabel === "string") return { first: thumbAriaLabel };
|
|
10
|
+
if (isRange) return {
|
|
11
|
+
first: thumbAriaLabel[0],
|
|
12
|
+
second: thumbAriaLabel[1]
|
|
13
|
+
};
|
|
14
|
+
return { first: thumbAriaLabel[0] };
|
|
17
15
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
function SliderControl({ isRange, orientation = "horizontal", thumbAriaLabel }) {
|
|
17
|
+
const isVertical = orientation === "vertical";
|
|
18
|
+
const { first: firstThumbAriaLabel, second: secondThumbAriaLabel } = resolveThumbAriaLabels(thumbAriaLabel, isRange);
|
|
19
|
+
return /* @__PURE__ */ jsx(Slider.Control, {
|
|
20
|
+
className: slider_module_default.SliderControl,
|
|
21
|
+
"data-orientation": orientation,
|
|
22
|
+
render: /* @__PURE__ */ jsx(Stack, {
|
|
23
|
+
direction: isVertical ? "column" : "row",
|
|
24
|
+
fillChildren: false,
|
|
25
|
+
hAlign: isVertical ? "center" : "initial",
|
|
26
|
+
vAlign: isVertical ? "initial" : "center"
|
|
27
|
+
}),
|
|
28
|
+
children: /* @__PURE__ */ jsxs(Slider.Track, {
|
|
29
|
+
className: slider_module_default.Track,
|
|
30
|
+
children: [/* @__PURE__ */ jsx(Slider.Indicator, { className: slider_module_default.Indicator }), isRange ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Slider.Thumb, {
|
|
31
|
+
className: slider_module_default.Thumb,
|
|
32
|
+
index: 0,
|
|
33
|
+
getAriaLabel: firstThumbAriaLabel ? () => firstThumbAriaLabel : void 0
|
|
34
|
+
}), /* @__PURE__ */ jsx(Slider.Thumb, {
|
|
35
|
+
className: slider_module_default.Thumb,
|
|
36
|
+
index: 1,
|
|
37
|
+
getAriaLabel: secondThumbAriaLabel ? () => secondThumbAriaLabel : void 0
|
|
38
|
+
})] }) : /* @__PURE__ */ jsx(Slider.Thumb, {
|
|
39
|
+
className: slider_module_default.Thumb,
|
|
40
|
+
getAriaLabel: firstThumbAriaLabel ? () => firstThumbAriaLabel : void 0
|
|
41
|
+
})]
|
|
42
|
+
})
|
|
43
|
+
});
|
|
22
44
|
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { SliderControl };
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
//#region src/components/slider/slider-utils.ts
|
|
2
|
+
function isRangeSlider(value, defaultValue) {
|
|
3
|
+
const effective = value ?? defaultValue;
|
|
4
|
+
return Array.isArray(effective);
|
|
4
5
|
}
|
|
6
|
+
//#endregion
|
|
7
|
+
export { isRangeSlider };
|
|
@@ -1,64 +1 @@
|
|
|
1
|
-
|
|
2
|
-
:scope {
|
|
3
|
-
--slider-track-size: var(--space-x-small);
|
|
4
|
-
--slider-thumb-size: var(--space-medium);
|
|
5
|
-
--slider-track-background: var(--global-contrast);
|
|
6
|
-
--slider-progress-background: var(--global-primary);
|
|
7
|
-
--slider-thumb-background: var(--base-1);
|
|
8
|
-
inline-size: 100%;
|
|
9
|
-
block-size: 100%;
|
|
10
|
-
min-inline-size: 0;
|
|
11
|
-
min-block-size: 0;
|
|
12
|
-
|
|
13
|
-
> .SliderRoot {
|
|
14
|
-
inline-size: 100%;
|
|
15
|
-
block-size: 100%;
|
|
16
|
-
min-inline-size: 0;
|
|
17
|
-
min-block-size: 0;
|
|
18
|
-
|
|
19
|
-
> .SliderHeader {
|
|
20
|
-
inline-size: 100%;
|
|
21
|
-
min-inline-size: 0;
|
|
22
|
-
|
|
23
|
-
/* Label shrinks/wraps; value keeps its size on the right */
|
|
24
|
-
> .Label {
|
|
25
|
-
-webkit-user-select: none;
|
|
26
|
-
user-select: none;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
> .Value {
|
|
30
|
-
min-inline-size: var(--space-x-large);
|
|
31
|
-
flex-shrink: 0;
|
|
32
|
-
-webkit-user-select: none;
|
|
33
|
-
user-select: none;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
&[data-invalid] {
|
|
39
|
-
--slider-progress-background: var(--highlight-red);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/* Disabled: muted track/progress/thumb when Slider or SliderRoot is disabled */
|
|
43
|
-
&[data-disabled],
|
|
44
|
-
&:has(> .SliderRoot[data-disabled]) {
|
|
45
|
-
--slider-track-background: var(--global-disabled-background);
|
|
46
|
-
--slider-progress-background: var(--global-disabled-foreground);
|
|
47
|
-
--slider-thumb-background: var(--global-disabled-foreground);
|
|
48
|
-
|
|
49
|
-
cursor: not-allowed;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/* Required field: append red asterisk on Label */
|
|
53
|
-
&:has([required]) > .SliderRoot > .SliderHeader > .Label::after {
|
|
54
|
-
content: ' *';
|
|
55
|
-
color: var(--highlight-red);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
& > .Description,
|
|
59
|
-
& > .SliderRoot > .SliderHeader > .Value {
|
|
60
|
-
-webkit-user-select: none;
|
|
61
|
-
user-select: none;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
1
|
+
.slider-module_Slider_vDNlm{--slider-track-size:var(--space-x-small);--slider-thumb-size:var(--space-medium);--slider-track-background:var(--global-contrast);--slider-progress-background:var(--global-primary);--slider-thumb-background:var(--base-1);inline-size:100%;block-size:100%;min-inline-size:0;min-block-size:0;&:has([required]) [data-field-label]:after{content:" *";color:var(--highlight-red)}&[data-invalid]{--slider-progress-background:var(--highlight-red)}&:has(.slider-module_SliderRoot_4JScw[data-disabled]),&[data-disabled]{--slider-track-background:var(--global-disabled-background);--slider-progress-background:var(--global-disabled-foreground);--slider-thumb-background:var(--global-disabled-foreground);cursor:not-allowed}}.slider-module_SliderRoot_4JScw{block-size:100%;min-block-size:0}.slider-module_SliderHeader_gOy9k,.slider-module_SliderRoot_4JScw{inline-size:100%;min-inline-size:0}.slider-module_Value_FaY9i{flex-shrink:0}.slider-module_SliderControl_FQd5-{position:relative;flex:1 1 auto;user-select:none;touch-action:none;inline-size:100%;block-size:var(--slider-track-size);min-inline-size:0;min-block-size:0;&[data-orientation=vertical]{inline-size:var(--slider-track-size);block-size:100%;>.slider-module_Track_wvLEH{inline-size:var(--slider-track-size);block-size:100%}}}.slider-module_Track_wvLEH{position:relative;overflow:visible;inline-size:100%;block-size:var(--slider-track-size);background:var(--slider-track-background);border-radius:var(--radius-infinite)}.slider-module_Indicator_y3JyJ{background:var(--slider-progress-background);border-radius:inherit}.slider-module_Thumb_S-uLF{box-sizing:border-box;inline-size:var(--slider-thumb-size);block-size:calc(var(--slider-thumb-size) / 1.5);background:var(--slider-thumb-background);border:2px solid var(--slider-progress-background);border-radius:var(--radius-x-small);appearance:none;transition:scale var(--easing-elastic) var(--duration-slow);&:not(:disabled,[data-disabled]){cursor:grab}&:not(:disabled,[data-disabled]):active,&:not(:disabled,[data-disabled]):has(>input:active),&:not(:disabled,[data-disabled])[data-dragging]:has(>input:focus){cursor:grabbing;scale:1.2}&:has(>input:focus-visible){outline:2px solid var(--global-foreground);outline-offset:2px;z-index:1}>input:focus-visible{outline:none}}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { FieldRoot } from '@base-ui/react/field';
|
|
2
|
+
import { SliderRoot } from '@base-ui/react/slider';
|
|
3
|
+
import { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props';
|
|
4
4
|
import type * as React from 'react';
|
|
5
|
-
import './slider-control.css';
|
|
6
|
-
import './slider.css';
|
|
7
5
|
/**
|
|
8
6
|
* Public Slider props.
|
|
9
7
|
*
|
|
@@ -12,7 +10,7 @@ import './slider.css';
|
|
|
12
10
|
*
|
|
13
11
|
* @default Base UI pass-through props keep upstream defaults.
|
|
14
12
|
*/
|
|
15
|
-
export type SliderProps =
|
|
13
|
+
export type SliderProps = SliderRoot.Props & FieldRoot.Props & {
|
|
16
14
|
/**
|
|
17
15
|
* Adds `data-grow="false"` to the field root when false.
|
|
18
16
|
*
|
|
@@ -25,9 +23,8 @@ export type SliderProps = Omit<SliderRoot.Props, 'ref'> & Omit<FieldRoot.Props,
|
|
|
25
23
|
* @default The field root does not render a shrink attribute.
|
|
26
24
|
*/
|
|
27
25
|
shrink?: IntrinsicViraProps['shrink'];
|
|
28
|
-
ref?: React.Ref<HTMLDivElement>;
|
|
29
26
|
/**
|
|
30
|
-
* Visible label rendered with
|
|
27
|
+
* Visible label rendered with shared internal `FieldLabel`.
|
|
31
28
|
*
|
|
32
29
|
* @default No label is rendered.
|
|
33
30
|
*/
|
|
@@ -1,19 +1,85 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Field } from '@base-ui/react/field';
|
|
4
|
-
import { Slider as PrimitiveSlider } from '@base-ui/react/slider';
|
|
5
|
-
import { FieldHelperCopy } from '../../components/basic-input/field-helper-copy.js';
|
|
6
|
-
import { Stack } from '../../components/stack/index.js';
|
|
7
|
-
import { Text } from '../../components/text/index.js';
|
|
8
|
-
import { extractIntrinsicViraProps } from '../../core/props/intrinsic-vira-props.js';
|
|
9
|
-
import { clsx } from 'clsx';
|
|
10
|
-
import { SliderControl } from './slider-control.js';
|
|
11
|
-
import './slider-control.css';
|
|
12
|
-
import { isRangeSlider } from './slider-utils.js';
|
|
13
1
|
import './slider.css';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
"use client";
|
|
3
|
+
import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
|
|
4
|
+
import { Text } from "../text/text.js";
|
|
5
|
+
import { FieldHelperCopy } from "../basic-input/field-helper-copy.js";
|
|
6
|
+
import { FieldLabel } from "../basic-input/field-label.js";
|
|
7
|
+
import { Stack } from "../stack/stack.js";
|
|
8
|
+
import slider_module_default from "./slider.module.js";
|
|
9
|
+
import { SliderControl } from "./slider-control.js";
|
|
10
|
+
import { isRangeSlider } from "./slider-utils.js";
|
|
11
|
+
import { clsx } from "clsx";
|
|
12
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { Field } from "@base-ui/react/field";
|
|
14
|
+
import { Slider } from "@base-ui/react/slider";
|
|
15
|
+
//#region src/components/slider/slider.tsx
|
|
16
|
+
var Slider$1 = ({ className, defaultValue, description, dirty, disabled, error, invalid, label, name, orientation = "horizontal", showValue = false, thumbAriaLabel, touched, validate, validationDebounceTime, validationMode, value, ref, ...sliderRootProps }) => {
|
|
17
|
+
const isRange = isRangeSlider(value, defaultValue);
|
|
18
|
+
const isVertical = orientation === "vertical";
|
|
19
|
+
const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(sliderRootProps);
|
|
20
|
+
return /* @__PURE__ */ jsxs(Field.Root, {
|
|
21
|
+
...intrinsicAttributes,
|
|
22
|
+
className: slider_module_default.Slider,
|
|
23
|
+
dirty,
|
|
24
|
+
disabled,
|
|
25
|
+
invalid,
|
|
26
|
+
name,
|
|
27
|
+
touched,
|
|
28
|
+
validate,
|
|
29
|
+
validationDebounceTime,
|
|
30
|
+
validationMode,
|
|
31
|
+
render: /* @__PURE__ */ jsx(Stack, {
|
|
32
|
+
direction: "column",
|
|
33
|
+
fillChildren: false,
|
|
34
|
+
rowGap: "small"
|
|
35
|
+
}),
|
|
36
|
+
children: [/* @__PURE__ */ jsxs(Slider.Root, {
|
|
37
|
+
...componentProps,
|
|
38
|
+
ref,
|
|
39
|
+
className: clsx(slider_module_default.SliderRoot, className),
|
|
40
|
+
defaultValue,
|
|
41
|
+
disabled,
|
|
42
|
+
name,
|
|
43
|
+
orientation,
|
|
44
|
+
value,
|
|
45
|
+
render: /* @__PURE__ */ jsx(Stack, {
|
|
46
|
+
direction: "column",
|
|
47
|
+
fillChildren: false,
|
|
48
|
+
rowGap: "small",
|
|
49
|
+
columnGap: "x-small",
|
|
50
|
+
vAlign: isVertical ? "stretch" : "center",
|
|
51
|
+
hAlign: isVertical ? "center" : "initial"
|
|
52
|
+
}),
|
|
53
|
+
children: [(label || showValue) && /* @__PURE__ */ jsxs(Stack, {
|
|
54
|
+
className: slider_module_default.SliderHeader,
|
|
55
|
+
direction: isVertical ? "column" : "row",
|
|
56
|
+
fillChildren: false,
|
|
57
|
+
columnGap: "small",
|
|
58
|
+
vAlign: "end",
|
|
59
|
+
hAlign: isVertical ? "center" : "space-between",
|
|
60
|
+
children: [label && /* @__PURE__ */ jsx(Field.Label, {
|
|
61
|
+
"data-field-label": "",
|
|
62
|
+
children: /* @__PURE__ */ jsx(FieldLabel, { children: label })
|
|
63
|
+
}), showValue && /* @__PURE__ */ jsx(Text, {
|
|
64
|
+
className: slider_module_default.Value,
|
|
65
|
+
size: "small",
|
|
66
|
+
tone: "muted",
|
|
67
|
+
family: "mono",
|
|
68
|
+
whiteSpace: "nowrap",
|
|
69
|
+
selection: false,
|
|
70
|
+
align: isVertical ? "center" : "end",
|
|
71
|
+
render: /* @__PURE__ */ jsx(Slider.Value, {})
|
|
72
|
+
})]
|
|
73
|
+
}), /* @__PURE__ */ jsx(SliderControl, {
|
|
74
|
+
isRange,
|
|
75
|
+
orientation,
|
|
76
|
+
thumbAriaLabel
|
|
77
|
+
})]
|
|
78
|
+
}), /* @__PURE__ */ jsx(FieldHelperCopy, {
|
|
79
|
+
description,
|
|
80
|
+
error
|
|
81
|
+
})]
|
|
82
|
+
});
|
|
19
83
|
};
|
|
84
|
+
//#endregion
|
|
85
|
+
export { Slider$1 as Slider };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
var slider_module_default = {
|
|
2
|
+
Slider: "slider-module_Slider_vDNlm",
|
|
3
|
+
SliderRoot: "slider-module_SliderRoot_4JScw",
|
|
4
|
+
SliderHeader: "slider-module_SliderHeader_gOy9k",
|
|
5
|
+
Value: "slider-module_Value_FaY9i",
|
|
6
|
+
SliderControl: "slider-module_SliderControl_FQd5-",
|
|
7
|
+
Track: "slider-module_Track_wvLEH",
|
|
8
|
+
Indicator: "slider-module_Indicator_y3JyJ",
|
|
9
|
+
Thumb: "slider-module_Thumb_S-uLF"
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { slider_module_default as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Spinner } from './spinner
|
|
2
|
-
export type { SpinnerProps } from './spinner
|
|
1
|
+
export { Spinner } from './spinner';
|
|
2
|
+
export type { SpinnerProps } from './spinner';
|
|
@@ -1,45 +1 @@
|
|
|
1
|
-
|
|
2
|
-
:scope {
|
|
3
|
-
--spinner-size: var(--space-x-large);
|
|
4
|
-
|
|
5
|
-
display: inline-block;
|
|
6
|
-
inline-size: var(--spinner-size);
|
|
7
|
-
block-size: var(--spinner-size);
|
|
8
|
-
flex: none;
|
|
9
|
-
vertical-align: middle;
|
|
10
|
-
color: currentColor;
|
|
11
|
-
|
|
12
|
-
&[data-dimension='small'] {
|
|
13
|
-
--spinner-size: var(--space-medium);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
&[data-dimension='regular'] {
|
|
17
|
-
--spinner-size: var(--space-large);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
> .Glyph > path {
|
|
21
|
-
transform-origin: 8px 8px;
|
|
22
|
-
animation: spinner-bars var(--duration-slowest) infinite;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
> .Glyph > path:nth-child(1),
|
|
26
|
-
> .Glyph > path:nth-child(3) {
|
|
27
|
-
opacity: 0.3;
|
|
28
|
-
transform: scaleY(0.5);
|
|
29
|
-
animation-delay: calc(var(--duration-slowest) / -2);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
@keyframes spinner-bars {
|
|
35
|
-
0%,
|
|
36
|
-
100% {
|
|
37
|
-
opacity: 1;
|
|
38
|
-
transform: scaleY(1);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
50% {
|
|
42
|
-
opacity: 0.3;
|
|
43
|
-
transform: scaleY(0.5);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
.spinner-module_Spinner_qCQzj{--spinner-size:var(--space-x-large);display:inline-block;inline-size:var(--spinner-size);block-size:var(--spinner-size);flex:none;vertical-align:middle;color:currentColor;&[data-dimension=small]{--spinner-size:var(--space-medium)}&[data-dimension=regular]{--spinner-size:var(--space-large)}}.spinner-module_Glyph_OV-cy>path{transform-origin:8px 8px;animation:spinner-module_spinner-bars_jDmaB var(--duration-slowest) infinite}.spinner-module_Glyph_OV-cy>path:first-child,.spinner-module_Glyph_OV-cy>path:nth-child(3){opacity:.3;transform:scaleY(.5);animation-delay:calc(var(--duration-slowest) / -2)}@keyframes spinner-module_spinner-bars_jDmaB{0%,to{opacity:1;transform:scaleY(1)}50%{opacity:.3;transform:scaleY(.5)}}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import type { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props.js';
|
|
1
|
+
import { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props';
|
|
3
2
|
export type SpinnerProps = Omit<React.ComponentProps<'svg'>, 'color'> & IntrinsicViraProps & {
|
|
4
3
|
/**
|
|
5
4
|
* Sets the rendered spinner size.
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { extractIntrinsicViraProps } from '../../core/props/intrinsic-vira-props.js';
|
|
3
|
-
import clsx from 'clsx';
|
|
4
1
|
import './spinner.css';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
|
|
3
|
+
import spinner_module_default from "./spinner.module.js";
|
|
4
|
+
import clsx$1 from "clsx";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/spinner/spinner.tsx
|
|
7
|
+
var Spinner = ({ className, color, size = "big", ref, style, ...otherProps }) => {
|
|
8
|
+
const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
|
|
9
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
10
|
+
...componentProps,
|
|
11
|
+
...intrinsicAttributes,
|
|
12
|
+
ref,
|
|
13
|
+
className: clsx$1(spinner_module_default.Spinner, className),
|
|
14
|
+
"data-dimension": size,
|
|
15
|
+
viewBox: "0 0 16 16",
|
|
16
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
17
|
+
...color ? { color } : {},
|
|
18
|
+
...style ? { style } : {},
|
|
19
|
+
children: /* @__PURE__ */ jsxs("g", {
|
|
20
|
+
className: spinner_module_default.Glyph,
|
|
21
|
+
fill: "currentColor",
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ jsx("path", { d: "M0 2h2v12H0z" }),
|
|
24
|
+
/* @__PURE__ */ jsx("path", { d: "M7 2h2v12H7z" }),
|
|
25
|
+
/* @__PURE__ */ jsx("path", { d: "M14 2h2v12h-2z" })
|
|
26
|
+
]
|
|
27
|
+
})
|
|
28
|
+
});
|
|
8
29
|
};
|
|
30
|
+
//#endregion
|
|
31
|
+
export { Spinner };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Stack } from './stack
|
|
2
|
-
export type { StackProps } from './stack
|
|
1
|
+
export { Stack } from './stack';
|
|
2
|
+
export type { StackProps } from './stack';
|
|
@@ -1,57 +1 @@
|
|
|
1
|
-
|
|
2
|
-
:scope {
|
|
3
|
-
--stack-row-gap: 0;
|
|
4
|
-
--stack-column-gap: 0;
|
|
5
|
-
--stack-h-align: initial;
|
|
6
|
-
--stack-v-align: initial;
|
|
7
|
-
--stack-padding-inline-start: 0;
|
|
8
|
-
--stack-padding-inline-end: 0;
|
|
9
|
-
--stack-padding-block-start: 0;
|
|
10
|
-
--stack-padding-block-end: 0;
|
|
11
|
-
|
|
12
|
-
display: flex;
|
|
13
|
-
flex-direction: column;
|
|
14
|
-
align-items: var(--stack-h-align);
|
|
15
|
-
justify-content: var(--stack-v-align);
|
|
16
|
-
gap: var(--stack-row-gap) var(--stack-column-gap);
|
|
17
|
-
max-inline-size: var(--stack-max-width, none);
|
|
18
|
-
min-inline-size: var(--stack-min-width, none);
|
|
19
|
-
|
|
20
|
-
&[data-stack-direction='column-reverse'] {
|
|
21
|
-
flex-direction: column-reverse;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* Row layouts: swap which gap token maps to align vs justify */
|
|
25
|
-
&[data-stack-direction='row'],
|
|
26
|
-
&[data-stack-direction='row-reverse'] {
|
|
27
|
-
align-items: var(--stack-v-align);
|
|
28
|
-
justify-content: var(--stack-h-align);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
&[data-stack-direction='row'] {
|
|
32
|
-
flex-direction: row;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
&[data-stack-direction='row-reverse'] {
|
|
36
|
-
flex-direction: row-reverse;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
&[data-stack-inline='true'] {
|
|
40
|
-
display: inline-flex;
|
|
41
|
-
flex-grow: 0;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
&[data-stack-wrap='true'] {
|
|
45
|
-
flex-wrap: wrap;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
&[data-stack-has-padding='true'] {
|
|
49
|
-
padding: var(--stack-padding-block-start) var(--stack-padding-inline-end) var(--stack-padding-block-end)
|
|
50
|
-
var(--stack-padding-inline-start);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
&[data-stack-fill-children='true'] > * {
|
|
54
|
-
flex-grow: var(--vira-flex-grow, 1);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
1
|
+
.stack-module_Stack_NR-Ey{--stack-row-gap:0;--stack-column-gap:0;--stack-h-align:initial;--stack-v-align:initial;--stack-padding-inline-start:0;--stack-padding-inline-end:0;--stack-padding-block-start:0;--stack-padding-block-end:0;display:flex;flex-direction:column;align-items:var(--stack-h-align);justify-content:var(--stack-v-align);gap:var(--stack-row-gap) var(--stack-column-gap);max-inline-size:var(--stack-max-width,none);min-inline-size:var(--stack-min-width,none);&[data-stack-direction=column-reverse]{flex-direction:column-reverse}&[data-stack-direction=row-reverse],&[data-stack-direction=row]{align-items:var(--stack-v-align);justify-content:var(--stack-h-align)}&[data-stack-direction=row]{flex-direction:row}&[data-stack-direction=row-reverse]{flex-direction:row-reverse}&[data-stack-inline=true]{display:inline-flex;flex-grow:0}&[data-stack-wrap=true]{flex-wrap:wrap}&[data-stack-has-padding=true]{padding:var(--stack-padding-block-start) var(--stack-padding-inline-end) var(--stack-padding-block-end) var(--stack-padding-inline-start)}&[data-stack-fill-children=true]>*{flex-grow:var(--vira-flex-grow,1)}}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { useRender } from '@base-ui/react/use-render';
|
|
2
|
-
import
|
|
2
|
+
import { ThemeTypes } from '@viraui/foundation/vira/types';
|
|
3
|
+
import { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props';
|
|
3
4
|
import type * as React from 'react';
|
|
4
|
-
import type { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props.js';
|
|
5
|
-
import './stack.css';
|
|
6
5
|
type StackAlignment = 'start' | 'center' | 'end' | 'stretch' | 'initial' | 'space-between' | 'space-around' | 'space-evenly';
|
|
7
6
|
type StackSpace = ThemeTypes['space'];
|
|
8
7
|
type StackAxisPadding = StackSpace | [StackSpace | 0, StackSpace | 0];
|