@viraui/react 0.0.24 → 0.0.26

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 (138) hide show
  1. package/dist/catalog.json +44 -2
  2. package/dist/components/accordion/accordion-item.d.ts +58 -0
  3. package/dist/components/accordion/accordion-item.js +65 -0
  4. package/dist/components/accordion/accordion.css +1 -0
  5. package/dist/components/accordion/accordion.d.ts +26 -0
  6. package/dist/components/accordion/accordion.guide.json +30 -0
  7. package/dist/components/accordion/accordion.js +22 -0
  8. package/dist/components/accordion/accordion.module.js +10 -0
  9. package/dist/components/accordion/index.d.ts +3 -0
  10. package/dist/components/avatar/avatar.css +1 -1
  11. package/dist/components/avatar/avatar.guide.json +25 -1
  12. package/dist/components/avatar/avatar.js +1 -1
  13. package/dist/components/avatar-group/avatar-group.css +7 -1
  14. package/dist/components/avatar-group/avatar-group.d.ts +0 -7
  15. package/dist/components/avatar-group/avatar-group.guide.json +27 -1
  16. package/dist/components/avatar-group/avatar-group.js +3 -10
  17. package/dist/components/basic-input/basic-input.css +1 -1
  18. package/dist/components/basic-input/basic-input.js +3 -3
  19. package/dist/components/basic-input/field-label.css +1 -1
  20. package/dist/components/bleed/bleed.css +1 -0
  21. package/dist/components/bleed/bleed.d.ts +26 -0
  22. package/dist/components/bleed/bleed.guide.json +39 -0
  23. package/dist/components/bleed/bleed.js +24 -0
  24. package/dist/components/bleed/bleed.module.js +3 -0
  25. package/dist/components/bleed/index.d.ts +2 -0
  26. package/dist/components/button/button.css +1 -1
  27. package/dist/components/button/button.guide.json +33 -3
  28. package/dist/components/button/button.js +1 -1
  29. package/dist/components/checkbox/checkbox-group.js +2 -2
  30. package/dist/components/checkbox/checkbox.css +1 -1
  31. package/dist/components/chip/chip.css +1 -1
  32. package/dist/components/chip/chip.guide.json +26 -1
  33. package/dist/components/clamp-text/clamp-text.css +1 -1
  34. package/dist/components/clamp-text/clamp-text.guide.json +15 -1
  35. package/dist/components/clamp-text/clamp-text.js +1 -1
  36. package/dist/components/dialog/dialog-close.js +2 -2
  37. package/dist/components/dialog/dialog-indent-background.js +2 -2
  38. package/dist/components/dialog/dialog-indent.js +2 -2
  39. package/dist/components/dialog/dialog-sheet.js +1 -1
  40. package/dist/components/dialog/dialog-trigger.js +2 -2
  41. package/dist/components/dialog/dialog.css +1 -1
  42. package/dist/components/dialog/dialog.d.ts +5 -4
  43. package/dist/components/dialog/dialog.guide.json +15 -1
  44. package/dist/components/dialog/dialog.js +4 -3
  45. package/dist/components/fieldset/fieldset.js +1 -2
  46. package/dist/components/icon-button/icon-button.js +2 -2
  47. package/dist/components/index.d.ts +7 -0
  48. package/dist/components/linear-progress/linear-progress.css +1 -1
  49. package/dist/components/linear-progress/linear-progress.guide.json +14 -1
  50. package/dist/components/masonry/masonry.css +1 -1
  51. package/dist/components/masonry/masonry.guide.json +42 -1
  52. package/dist/components/masonry/masonry.js +3 -3
  53. package/dist/components/meter/index.d.ts +2 -0
  54. package/dist/components/meter/meter.css +1 -0
  55. package/dist/components/meter/meter.d.ts +44 -0
  56. package/dist/components/meter/meter.guide.json +39 -0
  57. package/dist/components/meter/meter.js +59 -0
  58. package/dist/components/meter/meter.module.js +7 -0
  59. package/dist/components/popover/index.d.ts +4 -0
  60. package/dist/components/popover/popover-sheet.d.ts +65 -0
  61. package/dist/components/popover/popover-sheet.js +79 -0
  62. package/dist/components/popover/popover.css +1 -0
  63. package/dist/components/popover/popover.d.ts +74 -0
  64. package/dist/components/popover/popover.guide.json +28 -0
  65. package/dist/components/popover/popover.js +23 -0
  66. package/dist/components/popover/popover.module.js +8 -0
  67. package/dist/components/progressive-blur/progressive-blur.css +1 -1
  68. package/dist/components/progressive-blur/progressive-blur.guide.json +15 -1
  69. package/dist/components/progressive-blur/progressive-blur.js +1 -1
  70. package/dist/components/radio/radio-group.d.ts +1 -1
  71. package/dist/components/radio/radio-group.js +2 -2
  72. package/dist/components/radio/radio.css +1 -1
  73. package/dist/components/select/select-option.js +1 -1
  74. package/dist/components/select/select.css +1 -1
  75. package/dist/components/select/select.guide.json +26 -1
  76. package/dist/components/select/select.js +1 -0
  77. package/dist/components/separator/separator.css +1 -1
  78. package/dist/components/separator/separator.js +1 -1
  79. package/dist/components/shimmer/index.d.ts +2 -0
  80. package/dist/components/shimmer/shimmer.css +1 -0
  81. package/dist/components/shimmer/shimmer.d.ts +43 -0
  82. package/dist/components/shimmer/shimmer.guide.json +63 -0
  83. package/dist/components/shimmer/shimmer.js +25 -0
  84. package/dist/components/shimmer/shimmer.module.js +6 -0
  85. package/dist/components/skeleton/skeleton.css +1 -1
  86. package/dist/components/skeleton/skeleton.guide.json +50 -1
  87. package/dist/components/skeleton/skeleton.js +5 -5
  88. package/dist/components/slider/slider.css +1 -1
  89. package/dist/components/slider/slider.guide.json +20 -1
  90. package/dist/components/slider/slider.js +1 -1
  91. package/dist/components/spinner/spinner.css +1 -1
  92. package/dist/components/spinner/spinner.guide.json +15 -1
  93. package/dist/components/stack/stack.css +1 -1
  94. package/dist/components/stack/stack.d.ts +1 -1
  95. package/dist/components/stack/stack.guide.json +84 -4
  96. package/dist/components/stack/stack.js +8 -8
  97. package/dist/components/surface/surface-radius-context.js +6 -6
  98. package/dist/components/surface/surface.css +1 -1
  99. package/dist/components/surface/surface.d.ts +1 -1
  100. package/dist/components/surface/surface.guide.json +90 -4
  101. package/dist/components/surface/surface.js +8 -8
  102. package/dist/components/switch/switch.css +1 -1
  103. package/dist/components/switch/switch.guide.json +32 -1
  104. package/dist/components/tabs/tabs-indicator.js +2 -2
  105. package/dist/components/tabs/tabs-list.js +2 -2
  106. package/dist/components/tabs/tabs-panel.js +2 -2
  107. package/dist/components/tabs/tabs-tab.js +2 -2
  108. package/dist/components/tabs/tabs-viewport.js +2 -2
  109. package/dist/components/tabs/tabs.css +1 -1
  110. package/dist/components/tabs/tabs.guide.json +8 -1
  111. package/dist/components/tabs/tabs.js +2 -2
  112. package/dist/components/text/text.css +1 -1
  113. package/dist/components/text/text.guide.json +125 -1
  114. package/dist/components/text/text.js +11 -11
  115. package/dist/components/textarea/textarea.css +1 -1
  116. package/dist/components/textarea/textarea.guide.json +14 -1
  117. package/dist/components/textfield/textfield.css +1 -1
  118. package/dist/components/textfield/textfield.guide.json +20 -1
  119. package/dist/components/title/title.css +1 -1
  120. package/dist/components/title/title.guide.json +123 -1
  121. package/dist/components/title/title.js +11 -11
  122. package/dist/components/toast/index.d.ts +2 -0
  123. package/dist/components/toast/toast-action.d.ts +9 -0
  124. package/dist/components/toast/toast-action.js +10 -0
  125. package/dist/components/toast/toast-banner.d.ts +59 -0
  126. package/dist/components/toast/toast-banner.js +66 -0
  127. package/dist/components/toast/toast-viewport.d.ts +17 -0
  128. package/dist/components/toast/toast-viewport.js +12 -0
  129. package/dist/components/toast/toast.css +1 -0
  130. package/dist/components/toast/toast.d.ts +18 -0
  131. package/dist/components/toast/toast.guide.json +26 -0
  132. package/dist/components/toast/toast.js +22 -0
  133. package/dist/components/toast/toast.module.js +7 -0
  134. package/dist/core/props/intrinsic-vira-props.js +3 -3
  135. package/dist/index.js +8 -1
  136. package/dist/preflight-surface.json +17 -4
  137. package/dist/preflight.css +1 -1
  138. package/package.json +13 -5
