@viraui/react 1.0.13 → 1.0.14

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 (140) hide show
  1. package/dist/catalog.json +10 -4
  2. package/dist/components/accordion/accordion.css +1 -1
  3. package/dist/components/accordion/accordion.guide.json +26 -0
  4. package/dist/components/annotate/annotate.css +1 -1
  5. package/dist/components/annotate/annotate.guide.json +46 -57
  6. package/dist/components/avatar/avatar.css +1 -1
  7. package/dist/components/avatar/avatar.guide.json +22 -10
  8. package/dist/components/avatar/avatar.js +0 -2
  9. package/dist/components/avatar-group/avatar-group.css +1 -7
  10. package/dist/components/avatar-group/avatar-group.guide.json +23 -16
  11. package/dist/components/badge/badge.css +1 -1
  12. package/dist/components/badge/badge.d.ts +1 -1
  13. package/dist/components/badge/badge.guide.json +17 -13
  14. package/dist/components/badge/badge.js +1 -1
  15. package/dist/components/basic-input/basic-input.css +1 -1
  16. package/dist/components/basic-input/field-label.css +1 -1
  17. package/dist/components/basic-input/field-label.js +2 -0
  18. package/dist/components/bleed/bleed.guide.json +9 -6
  19. package/dist/components/button/button-chrome.d.ts +3 -1
  20. package/dist/components/button/button-chrome.js +3 -2
  21. package/dist/components/button/button-link.guide.json +55 -1
  22. package/dist/components/button/button-link.js +1 -0
  23. package/dist/components/button/button.css +1 -1
  24. package/dist/components/button/button.guide.json +27 -7
  25. package/dist/components/button/button.js +1 -0
  26. package/dist/components/checkbox/checkbox.css +1 -1
  27. package/dist/components/checkbox/checkbox.guide.json +40 -1
  28. package/dist/components/checkbox/checkbox.js +2 -2
  29. package/dist/components/checkbox/checkbox.module.js +1 -3
  30. package/dist/components/chip/chip.css +1 -1
  31. package/dist/components/chip/chip.guide.json +23 -6
  32. package/dist/components/chip/chip.js +1 -0
  33. package/dist/components/clamp-text/clamp-text.css +1 -1
  34. package/dist/components/clamp-text/clamp-text.guide.json +9 -0
  35. package/dist/components/dialog/dialog-sheet.js +1 -1
  36. package/dist/components/dialog/dialog.css +1 -1
  37. package/dist/components/dialog/dialog.guide.json +24 -0
  38. package/dist/components/dialog/dialog.module.js +1 -3
  39. package/dist/components/elevator/elevator.guide.json +23 -1
  40. package/dist/components/fieldset/fieldset.guide.json +16 -3
  41. package/dist/components/fieldset/fieldset.js +6 -6
  42. package/dist/components/fit-text/fit-text.css +1 -1
  43. package/dist/components/fit-text/fit-text.guide.json +2 -4
  44. package/dist/components/icon-button/icon-button-link.guide.json +52 -1
  45. package/dist/components/icon-button/icon-button-link.js +2 -2
  46. package/dist/components/icon-button/icon-button.d.ts +1 -1
  47. package/dist/components/icon-button/icon-button.guide.json +48 -3
  48. package/dist/components/icon-button/icon-button.js +2 -2
  49. package/dist/components/index.d.ts +1 -0
  50. package/dist/components/linear-progress/linear-progress.guide.json +16 -5
  51. package/dist/components/linear-progress/linear-progress.js +0 -1
  52. package/dist/components/masonry/masonry.d.ts +1 -1
  53. package/dist/components/masonry/masonry.guide.json +11 -9
  54. package/dist/components/menu/index.d.ts +11 -0
  55. package/dist/components/menu/menu-checkbox-item.d.ts +42 -0
  56. package/dist/components/menu/menu-checkbox-item.js +28 -0
  57. package/dist/components/menu/menu-group.d.ts +12 -0
  58. package/dist/components/menu/menu-group.js +36 -0
  59. package/dist/components/menu/menu-indicator-slot.d.ts +15 -0
  60. package/dist/components/menu/menu-indicator-slot.js +52 -0
  61. package/dist/components/menu/menu-item-row.d.ts +18 -0
  62. package/dist/components/menu/menu-item-row.js +47 -0
  63. package/dist/components/menu/menu-item.d.ts +36 -0
  64. package/dist/components/menu/menu-item.js +23 -0
  65. package/dist/components/menu/menu-link-item.d.ts +36 -0
  66. package/dist/components/menu/menu-link-item.js +26 -0
  67. package/dist/components/menu/menu-popup.d.ts +17 -0
  68. package/dist/components/menu/menu-popup.js +28 -0
  69. package/dist/components/menu/menu-radio-group.d.ts +16 -0
  70. package/dist/components/menu/menu-radio-group.js +36 -0
  71. package/dist/components/menu/menu-radio-item.d.ts +42 -0
  72. package/dist/components/menu/menu-radio-item.js +28 -0
  73. package/dist/components/menu/menu-separator.d.ts +9 -0
  74. package/dist/components/menu/menu-separator.js +15 -0
  75. package/dist/components/menu/menu-submenu-trigger.d.ts +29 -0
  76. package/dist/components/menu/menu-submenu-trigger.js +26 -0
  77. package/dist/components/menu/menu.css +1 -0
  78. package/dist/components/menu/menu.d.ts +58 -0
  79. package/dist/components/menu/menu.guide.json +101 -0
  80. package/dist/components/menu/menu.js +36 -0
  81. package/dist/components/menu/menu.module.js +13 -0
  82. package/dist/components/meter/meter.guide.json +15 -4
  83. package/dist/components/meter/meter.js +0 -1
  84. package/dist/components/popover/popover-sheet.js +1 -1
  85. package/dist/components/popover/popover.guide.json +25 -1
  86. package/dist/components/progressive-blur/progressive-blur.css +1 -1
  87. package/dist/components/progressive-blur/progressive-blur.guide.json +14 -4
  88. package/dist/components/progressive-blur/progressive-blur.js +2 -2
  89. package/dist/components/radio/radio.css +1 -1
  90. package/dist/components/radio/radio.guide.json +34 -1
  91. package/dist/components/radio/radio.js +28 -31
  92. package/dist/components/select/select-group.js +1 -1
  93. package/dist/components/select/select-option.d.ts +1 -1
  94. package/dist/components/select/select-option.js +2 -5
  95. package/dist/components/select/select-separator.js +7 -4
  96. package/dist/components/select/select.css +1 -1
  97. package/dist/components/select/select.guide.json +49 -8
  98. package/dist/components/select/select.js +1 -1
  99. package/dist/components/select/select.module.js +1 -5
  100. package/dist/components/separator/separator.guide.json +28 -1
  101. package/dist/components/shimmer/shimmer.css +1 -1
  102. package/dist/components/shimmer/shimmer.guide.json +19 -16
  103. package/dist/components/skeleton/skeleton.guide.json +24 -31
  104. package/dist/components/slider/slider.guide.json +27 -7
  105. package/dist/components/spinner/spinner.guide.json +5 -4
  106. package/dist/components/stack/stack.guide.json +49 -47
  107. package/dist/components/static-noise/static-noise.guide.json +18 -2
  108. package/dist/components/surface/surface.css +1 -1
  109. package/dist/components/surface/surface.guide.json +41 -48
  110. package/dist/components/switch/switch.css +1 -1
  111. package/dist/components/switch/switch.guide.json +25 -10
  112. package/dist/components/tabs/tabs.guide.json +11 -0
  113. package/dist/components/text/text.css +1 -1
  114. package/dist/components/text/text.guide.json +67 -76
  115. package/dist/components/textarea/textarea.css +1 -1
  116. package/dist/components/textarea/textarea.d.ts +4 -3
  117. package/dist/components/textarea/textarea.guide.json +19 -7
  118. package/dist/components/textfield/textfield.css +1 -1
  119. package/dist/components/textfield/textfield.guide.json +22 -7
  120. package/dist/components/title/title.css +1 -1
  121. package/dist/components/title/title.guide.json +62 -72
  122. package/dist/components/title/title.js +0 -1
  123. package/dist/components/toast/toast.css +1 -1
  124. package/dist/components/toast/toast.guide.json +32 -1
  125. package/dist/components/toggle-button/toggle-button.css +1 -0
  126. package/dist/components/toggle-button/toggle-button.d.ts +7 -0
  127. package/dist/components/toggle-button/toggle-button.guide.json +29 -2
  128. package/dist/components/toggle-button/toggle-button.js +18 -3
  129. package/dist/components/toggle-button/toggle-button.module.js +9 -0
  130. package/dist/components/toggle-group/toggle-group.d.ts +2 -1
  131. package/dist/components/toggle-group/toggle-group.guide.json +2 -3
  132. package/dist/components/tooltip/tooltip.guide.json +8 -1
  133. package/dist/components/typewriter/typewriter.css +1 -1
  134. package/dist/components/typewriter/typewriter.guide.json +27 -5
  135. package/dist/index.js +12 -2
  136. package/dist/internal/chrome-icons/chrome-icons.d.ts +2 -0
  137. package/dist/internal/chrome-icons/chrome-icons.js +7 -1
  138. package/dist/preflight-surface.json +1 -1
  139. package/dist/preflight.css +1 -1
  140. package/package.json +3 -3
package/dist/catalog.json CHANGED
@@ -89,7 +89,7 @@
89
89
  {
90
90
  "id": "icon-button",
91
91
  "name": "IconButton",
92
- "summary": "Icon-only button that requires an accessible name through aria-label or aria-labelledby.",
92
+ "summary": "Icon-only button that shares Button visual chrome (--vui-button-* CSS) and requires an accessible name through aria-label or aria-labelledby.",
93
93
  "guidePath": "./components/icon-button/icon-button.guide.json"
94
94
  },
