@viraui/react 0.0.25 → 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 (119) hide show
  1. package/dist/catalog.json +30 -0
  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 +2 -2
  14. package/dist/components/avatar-group/avatar-group.guide.json +27 -1
  15. package/dist/components/avatar-group/avatar-group.js +1 -1
  16. package/dist/components/basic-input/basic-input.css +1 -1
  17. package/dist/components/basic-input/basic-input.js +3 -3
  18. package/dist/components/basic-input/field-label.css +1 -1
  19. package/dist/components/bleed/bleed.css +1 -0
  20. package/dist/components/bleed/bleed.d.ts +26 -0
  21. package/dist/components/bleed/bleed.guide.json +39 -0
  22. package/dist/components/bleed/bleed.js +24 -0
  23. package/dist/components/bleed/bleed.module.js +3 -0
  24. package/dist/components/bleed/index.d.ts +2 -0
  25. package/dist/components/button/button.css +1 -1
  26. package/dist/components/button/button.guide.json +33 -3
  27. package/dist/components/checkbox/checkbox-group.js +2 -2
  28. package/dist/components/checkbox/checkbox.css +1 -1
  29. package/dist/components/chip/chip.css +1 -1
  30. package/dist/components/chip/chip.guide.json +26 -1
  31. package/dist/components/clamp-text/clamp-text.css +1 -1
  32. package/dist/components/clamp-text/clamp-text.guide.json +15 -1
  33. package/dist/components/clamp-text/clamp-text.js +1 -1
  34. package/dist/components/dialog/dialog-close.js +2 -2
  35. package/dist/components/dialog/dialog-indent-background.js +2 -2
  36. package/dist/components/dialog/dialog-indent.js +2 -2
  37. package/dist/components/dialog/dialog-sheet.js +1 -1
  38. package/dist/components/dialog/dialog-trigger.js +2 -2
  39. package/dist/components/dialog/dialog.css +1 -1
  40. package/dist/components/dialog/dialog.d.ts +5 -4
  41. package/dist/components/dialog/dialog.guide.json +15 -1
  42. package/dist/components/dialog/dialog.js +4 -3
  43. package/dist/components/icon-button/icon-button.js +2 -2
  44. package/dist/components/index.d.ts +5 -0
  45. package/dist/components/linear-progress/linear-progress.css +1 -1
  46. package/dist/components/linear-progress/linear-progress.guide.json +14 -1
  47. package/dist/components/masonry/masonry.css +1 -1
  48. package/dist/components/masonry/masonry.guide.json +42 -1
  49. package/dist/components/masonry/masonry.js +3 -3
  50. package/dist/components/meter/index.d.ts +2 -0
  51. package/dist/components/meter/meter.css +1 -0
  52. package/dist/components/meter/meter.d.ts +44 -0
  53. package/dist/components/meter/meter.guide.json +39 -0
  54. package/dist/components/meter/meter.js +59 -0
  55. package/dist/components/meter/meter.module.js +7 -0
  56. package/dist/components/popover/index.d.ts +4 -0
  57. package/dist/components/popover/popover-sheet.d.ts +65 -0
  58. package/dist/components/popover/popover-sheet.js +79 -0
  59. package/dist/components/popover/popover.css +1 -0
  60. package/dist/components/popover/popover.d.ts +74 -0
  61. package/dist/components/popover/popover.guide.json +28 -0
  62. package/dist/components/popover/popover.js +23 -0
  63. package/dist/components/popover/popover.module.js +8 -0
  64. package/dist/components/progressive-blur/progressive-blur.css +1 -1
  65. package/dist/components/progressive-blur/progressive-blur.guide.json +15 -1
  66. package/dist/components/progressive-blur/progressive-blur.js +1 -1
  67. package/dist/components/radio/radio-group.d.ts +1 -1
  68. package/dist/components/radio/radio-group.js +2 -2
  69. package/dist/components/radio/radio.css +1 -1
  70. package/dist/components/select/select-option.js +1 -1
  71. package/dist/components/select/select.css +1 -1
  72. package/dist/components/select/select.guide.json +26 -1
  73. package/dist/components/select/select.js +1 -0
  74. package/dist/components/separator/separator.css +1 -1
  75. package/dist/components/separator/separator.js +1 -1
  76. package/dist/components/shimmer/shimmer.css +1 -1
  77. package/dist/components/shimmer/shimmer.guide.json +39 -1
  78. package/dist/components/shimmer/shimmer.js +4 -4
  79. package/dist/components/skeleton/skeleton.css +1 -1
  80. package/dist/components/skeleton/skeleton.guide.json +50 -1
  81. package/dist/components/skeleton/skeleton.js +5 -5
  82. package/dist/components/slider/slider.css +1 -1
  83. package/dist/components/slider/slider.guide.json +20 -1
  84. package/dist/components/spinner/spinner.css +1 -1
  85. package/dist/components/spinner/spinner.guide.json +15 -1
  86. package/dist/components/stack/stack.css +1 -1
  87. package/dist/components/stack/stack.guide.json +77 -1
  88. package/dist/components/stack/stack.js +8 -8
  89. package/dist/components/surface/surface-radius-context.js +6 -6
  90. package/dist/components/surface/surface.css +1 -1
  91. package/dist/components/surface/surface.d.ts +1 -1
  92. package/dist/components/surface/surface.guide.json +85 -1
  93. package/dist/components/surface/surface.js +6 -6
  94. package/dist/components/switch/switch.css +1 -1
  95. package/dist/components/switch/switch.guide.json +32 -1
  96. package/dist/components/tabs/tabs-indicator.js +2 -2
  97. package/dist/components/tabs/tabs-list.js +2 -2
  98. package/dist/components/tabs/tabs-panel.js +2 -2
  99. package/dist/components/tabs/tabs-tab.js +2 -2
  100. package/dist/components/tabs/tabs-viewport.js +2 -2
  101. package/dist/components/tabs/tabs.css +1 -1
  102. package/dist/components/tabs/tabs.guide.json +8 -1
  103. package/dist/components/tabs/tabs.js +2 -2
  104. package/dist/components/text/text.css +1 -1
  105. package/dist/components/text/text.guide.json +125 -1
  106. package/dist/components/text/text.js +11 -11
  107. package/dist/components/textarea/textarea.css +1 -1
  108. package/dist/components/textarea/textarea.guide.json +14 -1
  109. package/dist/components/textfield/textfield.css +1 -1
  110. package/dist/components/textfield/textfield.guide.json +20 -1
  111. package/dist/components/title/title.css +1 -1
  112. package/dist/components/title/title.guide.json +123 -1
  113. package/dist/components/title/title.js +11 -11
  114. package/dist/components/toast/toast-action.js +2 -2
  115. package/dist/components/toast/toast-viewport.js +2 -2
  116. package/dist/index.js +6 -1
  117. package/dist/preflight-surface.json +17 -4
  118. package/dist/preflight.css +1 -1
  119. package/package.json +2 -2