@@ -0,0 +1,3 @@
1
+ var bleed_module_default = { Bleed: "viraui__bleed-module__Bleed_7rnR6" };
2
+ //#endregion
3
+ export { bleed_module_default as default };
@@ -0,0 +1,2 @@
1
+ export { Bleed } from './bleed';
2
+ export type { BleedProps } from './bleed';
@@ -1 +1 @@
1
- .viraui__button-module__Button_oPhrP{--button-background:var(--global-primary);--button-color:var(--base-1);--button-height:var(--space-x-large);--button-padding-inline:var(--space-small);--button-padding-block:var(--space-small);--button-spinner-color:currentColor;--button-icon-size:1.125em;--button-radius:var(--radius-medium);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;margin:0;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;min-inline-size:fit-content;max-block-size:var(--button-height);block-size:var(--button-height);justify-content:center;text-decoration:none;white-space:nowrap;appearance:button;overflow:hidden;position:relative;padding:var(--button-padding-block) var(--button-padding-inline);font-weight:400;font-variation-settings:"wght" 400;gap:var(--space-small);border:1px solid transparent;background:var(--button-background);color:var(--button-color);font-size:var(--font-scale-body-medium);border-radius:var(--button-radius);transition:translate var(--easing-elastic) var(--duration-instant);will-change:translate;&:not(:disabled){background-clip:padding-box}&:not(:disabled):active{translate:0 1px}&[data-pill=true]{border-radius:var(--radius-infinite);&[data-addon-position=end]{padding-inline-end:calc(var(--button-padding-inline) / 2)}&[data-addon-position=start]{padding-inline-start:calc(var(--button-padding-inline) / 2)}}&[data-size=big]{--button-height:var(--space-2x-large);--button-padding-inline:var(--space-medium);--button-padding-block:var(--space-small);--button-icon-size:1.125em;--button-radius:var(--radius-medium)}&[data-size=small]{--button-height:var(--space-large);--button-padding-inline:var(--space-small);--button-padding-block:var(--space-x-small);--button-icon-size:1em;--button-radius:var(--radius-small);gap:var(--space-x-small);font-size:var(--font-scale-body-small)}&[data-variant=primary]{--button-background:var(--global-primary);--button-color:contrast-color(var(--global-primary));&:hover{--button-background:oklab(from var(--global-primary) calc(l + 0.05) a b)}}&[data-variant=secondary]{--button-background:var(--global-contrast);--button-color:var(--base-6);background-clip:unset;&:hover{--button-background:oklab(from var(--global-contrast) l a b/calc(alpha + 0.03))}}&[data-variant=flat]{--button-background:transparent;--button-color:var(--base-5);&:hover{--button-background:var(--global-contrast);--button-color:var(--base-7)}}&[data-variant=destructive]{--button-background:oklab(from var(--highlight-red) l a b/12%);--button-color:var(--highlight-red);&:hover{--button-background:oklab(from var(--highlight-red) l a b/30%)}}&[data-addon-position=start]{flex-direction:row;padding-inline-end:calc(var(--button-padding-inline) * 1.2)}&[data-addon-position=end]{flex-direction:row-reverse;padding-inline-start:calc(var(--button-padding-inline) * 1.2)}&[data-icon-only=true]{gap:0;padding-block:var(--button-padding-block);padding-inline:var(--button-padding-block);inline-size:var(--button-height);min-inline-size:var(--button-height);max-inline-size:var(--button-height);aspect-ratio:1/1}&:disabled,&:disabled:hover,&[aria-disabled=true]{--button-background:var(--global-disabled-background);--button-color:var(--global-disabled-foreground);cursor:not-allowed;box-shadow:none}&[data-loading=true][data-disabled]{pointer-events:none;border:0;box-shadow:none;--button-color:var(--base-7)}}.viraui__button-module__Content_w-pX-{display:inline-grid;place-items:center;&[data-loading=true]{opacity:0}&:first-child>svg{block-size:var(--button-icon-size);inline-size:var(--button-icon-size);flex-shrink:0}}.viraui__button-module__SpinnerOverlay_vKqw1{position:absolute;inset:0;display:grid;place-content:center;pointer-events:none}
1
+ .viraui__button-module__Button_oPhrP{--vui-button-background:var(--global-primary);--vui-button-color:var(--base-1);--vui-button-height:var(--space-x-large);--vui-button-padding-inline:var(--space-small);--vui-button-padding-block:var(--space-small);--vui-button-spinner-color:currentColor;--vui-button-icon-size:1.125em;--vui-button-radius:var(--radius-medium);-webkit-user-select:none;user-select:none;margin:0;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;min-inline-size:fit-content;max-block-size:var(--vui-button-height);block-size:var(--vui-button-height);justify-content:center;text-decoration:none;white-space:nowrap;appearance:button;overflow:hidden;position:relative;padding:var(--vui-button-padding-block) var(--vui-button-padding-inline);font-weight:400;font-variation-settings:"wght" 400;gap:var(--space-small);border:1px solid #0000;background:var(--vui-button-background);color:var(--vui-button-color);font-size:var(--font-scale-body-medium);border-radius:var(--vui-button-radius);transition:translate var(--easing-elastic) var(--duration-instant);will-change:translate;&:not(:disabled){background-clip:padding-box}&:not(:disabled):active{translate:0 1px}&[data-pill=true]{border-radius:var(--radius-infinite);&[data-addon-position=end]{padding-inline-end:calc(var(--vui-button-padding-inline) / 2)}&[data-addon-position=start]{padding-inline-start:calc(var(--vui-button-padding-inline) / 2)}}&[data-size=big]{--vui-button-height:var(--space-2x-large);--vui-button-padding-inline:var(--space-medium);--vui-button-padding-block:var(--space-small);--vui-button-icon-size:1.125em;--vui-button-radius:var(--radius-medium)}&[data-size=small]{--vui-button-height:var(--space-large);--vui-button-padding-inline:var(--space-small);--vui-button-padding-block:var(--space-x-small);--vui-button-icon-size:1em;--vui-button-radius:var(--radius-small);gap:var(--space-x-small);font-size:var(--font-scale-body-small)}&[data-variant=primary]{--vui-button-background:var(--global-primary);--vui-button-color:contrast-color(var(--global-primary));&:hover{--vui-button-background:oklab(from var(--global-primary) calc(l + 0.05) a b)}}&[data-variant=secondary]{--vui-button-background:var(--global-contrast);--vui-button-color:var(--base-6);background-clip:unset;&:hover{--vui-button-background:oklab(from var(--global-contrast) l a b/calc(alpha + 0.03))}@container root style(--is-light-theme: black){--vui-button-background:oklab(from var(--global-contrast) l a b/0.1)}}&[data-variant=flat]{--vui-button-background:#0000;--vui-button-color:var(--base-5);&:hover{--vui-button-background:var(--global-contrast);--vui-button-color:var(--base-7)}}&[data-variant=destructive]{--vui-button-background:oklab(from var(--highlight-red) l a b/12%);--vui-button-color:var(--highlight-red);&:hover{--vui-button-background:oklab(from var(--highlight-red) l a b/30%)}}&[data-addon-position=start]{flex-direction:row;padding-inline-end:calc(var(--vui-button-padding-inline) * 1.2)}&[data-addon-position=end]{flex-direction:row-reverse;padding-inline-start:calc(var(--vui-button-padding-inline) * 1.2)}&[data-icon-only=true]{gap:0;padding-block:var(--vui-button-padding-block);padding-inline:var(--vui-button-padding-block);inline-size:var(--vui-button-height);min-inline-size:var(--vui-button-height);max-inline-size:var(--vui-button-height);aspect-ratio:1/1}&:disabled,&:disabled:hover,&[aria-disabled=true]{--vui-button-background:var(--global-disabled-background);--vui-button-color:var(--global-disabled-foreground);cursor:not-allowed;box-shadow:none}&[data-loading=true][data-disabled]{pointer-events:none;border:0;box-shadow:none;--vui-button-color:var(--base-7)}}.viraui__button-module__Content_w-pX-{display:inline-grid;place-items:center;&[data-loading=true]{opacity:0}&:first-child>svg{block-size:var(--vui-button-icon-size);inline-size:var(--vui-button-icon-size);flex-shrink:0}}.viraui__button-module__SpinnerOverlay_vKqw1{position:absolute;inset:0;display:grid;place-content:center;pointer-events:none}
@@ -5,7 +5,8 @@
5
5
  "Labeled actions with text and optional leading or trailing addon",
6
6
  "Primary, secondary, flat, or destructive visual treatments",
7
7
  "Capsule-shaped actions via pill when a fully rounded button fits the layout",
8
- "Async actions that need a stable width while loading"
8
+ "Async actions that need a stable width while loading",
9
+ "Primary Chip addons inside a primary Button — set data-theme=\"inverted\" on the Chip so its background contrasts the button fill"
9
10
  ],
