@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.
Files changed (155) hide show
  1. package/dist/catalog.json +6 -0
  2. package/dist/components/avatar/avatar.css +1 -55
  3. package/dist/components/avatar/avatar.d.ts +1 -2
  4. package/dist/components/avatar/avatar.js +49 -14
  5. package/dist/components/avatar/avatar.module.js +7 -0
  6. package/dist/components/avatar/index.d.ts +2 -2
  7. package/dist/components/basic-input/basic-input.css +1 -45
  8. package/dist/components/basic-input/basic-input.d.ts +0 -1
  9. package/dist/components/basic-input/basic-input.js +24 -13
  10. package/dist/components/basic-input/basic-input.module.js +3 -0
  11. package/dist/components/basic-input/field-helper-copy.d.ts +2 -1
  12. package/dist/components/basic-input/field-helper-copy.js +43 -24
  13. package/dist/components/basic-input/field-label.css +1 -0
  14. package/dist/components/basic-input/field-label.d.ts +10 -0
  15. package/dist/components/basic-input/field-label.js +24 -0
  16. package/dist/components/basic-input/field-label.module.js +3 -0
  17. package/dist/components/basic-input/index.d.ts +7 -2
  18. package/dist/components/basic-input/input-control-group.d.ts +2 -0
  19. package/dist/components/basic-input/input-control-group.js +40 -7
  20. package/dist/components/button/button.css +1 -156
  21. package/dist/components/button/button.d.ts +3 -3
  22. package/dist/components/button/button.js +104 -14
  23. package/dist/components/button/button.module.js +7 -0
  24. package/dist/components/button/index.d.ts +2 -2
  25. package/dist/components/checkbox/checkbox.css +1 -0
  26. package/dist/components/checkbox/checkbox.d.ts +65 -0
  27. package/dist/components/checkbox/checkbox.guide.json +22 -0
  28. package/dist/components/checkbox/checkbox.js +73 -0
  29. package/dist/components/checkbox/checkbox.module.js +10 -0
  30. package/dist/components/checkbox/index.d.ts +2 -0
  31. package/dist/components/clamp-text/clamp-text.css +1 -12
  32. package/dist/components/clamp-text/clamp-text.d.ts +1 -2
  33. package/dist/components/clamp-text/clamp-text.js +27 -22
  34. package/dist/components/clamp-text/clamp-text.module.js +3 -0
  35. package/dist/components/clamp-text/index.d.ts +2 -2
  36. package/dist/components/elevator/elevator.d.ts +5 -5
  37. package/dist/components/elevator/elevator.js +27 -27
  38. package/dist/components/elevator/index.d.ts +2 -2
  39. package/dist/components/icon/icon.css +1 -7
  40. package/dist/components/icon/icon.d.ts +2 -3
  41. package/dist/components/icon/icon.js +18 -9
  42. package/dist/components/icon/icon.module.js +3 -0
  43. package/dist/components/icon/index.d.ts +2 -2
  44. package/dist/components/icon-button/icon-button.d.ts +2 -2
  45. package/dist/components/icon-button/icon-button.js +10 -3
  46. package/dist/components/icon-button/index.d.ts +2 -2
  47. package/dist/components/index.d.ts +18 -17
  48. package/dist/components/select/index.d.ts +2 -2
  49. package/dist/components/select/select-group.d.ts +1 -1
  50. package/dist/components/select/select-group.js +37 -9
  51. package/dist/components/select/select-indicator-slot.js +33 -10
  52. package/dist/components/select/select-option.d.ts +1 -1
  53. package/dist/components/select/select-option.js +40 -10
  54. package/dist/components/select/select-separator.js +14 -6
  55. package/dist/components/select/select.css +1 -193
  56. package/dist/components/select/select.d.ts +10 -11
  57. package/dist/components/select/select.js +156 -32
  58. package/dist/components/select/select.module.js +19 -0
  59. package/dist/components/skeleton/index.d.ts +2 -2
  60. package/dist/components/skeleton/skeleton.css +1 -36
  61. package/dist/components/skeleton/skeleton.d.ts +2 -3
  62. package/dist/components/skeleton/skeleton.js +26 -15
  63. package/dist/components/skeleton/skeleton.module.js +6 -0
  64. package/dist/components/slider/index.d.ts +2 -2
  65. package/dist/components/slider/slider-control.d.ts +1 -2
  66. package/dist/components/slider/slider-control.js +43 -19
  67. package/dist/components/slider/slider-utils.js +6 -3
  68. package/dist/components/slider/slider.css +1 -64
  69. package/dist/components/slider/slider.d.ts +5 -8
  70. package/dist/components/slider/slider.js +83 -17
  71. package/dist/components/slider/slider.module.js +12 -0
  72. package/dist/components/spinner/index.d.ts +2 -2
  73. package/dist/components/spinner/spinner.css +1 -45
  74. package/dist/components/spinner/spinner.d.ts +1 -2
  75. package/dist/components/spinner/spinner.js +29 -6
  76. package/dist/components/spinner/spinner.module.js +7 -0
  77. package/dist/components/stack/index.d.ts +2 -2
  78. package/dist/components/stack/stack.css +1 -57
  79. package/dist/components/stack/stack.d.ts +2 -3
  80. package/dist/components/stack/stack.js +40 -36
  81. package/dist/components/stack/stack.module.js +3 -0
  82. package/dist/components/surface/index.d.ts +2 -2
  83. package/dist/components/surface/surface.css +1 -70
  84. package/dist/components/surface/surface.d.ts +10 -6
  85. package/dist/components/surface/surface.js +43 -40
  86. package/dist/components/surface/surface.module.js +6 -0
  87. package/dist/components/switch/index.d.ts +2 -2
  88. package/dist/components/switch/switch.css +1 -73
  89. package/dist/components/switch/switch.d.ts +17 -5
  90. package/dist/components/switch/switch.js +59 -13
  91. package/dist/components/switch/switch.module.js +7 -0
  92. package/dist/components/text/index.d.ts +2 -2
  93. package/dist/components/text/text.css +1 -140
  94. package/dist/components/text/text.d.ts +8 -3
  95. package/dist/components/text/text.js +46 -41
  96. package/dist/components/text/text.module.js +3 -0
  97. package/dist/components/textarea/index.d.ts +2 -2
  98. package/dist/components/textarea/textarea.css +1 -45
  99. package/dist/components/textarea/textarea.d.ts +3 -4
  100. package/dist/components/textarea/textarea.js +51 -11
  101. package/dist/components/textarea/textarea.module.js +7 -0
  102. package/dist/components/textfield/index.d.ts +2 -2
  103. package/dist/components/textfield/textfield.css +1 -87
  104. package/dist/components/textfield/textfield.d.ts +3 -4
  105. package/dist/components/textfield/textfield.js +58 -12
  106. package/dist/components/textfield/textfield.module.js +9 -0
  107. package/dist/components/title/index.d.ts +2 -2
  108. package/dist/components/title/title.css +1 -127
  109. package/dist/components/title/title.d.ts +8 -3
  110. package/dist/components/title/title.js +44 -39
  111. package/dist/components/title/title.module.js +3 -0
  112. package/dist/consumption.json +8 -4
  113. package/dist/core/elevation/elevation-types.js +6 -3
  114. package/dist/core/elevation/get-elevation-props.d.ts +1 -1
  115. package/dist/core/elevation/get-elevation-props.js +14 -11
  116. package/dist/core/props/intrinsic-vira-props.js +12 -9
  117. package/dist/core/styles/resolve-axis-padding.d.ts +1 -1
  118. package/dist/core/styles/resolve-axis-padding.js +15 -16
  119. package/dist/core/theme/resolve-theme-value.d.ts +1 -1
  120. package/dist/core/theme/resolve-theme-value.js +7 -6
  121. package/dist/index.d.ts +2 -2
  122. package/dist/index.js +21 -1
  123. package/dist/internal-icons/icon-registry.d.ts +242 -239
  124. package/dist/internal-icons/icon-registry.js +247 -238
  125. package/dist/internal-icons/icons/duo/Magnifier.d.ts +7 -0
  126. package/dist/internal-icons/icons/duo/Magnifier.js +13 -0
  127. package/dist/internal-icons/icons/duo/Minus.d.ts +7 -0
  128. package/dist/internal-icons/icons/duo/Minus.js +13 -0
  129. package/dist/internal-icons/icons/duo/Plus.d.ts +7 -0
  130. package/dist/internal-icons/icons/duo/Plus.js +13 -0
  131. package/dist/internal-icons/icons/duo/index.d.ts +241 -238
  132. package/dist/internal-icons/icons/duo/index.js +241 -238
  133. package/dist/preflight-surface.json +160 -0
  134. package/dist/preflight.css +1 -1
  135. package/package.json +11 -9
  136. package/dist/components/avatar/index.js +0 -1
  137. package/dist/components/basic-input/index.js +0 -1
  138. package/dist/components/button/index.js +0 -1
  139. package/dist/components/clamp-text/index.js +0 -1
  140. package/dist/components/elevator/index.js +0 -1
  141. package/dist/components/icon/index.js +0 -1
  142. package/dist/components/icon-button/index.js +0 -1
  143. package/dist/components/index.js +0 -17
  144. package/dist/components/select/index.js +0 -1
  145. package/dist/components/skeleton/index.js +0 -1
  146. package/dist/components/slider/index.js +0 -1
  147. package/dist/components/slider/slider-control.css +0 -71
  148. package/dist/components/spinner/index.js +0 -1
  149. package/dist/components/stack/index.js +0 -1
  150. package/dist/components/surface/index.js +0 -1
  151. package/dist/components/switch/index.js +0 -1
  152. package/dist/components/text/index.js +0 -1
  153. package/dist/components/textarea/index.js +0 -1
  154. package/dist/components/textfield/index.js +0 -1
  155. package/dist/components/title/index.js +0 -1