95
95
  {
@@ -101,9 +101,15 @@
101
101
  {
102
102
  "id": "masonry",
103
103
  "name": "Masonry",
104
- "summary": "Responsive React-column layout primitive for read-only mixed-height content walls.",
104
+ "summary": "Responsive React-column layout primitive for read-only mixed-height content walls; root is a named CSS container query context (`masonry` / inline-size).",
105
105
  "guidePath": "./components/masonry/masonry.guide.json"
106
106
  },
107
+ {
108
+ "id": "menu",
109
+ "name": "Menu",
110
+ "summary": "Compound menu built on Base UI Menu with `Menu.Trigger`, `Menu.Popup`, unified item rows, groups, checkbox/radio items, nested submenus, destructive sentiment, and `Menu.createHandle` for detached triggers; `Popup` owns Portal + Positioner + Elevator/Surface Select-like list chrome.",
111
+ "guidePath": "./components/menu/menu.guide.json"
112
+ },
107
113
  {
108
114
  "id": "meter",
109
115
  "name": "Meter",
@@ -227,13 +233,13 @@
227
233
  {
228
234
  "id": "toggle-button",
229
235
  "name": "ToggleButton",
230
- "summary": "Icon-only two-state toggle that swaps resting and optional pressed icons on Base UI Toggle state.",
236
+ "summary": "Icon-only two-state toggle that swaps resting and optional pressed icons on Base UI Toggle state; `interpolateIcons` (default false) opt-in crossfade + light rotate between dual icons.",
231
237
  "guidePath": "./components/toggle-button/toggle-button.guide.json"
232
238
  },
233
239
  {
234
240
  "id": "toggle-group",
235
241
  "name": "ToggleGroup",
236
- "summary": "Toolbar toggle set with shared selection state and default Stack spacing on Base UI ToggleGroup.",
242
+ "summary": "Toolbar toggle set with shared selection state; Stack direction follows orientation with zero default gap.",
237
243
  "guidePath": "./components/toggle-group/toggle-group.guide.json"
238
244
  },
239
245
  {
@@ -1 +1 @@
1
- @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-accordion-island-gap{syntax:"<length>";inherits:true;initial-value:0}.viraui__accordion-module__Accordion_wFOlN{--vui-accordion-island-gap:var(--space-medium);--trigger-radius:var(--radius-large);inline-size:100%;&:dir(rtl) .viraui__accordion-module__Trigger_4HzIb[data-stack-direction=row-reverse]{direction:ltr;flex-direction:row}}.viraui__accordion-module__Trigger_4HzIb{inline-size:100%;border:0;background:#0000;cursor:pointer;text-align:start;color:inherit;&:focus-visible{outline-offset:-4px}&[data-disabled]{cursor:not-allowed;opacity:.5}.viraui__accordion-module__Item_66o2x[data-use-surface=true] &{&:focus-visible{border-radius:var(--radius-large);outline-offset:-4px}}}.viraui__accordion-module__IconSlot_AVQq3{position:relative;flex-shrink:0;inline-size:1rem;block-size:1rem}.viraui__accordion-module__Icon_qdu2v{position:absolute;inset:0;display:grid;place-items:center;transition:opacity var(--duration-fast) var(--easing-standard),rotate var(--duration-fast) var(--easing-standard);&:first-of-type{opacity:1;rotate:0deg}&:last-of-type{opacity:0;rotate:-90deg}.viraui__accordion-module__Trigger_4HzIb[data-panel-open] &:first-of-type{opacity:0;rotate:90deg}.viraui__accordion-module__Trigger_4HzIb[data-panel-open] &:last-of-type{opacity:1;rotate:0deg}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__accordion-module__Panel_U1Ofk{block-size:var(--accordion-panel-height);overflow:hidden;transition:block-size var(--duration-fast) var(--easing-standard);&[data-ending-style],&[data-starting-style]{block-size:0}@media (prefers-reduced-motion:reduce){transition:none}}}@layer viraui.overrides{.viraui__accordion-module__Item_66o2x{inline-size:100%;transition:margin var(--duration-fast) var(--easing-standard),background var(--duration-fast) var(--easing-standard),border-radius var(--duration-fast) var(--easing-standard);&[data-use-surface=true]{--vui-surface-border-radius-top-left:0;--vui-surface-border-radius-top-right:0;--vui-surface-border-radius-bottom-right:0;--vui-surface-border-radius-bottom-left:0;&:not([data-open]){--vui-surface-background:#0000}&:not([data-open])+&:not([data-open]),&[data-open]+&[data-open]{border-top-width:0}&:first-child,&:not([data-open])+&[data-open],&[data-open]+&:not([data-open]){--vui-surface-border-radius-top-left:var(--trigger-radius);--vui-surface-border-radius-top-right:var(--trigger-radius)}&:last-child,&:not([data-open]):has(+&[data-open]),&[data-open]:has(+&:not([data-open])){--vui-surface-border-radius-bottom-left:var(--trigger-radius);--vui-surface-border-radius-bottom-right:var(--trigger-radius)}&:not(:last-child):not([data-open]):has(+&[data-open]),&:not(:last-child)[data-open]:has(+&:not([data-open])){margin-block-end:var(--vui-accordion-island-gap)}}.viraui__accordion-module__Accordion_wFOlN[data-islands=false] &[data-use-surface=true]{&:not(:first-child){border-top-width:0}&:not([data-open])+&[data-open],&[data-open]+&:not([data-open]){--vui-surface-border-radius-top-left:0;--vui-surface-border-radius-top-right:0}&:not([data-open]):has(+&[data-open]),&[data-open]:has(+&:not([data-open])){--vui-surface-border-radius-bottom-left:0;--vui-surface-border-radius-bottom-right:0}&:not(:last-child):not([data-open]):has(+&[data-open]),&:not(:last-child)[data-open]:has(+&:not([data-open])){margin-block-end:0}}}}
1
+ @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-accordion-island-gap{syntax:"<length>";inherits:true;initial-value:0}@property --__accordion-trigger-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}.viraui__accordion-module__Accordion_wFOlN{--vui-accordion-island-gap:var(--space-medium);--__accordion-trigger-radius:var(--radius-large);inline-size:100%;&:dir(rtl) .viraui__accordion-module__Trigger_4HzIb[data-stack-direction=row-reverse]{direction:ltr;flex-direction:row}}.viraui__accordion-module__Trigger_4HzIb{inline-size:100%;border:0;background:#0000;cursor:pointer;text-align:start;color:inherit;&:focus-visible{outline-offset:-4px}&[data-disabled]{cursor:not-allowed;opacity:.5}.viraui__accordion-module__Item_66o2x[data-use-surface=true] &{&:focus-visible{border-radius:var(--radius-large);outline-offset:-4px}}}.viraui__accordion-module__IconSlot_AVQq3{position:relative;flex-shrink:0;inline-size:1rem;block-size:1rem}.viraui__accordion-module__Icon_qdu2v{position:absolute;inset:0;display:grid;place-items:center;transition:opacity var(--duration-fast) var(--easing-standard),rotate var(--duration-fast) var(--easing-standard);&:first-of-type{opacity:1;rotate:0deg}&:last-of-type{opacity:0;rotate:-90deg}.viraui__accordion-module__Trigger_4HzIb[data-panel-open] &:first-of-type{opacity:0;rotate:90deg}.viraui__accordion-module__Trigger_4HzIb[data-panel-open] &:last-of-type{opacity:1;rotate:0deg}@media (prefers-reduced-motion:reduce){transition:none}}.viraui__accordion-module__Panel_U1Ofk{block-size:var(--accordion-panel-height);overflow:hidden;transition:block-size var(--duration-fast) var(--easing-standard);&[data-ending-style],&[data-starting-style]{block-size:0}@media (prefers-reduced-motion:reduce){transition:none}}}@layer viraui.overrides{.viraui__accordion-module__Item_66o2x{inline-size:100%;transition:margin var(--duration-fast) var(--easing-standard),background var(--duration-fast) var(--easing-standard),border-radius var(--duration-fast) var(--easing-standard);&[data-use-surface=true]{--vui-surface-border-radius-top-left:0;--vui-surface-border-radius-top-right:0;--vui-surface-border-radius-bottom-right:0;--vui-surface-border-radius-bottom-left:0;&:not([data-open]){--vui-surface-background:#0000}&:not([data-open])+&:not([data-open]),&[data-open]+&[data-open]{border-top-width:0}&:first-child,&:not([data-open])+&[data-open],&[data-open]+&:not([data-open]){--vui-surface-border-radius-top-left:var(--__accordion-trigger-radius);--vui-surface-border-radius-top-right:var(--__accordion-trigger-radius)}&:last-child,&:not([data-open]):has(+&[data-open]),&[data-open]:has(+&:not([data-open])){--vui-surface-border-radius-bottom-left:var(--__accordion-trigger-radius);--vui-surface-border-radius-bottom-right:var(--__accordion-trigger-radius)}&:not(:last-child):not([data-open]):has(+&[data-open]),&:not(:last-child)[data-open]:has(+&:not([data-open])){margin-block-end:var(--vui-accordion-island-gap)}}.viraui__accordion-module__Accordion_wFOlN[data-islands=false] &[data-use-surface=true]{&:not(:first-child){border-top-width:0}&:not([data-open])+&[data-open],&[data-open]+&:not([data-open]){--vui-surface-border-radius-top-left:0;--vui-surface-border-radius-top-right:0}&:not([data-open]):has(+&[data-open]),&[data-open]:has(+&:not([data-open])){--vui-surface-border-radius-bottom-left:0;--vui-surface-border-radius-bottom-right:0}&:not(:last-child):not([data-open]):has(+&[data-open]),&:not(:last-child)[data-open]:has(+&:not([data-open])){margin-block-end:0}}}}
@@ -22,6 +22,32 @@
22
22
  ],
23
23
  "related": ["Surface", "Separator", "Stack", "Text", "Icon"],
24
24
  "properties": {
25
+ "react": {
26
+ "islands": {
27
+ "description": "When `true`, open/closed blocks render as separated Surface islands with gap between them. When `false`, blocks stay attached with corner radius only on the first and last items. Applies only to items with `useSurface`."
28
+ },
29
+ "Item.children": {
30
+ "description": "Panel content revealed when the item is open."
31
+ },
32
+ "Item.color": {
33
+ "description": "Resting background for the item card, forwarded to the wrapping `Surface` when `useSurface` is `true`."
34
+ },
35
+ "Item.iconClosed": {
36
+ "description": "Decorative icon shown when the item is closed."
37
+ },
38
+ "Item.iconOpen": {
39
+ "description": "Decorative icon shown when the item is open."
40
+ },
41
+ "Item.iconPosition": {
42
+ "description": "Side of the trigger label where the expand/collapse icon is rendered."
43
+ },
44
+ "Item.trigger": {
45
+ "description": "Visible trigger label rendered inside the accordion header button."
46
+ },
47
+ "Item.useSurface": {
48
+ "description": "When `true`, wraps the item in `Surface` with border and open-block background. When `false`, renders without `Surface` so consumers can insert `Separator` between items; island styling is skipped for that item."
49
+ }
50
+ },
25
51
  "css": {
26
52
  "island-gap": {
27
53
  "description": "Gap between separated Surface islands when islands={true}."
@@ -1 +1 @@
1
- @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-annotate-color{syntax:"<color>";inherits:true;initial-value:#d16500}@property --vui-annotate-arrow-x{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-arrow-y{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-text-x{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-text-y{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-rotate{syntax:"<angle>";inherits:true;initial-value:-4deg}@property --vui-annotate-target-gap{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-label-gap{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-label-max-width{syntax:"<length>";inherits:true;initial-value:150px}@property --vui-annotate-z-index{syntax:"*";inherits:true;initial-value:auto}@property --vui-annotate-text-align{syntax:"*";inherits:true;initial-value:start}.viraui__annotate-module__Annotate_7C36U{--vui-annotate-color:var(--global-foreground);--vui-annotate-target-gap:var(--space-small);--vui-annotate-label-gap:var(--space-x-small);--_annotate-tail-x:23px;--_annotate-tail-y:4px;--_annotate-note-align-x:-50%;--_annotate-note-align-y:calc(-100% - var(--vui-annotate-label-gap));anchor-name:--vui-annotate-target;anchor-scope:--vui-annotate-target,--vui-annotate-arrow;display:inline-block;overflow:visible;border-radius:var(--radius-x-small)}.viraui__annotate-module__Arrow_T4B-6{position:absolute;z-index:var(--vui-annotate-z-index);position-anchor:--vui-annotate-target;anchor-name:--vui-annotate-arrow;width:46px;height:38px;transform:translate(var(--vui-annotate-arrow-x),var(--vui-annotate-arrow-y));transform-origin:50% 50%;mask:var(--_annotate-arrow-mask) center /contain no-repeat;background:var(--vui-annotate-color);pointer-events:none}.viraui__annotate-module__Note_8UW-R{position:absolute;z-index:var(--vui-annotate-z-index);position-anchor:--vui-annotate-arrow;left:calc(anchor(left) + var(--_annotate-tail-x));top:calc(anchor(top) + var(--_annotate-tail-y));width:max-content;max-width:var(--vui-annotate-label-max-width);transform:translate(calc(var(--_annotate-note-align-x) + var(--vui-annotate-text-x)),calc(var(--_annotate-note-align-y) + var(--vui-annotate-text-y))) rotate(var(--vui-annotate-rotate));font-family:Segoe Print,Chalkboard SE,Marker Felt,Dancing Script,sans-serif,system-ui;font-size:.95rem;line-height:1.05;color:var(--vui-annotate-color);text-align:var(--vui-annotate-text-align);white-space:normal;pointer-events:none}.viraui__annotate-module__Annotate_7C36U[data-mark=true]{background:oklab(from var(--vui-annotate-color) l a b/30%);box-shadow:-.3em 0 0 0 oklab(from var(--vui-annotate-color) l a b/30%),.3em 0 0 0 oklab(from var(--vui-annotate-color) l a b/30%)}.viraui__annotate-module__Annotate_7C36U[data-side=top]{--_annotate-tail-x:23px;--_annotate-tail-y:4px;--_annotate-note-align-x:-50%;--_annotate-note-align-y:calc(-100% - var(--vui-annotate-label-gap))}.viraui__annotate-module__Annotate_7C36U[data-side=top] .viraui__annotate-module__Arrow_T4B-6{--_annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M23 4c-1 9-1 20 0 31'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m17 29 6 7 6-7'/%3E%3C/svg%3E");position-area:block-start;margin-bottom:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=top-start]{--_annotate-tail-x:6px;--_annotate-tail-y:6px;--_annotate-note-align-x:-50%;--_annotate-note-align-y:calc(-100% - var(--vui-annotate-label-gap))}.viraui__annotate-module__Annotate_7C36U[data-side=top-start] .viraui__annotate-module__Arrow_T4B-6{--_annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M6 6c10 2 22 14 34 26'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m36 22 4 10-10-4'/%3E%3C/svg%3E");position-area:block-start inline-start;margin-bottom:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=top-end]{--_annotate-tail-x:40px;--_annotate-tail-y:6px;--_annotate-note-align-x:-50%;--_annotate-note-align-y:calc(-100% - var(--vui-annotate-label-gap))}.viraui__annotate-module__Annotate_7C36U[data-side=top-end] .viraui__annotate-module__Arrow_T4B-6{--_annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M40 6C30 8 18 20 6 32'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M10 22 6 32l10-4'/%3E%3C/svg%3E");position-area:block-start inline-end;margin-bottom:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom]{--_annotate-tail-x:23px;--_annotate-tail-y:35px;--_annotate-note-align-x:-50%;--_annotate-note-align-y:var(--vui-annotate-label-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom] .viraui__annotate-module__Arrow_T4B-6{--_annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M23 35c-1-9-1-20 0-31'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m17 10 6-7 6 7'/%3E%3C/svg%3E");position-area:block-end;margin-top:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom-start]{--_annotate-tail-x:6px;--_annotate-tail-y:32px;--_annotate-note-align-x:-50%;--_annotate-note-align-y:var(--vui-annotate-label-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom-start] .viraui__annotate-module__Arrow_T4B-6{--_annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M6 32c10-2 22-14 34-26'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m30 10 10-4-4 10'/%3E%3C/svg%3E");position-area:block-end inline-start;margin-top:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom-end]{--_annotate-tail-x:40px;--_annotate-tail-y:32px;--_annotate-note-align-x:-50%;--_annotate-note-align-y:var(--vui-annotate-label-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom-end] .viraui__annotate-module__Arrow_T4B-6{--_annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M40 32C30 30 18 18 6 6'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M16 10 6 6l4 10'/%3E%3C/svg%3E");position-area:block-end inline-end;margin-top:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=start]{--_annotate-tail-x:4px;--_annotate-tail-y:19px;--_annotate-note-align-x:calc(-100% - var(--vui-annotate-label-gap));--_annotate-note-align-y:-50%}.viraui__annotate-module__Annotate_7C36U[data-side=start] .viraui__annotate-module__Arrow_T4B-6{--_annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M4 19c11-1 27-1 39 0'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m36 13 7 6-7 6'/%3E%3C/svg%3E");position-area:inline-start;margin-inline-end:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=end]{--_annotate-tail-x:43px;--_annotate-tail-y:19px;--_annotate-note-align-x:var(--vui-annotate-label-gap);--_annotate-note-align-y:-50%}.viraui__annotate-module__Annotate_7C36U[data-side=end] .viraui__annotate-module__Arrow_T4B-6{--_annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M43 19c-11-1-28-1-40 0'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m10 13-7 6 7 6'/%3E%3C/svg%3E");position-area:inline-end;margin-inline-start:var(--vui-annotate-target-gap)}}
1
+ @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-annotate-color{syntax:"<color>";inherits:true;initial-value:#d16500}@property --vui-annotate-arrow-x{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-arrow-y{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-text-x{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-text-y{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-rotate{syntax:"<angle>";inherits:true;initial-value:-4deg}@property --vui-annotate-target-gap{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-label-gap{syntax:"<length>";inherits:true;initial-value:0}@property --vui-annotate-label-max-width{syntax:"<length>";inherits:true;initial-value:150px}@property --vui-annotate-z-index{syntax:"*";inherits:true;initial-value:auto}@property --vui-annotate-text-align{syntax:"*";inherits:true;initial-value:start}@property --__annotate-tail-x{syntax:"<length>";inherits:true;initial-value:23px}@property --__annotate-tail-y{syntax:"<length>";inherits:true;initial-value:4px}@property --__annotate-note-align-x{syntax:"<length-percentage>";inherits:true;initial-value:-50%}@property --__annotate-note-align-y{syntax:"<length-percentage>";inherits:true;initial-value:0%}@property --__annotate-arrow-mask{syntax:"*";inherits:true;initial-value:none}.viraui__annotate-module__Annotate_7C36U{--vui-annotate-color:var(--global-foreground);--vui-annotate-target-gap:var(--space-small);--vui-annotate-label-gap:var(--space-x-small);--__annotate-note-align-y:calc(-100% - var(--vui-annotate-label-gap));anchor-name:--vui-annotate-target;anchor-scope:--vui-annotate-target,--vui-annotate-arrow;display:inline-block;overflow:visible;border-radius:var(--radius-x-small)}.viraui__annotate-module__Arrow_T4B-6{position:absolute;z-index:var(--vui-annotate-z-index);position-anchor:--vui-annotate-target;anchor-name:--vui-annotate-arrow;width:46px;height:38px;transform:translate(var(--vui-annotate-arrow-x),var(--vui-annotate-arrow-y));transform-origin:50% 50%;mask:var(--__annotate-arrow-mask) center /contain no-repeat;background:var(--vui-annotate-color);pointer-events:none}.viraui__annotate-module__Note_8UW-R{position:absolute;z-index:var(--vui-annotate-z-index);position-anchor:--vui-annotate-arrow;left:calc(anchor(left) + var(--__annotate-tail-x));top:calc(anchor(top) + var(--__annotate-tail-y));width:max-content;max-width:var(--vui-annotate-label-max-width);transform:translate(calc(var(--__annotate-note-align-x) + var(--vui-annotate-text-x)),calc(var(--__annotate-note-align-y) + var(--vui-annotate-text-y))) rotate(var(--vui-annotate-rotate));font-family:Segoe Print,Chalkboard SE,Marker Felt,Dancing Script,sans-serif,system-ui;font-size:.95rem;line-height:1.05;color:var(--vui-annotate-color);text-align:var(--vui-annotate-text-align);white-space:normal;pointer-events:none}.viraui__annotate-module__Annotate_7C36U[data-mark=true]{background:oklab(from var(--vui-annotate-color) l a b/30%);box-shadow:-.3em 0 0 0 oklab(from var(--vui-annotate-color) l a b/30%),.3em 0 0 0 oklab(from var(--vui-annotate-color) l a b/30%)}.viraui__annotate-module__Annotate_7C36U[data-side=top]{--__annotate-tail-x:23px;--__annotate-tail-y:4px;--__annotate-note-align-x:-50%;--__annotate-note-align-y:calc(-100% - var(--vui-annotate-label-gap))}.viraui__annotate-module__Annotate_7C36U[data-side=top] .viraui__annotate-module__Arrow_T4B-6{--__annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M23 4c-1 9-1 20 0 31'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m17 29 6 7 6-7'/%3E%3C/svg%3E");position-area:block-start;margin-bottom:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=top-start]{--__annotate-tail-x:6px;--__annotate-tail-y:6px;--__annotate-note-align-x:-50%;--__annotate-note-align-y:calc(-100% - var(--vui-annotate-label-gap))}.viraui__annotate-module__Annotate_7C36U[data-side=top-start] .viraui__annotate-module__Arrow_T4B-6{--__annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M6 6c10 2 22 14 34 26'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m36 22 4 10-10-4'/%3E%3C/svg%3E");position-area:block-start inline-start;margin-bottom:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=top-end]{--__annotate-tail-x:40px;--__annotate-tail-y:6px;--__annotate-note-align-x:-50%;--__annotate-note-align-y:calc(-100% - var(--vui-annotate-label-gap))}.viraui__annotate-module__Annotate_7C36U[data-side=top-end] .viraui__annotate-module__Arrow_T4B-6{--__annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M40 6C30 8 18 20 6 32'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M10 22 6 32l10-4'/%3E%3C/svg%3E");position-area:block-start inline-end;margin-bottom:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom]{--__annotate-tail-x:23px;--__annotate-tail-y:35px;--__annotate-note-align-x:-50%;--__annotate-note-align-y:var(--vui-annotate-label-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom] .viraui__annotate-module__Arrow_T4B-6{--__annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M23 35c-1-9-1-20 0-31'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m17 10 6-7 6 7'/%3E%3C/svg%3E");position-area:block-end;margin-top:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom-start]{--__annotate-tail-x:6px;--__annotate-tail-y:32px;--__annotate-note-align-x:-50%;--__annotate-note-align-y:var(--vui-annotate-label-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom-start] .viraui__annotate-module__Arrow_T4B-6{--__annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M6 32c10-2 22-14 34-26'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m30 10 10-4-4 10'/%3E%3C/svg%3E");position-area:block-end inline-start;margin-top:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom-end]{--__annotate-tail-x:40px;--__annotate-tail-y:32px;--__annotate-note-align-x:-50%;--__annotate-note-align-y:var(--vui-annotate-label-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=bottom-end] .viraui__annotate-module__Arrow_T4B-6{--__annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M40 32C30 30 18 18 6 6'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M16 10 6 6l4 10'/%3E%3C/svg%3E");position-area:block-end inline-end;margin-top:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=start]{--__annotate-tail-x:4px;--__annotate-tail-y:19px;--__annotate-note-align-x:calc(-100% - var(--vui-annotate-label-gap));--__annotate-note-align-y:-50%}.viraui__annotate-module__Annotate_7C36U[data-side=start] .viraui__annotate-module__Arrow_T4B-6{--__annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M4 19c11-1 27-1 39 0'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m36 13 7 6-7 6'/%3E%3C/svg%3E");position-area:inline-start;margin-inline-end:var(--vui-annotate-target-gap)}.viraui__annotate-module__Annotate_7C36U[data-side=end]{--__annotate-tail-x:43px;--__annotate-tail-y:19px;--__annotate-note-align-x:var(--vui-annotate-label-gap);--__annotate-note-align-y:-50%}.viraui__annotate-module__Annotate_7C36U[data-side=end] .viraui__annotate-module__Arrow_T4B-6{--__annotate-arrow-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='38' viewBox='0 0 46 38'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-width='1.5' d='M43 19c-11-1-28-1-40 0'/%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m10 13-7 6 7 6'/%3E%3C/svg%3E");position-area:inline-end;margin-inline-start:var(--vui-annotate-target-gap)}}
@@ -26,95 +26,84 @@
26
26
  "related": ["Text", "Title", "Tooltip", "Chip"],
27
27
  "properties": {
28
28
  "react": {
29
- "color": {
30
- "description": "Highlight token driving arrow, label, and optional mark color via --vui-annotate-color. When omitted, falls back to var(--global-foreground).",
31
- "refCss": "color"
32
- },
33
29
  "arrowOffsetX": {
34
- "description": "Horizontal offset for the arrow part.",
35
- "refCss": "arrow-x"
30
+ "description": "Horizontal offset for the arrow pseudo (`--vui-annotate-arrow-x`)."
36
31
  },
37
32
  "arrowOffsetY": {
38
- "description": "Vertical offset for the arrow part.",
39
- "refCss": "arrow-y"
33
+ "description": "Vertical offset for the arrow pseudo (`--vui-annotate-arrow-y`)."
40
34
  },
41
- "textOffsetX": {
42
- "description": "Horizontal offset for the note part.",
43
- "refCss": "text-x"
35
+ "color": {
36
+ "description": "Highlight token driving arrow, label, and optional mark color via `--vui-annotate-color`."
44
37
  },
45
- "textOffsetY": {
46
- "description": "Vertical offset for the note part.",
47
- "refCss": "text-y"
38
+ "labelGap": {
39
+ "description": "Gap between arrow and label on all sides via `--vui-annotate-label-gap`."
40
+ },
41
+ "labelMaxWidth": {
42
+ "description": "Max width for the label pseudo via `--vui-annotate-label-max-width`."
43
+ },
44
+ "mark": {
45
+ "description": "When true, applies a highlighter mark behind the wrapped content."
46
+ },
47
+ "note": {
48
+ "description": "Decorative label rendered in a presentational note span (not announced). Do not put critical information here — assistive tech does not announce the note."
48
49
  },
49
50
  "rotate": {
50
- "description": "Rotation for the note via --vui-annotate-rotate.",
51
+ "description": "Rotation for the label (and composed transforms) via `--vui-annotate-rotate`.",
51
52
  "refCss": "rotate"
52
53
  },
54
+ "side": {
55
+ "description": "Places the decorative arrow and label relative to the wrapped content."
56
+ },
53
57
  "targetGap": {
54
- "description": "Gap between the target and the arrow.",
55
- "refCss": "target-gap"
58
+ "description": "Gap between the target and the arrow via `--vui-annotate-target-gap`."
56
59
  },
57
- "labelGap": {
58
- "description": "Gap between arrow and note on all sides.",
59
- "refCss": "label-gap"
60
+ "textAlign": {
61
+ "description": "Text alignment for the note via `--vui-annotate-text-align`."
60
62
  },
61
- "labelMaxWidth": {
62
- "description": "Max width for the note part.",
63
- "refCss": "label-max-width"
63
+ "textOffsetX": {
64
+ "description": "Horizontal offset for the label pseudo (`--vui-annotate-text-x`)."
64
65
  },
65
- "zIndex": {
66
- "description": "Stacking order for arrow and note via --vui-annotate-z-index. Same value on both. When omitted, auto.",
67
- "refCss": "z-index"
66
+ "textOffsetY": {
67
+ "description": "Vertical offset for the label pseudo (`--vui-annotate-text-y`)."
68
68
  },
69
- "textAlign": {
70
- "description": "Text alignment for the note via --vui-annotate-text-align. When omitted, start.",
71
- "refCss": "text-align"
69
+ "zIndex": {
70
+ "description": "Stacking order for arrow and note via `--vui-annotate-z-index`. Same value on both parts."
72
71
  }
73
72
  },
74
73
  "css": {
75
- "color": {
76
- "description": "Arrow, note, and mark accent color. Defaults to var(--global-foreground).",
77
- "refReact": "color"
78
- },
79
74
  "arrow-x": {
80
- "description": "Horizontal arrow offset.",
81
- "refReact": "arrowOffsetX"
75
+ "description": "Horizontal arrow offset."
82
76
  },
83
77
  "arrow-y": {
84
- "description": "Vertical arrow offset.",
85
- "refReact": "arrowOffsetY"
78
+ "description": "Vertical arrow offset."
86
79
  },
87
- "text-x": {
88
- "description": "Horizontal note offset.",
89
- "refReact": "textOffsetX"
80
+ "color": {
81
+ "description": "Arrow, note, and mark accent color. Defaults to var(--global-foreground)."
90
82
  },
91
- "text-y": {
92
- "description": "Vertical note offset.",
93
- "refReact": "textOffsetY"
83
+ "label-gap": {
84
+ "description": "Gap between arrow and note on all sides."
85
+ },
86
+ "label-max-width": {
87
+ "description": "Max width for the note part."
94
88
  },
95
89
  "rotate": {
96
90
  "description": "Note rotation angle.",
97
91
  "refReact": "rotate"
98
92
  },
99
93
  "target-gap": {
100
- "description": "Gap between the target and the arrow.",
101
- "refReact": "targetGap"
94
+ "description": "Gap between the target and the arrow."
102
95
  },
103
- "label-gap": {
104
- "description": "Gap between arrow and note on all sides.",
105
- "refReact": "labelGap"
96
+ "text-align": {
97
+ "description": "Text alignment for the note. Defaults to start."
106
98
  },
107
- "label-max-width": {
108
- "description": "Max width for the note part.",
109
- "refReact": "labelMaxWidth"
99
+ "text-x": {
100
+ "description": "Horizontal note offset."
110
101
  },
111
- "z-index": {
112
- "description": "Stacking order for arrow and note. Defaults to auto.",
113
- "refReact": "zIndex"
102
+ "text-y": {
103
+ "description": "Vertical note offset."
114
104
  },
115
- "text-align": {
116
- "description": "Text alignment for the note. Defaults to start.",
117
- "refReact": "textAlign"
105
+ "z-index": {
106
+ "description": "Stacking order for arrow and note. Defaults to auto."
118
107
  }
119
108
  }
120
109
  }
@@ -1 +1 @@
1
- @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-avatar-size{syntax:"<length>";inherits:false;initial-value:0}@property --vui-avatar-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}@property --vui-avatar-background{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-avatar-foreground{syntax:"<color>";inherits:false;initial-value:#0000}.viraui__avatar-module__Avatar_BRuS3{--vui-avatar-size:var(--space-2x-large);--vui-avatar-background:var(--global-contrast);--vui-avatar-foreground:var(--global-foreground);--vui-avatar-radius:var(--radius-medium);display:inline-flex;align-items:center;justify-content:center;inline-size:var(--vui-avatar-size);block-size:var(--vui-avatar-size);min-inline-size:var(--vui-avatar-size);min-block-size:var(--vui-avatar-size);overflow:hidden;border-radius:var(--vui-avatar-radius);background:var(--vui-avatar-background);color:var(--vui-avatar-foreground);vertical-align:middle;-webkit-user-select:none;user-select:none;container-name:viraui-avatar;container-type:inline-size;&[data-size=x-small]{--vui-avatar-size:var(--space-large);--vui-avatar-radius:var(--radius-small)}&[data-size=small]{--vui-avatar-size:var(--space-2x-large)}&[data-size=regular]{--vui-avatar-size:var(--space-wide)}&[data-size=big]{--vui-avatar-size:var(--space-2x-wide);--vui-avatar-radius:var(--radius-large)}}.viraui__avatar-module__Image_Q7bHi{inline-size:100%;block-size:100%;display:block;object-fit:cover}}@layer viraui.overrides{.viraui__avatar-module__AvatarSkeleton_AnE8Q{border-radius:inherit}.viraui__avatar-module__Label_QASTF{font-size:30cqw}}
1
+ @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-avatar-size{syntax:"<length>";inherits:false;initial-value:0}@property --vui-avatar-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}@property --vui-avatar-background{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-avatar-foreground{syntax:"<color>";inherits:false;initial-value:#0000}.viraui__avatar-module__Avatar_BRuS3{--vui-avatar-size:var(--space-2x-large);--vui-avatar-background:var(--global-contrast);--vui-avatar-foreground:var(--global-foreground);--vui-avatar-radius:var(--radius-medium);display:inline-flex;align-items:center;justify-content:center;inline-size:var(--vui-avatar-size);block-size:var(--vui-avatar-size);min-inline-size:var(--vui-avatar-size);min-block-size:var(--vui-avatar-size);overflow:hidden;border-radius:var(--vui-avatar-radius);background:var(--vui-avatar-background);color:var(--vui-avatar-foreground);vertical-align:middle;-webkit-user-select:none;user-select:none;container-type:inline-size;&[data-size=x-small]{--vui-avatar-size:var(--space-large);--vui-avatar-radius:var(--radius-small)}&[data-size=regular]{--vui-avatar-size:var(--space-wide)}&[data-size=big]{--vui-avatar-size:var(--space-2x-wide);--vui-avatar-radius:var(--radius-large)}}.viraui__avatar-module__Image_Q7bHi{inline-size:100%;block-size:100%;display:block;object-fit:cover}}@layer viraui.overrides{.viraui__avatar-module__AvatarSkeleton_AnE8Q{border-radius:inherit}.viraui__avatar-module__Label_QASTF{font-size:30cqw}}
@@ -20,25 +20,37 @@
20
20
  "related": ["Skeleton"],
21
21
  "properties": {
22
22
  "react": {
23
+ "alt": {
24
+ "description": "Supplies alternative text for the avatar image."
25
+ },
26
+ "fallback": {
27
+ "description": "Supplies the content shown when the image is absent or fails to load."
28
+ },
29
+ "loading": {
30
+ "description": "Replaces the avatar content with a same-size skeleton while image data is still loading upstream."
31
+ },
32
+ "ref": {
33
+ "description": "Ref forwarded to the rendered avatar root element."
34
+ },
23
35
  "size": {
24
- "description": "Selects the rendered avatar footprint.",
25
- "refCss": "size"
36
+ "description": "Selects the rendered avatar footprint."
37
+ },
38
+ "src": {
39
+ "description": "Supplies the avatar image source URL."
26
40
  }
27
41
  },
28
42
  "css": {
29
- "size": {
30
- "description": "Avatar inline and block size on the root.",
31
- "refReact": "size"
32
- },
33
- "radius": {
34
- "description": "Corner radius on the root; size presets also adjust this.",
35
- "refReact": "size"
36
- },
37
43
  "background": {
38
44
  "description": "Root background fill behind image or fallback."
39
45
  },
40
46
  "foreground": {
41
47
  "description": "Root foreground color for fallback content."
48
+ },
49
+ "radius": {
50
+ "description": "Corner radius on the root; size presets also adjust this."
51
+ },
52
+ "size": {
53
+ "description": "Avatar inline and block size on the root."
42
54
  }
43
55
  }
44
56
  }
@@ -19,8 +19,6 @@ var Avatar$1 = ({ alt = "", className, fallback, loading = false, ref, size = "s
19
19
  ref,
20
20
  "aria-busy": loading || void 0,
21
21
  className: clsx(avatar_module_default.Avatar, className),
22
- "data-has-image": hasImage ? "true" : "false",
23
- "data-loading": loading ? "true" : "false",
24
22
  "data-size": size,
25
23
  "data-grow": "false",
26
24
  "data-shrink": "false",
@@ -1,7 +1 @@
1
- @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-avatar-group-size{syntax:"<length>";inherits:true;initial-value:0}@property --vui-avatar-group-overlap-distance{syntax:"<length>";inherits:true;initial-value:0}@property --vui-avatar-group-gap-size{syntax:"<length>";inherits:true;initial-value:0}@property --vui-avatar-group-item-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}.viraui__avatar-group-module__AvatarGroup_zOrR-{--vui-avatar-group-size:var(--space-2x-large);--vui-avatar-group-overlap-distance:var(--space-small);--vui-avatar-group-gap-size:var(--space-x-small);--vui-avatar-group-item-radius:var(--radius-medium);display:inline-flex;flex-wrap:nowrap;align-items:flex-start;min-inline-size:max-content;vertical-align:middle;&[data-direction=vertical]{flex-direction:column}&[data-size=x-small]{--vui-avatar-group-size:var(--space-large);--vui-avatar-group-overlap-distance:var(--space-x-small);--vui-avatar-group-gap-size:var(--space-2x-small);--vui-avatar-group-item-radius:var(--radius-small)}&[data-size=small]{--vui-avatar-group-size:var(--space-2x-large);--vui-avatar-group-overlap-distance:var(--space-medium);--vui-avatar-group-gap-size:var(--space-x-small)}&[data-size=regular]{--vui-avatar-group-size:var(--space-wide);--vui-avatar-group-overlap-distance:var(--space-medium);--vui-avatar-group-gap-size:var(--space-x-small)}&[data-size=big]{--vui-avatar-group-size:var(--space-2x-wide);--vui-avatar-group-overlap-distance:var(--space-large);--vui-avatar-group-gap-size:var(--space-small);--vui-avatar-group-item-radius:var(--radius-large)}}.viraui__avatar-group-module__AvatarWrapper_0opqY{position:relative;display:inline-flex;flex:0 0 auto;inline-size:var(--vui-avatar-group-size);block-size:var(--vui-avatar-group-size);.viraui__avatar-group-module__AvatarGroup_zOrR-[data-direction=horizontal] &:not(:first-child){margin-inline-start:calc(var(--vui-avatar-group-overlap-distance) * -1)}.viraui__avatar-group-module__AvatarGroup_zOrR-[data-direction=vertical] &:not(:first-child){margin-block-start:calc(var(--vui-avatar-group-overlap-distance) * -1)}--avatar-hole-half:calc((var(--vui-avatar-group-size) / 2) + var(--vui-avatar-group-gap-size));--avatar-hole-r:calc(min(var(--vui-avatar-group-item-radius), var(--vui-avatar-group-size) / 2) + var(--vui-avatar-group-gap-size));.viraui__avatar-group-module__AvatarGroup_zOrR-:dir(ltr)[data-direction=horizontal] &:not(:last-child){--avatar-hole-cx:calc(100% + (var(--vui-avatar-group-size) / 2) - var(--vui-avatar-group-overlap-distance));--avatar-hole-cy:50%}.viraui__avatar-group-module__AvatarGroup_zOrR-:dir(rtl)[data-direction=horizontal] &:not(:last-child){--avatar-hole-cx:calc(var(--vui-avatar-group-overlap-distance) - (var(--vui-avatar-group-size) / 2));--avatar-hole-cy:50%}.viraui__avatar-group-module__AvatarGroup_zOrR-[data-direction=vertical] &:not(:last-child){--avatar-hole-cx:50%;--avatar-hole-cy:calc(100% + (var(--vui-avatar-group-size) / 2) - var(--vui-avatar-group-overlap-distance))}.viraui__avatar-group-module__AvatarGroup_zOrR- &:not(:last-child){--avatar-hole-edge:calc((var(--avatar-hole-half) - var(--avatar-hole-r)) * 2);--avatar-hole-corner-inset:calc(var(--avatar-hole-r) * 0.85);@supports (corner-shape:squircle){@container root not style(--corner-shape-enable: initial){--avatar-hole-corner-tr:curve by var(--avatar-hole-r) var(--avatar-hole-r) with var(--avatar-hole-corner-inset) 0px /var(--avatar-hole-r) calc(var(--avatar-hole-r) * 0.15);--avatar-hole-corner-br:curve by calc(var(--avatar-hole-r) * -1) var(--avatar-hole-r) with 0px var(--avatar-hole-corner-inset) /calc(var(--avatar-hole-r) * -0.15) var(--avatar-hole-r);--avatar-hole-corner-bl:curve by calc(var(--avatar-hole-r) * -1) calc(var(--avatar-hole-r) * -1) with calc(var(--avatar-hole-corner-inset) * -1) 0px /calc(var(--avatar-hole-r) * -1) calc(var(--avatar-hole-r) * -0.15);--avatar-hole-corner-tl:curve by var(--avatar-hole-r) calc(var(--avatar-hole-r) * -1) with 0px calc(var(--avatar-hole-corner-inset) * -1) /calc(var(--avatar-hole-r) * 0.15) calc(var(--avatar-hole-r) * -1)}}clip-path:shape(evenodd from 0 0,line to 100% 0,line to 100% 100%,line to 0 100%,close,move to calc(var(--avatar-hole-cx) - var(--avatar-hole-half) + var(--avatar-hole-r)) calc(var(--avatar-hole-cy) - var(--avatar-hole-half)),line by var(--avatar-hole-edge) 0,var(--avatar-hole-corner-tr,arc by var(--avatar-hole-r) var(--avatar-hole-r) of var(--avatar-hole-r) cw),line by 0 var(--avatar-hole-edge),var(
2
- --avatar-hole-corner-br,arc by calc(var(--avatar-hole-r) * -1) var(--avatar-hole-r) of var(--avatar-hole-r) cw
3
- ),line by calc(var(--avatar-hole-edge) * -1) 0,var(
4
- --avatar-hole-corner-bl,arc by calc(var(--avatar-hole-r) * -1) calc(var(--avatar-hole-r) * -1) of var(--avatar-hole-r) cw
5
- ),line by 0 calc(var(--avatar-hole-edge) * -1),var(
6
- --avatar-hole-corner-tl,arc by var(--avatar-hole-r) calc(var(--avatar-hole-r) * -1) of var(--avatar-hole-r) cw
7
- ),close)}}.viraui__avatar-group-module__OverflowWrapper_bKv6I{inline-size:auto}.viraui__avatar-group-module__OverflowPill_nMmTD{display:inline-flex;align-items:center;justify-content:center;min-inline-size:var(--vui-avatar-group-size);block-size:var(--vui-avatar-group-size)}}@layer viraui.overrides{.viraui__avatar-group-module__AvatarGroupItem_Vvlyh{--vui-avatar-radius:var(--vui-avatar-group-item-radius)}}
1
+ @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-avatar-group-size{syntax:"<length>";inherits:true;initial-value:0}@property --vui-avatar-group-overlap-distance{syntax:"<length>";inherits:true;initial-value:0}@property --vui-avatar-group-gap-size{syntax:"<length>";inherits:true;initial-value:0}@property --vui-avatar-group-item-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}@property --__avatar-group-hole-half{syntax:"<length>";inherits:false;initial-value:0}@property --__avatar-group-hole-r{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --__avatar-group-hole-cx{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --__avatar-group-hole-cy{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --__avatar-group-hole-corner-tl{syntax:"*";inherits:false;initial-value:none}@property --__avatar-group-hole-corner-tr{syntax:"*";inherits:false;initial-value:none}@property --__avatar-group-hole-corner-br{syntax:"*";inherits:false;initial-value:none}@property --__avatar-group-hole-corner-bl{syntax:"*";inherits:false;initial-value:none}@property --__avatar-group-hole-corner-inset{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --__avatar-group-hole-edge{syntax:"<length-percentage>";inherits:false;initial-value:0}.viraui__avatar-group-module__AvatarGroup_zOrR-{--vui-avatar-group-size:var(--space-2x-large);--vui-avatar-group-overlap-distance:var(--space-medium);--vui-avatar-group-gap-size:var(--space-x-small);--vui-avatar-group-item-radius:var(--radius-medium);display:inline-flex;flex-wrap:nowrap;align-items:flex-start;min-inline-size:max-content;vertical-align:middle;&[data-direction=vertical]{flex-direction:column}&[data-size=x-small]{--vui-avatar-group-size:var(--space-large);--vui-avatar-group-overlap-distance:var(--space-x-small);--vui-avatar-group-gap-size:var(--space-2x-small);--vui-avatar-group-item-radius:var(--radius-small)}&[data-size=regular]{--vui-avatar-group-size:var(--space-wide);--vui-avatar-group-overlap-distance:var(--space-medium);--vui-avatar-group-gap-size:var(--space-x-small)}&[data-size=big]{--vui-avatar-group-size:var(--space-2x-wide);--vui-avatar-group-overlap-distance:var(--space-large);--vui-avatar-group-gap-size:var(--space-small);--vui-avatar-group-item-radius:var(--radius-large)}}.viraui__avatar-group-module__AvatarWrapper_0opqY{position:relative;display:inline-flex;flex:0 0 auto;inline-size:var(--vui-avatar-group-size);block-size:var(--vui-avatar-group-size);.viraui__avatar-group-module__AvatarGroup_zOrR-[data-direction=horizontal] &:not(:first-child){margin-inline-start:calc(var(--vui-avatar-group-overlap-distance) * -1)}.viraui__avatar-group-module__AvatarGroup_zOrR-[data-direction=vertical] &:not(:first-child){margin-block-start:calc(var(--vui-avatar-group-overlap-distance) * -1)}--__avatar-group-hole-half:calc((var(--vui-avatar-group-size) / 2) + var(--vui-avatar-group-gap-size));--__avatar-group-hole-r:calc(min(var(--vui-avatar-group-item-radius), var(--vui-avatar-group-size) / 2) + var(--vui-avatar-group-gap-size));.viraui__avatar-group-module__AvatarGroup_zOrR-:dir(ltr)[data-direction=horizontal] &:not(:last-child){--__avatar-group-hole-cx:calc(100% + (var(--vui-avatar-group-size) / 2) - var(--vui-avatar-group-overlap-distance));--__avatar-group-hole-cy:50%}.viraui__avatar-group-module__AvatarGroup_zOrR-:dir(rtl)[data-direction=horizontal] &:not(:last-child){--__avatar-group-hole-cx:calc(var(--vui-avatar-group-overlap-distance) - (var(--vui-avatar-group-size) / 2));--__avatar-group-hole-cy:50%}.viraui__avatar-group-module__AvatarGroup_zOrR-[data-direction=vertical] &:not(:last-child){--__avatar-group-hole-cx:50%;--__avatar-group-hole-cy:calc(100% + (var(--vui-avatar-group-size) / 2) - var(--vui-avatar-group-overlap-distance))}.viraui__avatar-group-module__AvatarGroup_zOrR- &:not(:last-child){--__avatar-group-hole-edge:calc((var(--__avatar-group-hole-half) - var(--__avatar-group-hole-r)) * 2);--__avatar-group-hole-corner-inset:calc(var(--__avatar-group-hole-r) * 0.85);--__avatar-group-hole-corner-tr:arc by var(--__avatar-group-hole-r) var(--__avatar-group-hole-r) of var(--__avatar-group-hole-r) cw;--__avatar-group-hole-corner-br:arc by calc(var(--__avatar-group-hole-r) * -1) var(--__avatar-group-hole-r) of var(--__avatar-group-hole-r) cw;--__avatar-group-hole-corner-bl:arc by calc(var(--__avatar-group-hole-r) * -1) calc(var(--__avatar-group-hole-r) * -1) of var(--__avatar-group-hole-r) cw;--__avatar-group-hole-corner-tl:arc by var(--__avatar-group-hole-r) calc(var(--__avatar-group-hole-r) * -1) of var(--__avatar-group-hole-r) cw;@supports (corner-shape:squircle){@container root not style(--corner-shape-enable: initial){--__avatar-group-hole-corner-tr:curve by var(--__avatar-group-hole-r) var(--__avatar-group-hole-r) with var(--__avatar-group-hole-corner-inset) 0px /var(--__avatar-group-hole-r) calc(var(--__avatar-group-hole-r) * 0.15);--__avatar-group-hole-corner-br:curve by calc(var(--__avatar-group-hole-r) * -1) var(--__avatar-group-hole-r) with 0px var(--__avatar-group-hole-corner-inset) /calc(var(--__avatar-group-hole-r) * -0.15) var(--__avatar-group-hole-r);--__avatar-group-hole-corner-bl:curve by calc(var(--__avatar-group-hole-r) * -1) calc(var(--__avatar-group-hole-r) * -1) with calc(var(--__avatar-group-hole-corner-inset) * -1) 0px /calc(var(--__avatar-group-hole-r) * -1) calc(var(--__avatar-group-hole-r) * -0.15);--__avatar-group-hole-corner-tl:curve by var(--__avatar-group-hole-r) calc(var(--__avatar-group-hole-r) * -1) with 0px calc(var(--__avatar-group-hole-corner-inset) * -1) /calc(var(--__avatar-group-hole-r) * 0.15) calc(var(--__avatar-group-hole-r) * -1)}}clip-path:shape(evenodd from 0 0,line to 100% 0,line to 100% 100%,line to 0 100%,close,move to calc(var(--__avatar-group-hole-cx) - var(--__avatar-group-hole-half) + var(--__avatar-group-hole-r)) calc(var(--__avatar-group-hole-cy) - var(--__avatar-group-hole-half)),line by var(--__avatar-group-hole-edge) 0,var(--__avatar-group-hole-corner-tr),line by 0 var(--__avatar-group-hole-edge),var(--__avatar-group-hole-corner-br),line by calc(var(--__avatar-group-hole-edge) * -1) 0,var(--__avatar-group-hole-corner-bl),line by 0 calc(var(--__avatar-group-hole-edge) * -1),var(--__avatar-group-hole-corner-tl),close)}}.viraui__avatar-group-module__OverflowWrapper_bKv6I{inline-size:auto}.viraui__avatar-group-module__OverflowPill_nMmTD{min-inline-size:var(--vui-avatar-group-size);block-size:var(--vui-avatar-group-size)}}@layer viraui.overrides{.viraui__avatar-group-module__AvatarGroupItem_Vvlyh{--vui-avatar-radius:var(--vui-avatar-group-item-radius)}}
@@ -4,7 +4,7 @@
4
4
  "summary": "Overlapping avatar stack with shared sizing, directional layout, and an optional overflow pill.",
5
5
  "whenToUse": [
6
6
  "Show a compact list of people or entities with consistent avatar sizing",
7
- "Display overlapping circular identity clusters in horizontal or vertical layouts",
7
+ "Display overlapping identity clusters in horizontal or vertical layouts",
8
8
  "Collapse long avatar lists into a final overflow pill such as +15 or +9938"
9
9
  ],
10
10
  "whenNotToUse": ["Interactive chip collections that need per-item actions", "Mixed avatar sizes inside one group"],
@@ -16,33 +16,40 @@
16
16
  "antiPatterns": [
17
17
  "Passing per-avatar size values instead of using the group size prop",
18
18
  "Expecting AvatarGroup to derive hidden-count labels instead of passing overflowText directly",
19
- "Expecting grouped avatars to follow theme radius tokens instead of always rendering as circles",
19
+ "Expecting grouped avatars to always render as circles items keep theme radius/squircle via --vui-avatar-group-item-radius",
20
20
  "Using non-positive maxVisible values expecting truncation"
21
21
  ],
22
22
  "related": ["Avatar"],
23
23
  "properties": {
24
24
  "react": {
25
+ "avatars": {
26
+ "description": "Supplies the avatar payloads rendered by the group in DOM order."
27
+ },
28
+ "direction": {
29
+ "description": "Chooses whether avatars overlap across the inline or block axis."
30
+ },
31
+ "maxVisible": {
32
+ "description": "Limits how many real avatars render before the optional overflow pill is appended. Omitted, zero, and negative values are ignored."
33
+ },
34
+ "overflowText": {
35
+ "description": "Supplies the content rendered inside the optional overflow pill when truncation is active."
36
+ },
25
37
  "size": {
26
- "description": "Shared avatar footprint for every item in the group.",
27
- "refCss": "size"
38
+ "description": "Selects the shared avatar footprint for every rendered avatar."
28
39
  }
29
40
  },
30
41
  "css": {
31
- "size": {
32
- "description": "Rendered avatar size used for overlap layout.",
33
- "refReact": "size"
34
- },
35
- "overlap-distance": {
36
- "description": "Negative margin overlap between adjacent avatars.",
37
- "refReact": "size"
38
- },
39
42
  "gap-size": {
40
- "description": "Cutout gap used by overlap clip-path math.",
41
- "refReact": "size"
43
+ "description": "Cutout gap used by overlap clip-path math."
42
44
  },
43
45
  "item-radius": {
44
- "description": "Corner radius applied to grouped avatar items.",
45
- "refReact": "size"
46
+ "description": "Corner radius applied to grouped avatar items."
47
+ },
48
+ "overlap-distance": {
49
+ "description": "Negative margin overlap between adjacent avatars."
50
+ },
51
+ "size": {
52
+ "description": "Rendered avatar size used for overlap layout."
46
53
  }
47
54
  }
48
55
  }
@@ -1 +1 @@
1
- @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-badge-size{syntax:"<length>";inherits:true;initial-value:12px}@property --vui-badge-color{syntax:"<color>";inherits:true;initial-value:#292929}@property --_badge-hole-progress{syntax:"<number>";inherits:true;initial-value:0}.viraui__badge-module__Badge_lJqlY{--vui-badge-color:var(--global-primary);--vui-badge-size:0.074rem;--vui-badge-position-x:100%;--vui-badge-position-y:0%;--_badge-gap:calc(var(--vui-badge-size) * 0.25);--_badge-mask-size:calc(var(--vui-badge-size) / 2 + var(--_badge-gap));--_badge-hole-progress:0;position:relative;display:inline-flex;&[data-position=top-end]{--vui-badge-position-x:100%;--vui-badge-position-y:0%}&[data-position=top-start]{--vui-badge-position-x:0%;--vui-badge-position-y:0%}&[data-position=bottom-end]{--vui-badge-position-x:100%;--vui-badge-position-y:100%}&[data-position=bottom-start]{--vui-badge-position-x:0%;--vui-badge-position-y:100%}&>*{outline-offset:-4px}&[data-show=true]{&:after{content:"";width:var(--vui-badge-size);aspect-ratio:1;display:block;border-radius:100000px;background:var(--vui-badge-color);position:absolute;left:calc(var(--vui-badge-position-x) - min(var(--vui-badge-position-x), var(--vui-badge-size)));top:calc(var(--vui-badge-position-y) - min(var(--vui-badge-position-y), var(--vui-badge-size)));pointer-events:none;transform-origin:center}&:not([data-exit]):after{transform:scale(0);animation:viraui__badge-module__badge-dot-in_SKMx8 var(--duration-fast) var(--easing-entrance) 60ms forwards}&[data-exit]:after{transform:scale(1);animation:viraui__badge-module__badge-dot-out_vWhcP var(--duration-fast) var(--easing-entrance) forwards}&>*{mask-image:radial-gradient(circle at calc(var(--vui-badge-position-x) - min(var(--vui-badge-position-x), var(--vui-badge-size)) + (var(--vui-badge-size) / 2)) calc(var(--vui-badge-position-y) - min(var(--vui-badge-position-y), var(--vui-badge-size)) + (var(--vui-badge-size) / 2)),#0000 0 calc(var(--_badge-mask-size) * var(--_badge-hole-progress)),red calc(var(--_badge-mask-size) * var(--_badge-hole-progress) + 1px))}&:not([data-exit])>*{animation:viraui__badge-module__badge-hole-in_71iZP var(--duration-fast) var(--easing-entrance) forwards}&[data-exit]>*{--_badge-hole-progress:1;animation:viraui__badge-module__badge-hole-out_JCHCf var(--duration-fast) var(--easing-entrance) 60ms forwards}@media (prefers-reduced-motion:reduce){&:after{transform:none}&:after,&>*{animation:none}&>*{--_badge-hole-progress:1}&[data-exit]>*{--_badge-hole-progress:0}}}}@keyframes viraui__badge-module__badge-hole-in_71iZP{0%{--_badge-hole-progress:0}to{--_badge-hole-progress:1}}@keyframes viraui__badge-module__badge-hole-out_JCHCf{0%{--_badge-hole-progress:1}to{--_badge-hole-progress:0}}@keyframes viraui__badge-module__badge-dot-in_SKMx8{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes viraui__badge-module__badge-dot-out_vWhcP{0%{transform:scale(1)}to{transform:scale(0)}}}
1
+ @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-badge-size{syntax:"<length>";inherits:true;initial-value:.5rem}@property --vui-badge-color{syntax:"<color>";inherits:true;initial-value:#292929}@property --vui-badge-position-x{syntax:"<length-percentage>";inherits:true;initial-value:100%}@property --vui-badge-position-y{syntax:"<length-percentage>";inherits:true;initial-value:0%}@property --__badge-gap{syntax:"<length>";inherits:true;initial-value:0}@property --__badge-mask-size{syntax:"<length>";inherits:true;initial-value:0}@property --__badge-hole-progress{syntax:"<number>";inherits:true;initial-value:0}@property --__badge-motion-delay{syntax:"<time>";inherits:true;initial-value:.16s}.viraui__badge-module__Badge_lJqlY{--vui-badge-color:var(--global-primary);--__badge-gap:calc(var(--vui-badge-size) * 0.25);--__badge-mask-size:calc(var(--vui-badge-size) / 2 + var(--__badge-gap));position:relative;display:inline-flex;&[data-position=top-end]{--vui-badge-position-x:100%;--vui-badge-position-y:0%}&[data-position=top-start]{--vui-badge-position-x:0%;--vui-badge-position-y:0%}&[data-position=bottom-end]{--vui-badge-position-x:100%;--vui-badge-position-y:100%}&[data-position=bottom-start]{--vui-badge-position-x:0%;--vui-badge-position-y:100%}&>*{outline-offset:-4px}&[data-show=true]{&:after{content:"";width:var(--vui-badge-size);aspect-ratio:1;display:block;border-radius:100000px;background:var(--vui-badge-color);position:absolute;left:calc(var(--vui-badge-position-x) - min(var(--vui-badge-position-x), var(--vui-badge-size)));top:calc(var(--vui-badge-position-y) - min(var(--vui-badge-position-y), var(--vui-badge-size)));pointer-events:none;transform-origin:center}&:not([data-exit]):after{transform:scale(0);animation:viraui__badge-module__badge-dot-in_SKMx8 var(--duration-fast) var(--easing-entrance) forwards;animation-delay:var(--__badge-motion-delay)}&[data-exit]:after{transform:scale(1);animation:viraui__badge-module__badge-dot-out_vWhcP var(--duration-fast) var(--easing-entrance) forwards}&>*{mask-image:radial-gradient(circle at calc(var(--vui-badge-position-x) - min(var(--vui-badge-position-x), var(--vui-badge-size)) + (var(--vui-badge-size) / 2)) calc(var(--vui-badge-position-y) - min(var(--vui-badge-position-y), var(--vui-badge-size)) + (var(--vui-badge-size) / 2)),#0000 0 calc(var(--__badge-mask-size) * var(--__badge-hole-progress)),red calc(var(--__badge-mask-size) * var(--__badge-hole-progress) + 1px))}&:not([data-exit])>*{animation:viraui__badge-module__badge-hole-in_71iZP var(--duration-fast) var(--easing-entrance) forwards}&[data-exit]>*{--__badge-hole-progress:1;animation:viraui__badge-module__badge-hole-out_JCHCf var(--duration-fast) var(--easing-entrance) forwards;animation-delay:var(--__badge-motion-delay)}@media (prefers-reduced-motion:reduce){&:after{transform:none}&:after,&>*{animation:none}&>*{--__badge-hole-progress:1}&[data-exit]>*{--__badge-hole-progress:0}}}}@keyframes viraui__badge-module__badge-hole-in_71iZP{0%{--__badge-hole-progress:0}to{--__badge-hole-progress:1}}@keyframes viraui__badge-module__badge-hole-out_JCHCf{0%{--__badge-hole-progress:1}to{--__badge-hole-progress:0}}@keyframes viraui__badge-module__badge-dot-in_SKMx8{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes viraui__badge-module__badge-dot-out_vWhcP{0%{transform:scale(1)}to{transform:scale(0)}}}
@@ -13,7 +13,7 @@ export type BadgeProps = React.ComponentPropsWithRef<'div'> & {
13
13
  /**
14
14
  * Diameter of the status dot via `--vui-badge-size`.
15
15
  *
16
- * @default '12px'
16
+ * @default '0.5rem'
17
17
  */
18
18
  size?: string;
19
19
  /**
@@ -26,29 +26,33 @@
26
26
  "related": ["Avatar", "AvatarGroup", "Chip", "Annotate"],
27
27
  "properties": {
28
28
  "react": {
29
- "size": {
30
- "description": "Diameter of the status dot via --vui-badge-size. Defaults to 12px.",
31
- "refCss": "size"
32
- },
33
29
  "color": {
34
- "description": "Highlight token driving the status-dot color via --vui-badge-color. When omitted, falls back to var(--global-primary).",
35
- "refCss": "color"
30
+ "description": "Highlight token driving the status-dot color via `--vui-badge-color`."
31
+ },
32
+ "position": {
33
+ "description": "Places the status dot on a corner of the wrapped content."
36
34
  },
37
35
  "show": {
38
- "description": "When true, shows the decorative status dot and applies the radial mask cutout to the direct child. Enter: hole expands from center, then the dot scales in. Exit: reverse (dot then hole). Defaults to false."
36
+ "description": "When true, shows the decorative status dot and applies the radial mask cutout. Enter: hole expands, then the dot scales in. Exit: reverse (dot then hole)."
39
37
  },
40
- "position": {
41
- "description": "Corner placement for the status dot (top-end, top-start, bottom-end, bottom-start). Defaults to top-end."
38
+ "size": {
39
+ "description": "Diameter of the status dot via `--vui-badge-size`.",
40
+ "refCss": "size"
42
41
  }
43
42
  },
44
43
  "css": {
44
+ "color": {
45
+ "description": "Status-dot accent color. Defaults to var(--global-primary)."
46
+ },
47
+ "position-x": {
48
+ "description": "Horizontal status-dot anchor. Position presets set it to 0% for start or 100% for end."
49
+ },
50
+ "position-y": {
51
+ "description": "Vertical status-dot anchor. Position presets set it to 0% for top or 100% for bottom."
52
+ },
45
53
  "size": {
46
54
  "description": "Status-dot diameter. Defaults to 12px.",
47
55
  "refReact": "size"
48
- },
49
- "color": {
50
- "description": "Status-dot accent color. Defaults to var(--global-primary).",
51
- "refReact": "color"
52
56
  }
53
57
  }
54
58
  }
@@ -5,7 +5,7 @@ import { jsx } from "react/jsx-runtime";
5
5
  import { useEffect, useState } from "react";
6
6
  //#region src/components/badge/badge.tsx
7
7
  var prefersReducedMotion = () => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
8
- var Badge = ({ size = "10px", children, className, color, position = "top-end", ref, show = false, style, ...otherProps }) => {
8
+ var Badge = ({ size = "0.5rem", children, className, color, position = "top-end", ref, show = false, style, ...otherProps }) => {
9
9
  const [present, setPresent] = useState(show);
10
10
  const [exiting, setExiting] = useState(false);
11
11
  useEffect(() => {
@@ -1 +1 @@
1
- @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-basic-input-background{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-basic-input-border-radius{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --vui-basic-input-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-basic-input-font-size{syntax:"<length>";inherits:false;initial-value:1rem}@property --vui-basic-input-padding-inline{syntax:"<length>";inherits:false;initial-value:0}@property --vui-basic-input-placeholder-color{syntax:"<color>";inherits:false;initial-value:#0000}.viraui__basic-input-module__BasicInput_5uE64{--vui-basic-input-background:var(--base-1);--vui-basic-input-color:var(--global-foreground);--vui-basic-input-placeholder-color:var(--global-disabled-foreground);--vui-basic-input-padding-inline:var(--space-small);--vui-basic-input-font-size:var(--font-scale-body-small);--vui-basic-input-border-radius:var(--radius-medium);box-sizing:border-box;margin:0;inline-size:100%;min-inline-size:0;padding-inline:var(--vui-basic-input-padding-inline);font-family:inherit;font-size:var(--vui-basic-input-font-size);font-variation-settings:"wght" 400;color:var(--vui-basic-input-color);background:var(--vui-basic-input-background);border:none;border-radius:var(--vui-basic-input-border-radius);appearance:none;&::-webkit-contacts-auto-fill-button{background-color:var(--vui-basic-input-color)}&::placeholder{color:var(--vui-basic-input-placeholder-color)}&:disabled{--vui-basic-input-background:var(--global-disabled-background);--vui-basic-input-color:var(--global-disabled-foreground);--vui-basic-input-placeholder-color:var(--global-disabled-foreground);cursor:not-allowed}&[data-invalid]{outline-color:oklab(from var(--highlight-red) l a b/.3)}&[data-sizing=content]{field-sizing:content}}}
1
+ @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-basic-input-background{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-basic-input-border-radius{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --vui-basic-input-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-basic-input-font-size{syntax:"<length>";inherits:false;initial-value:1rem}@property --vui-basic-input-padding-inline{syntax:"<length>";inherits:false;initial-value:0}@property --vui-basic-input-placeholder-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-field-label-padding-inline{syntax:"<length>";inherits:true;initial-value:0}.viraui__basic-input-module__BasicInput_5uE64{--vui-basic-input-background:var(--base-1);--vui-basic-input-color:var(--global-foreground);--vui-basic-input-placeholder-color:var(--global-disabled-foreground);--vui-basic-input-padding-inline:var(--space-small);--vui-basic-input-font-size:var(--font-scale-body-small);--vui-basic-input-border-radius:var(--radius-medium);box-sizing:border-box;margin:0;inline-size:100%;min-inline-size:0;padding-inline:var(--vui-basic-input-padding-inline);font-family:inherit;font-size:var(--vui-basic-input-font-size);font-variation-settings:"wght" 400;color:var(--vui-basic-input-color);background:var(--vui-basic-input-background);border:none;border-radius:var(--vui-basic-input-border-radius);appearance:none;&::-webkit-contacts-auto-fill-button{background-color:var(--vui-basic-input-color)}&::placeholder{color:var(--vui-basic-input-placeholder-color)}&:disabled{--vui-basic-input-background:var(--global-disabled-background);--vui-basic-input-color:var(--global-disabled-foreground);--vui-basic-input-placeholder-color:var(--global-disabled-foreground);cursor:not-allowed}&[data-invalid]{outline-color:oklab(from var(--highlight-red) l a b/.3)}&[data-sizing=content]{field-sizing:content}}}
@@ -1 +1 @@
1
- @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.overrides{.viraui__field-label-module__FieldLabel_R9SYf{display:inline;flex-direction:column;align-items:stretch;inline-size:100%;padding-inline:var(--vui-field-label-padding-inline,0)}}
1
+ @layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-basic-input-background{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-basic-input-border-radius{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --vui-basic-input-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-basic-input-font-size{syntax:"<length>";inherits:false;initial-value:1rem}@property --vui-basic-input-padding-inline{syntax:"<length>";inherits:false;initial-value:0}@property --vui-basic-input-placeholder-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-field-label-padding-inline{syntax:"<length>";inherits:true;initial-value:0}}@layer viraui.overrides{.viraui__field-label-module__FieldLabel_R9SYf{padding-inline:var(--vui-field-label-padding-inline)}}
@@ -2,6 +2,7 @@ import './field-label.css';
2
2
  import { clsx } from "../../core/clsx.js";
3
3
  import { Text } from "../text/text.js";
4
4
  import field_label_module_default from "./field-label.module.js";
5
+ import { Stack } from "../stack/stack.js";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
  //#region src/components/basic-input/field-label.tsx
7
8
  /**
@@ -16,6 +17,7 @@ var FieldLabel = ({ children, className, size = "small", ...textProps }) => /* @
16
17
  lineHeight: "small",
17
18
  selection: false,
18
19
  size,
20
+ render: /* @__PURE__ */ jsx(Stack, { render: /* @__PURE__ */ jsx("span", {}) }),
19
21
  weight: "semibold",
20
22
  ...textProps,
21
23
  children