10
11
  "whenNotToUse": ["Icon-only actions without a visible label — use IconButton", "Navigation or non-button semantics"],
11
12
  "accessibility": [
@@ -16,7 +17,36 @@
16
17
  "antiPatterns": [
17
18
  "Using Button without children as icon-only — prefer IconButton",
18
19
  "Duplicating icon size on every addon slot — Button CSS sizes SVG descendants",
19
- "Mixing pill with custom border-radius overrides that fight data-pill styling"
20
+ "Mixing pill with custom border-radius overrides that fight data-pill styling",
21
+ "Primary Chip addon inside a primary Button without data-theme=\"inverted\" — chip background matches the button fill and disappears"
20
22
  ],
21
- "related": ["IconButton", "Icon", "Spinner", "Chip"]
23
+ "related": ["IconButton", "Icon", "Spinner", "Chip"],
24
+ "properties": {
25
+ "css": {
26
+ "background": {
27
+ "description": "Button fill; variant and state selectors preset this."
28
+ },
29
+ "color": {
30
+ "description": "Button label and icon color."
31
+ },
32
+ "height": {
33
+ "description": "Button block size; size prop presets via data attributes."
34
+ },
35
+ "padding-inline": {
36
+ "description": "Horizontal padding inside the button."
37
+ },
38
+ "padding-block": {
39
+ "description": "Vertical padding inside the button."
40
+ },
41
+ "spinner-color": {
42
+ "description": "Loading spinner color on the root."
43
+ },
44
+ "icon-size": {
45
+ "description": "Addon icon size inside the button."
46
+ },
47
+ "radius": {
48
+ "description": "Corner radius; pill sets infinite radius via data-pill."
49
+ }
50
+ }
51
+ }
22
52
  }
@@ -32,7 +32,7 @@ var ButtonRenderRoot = ({ isDisabled, ref, render, rootProps }) => {
32
32
  }
33
33
  onClick?.(event);
34
34
  },
35
- ...isDisabled ? { "aria-disabled": true } : {}
35
+ ...isDisabled && { "aria-disabled": true }
36
36
  }
37
37
  });
38
38
  };
@@ -2,8 +2,8 @@ import { Stack } from "../stack/stack.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { CheckboxGroup } from "@base-ui/react";
4
4
  //#region src/components/checkbox/checkbox-group.tsx