@@ -1,36 +1 @@
1
- @scope (.Skeleton) {
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 type { ThemeTypes } from '@viraui/foundation/vira/types';
2
- import type { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props.js';
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
- export const Skeleton = ({ className, height, minHeight, minWidth, radius, ref, style, width, ...otherProps }) => {
7
- const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
8
- const dynamicStyle = {
9
- '--skeleton-border-radius': resolveThemeValue(radius, 'radius', 'var(--radius-small)'),
10
- ...(width ? { '--skeleton-inline-size': width } : {}),
11
- ...(height ? { '--skeleton-block-size': height } : {}),
12
- ...(minWidth ? { '--skeleton-min-inline-size': minWidth } : {}),
13
- ...(minHeight ? { '--skeleton-min-block-size': minHeight } : {}),
14
- ...style,
15
- };
16
- return (_jsx("span", { ...componentProps, ...intrinsicAttributes, ref: ref, "aria-hidden": "true", className: clsx('Skeleton', className), style: dynamicStyle }));
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 };
@@ -0,0 +1,6 @@
1
+ var skeleton_module_default = {
2
+ Skeleton: "skeleton-module_Skeleton_pn7Xk",
3
+ "skeleton-fade": "skeleton-module_skeleton-fade_XHkG4"
4
+ };
5
+ //#endregion
6
+ export { skeleton_module_default as default };
@@ -1,2 +1,2 @@
1
- export { Slider } from './slider.js';
2
- export type { SliderProps } from './slider.js';
1
+ export { Slider } from './slider';
2
+ export type { SliderProps } from './slider';
@@ -1,5 +1,4 @@
1
- import type { SliderRoot } from '@base-ui/react/slider';
2
- import './slider-control.css';
1
+ import { SliderRoot } from '@base-ui/react/slider';
3
2
  export type SliderControlProps = {
4
3
  isRange: boolean;
5
4
  orientation?: SliderRoot.Props['orientation'];
@@ -1,22 +1,46 @@
1
- 'use client';
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Slider as PrimitiveSlider } from '@base-ui/react/slider';
4
- import { Stack } from '../../components/stack/index.js';
5
- import './slider-control.css';
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
- if (thumbAriaLabel === undefined) {
8
- return {};
9
- }
10
- if (typeof thumbAriaLabel === 'string') {
11
- return { first: thumbAriaLabel };
12
- }
13
- if (isRange) {
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
- export function SliderControl({ isRange, orientation = 'horizontal', thumbAriaLabel }) {
19
- const isVertical = orientation === 'vertical';
20
- const { first: firstThumbAriaLabel, second: secondThumbAriaLabel } = resolveThumbAriaLabels(thumbAriaLabel, isRange);
21
- return (_jsx(PrimitiveSlider.Control, { className: "SliderControl", "data-orientation": orientation, render: _jsx(Stack, { direction: isVertical ? 'column' : 'row', fillChildren: false, hAlign: isVertical ? 'center' : 'initial', vAlign: isVertical ? 'initial' : 'center' }), children: _jsxs(PrimitiveSlider.Track, { className: "Track", children: [_jsx(PrimitiveSlider.Indicator, { className: "Indicator" }), isRange ? (_jsxs(_Fragment, { children: [_jsx(PrimitiveSlider.Thumb, { className: "Thumb", index: 0, getAriaLabel: firstThumbAriaLabel ? () => firstThumbAriaLabel : undefined }), _jsx(PrimitiveSlider.Thumb, { className: "Thumb", index: 1, getAriaLabel: secondThumbAriaLabel ? () => secondThumbAriaLabel : undefined })] })) : (_jsx(PrimitiveSlider.Thumb, { className: "Thumb", getAriaLabel: firstThumbAriaLabel ? () => firstThumbAriaLabel : undefined }))] }) }));
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
- export function isRangeSlider(value, defaultValue) {
2
- const effective = value ?? defaultValue;
3
- return Array.isArray(effective);
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
- @scope (.Slider) {
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 type { FieldRoot } from '@base-ui/react/field';
2
- import type { SliderRoot } from '@base-ui/react/slider';
3
- import type { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props.js';
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 = Omit<SliderRoot.Props, 'ref'> & Omit<FieldRoot.Props, 'ref'> & {
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 `Field.Label` and `Text`.
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
- export const Slider = ({ className, defaultValue, description, dirty, disabled, error, invalid, label, name, orientation = 'horizontal', ref, showValue = false, thumbAriaLabel, touched, validate, validationDebounceTime, validationMode, value, ...sliderRootProps }) => {
15
- const isRange = isRangeSlider(value, defaultValue);
16
- const isVertical = orientation === 'vertical';
17
- const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(sliderRootProps);
18
- return (_jsxs(Field.Root, { ...intrinsicAttributes, className: "Slider", dirty: dirty, disabled: disabled, invalid: invalid, name: name, touched: touched, validate: validate, validationDebounceTime: validationDebounceTime, validationMode: validationMode, render: _jsx(Stack, { direction: "column", fillChildren: false, rowGap: "small" }), children: [_jsxs(PrimitiveSlider.Root, { ...componentProps, ref: ref, className: clsx('SliderRoot', className), defaultValue: defaultValue, disabled: disabled, name: name, orientation: orientation, value: value, render: _jsx(Stack, { direction: "column", fillChildren: false, rowGap: "small", columnGap: "x-small", vAlign: isVertical ? 'stretch' : 'center', hAlign: isVertical ? 'center' : 'initial' }), children: [(label || showValue) && (_jsxs(Stack, { className: "SliderHeader", direction: isVertical ? 'column' : 'row', fillChildren: false, columnGap: "small", vAlign: "end", hAlign: "space-between", children: [label && (_jsx(Text, { size: "small", weight: "semibold", className: "Label", render: _jsx(Field.Label, {}), children: label })), showValue && (_jsx(Text, { className: "Value", size: "small", tone: "muted", family: "mono", whiteSpace: "nowrap", align: isVertical ? 'center' : 'end', render: _jsx(PrimitiveSlider.Value, {}) }))] })), _jsx(SliderControl, { isRange: isRange, orientation: orientation, thumbAriaLabel: thumbAriaLabel })] }), _jsx(FieldHelperCopy, { description: description, error: error })] }));
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.js';
2
- export type { SpinnerProps } from './spinner.js';
1
+ export { Spinner } from './spinner';
2
+ export type { SpinnerProps } from './spinner';
@@ -1,45 +1 @@
1
- @scope (.Spinner) {
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 './spinner.css';
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
- export const Spinner = ({ className, color, size = 'big', ref, style, ...otherProps }) => {
6
- const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
7
- return (_jsx("svg", { ...componentProps, ...intrinsicAttributes, ref: ref, className: clsx('Spinner', className), "data-dimension": size, viewBox: "0 0 16 16", xmlns: "http://www.w3.org/2000/svg", ...(color ? { color } : {}), ...(style ? { style } : {}), children: _jsxs("g", { className: "Glyph", fill: "currentColor", children: [_jsx("path", { d: "M0 2h2v12H0z" }), _jsx("path", { d: "M7 2h2v12H7z" }), _jsx("path", { d: "M14 2h2v12h-2z" })] }) }));
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 };
@@ -0,0 +1,7 @@
1
+ var spinner_module_default = {
2
+ Spinner: "spinner-module_Spinner_qCQzj",
3
+ Glyph: "spinner-module_Glyph_OV-cy",
4
+ "spinner-bars": "spinner-module_spinner-bars_jDmaB"
5
+ };
6
+ //#endregion
7
+ export { spinner_module_default as default };
@@ -1,2 +1,2 @@
1
- export { Stack } from './stack.js';
2
- export type { StackProps } from './stack.js';
1
+ export { Stack } from './stack';
2
+ export type { StackProps } from './stack';
@@ -1,57 +1 @@
1
- @scope (.Stack) {
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 type { ThemeTypes } from '@viraui/foundation/vira/types';
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];