@@ -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:#0000;--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:#0000;--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:#0000;--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:#0000;--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
  });
@@ -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';
@@ -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:#0000;&: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
+ }
@@ -0,0 +1,59 @@
1
+ import './meter.css';
2
+ import { clsx } from "../../core/clsx.js";
3
+ import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
4
+ import { Stack } from "../stack/stack.js";
5
+ import { Text } from "../text/text.js";
6
+ import { FieldLabel } from "../basic-input/field-label.js";
7
+ import meter_module_default from "./meter.module.js";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { Meter } from "@base-ui/react";
10
+ //#region src/components/meter/meter.tsx
11
+ var Meter$1 = ({ className, description, label, showValue = false, value, ...otherProps }) => {
12
+ const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
13
+ return /* @__PURE__ */ jsxs(Meter.Root, {
14
+ ...componentProps,
15
+ ...intrinsicAttributes,
16
+ className: clsx(meter_module_default.Meter, className),
17
+ value,
18
+ render: /* @__PURE__ */ jsx(Stack, {
19
+ direction: "column",
20
+ fillChildren: false,
21
+ rowGap: "small",
22
+ columnGap: "x-small"
23
+ }),
24
+ children: [
25
+ (label || showValue) && /* @__PURE__ */ jsxs(Stack, {
26
+ direction: "row",
27
+ fillChildren: false,
28
+ columnGap: "small",
29
+ vAlign: "center",
30
+ hAlign: "space-between",
31
+ children: [label && /* @__PURE__ */ jsx(Meter.Label, {
32
+ render: /* @__PURE__ */ jsx(FieldLabel, {}),
33
+ children: label
34
+ }), showValue && /* @__PURE__ */ jsx(Text, {
35
+ size: "small",
36
+ tone: "muted",
37
+ family: "mono",
38
+ whiteSpace: "nowrap",
39
+ selection: false,
40
+ align: "end",
41
+ shrink: false,
42
+ render: /* @__PURE__ */ jsx(Meter.Value, { render: /* @__PURE__ */ jsx("output", {}) })
43
+ })]
44
+ }),
45
+ /* @__PURE__ */ jsx(Meter.Track, {
46
+ className: meter_module_default.Track,
47
+ children: /* @__PURE__ */ jsx(Meter.Indicator, { className: meter_module_default.Indicator })
48
+ }),
49
+ description && /* @__PURE__ */ jsx(Text, {
50
+ className: meter_module_default.Description,
51
+ size: "small",
52
+ tone: "muted",
53
+ children: description
54
+ })
55
+ ]
56
+ });
57
+ };
58
+ //#endregion
59
+ export { Meter$1 as Meter };
@@ -0,0 +1,7 @@
1
+ var meter_module_default = {
2
+ Meter: "viraui__meter-module__Meter_YRI7d",
3
+ Track: "viraui__meter-module__Track_uF9wy",
4
+ Indicator: "viraui__meter-module__Indicator_dNjqU"
5
+ };
6
+ //#endregion
7
+ export { meter_module_default as default };
@@ -0,0 +1,4 @@
1
+ export { Popover, PopoverClose, PopoverDescription, PopoverTitle, PopoverTrigger } from './popover';
2
+ export type { PopoverCloseProps, PopoverDescriptionProps, PopoverProps, PopoverTitleProps, PopoverTriggerProps, } from './popover';
3
+ export { PopoverSheet } from './popover-sheet';
4
+ export type { PopoverSheetProps } from './popover-sheet';
@@ -0,0 +1,65 @@
1
+ import { PopoverPositioner } from '@base-ui/react/popover';
2
+ import { StackProps } from '..';
3
+ import type * as React from 'react';
4
+ type PopoverSheetPositionerProps = Omit<PopoverPositioner.Props, 'className' | 'style' | 'render'>;
5
+ type PopoverSheetStyledProps = PopoverSheetPositionerProps & {
6
+ /**
7
+ * Whether to skip the built-in Surface, header, and close chrome and render
8
+ * only the positioning/animation shell (Portal + Positioner + Popup + Viewport).
9
+ *
10
+ * @default false
11
+ */
12
+ unstyled?: false;
13
+ /**
14
+ * Accessible popover title rendered as the popup heading.
15
+ */
16
+ title: React.ReactNode;
17
+ /**
18
+ * Supporting copy announced with the title.
19
+ *
20
+ * @default No description is rendered.
21
+ */
22
+ description?: React.ReactNode;
23
+ /**
24
+ * Whether to show the built-in flat IconButton close control.
25
+ *
26
+ * @default false
27
+ */
28
+ showCloseButton?: boolean;
29
+ /**
30
+ * Aligns the header content.
31
+ *
32
+ * @default `start`
33
+ */
34
+ headerAlign?: Extract<StackProps['hAlign'], 'start' | 'center' | 'end'>;
35
+ };
36
+ type PopoverSheetUnstyledProps = PopoverSheetPositionerProps & {
37
+ /**
38
+ * Renders only the positioning/animation shell; compose `Popover.Title`,
39
+ * `Popover.Description`, and any chrome inside `children`.
40
+ */
41
+ unstyled: true;
42
+ title?: never;
43
+ description?: never;
44
+ showCloseButton?: never;
45
+ headerAlign?: never;
46
+ };
47
+ /**
48
+ * Public Popover.Sheet props.
49
+ *
50
+ * Encapsulates Portal + Positioner + Popup + Viewport + Title + Description +
51
+ * optional body `children`. Positioning props forward to the Positioner; `sideOffset`
52
+ * defaults to `8`. Always renders the internal Viewport so multi-trigger content
53
+ * animations work by default. Compose `Popover.Close` inside `children` when a
54
+ * close control is needed, or set `showCloseButton` for the built-in flat IconButton.
55
+ *
56
+ * With `unstyled`, the built-in Surface, header, and close chrome are skipped and
57
+ * `children` render directly inside the Viewport; the consumer owns the popup markup
58
+ * and must compose `Popover.Title` (and `Popover.Description` when needed) for
59
+ * accessible naming.
60
+ *
61
+ * @default `sideOffset` is `8`; no description, no close button, styled chrome.
62
+ */
63
+ export type PopoverSheetProps = PopoverSheetStyledProps | PopoverSheetUnstyledProps;
64
+ export declare const PopoverSheet: React.FC<PopoverSheetProps>;
65
+ export {};