5
- var CheckboxGroup$1 = ({ children, className, ...props }) => /* @__PURE__ */ jsx(CheckboxGroup, {
6
- ...props,
5
+ var CheckboxGroup$1 = ({ children, className, ...otherProps }) => /* @__PURE__ */ jsx(CheckboxGroup, {
6
+ ...otherProps,
7
7
  className,
8
8
  render: /* @__PURE__ */ jsx(Stack, {
9
9
  fillChildren: false,
@@ -1 +1 @@
1
- .viraui__checkbox-module__Checkbox_3oGip{&:has([required]) .viraui__checkbox-module__Label_n9HL7:after{content:" *";color:var(--highlight-red)}}.viraui__checkbox-module__CheckboxRoot_PeyF5{--checkbox-size:var(--space-medium);--checkbox-radius:var(--radius-x-small);--checkbox-background:var(--global-contrast);--checkbox-border-color:transparent;--checkbox-indicator-color:contrast-color(var(--global-primary));position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;appearance:none;border:0;box-shadow:inset 0 0 0 1px var(--checkbox-border-color);inline-size:var(--checkbox-size);block-size:var(--checkbox-size);background:var(--checkbox-background);border-radius:var(--checkbox-radius);&[data-size=regular]{--checkbox-size:var(--space-large);--checkbox-radius:var(--radius-small)}&[data-checked]:not([data-disabled]):not([data-invalid]),&[data-indeterminate]:not([data-disabled]):not([data-invalid]){--checkbox-background:var(--global-primary);--checkbox-border-color:var(--global-primary);box-shadow:none}&[data-invalid]:not([data-disabled]),[data-invalid] &:not([data-disabled]){--checkbox-border-color:var(--highlight-red);--checkbox-indicator-color:var(--global-primary);box-shadow:inset 0 0 0 1px var(--highlight-red);outline-color:oklab(from var(--highlight-red) l a b/.5)}&[data-disabled],[data-disabled] &{--checkbox-background:var(--global-disabled-background);--checkbox-border-color:transparent;--checkbox-indicator-color:var(--global-disabled-foreground);box-shadow:none;cursor:not-allowed}}.viraui__checkbox-module__Indicator_C-k-l{display:inline-flex;align-items:center;justify-content:center;color:var(--checkbox-indicator-color)}.viraui__checkbox-module__Icon_926Sa{stroke:currentColor}.viraui__checkbox-module__CheckboxRoot_PeyF5:not([data-indeterminate]) .viraui__checkbox-module__MinusIcon_Q57pY,.viraui__checkbox-module__CheckboxRoot_PeyF5[data-indeterminate] .viraui__checkbox-module__CheckIcon_XqUcs{display:none}.viraui__checkbox-module__CheckboxRoot_PeyF5[data-indeterminate] .viraui__checkbox-module__MinusIcon_Q57pY{display:inline-flex}
1
+ .viraui__checkbox-module__Checkbox_3oGip{&:has([required]) .viraui__checkbox-module__Label_n9HL7:after{content:" *";color:var(--highlight-red)}}.viraui__checkbox-module__CheckboxRoot_PeyF5{--vui-checkbox-size:var(--space-medium);--vui-checkbox-radius:var(--radius-x-small);--vui-checkbox-background:var(--global-contrast);--vui-checkbox-border-color:#0000;--vui-checkbox-indicator-color:contrast-color(var(--global-primary));position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;appearance:none;border:0;box-shadow:inset 0 0 0 1px var(--vui-checkbox-border-color);inline-size:var(--vui-checkbox-size);block-size:var(--vui-checkbox-size);background:var(--vui-checkbox-background);border-radius:var(--vui-checkbox-radius);&[data-size=regular]{--vui-checkbox-size:var(--space-large);--vui-checkbox-radius:var(--radius-small)}&[data-checked]:not([data-disabled]):not([data-invalid]),&[data-indeterminate]:not([data-disabled]):not([data-invalid]){--vui-checkbox-background:var(--global-primary);--vui-checkbox-border-color:var(--global-primary);box-shadow:none}&[data-invalid]:not([data-disabled]),[data-invalid] &:not([data-disabled]){--vui-checkbox-border-color:var(--highlight-red);--vui-checkbox-indicator-color:var(--global-primary);box-shadow:inset 0 0 0 1px var(--highlight-red);outline-color:oklab(from var(--highlight-red) l a b/.5)}&[data-disabled],[data-disabled] &{--vui-checkbox-background:var(--global-disabled-background);--vui-checkbox-border-color:#0000;--vui-checkbox-indicator-color:var(--global-disabled-foreground);box-shadow:none;cursor:not-allowed}}.viraui__checkbox-module__Indicator_C-k-l{display:inline-flex;align-items:center;justify-content:center;color:var(--vui-checkbox-indicator-color)}.viraui__checkbox-module__Icon_926Sa{stroke:currentColor}.viraui__checkbox-module__CheckboxRoot_PeyF5:not([data-indeterminate]) .viraui__checkbox-module__MinusIcon_Q57pY,.viraui__checkbox-module__CheckboxRoot_PeyF5[data-indeterminate] .viraui__checkbox-module__CheckIcon_XqUcs{display:none}.viraui__checkbox-module__CheckboxRoot_PeyF5[data-indeterminate] .viraui__checkbox-module__MinusIcon_Q57pY{display:inline-flex}
@@ -1 +1 @@
1
- .viraui__chip-module__Chip_2D18T{--chip-background:var(--global-primary);--chip-border-color:transparent;--chip-color:contrast-color(var(--global-primary));--chip-height:var(--space-large);--chip-icon-size:0.9em;--chip-color-bg-opacity:13%;--chip-color-border-opacity:0%;min-block-size:var(--chip-height);block-size:var(--chip-height);border:1px solid var(--chip-border-color);border-radius:var(--radius-infinite);background:var(--chip-background);color:var(--chip-color);font-size:var(--font-scale-body-small);font-variation-settings:"wght" 400;text-decoration:none;white-space:nowrap;overflow:hidden;&[data-variant=primary]{--chip-background:var(--global-primary);--chip-color:contrast-color(var(--global-primary))}&[data-variant=secondary]{--chip-background:var(--global-contrast);--chip-color:var(--base-6)}&[data-variant=outline]{--chip-background:transparent;--chip-border-color:oklab(from var(--global-contrast) l a b/0.2);--chip-color:var(--base-6)}&[data-variant=gray]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-gray)}&[data-variant=slate]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-slate)}&[data-variant=yellow]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-yellow)}&[data-variant=green]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-green)}&[data-variant=blue]{--chip-color:var(--highlight-blue)}&[data-variant=blue],&[data-variant=red]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity))}&[data-variant=red]{--chip-color:var(--highlight-red)}&[data-variant=cyan]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-cyan)}&[data-variant=purple]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-purple)}&[data-variant=indigo]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-indigo)}&[data-variant=acid]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-acid)}&[data-variant=salmon]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-salmon)}&[data-variant=magenta]{--chip-background:oklab(from currentColor l a b/var(--chip-color-bg-opacity));--chip-border-color:oklab(from currentColor l a b/var(--chip-color-border-opacity));--chip-color:var(--highlight-magenta)}}.viraui__chip-module__Content_7mLuL{min-inline-size:0;min-block-size:100%}.viraui__chip-module__IconSlot_9N5vD{display:inline-grid;place-items:center;flex-shrink:0;>svg{inline-size:var(--chip-icon-size);block-size:var(--chip-icon-size)}}.viraui__chip-module__Label_Hdx7l{display:inline-block;min-inline-size:0;overflow:hidden;text-overflow:ellipsis}
1
+ .viraui__chip-module__Chip_2D18T{--vui-chip-background:var(--global-primary);--vui-chip-border-color:#0000;--vui-chip-color:contrast-color(var(--global-primary));--vui-chip-height:var(--space-large);--vui-chip-icon-size:0.9em;--vui-chip-color-bg-opacity:13%;--vui-chip-color-border-opacity:0%;min-block-size:var(--vui-chip-height);block-size:var(--vui-chip-height);border:1px solid var(--vui-chip-border-color);border-radius:var(--radius-infinite);background:var(--vui-chip-background);color:var(--vui-chip-color);font-size:var(--font-scale-body-small);font-variation-settings:"wght" 400;text-decoration:none;white-space:nowrap;overflow:hidden;&[data-variant=primary]{--vui-chip-background:var(--global-primary);--vui-chip-color:contrast-color(var(--global-primary))}&[data-variant=secondary]{--vui-chip-background:var(--global-contrast);--vui-chip-color:var(--base-6)}&[data-variant=outline]{--vui-chip-background:#0000;--vui-chip-border-color:oklab(from var(--global-contrast) l a b/0.2);--vui-chip-color:var(--base-6)}&[data-variant=gray]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-gray)}&[data-variant=slate]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-slate)}&[data-variant=yellow]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-yellow)}&[data-variant=green]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-green)}&[data-variant=blue]{--vui-chip-color:var(--highlight-blue)}&[data-variant=blue],&[data-variant=red]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity))}&[data-variant=red]{--vui-chip-color:var(--highlight-red)}&[data-variant=cyan]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-cyan)}&[data-variant=purple]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-purple)}&[data-variant=indigo]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-indigo)}&[data-variant=acid]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-acid)}&[data-variant=salmon]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-salmon)}&[data-variant=magenta]{--vui-chip-background:oklab(from currentColor l a b/var(--vui-chip-color-bg-opacity));--vui-chip-border-color:oklab(from currentColor l a b/var(--vui-chip-color-border-opacity));--vui-chip-color:var(--highlight-magenta)}}.viraui__chip-module__Content_7mLuL{min-inline-size:0;min-block-size:100%}.viraui__chip-module__IconSlot_9N5vD{display:inline-grid;place-items:center;flex-shrink:0;>svg{inline-size:var(--vui-chip-icon-size);block-size:var(--vui-chip-icon-size)}}.viraui__chip-module__Label_Hdx7l{display:inline-block;min-inline-size:0;overflow:hidden;text-overflow:ellipsis}
@@ -22,5 +22,30 @@
22
22
  "Introducing custom size variants instead of the fixed compact height",
23
23
  "Re-adding a one-off destructive variant instead of using the red highlight color"
24
24
  ],
25
- "related": ["Button", "Icon", "IconButton", "Stack", "Text"]
25
+ "related": ["Button", "Icon", "IconButton", "Stack", "Text"],
26
+ "properties": {
27
+ "css": {
28
+ "background": {
29
+ "description": "Chip fill; variant presets via data attributes."
30
+ },
31
+ "border-color": {
32
+ "description": "Chip border color."
33
+ },
34
+ "color": {
35
+ "description": "Chip label and icon color."
36
+ },
37
+ "height": {
38
+ "description": "Fixed chip block size."
39
+ },
40
+ "icon-size": {
41
+ "description": "Decorative addon icon size."
42
+ },
43
+ "color-bg-opacity": {
44
+ "description": "Highlight variant background opacity mix."
45
+ },
46
+ "color-border-opacity": {
47
+ "description": "Highlight variant border opacity mix."
48
+ }
49
+ }
50
+ }
26
51
  }
@@ -1 +1 @@
1
- .viraui__clamp-text-module__ClampText_Whnkd{display:-webkit-box;-webkit-line-clamp:var(--clamp-text-rows,1);-webkit-box-orient:vertical;overflow:hidden;&[data-clamp-text-inline=true]{display:-webkit-inline-box}}
1
+ .viraui__clamp-text-module__ClampText_Whnkd{display:-webkit-box;-webkit-line-clamp:var(--vui-clamp-text-rows,1);-webkit-box-orient:vertical;overflow:hidden;&[data-clamp-text-inline=true]{display:-webkit-inline-box}}
@@ -19,5 +19,19 @@
19
19
  "Using ClampText as a heading primitive without Title render",
20
20
  "Expecting children-driven sizing instead of rows"
21
21
  ],
22
- "related": ["Text", "Title"]
22
+ "related": ["Text", "Title"],
23
+ "properties": {
24
+ "react": {
25
+ "rows": {
26
+ "description": "Sets how many lines of text remain visible before truncation.",
27
+ "refCss": "rows"
28
+ }
29
+ },
30
+ "css": {
31
+ "rows": {
32
+ "description": "WebKit line-clamp row count on the root.",
33
+ "refReact": "rows"
34
+ }
35
+ }
36
+ }
23
37
  }
@@ -8,7 +8,7 @@ import { useMemo } from "react";
8
8
  //#region src/components/clamp-text/clamp-text.tsx
9
9
  var ClampText = ({ className, inline = false, ref, render, rows = 1, style, ...otherProps }) => {
10
10
  const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
11
- const dynamicStyle = useMemo(() => ({ "--clamp-text-rows": rows }), [rows]);
11
+ const dynamicStyle = useMemo(() => ({ "--vui-clamp-text-rows": rows }), [rows]);
12
12
  return useRender({
13
13
  defaultTagName: "span",
14
14
  render,
@@ -1,9 +1,9 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { Drawer } from "@base-ui/react";
3
3
  //#region src/components/dialog/dialog-close.tsx
4
- var DialogClose = ({ ref, ...props }) => /* @__PURE__ */ jsx(Drawer.Close, {
4
+ var DialogClose = ({ ref, ...otherProps }) => /* @__PURE__ */ jsx(Drawer.Close, {
5
5
  ref,
6
- ...props
6
+ ...otherProps
7
7
  });
8
8
  //#endregion
9
9
  export { DialogClose };
@@ -3,8 +3,8 @@ import dialog_module_default from "./dialog.module.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Drawer } from "@base-ui/react";
5
5
  //#region src/components/dialog/dialog-indent-background.tsx
6
- var DialogIndentBackground = ({ className, ...props }) => /* @__PURE__ */ jsx(Drawer.IndentBackground, {
7
- ...props,
6
+ var DialogIndentBackground = ({ className, ...otherProps }) => /* @__PURE__ */ jsx(Drawer.IndentBackground, {
7
+ ...otherProps,
8
8
  className: clsx(dialog_module_default.IndentBackground, className)
9
9
  });
10
10
  //#endregion
@@ -3,8 +3,8 @@ import dialog_module_default from "./dialog.module.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Drawer } from "@base-ui/react";
5
5
  //#region src/components/dialog/dialog-indent.tsx
6
- var DialogIndent = ({ className, ...props }) => /* @__PURE__ */ jsx(Drawer.Indent, {
7
- ...props,
6
+ var DialogIndent = ({ className, ...otherProps }) => /* @__PURE__ */ jsx(Drawer.Indent, {
7
+ ...otherProps,
8
8
  className: clsx(dialog_module_default.Indent, className)
9
9
  });
10
10
  //#endregion
@@ -19,7 +19,7 @@ var DialogSheet = ({ children, description, title, showCloseButton = false, fitC
19
19
  className: dialog_module_default.Viewport,
20
20
  children: /* @__PURE__ */ jsxs(Drawer.Popup, {
21
21
  className: dialog_module_default.Popup,
22
- style: { "--dialog-max-block-size": maxHeight },
22
+ style: { "--vui-dialog-max-block-size": maxHeight },
23
23
  render: /* @__PURE__ */ jsx(Surface, {
24
24
  border: "top",
25
25
  render: /* @__PURE__ */ jsx(Stack, { hAlign: "center" }),
@@ -1,9 +1,9 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { Drawer } from "@base-ui/react";
3
3
  //#region src/components/dialog/dialog-trigger.tsx
4
- var DialogTrigger = ({ ref, ...props }) => /* @__PURE__ */ jsx(Drawer.Trigger, {
4
+ var DialogTrigger = ({ ref, ...otherProps }) => /* @__PURE__ */ jsx(Drawer.Trigger, {
5
5
  ref,
6
- ...props
6
+ ...otherProps
7
7
  });
8
8
  //#endregion
9
9
  export { DialogTrigger };
@@ -1 +1 @@
1
- .viraui__dialog-module__Backdrop_xgFhs{position:fixed;inset:0;z-index:0;transition:opacity var(--duration-fast) var(--easing-standard);backdrop-filter:brightness(90%) blur(5px);opacity:1;&[data-ending-style],&[data-starting-style]{opacity:0}&[data-swiping]{opacity:calc(1 - var(--drawer-swipe-progress, 0));transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__dialog-module__Viewport_kmZN1{position:fixed;inset:0;z-index:4;pointer-events:none;touch-action:none}.viraui__dialog-module__Popup_5qIyj{--bleed:var(--space-wide);--peek:var(--space-medium);--stack-step:0.05;--stack-progress:clamp(0,var(--drawer-swipe-progress,0),1);--stack-peek-offset:max(0px,calc((var(--nested-drawers, 0) - var(--stack-progress)) * var(--peek)));--stack-scale-base:max(0,calc(1 - var(--nested-drawers, 0) * var(--stack-step)));--stack-scale:clamp(0,calc(var(--stack-scale-base) + var(--stack-step) * var(--stack-progress)),1);--stack-shrink:calc(1 - var(--stack-scale));--stack-height:max(0px,calc(var(--drawer-frontmost-height, var(--drawer-height, 0px)) - var(--bleed)));--translate-y:calc(var(--drawer-snap-point-offset, 0px) + var(--drawer-swipe-movement-y, 0px) - var(--stack-peek-offset) - var(--stack-shrink) * var(--stack-height));max-block-size:var(--dialog-max-block-size,97dvh);outline:none;pointer-events:auto;touch-action:none;height:var(--drawer-height,auto);transform-origin:50% calc(100% - var(--bleed));transition:opacity var(--duration-fast) var(--easing-entrance),transform var(--duration-fast) var(--easing-entrance),height var(--duration-fast) var(--easing-entrance);transform:translateY(var(--translate-y)) scale(var(--stack-scale));&[data-nested-drawer-open]{height:calc(var(--stack-height) + var(--bleed));overflow:hidden}&[data-starting-style]{opacity:0}&[data-ending-style][data-swipe-direction=down],&[data-starting-style]{transform:translateY(100%)}&[data-nested-drawer-swiping],&[data-swiping]{transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style][data-swipe-direction=down],&[data-starting-style]{opacity:1;transform:translateY(0)}}}.viraui__dialog-module__Handle_nd9SN{margin:0 auto}.viraui__dialog-module__HandleShape_mEg8R{inline-size:var(--space-x-small);block-size:var(--space-x-small);background-color:oklab(from var(--global-contrast) l a b/.3);border-radius:var(--radius-infinite)}.viraui__dialog-module__Header_WnBly{flex-shrink:0;touch-action:none;-webkit-user-select:none;user-select:none}.viraui__dialog-module__Body_9-UgN{min-block-size:0}.viraui__dialog-module__Content_r8lJc{min-block-size:0;overflow:auto;overscroll-behavior:contain;touch-action:auto;padding-block-end:calc(env(safe-area-inset-bottom) + var(--space-medium));transition:opacity var(--duration-fast) var(--easing-standard);@media (prefers-reduced-motion:reduce){transition:none}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open] &{opacity:0}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open][data-nested-drawer-swiping] &{opacity:1}}.viraui__dialog-module__CloseButton_U-B1r.viraui__dialog-module__CloseButton_U-B1r{position:absolute;top:1rem;right:1rem}.viraui__dialog-module__IndentBackground_OEfbh{position:absolute;inset:0}.viraui__dialog-module__Indent_qfiNW{--indent-radius:calc(1rem * (1 - var(--drawer-swipe-progress)));--indent-transition:calc(1 - clamp(0, calc(var(--drawer-swipe-progress) * 100000), 1));transition:transform .4s cubic-bezier(.32,.72,0,1),border-radius .25s cubic-bezier(.32,.72,0,1);transition-duration:calc(.4s * var(--indent-transition)),calc(.25s * var(--indent-transition));transform-origin:center top;will-change:transform;&[data-active]{transform:scale(calc(.98 + (.02 * var(--drawer-swipe-progress)))) translateY(calc(.5rem * (1 - var(--drawer-swipe-progress))));border-top-left-radius:var(--indent-radius);border-top-right-radius:var(--indent-radius)}}
1
+ .viraui__dialog-module__Backdrop_xgFhs{position:fixed;inset:0;z-index:0;transition:opacity var(--duration-fast) var(--easing-standard);backdrop-filter:brightness(90%) blur(5px);opacity:1;&[data-ending-style],&[data-starting-style]{opacity:0}&[data-swiping]{opacity:calc(1 - var(--drawer-swipe-progress, 0));transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__dialog-module__Viewport_kmZN1{position:fixed;inset:0;z-index:4;pointer-events:none;touch-action:none}.viraui__dialog-module__Popup_5qIyj{--bleed:var(--space-wide);--peek:var(--space-medium);--stack-step:0.05;--stack-progress:clamp(0,var(--drawer-swipe-progress,0),1);--stack-peek-offset:max(0px,calc((var(--nested-drawers, 0) - var(--stack-progress)) * var(--peek)));--stack-scale-base:max(0,calc(1 - var(--nested-drawers, 0) * var(--stack-step)));--stack-scale:clamp(0,calc(var(--stack-scale-base) + var(--stack-step) * var(--stack-progress)),1);--stack-shrink:calc(1 - var(--stack-scale));--stack-height:max(0px,calc(var(--drawer-frontmost-height, var(--drawer-height, 0px)) - var(--bleed)));--translate-y:calc(var(--drawer-snap-point-offset, 0px) + var(--drawer-swipe-movement-y, 0px) - var(--stack-peek-offset) - var(--stack-shrink) * var(--stack-height));max-block-size:var(--vui-dialog-max-block-size,97dvh);outline:none;pointer-events:auto;touch-action:none;height:var(--drawer-height,auto);transform-origin:50% calc(100% - var(--bleed));transition:opacity var(--duration-fast) var(--easing-entrance),transform var(--duration-fast) var(--easing-entrance),height var(--duration-fast) var(--easing-entrance);transform:translateY(var(--translate-y)) scale(var(--stack-scale));&[data-nested-drawer-open]{height:calc(var(--stack-height) + var(--bleed));overflow:hidden}&[data-starting-style]{opacity:0}&[data-ending-style][data-swipe-direction=down],&[data-starting-style]{transform:translateY(100%)}&[data-nested-drawer-swiping],&[data-swiping]{transition-duration:0s}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style][data-swipe-direction=down],&[data-starting-style]{opacity:1;transform:translateY(0)}}}.viraui__dialog-module__Handle_nd9SN{margin:0 auto}.viraui__dialog-module__HandleShape_mEg8R{inline-size:var(--space-x-small);block-size:var(--space-x-small);background-color:oklab(from var(--global-contrast) l a b/.3);border-radius:var(--radius-infinite)}.viraui__dialog-module__Header_WnBly{flex-shrink:0;touch-action:none;-webkit-user-select:none;user-select:none}.viraui__dialog-module__Body_9-UgN{min-block-size:0}.viraui__dialog-module__Content_r8lJc{min-block-size:0;overflow:auto;overscroll-behavior:contain;touch-action:auto;padding-block-end:calc(env(safe-area-inset-bottom) + var(--space-medium));transition:opacity var(--duration-fast) var(--easing-standard);@media (prefers-reduced-motion:reduce){transition:none}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open] &{opacity:0}.viraui__dialog-module__Popup_5qIyj[data-nested-drawer-open][data-nested-drawer-swiping] &{opacity:1}}.viraui__dialog-module__CloseButton_U-B1r.viraui__dialog-module__CloseButton_U-B1r{position:absolute;top:1rem;right:1rem}.viraui__dialog-module__IndentBackground_OEfbh{position:absolute;inset:0}.viraui__dialog-module__Indent_qfiNW{--indent-radius:calc(1rem * (1 - var(--drawer-swipe-progress)));--indent-transition:calc(1 - clamp(0, calc(var(--drawer-swipe-progress) * 100000), 1));transition:transform .4s cubic-bezier(.32,.72,0,1),border-radius .25s cubic-bezier(.32,.72,0,1);transition-duration:calc(.4s * var(--indent-transition)),calc(.25s * var(--indent-transition));transform-origin:center top;will-change:transform;&[data-active]{transform:scale(calc(.98 + (.02 * var(--drawer-swipe-progress)))) translateY(calc(.5rem * (1 - var(--drawer-swipe-progress))));border-top-left-radius:var(--indent-radius);border-top-right-radius:var(--indent-radius)}}
@@ -10,19 +10,20 @@ import type * as React from 'react';
10
10
  *
11
11
  * Groups `Dialog.Trigger`, `Dialog.Sheet`, `Dialog.Close`, `Dialog.Provider`,
12
12
  * `Dialog.Indent`, and `Dialog.IndentBackground` under Base UI Drawer parts.
13
+ * Portal, backdrop, viewport, popup, title, description, and content parts are
14
+ * internal to `Dialog.Sheet` and are not exposed on `Dialog`.
13
15
  *
14
16
  * @default Base UI pass-through props keep upstream defaults.
15
17
  */
16
18
  export type DialogProps = DrawerRoot.Props;
17
19
  export type DialogSnapPoint = DrawerRoot.SnapPoint;
18
20
  export type DialogProviderProps = DrawerProvider.Props;
19
- type DialogComponent = React.FC<DialogProps> & {
20
- Trigger: React.FC<DialogTriggerProps>;
21
+ type DialogComponent = React.FC<DialogProps> & Omit<typeof PrimitiveDrawer, 'Portal' | 'Backdrop' | 'Viewport' | 'Popup' | 'Title' | 'Description' | 'Content' | 'SwipeArea' | 'VirtualKeyboardProvider' | 'createHandle' | 'Handle' | 'Root'> & {
21
22
  Sheet: React.FC<DialogSheetProps>;
22
- Close: React.FC<DialogCloseProps>;
23
- Provider: typeof PrimitiveDrawer.Provider;
24
23
  Indent: React.FC<DialogIndentProps>;
25
24
  IndentBackground: React.FC<DialogIndentBackgroundProps>;
25
+ Trigger: React.FC<DialogTriggerProps>;
26
+ Close: React.FC<DialogCloseProps>;
26
27
  };
27
28
  export declare const Dialog: DialogComponent;
28
29
  export {};
@@ -23,5 +23,19 @@
23
23
  "Relying only on backdrop press or swipe when a footer action is the primary close path",
24
24
  "Using Dialog when a centered non-gesture modal is enough and a future Dialog primitive is available"
25
25
  ],
26
- "related": ["Surface", "Button", "IconButton", "Stack", "Elevator"]
26
+ "related": ["Surface", "Button", "IconButton", "Stack", "Elevator"],
27
+ "properties": {
28
+ "react": {
29
+ "Sheet.maxHeight": {
30
+ "description": "Maximum block size of the sheet panel.",
31
+ "refCss": "max-block-size"
32
+ }
33
+ },
34
+ "css": {
35
+ "max-block-size": {
36
+ "description": "Max block size of Dialog.Sheet popup root.",
37
+ "refReact": "Sheet.maxHeight"
38
+ }
39
+ }
40
+ }
27
41
  }
@@ -7,15 +7,16 @@ import { DialogTrigger } from "./dialog-trigger.js";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  import { Drawer } from "@base-ui/react";
9
9
  //#region src/components/dialog/dialog.tsx
10
- var DialogRootComponent = ({ children, ...props }) => /* @__PURE__ */ jsx(Drawer.Root, {
11
- ...props,
10
+ var { Portal: _DialogPortal, Backdrop: _DialogBackdrop, Viewport: _DialogViewport, Popup: _DialogPopup, Title: _DialogTitle, Description: _DialogDescription, Content: _DialogContent, SwipeArea: _DialogSwipeArea, VirtualKeyboardProvider: _DialogVirtualKeyboardProvider, createHandle: _DialogCreateHandle, Handle: _DialogHandle, Root: _DialogRoot, ...primitiveDrawer } = Drawer;
11
+ var DialogRootComponent = ({ children, ...otherProps }) => /* @__PURE__ */ jsx(Drawer.Root, {
12
+ ...otherProps,
12
13
  children
13
14
  });
14
15
  var Dialog = Object.assign(DialogRootComponent, {
16
+ ...primitiveDrawer,
15
17
  Trigger: DialogTrigger,
16
18
  Sheet: DialogSheet,
17
19
  Close: DialogClose,
18
- Provider: Drawer.Provider,
19
20
  Indent: DialogIndent,
20
21
  IndentBackground: DialogIndentBackground
21
22
  });
@@ -5,14 +5,13 @@ import { FieldLabel } from "../basic-input/field-label.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { Fieldset } from "@base-ui/react";
7
7
  //#region src/components/fieldset/fieldset.tsx
8
- var Fieldset$1 = ({ children, className, description, disabled, error, label, render, ...fieldsetRootProps }) => {
8
+ var Fieldset$1 = ({ children, className, description, disabled, error, label, ...fieldsetRootProps }) => {
9
9
  const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(fieldsetRootProps);
10
10
  return /* @__PURE__ */ jsxs(Fieldset.Root, {
11
11
  ...intrinsicAttributes,
12
12
  ...componentProps,
13
13
  className,
14
14
  disabled,
15
- render,
16
15
  children: [/* @__PURE__ */ jsxs(Stack, {
17
16
  vPadding: [0, "small"],
18
17
  rowGap: "small",
@@ -1,10 +1,10 @@
1
1
  import { Button } from "../button/button.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  //#region src/components/icon-button/icon-button.tsx
4
- var IconButton = ({ icon, size = "medium", ...props }) => /* @__PURE__ */ jsx(Button, {
4
+ var IconButton = ({ icon, size = "medium", ...otherProps }) => /* @__PURE__ */ jsx(Button, {
5
5
  addon: icon,
6
6
  size,
7
- ...props
7
+ ...otherProps
8
8
  });
9
9
  //#endregion
10
10
  export { IconButton };
@@ -1,5 +1,8 @@
1
+ export * from './accordion';
1
2
  export * from './avatar';
2
3
  export * from './avatar-group';
4
+ export * from './accordion';
5
+ export * from './bleed';
3
6
  export * from './chip';
4
7
  export * from './dialog';
5
8
  export * from './clamp-text';
@@ -7,7 +10,9 @@ export * from './elevator';
7
10
  export * from './button';
8
11
  export * from './icon-button';
9
12
  export * from './linear-progress';
13
+ export * from './meter';
10
14
  export * from './masonry';
15
+ export * from './popover';
11
16
  export * from './textfield';
12
17
  export * from './textarea';
13
18
  export * from './slider';
@@ -17,11 +22,13 @@ export * from './fieldset';
17
22
  export * from './radio';
18
23
  export * from './select';
19
24
  export * from './separator';
25
+ export * from './shimmer';
20
26
  export * from './icon';
21
27
  export * from './skeleton';
22
28
  export * from './stack';
23
29
  export * from './surface';
24
30
  export * from './tabs';
31
+ export * from './toast';
25
32
  export * from './spinner';
26
33
  export * from './static-noise';
27
34
  export * from './progressive-blur';
@@ -1 +1 @@
1
- .viraui__linear-progress-module__LinearProgress_-KN0j{--linear-progress-track-size:var(--space-x-small);--linear-progress-track-background:var(--global-contrast);--linear-progress-indicator-color:var(--global-primary);& .viraui__linear-progress-module__Track_qUz8P{position:relative;overflow:hidden;block-size:var(--linear-progress-track-size);background:var(--linear-progress-track-background);border-radius:var(--radius-infinite)}& .viraui__linear-progress-module__Indicator_maaZF{block-size:100%;background:var(--linear-progress-indicator-color);border-radius:inherit;&[data-indeterminate]{position:absolute;inset:0;inline-size:100%;background:transparent;&:before{position:absolute;inset-block:0;inline-size:40%;background:var(--linear-progress-indicator-color);border-radius:inherit;animation:viraui__linear-progress-module__linear-progress-indeterminate_g0cSO 1.4s var(--easing-standard) infinite;content:""}}}}@keyframes viraui__linear-progress-module__linear-progress-indeterminate_g0cSO{0%{transform:translateX(-120%)}to{transform:translateX(260%)}}
1
+ .viraui__linear-progress-module__LinearProgress_-KN0j{--vui-linear-progress-track-size:var(--space-x-small);--vui-linear-progress-track-background:var(--global-contrast);--vui-linear-progress-indicator-color:var(--global-primary);& .viraui__linear-progress-module__Track_qUz8P{position:relative;overflow:hidden;block-size:var(--vui-linear-progress-track-size);background:var(--vui-linear-progress-track-background);border-radius:var(--radius-infinite)}& .viraui__linear-progress-module__Indicator_maaZF{block-size:100%;background:var(--vui-linear-progress-indicator-color);border-radius:inherit;&[data-indeterminate]{position:absolute;inset:0;inline-size:100%;background:#0000;&:before{position:absolute;inset-block:0;inline-size:40%;background:var(--vui-linear-progress-indicator-color);border-radius:inherit;animation:viraui__linear-progress-module__linear-progress-indeterminate_g0cSO 1.4s var(--easing-standard) infinite;content:""}}}}@keyframes viraui__linear-progress-module__linear-progress-indeterminate_g0cSO{0%{transform:translateX(-120%)}to{transform:translateX(260%)}}
@@ -23,5 +23,18 @@
23
23
  "Do not model disabled progress; Base UI Progress does not expose a disabled state.",
24
24
  "Do not hide the task label when multiple progress indicators are visible."
25
25
  ],
26
- "related": ["Slider", "Spinner", "Skeleton", "Text"]
26
+ "related": ["Slider", "Spinner", "Skeleton", "Text"],
27
+ "properties": {
28
+ "css": {
29
+ "track-size": {
30
+ "description": "Progress track thickness on the root."
31
+ },
32
+ "track-background": {
33
+ "description": "Progress track background color."
34
+ },
35
+ "indicator-color": {
36
+ "description": "Determinate progress indicator color."
37
+ }
38
+ }
39
+ }
27
40
  }
@@ -1 +1 @@
1
- .viraui__masonry-module__Masonry_l7c8U{--masonry-gap:var(--space-large);--masonry-column-fill:balance;--masonry-column-rule-color:var(--global-contrast);display:block;column-gap:var(--masonry-gap);column-fill:var(--masonry-column-fill);column-rule-color:var(--masonry-column-rule-color);columns:var(--masonry-column-width,auto) var(--masonry-column-count,auto)}.viraui__masonry-module__Item_ywXwo{display:block;break-inside:avoid;margin:0;padding-block-end:var(--masonry-gap);&[data-masonry-item-span-all=true]{column-span:all}}
1
+ .viraui__masonry-module__Masonry_l7c8U{--vui-masonry-gap:var(--space-large);--vui-masonry-column-fill:balance;--vui-masonry-column-rule-color:var(--global-contrast);display:block;column-gap:var(--vui-masonry-gap);column-fill:var(--vui-masonry-column-fill);column-rule-color:var(--vui-masonry-column-rule-color);columns:var(--vui-masonry-column-width,auto) var(--vui-masonry-column-count,auto)}.viraui__masonry-module__Item_ywXwo{display:block;break-inside:avoid;margin:0;padding-block-end:var(--vui-masonry-gap);&[data-masonry-item-span-all=true]{column-span:all}}
@@ -20,5 +20,46 @@
20
20
  "Treating CSS columns as a true interactive grid with predictable left-to-right keyboard traversal",
21
21
  "Using arbitrary child margins instead of the component gap contract for item spacing"
22
22
  ],
23
- "related": ["Stack", "Surface", "Text"]
23
+ "related": ["Stack", "Surface", "Text"],
24
+ "properties": {
25
+ "react": {
26
+ "gap": {
27
+ "description": "Gap between columns and block-end spacing on each item.",
28
+ "refCss": "gap"
29
+ },
30
+ "columnFill": {
31
+ "description": "How the browser balances content across columns.",
32
+ "refCss": "column-fill"
33
+ },
34
+ "columnWidth": {
35
+ "description": "CSS column-width override; takes precedence over columnCount.",
36
+ "refCss": "column-width"
37
+ },
38
+ "columnCount": {
39
+ "description": "CSS column-count when columnWidth is not set.",
40
+ "refCss": "column-count"
41
+ }
42
+ },
43
+ "css": {
44
+ "gap": {
45
+ "description": "Column gap and item block-end spacing.",
46
+ "refReact": "gap"
47
+ },
48
+ "column-fill": {
49
+ "description": "Column-fill algorithm on the root.",
50
+ "refReact": "columnFill"
51
+ },
52
+ "column-width": {
53
+ "description": "Width-based multi-column layout.",
54
+ "refReact": "columnWidth"
55
+ },
56
+ "column-count": {
57
+ "description": "Count-based multi-column layout.",
58
+ "refReact": "columnCount"
59
+ },
60
+ "column-rule-color": {
61
+ "description": "Color of the column rule between columns."
62
+ }
63
+ }
64
+ }
24
65
  }
@@ -10,9 +10,9 @@ var MasonryRoot = ({ children, className, columnCount = 4, columnFill = "balance
10
10
  const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
11
11
  const usesColumnWidth = columnWidth !== void 0;
12
12
  const dynamicStyle = {
13
- "--masonry-gap": resolveThemeValue(gap, "space", "var(--space-large)"),
14
- "--masonry-column-fill": columnFill,
15
- ...usesColumnWidth ? { "--masonry-column-width": columnWidth } : { "--masonry-column-count": `${columnCount}` },
13
+ "--vui-masonry-gap": resolveThemeValue(gap, "space", "var(--space-large)"),
14
+ "--vui-masonry-column-fill": columnFill,
15
+ ...usesColumnWidth ? { "--vui-masonry-column-width": columnWidth } : { "--vui-masonry-column-count": `${columnCount}` },
16
16
  columnRuleWidth,
17
17
  columnRuleStyle,
18
18
  ...style
@@ -0,0 +1,2 @@
1
+ export { Meter } from './meter';
2
+ export type { MeterProps } from './meter';
@@ -0,0 +1 @@
1
+ .viraui__meter-module__Meter_YRI7d{--vui-meter-track-size:var(--space-x-small);--vui-meter-track-background:var(--global-contrast);--vui-meter-indicator-color:var(--global-primary);& .viraui__meter-module__Track_uF9wy{position:relative;overflow:hidden;block-size:var(--vui-meter-track-size);background:var(--vui-meter-track-background);border-radius:var(--radius-infinite)}& .viraui__meter-module__Indicator_dNjqU{block-size:100%;background:var(--vui-meter-indicator-color);border-radius:inherit}}
@@ -0,0 +1,44 @@
1
+ import { MeterRoot } from '@base-ui/react';
2
+ import { IntrinsicViraProps } from '../../core/props/intrinsic-vira-props';
3
+ import type * as React from 'react';
4
+ /**
5
+ * Public Meter props.
6
+ *
7
+ * Includes Base UI meter root props such as `value`, `min`, `max`, `format`,
8
+ * and `getAriaValueText`, plus optional label, description, and value display.
9
+ *
10
+ * @default Base UI pass-through props keep upstream defaults.
11
+ */
12
+ export type MeterProps = MeterRoot.Props & {
13
+ /**
14
+ * Adds `data-grow="false"` to the meter root when false.
15
+ *
16
+ * @default The meter root does not render a grow attribute.
17
+ */
18
+ grow?: IntrinsicViraProps['grow'];
19
+ /**
20
+ * Adds `data-shrink="false"` to the meter root when false.
21
+ *
22
+ * @default The meter root does not render a shrink attribute.
23
+ */
24
+ shrink?: IntrinsicViraProps['shrink'];
25
+ /**
26
+ * Visible label rendered through `Meter.Label` with shared internal `FieldLabel`.
27
+ *
28
+ * @default No label is rendered.
29
+ */
30
+ label?: React.ReactNode;
31
+ /**
32
+ * Static helper copy rendered with `Text` below the meter track.
33
+ *
34
+ * @default No description is rendered.
35
+ */
36
+ description?: React.ReactNode;
37
+ /**
38
+ * Renders the formatted current value via `Meter.Value` and `Text`.
39
+ *
40
+ * @default false
41
+ */
42
+ showValue?: boolean;
43
+ };
44
+ export declare const Meter: React.FC<MeterProps>;
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "Meter",
3
+ "summary": "Shows a determinate metric in a compact horizontal track for static capacity, level, or score values.",
4
+ "whenToUse": [
5
+ "Use for storage usage, battery level, capacity, or score within a known range.",
6
+ "Use with a label when the metric needs a visible name.",
7
+ "Use with `showValue` when the formatted value should appear beside the label."
8
+ ],
9
+ "whenNotToUse": [
10
+ "Use LinearProgress for in-progress tasks or indeterminate work.",
11
+ "Use Slider when the user needs to choose or adjust a value.",
12
+ "Use Spinner for a small standalone loading affordance without metric context."
13
+ ],
14
+ "accessibility": [
15
+ "Provide a visible `label` or an accessible name through `aria-label` / `aria-labelledby` when the metric is not otherwise clear.",
16
+ "Keep `value` numeric and within `min` / `max` for accurate `aria-valuenow` semantics.",
17
+ "Use `description` for supplementary context that should not replace the accessible name."
18
+ ],
19
+ "antiPatterns": [
20
+ "Do not use Meter as an interactive value control.",
21
+ "Do not use Meter for indeterminate or in-progress work.",
22
+ "Do not hide the metric label when multiple meters are visible.",
23
+ "Do not model invalid or disabled meter state; Base UI Meter does not expose those states."
24
+ ],
25
+ "related": ["LinearProgress", "Slider", "Text"],
26
+ "properties": {
27
+ "css": {
28
+ "track-size": {
29
+ "description": "Meter track thickness on the root."
30
+ },
31
+ "track-background": {
32
+ "description": "Meter track background color."
33
+ },
34
+ "indicator-color": {
35
+ "description": "Determinate meter indicator color."
36
+ }
37
+ }
38
+ }
39
+ }