@viraui/react 0.0.25 → 0.0.27

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 (186) hide show
  1. package/dist/catalog.json +116 -68
  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 +17 -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/avatar.module.js +8 -4
  14. package/dist/components/avatar-group/avatar-group.css +2 -2
  15. package/dist/components/avatar-group/avatar-group.guide.json +27 -1
  16. package/dist/components/avatar-group/avatar-group.js +2 -2
  17. package/dist/components/avatar-group/avatar-group.module.js +12 -6
  18. package/dist/components/basic-input/basic-input.css +1 -1
  19. package/dist/components/basic-input/basic-input.js +3 -3
  20. package/dist/components/basic-input/basic-input.module.js +4 -2
  21. package/dist/components/basic-input/field-label.css +1 -1
  22. package/dist/components/basic-input/field-label.module.js +4 -2
  23. package/dist/components/bleed/bleed.css +1 -0
  24. package/dist/components/bleed/bleed.d.ts +26 -0
  25. package/dist/components/bleed/bleed.guide.json +39 -0
  26. package/dist/components/bleed/bleed.js +24 -0
  27. package/dist/components/bleed/bleed.module.js +5 -0
  28. package/dist/components/bleed/index.d.ts +2 -0
  29. package/dist/components/button/button.css +1 -1
  30. package/dist/components/button/button.guide.json +33 -3
  31. package/dist/components/button/button.js +1 -1
  32. package/dist/components/button/button.module.js +8 -4
  33. package/dist/components/checkbox/checkbox-group.js +2 -2
  34. package/dist/components/checkbox/checkbox.css +1 -1
  35. package/dist/components/checkbox/checkbox.js +1 -1
  36. package/dist/components/checkbox/checkbox.module.js +16 -8
  37. package/dist/components/chip/chip.css +1 -1
  38. package/dist/components/chip/chip.guide.json +26 -1
  39. package/dist/components/chip/chip.module.js +10 -5
  40. package/dist/components/clamp-text/clamp-text.css +1 -1
  41. package/dist/components/clamp-text/clamp-text.guide.json +15 -1
  42. package/dist/components/clamp-text/clamp-text.js +1 -1
  43. package/dist/components/clamp-text/clamp-text.module.js +4 -2
  44. package/dist/components/dialog/dialog-close.js +2 -2
  45. package/dist/components/dialog/dialog-indent-background.js +2 -2
  46. package/dist/components/dialog/dialog-indent.js +2 -2
  47. package/dist/components/dialog/dialog-sheet.js +3 -3
  48. package/dist/components/dialog/dialog-trigger.js +2 -2
  49. package/dist/components/dialog/dialog.css +1 -1
  50. package/dist/components/dialog/dialog.d.ts +5 -4
  51. package/dist/components/dialog/dialog.guide.json +15 -1
  52. package/dist/components/dialog/dialog.js +4 -3
  53. package/dist/components/dialog/dialog.module.js +24 -12
  54. package/dist/components/elevator/elevator.js +2 -2
  55. package/dist/components/fieldset/fieldset.js +1 -1
  56. package/dist/components/icon/icon.module.js +4 -2
  57. package/dist/components/icon-button/icon-button.js +2 -2
  58. package/dist/components/index.d.ts +21 -13
  59. package/dist/components/linear-progress/linear-progress.css +1 -1
  60. package/dist/components/linear-progress/linear-progress.guide.json +14 -1
  61. package/dist/components/linear-progress/linear-progress.js +1 -1
  62. package/dist/components/linear-progress/linear-progress.module.js +8 -4
  63. package/dist/components/masonry/masonry.css +1 -1
  64. package/dist/components/masonry/masonry.guide.json +42 -1
  65. package/dist/components/masonry/masonry.js +3 -3
  66. package/dist/components/masonry/masonry.module.js +6 -3
  67. package/dist/components/meter/index.d.ts +2 -0
  68. package/dist/components/meter/meter.css +1 -0
  69. package/dist/components/meter/meter.d.ts +44 -0
  70. package/dist/components/meter/meter.guide.json +39 -0
  71. package/dist/components/meter/meter.js +59 -0
  72. package/dist/components/meter/meter.module.js +11 -0
  73. package/dist/components/popover/index.d.ts +4 -0
  74. package/dist/components/popover/popover-sheet.d.ts +65 -0
  75. package/dist/components/popover/popover-sheet.js +79 -0
  76. package/dist/components/popover/popover.css +1 -0
  77. package/dist/components/popover/popover.d.ts +74 -0
  78. package/dist/components/popover/popover.guide.json +28 -0
  79. package/dist/components/popover/popover.js +23 -0
  80. package/dist/components/popover/popover.module.js +13 -0
  81. package/dist/components/progressive-blur/progressive-blur.css +1 -1
  82. package/dist/components/progressive-blur/progressive-blur.guide.json +15 -1
  83. package/dist/components/progressive-blur/progressive-blur.js +1 -1
  84. package/dist/components/progressive-blur/progressive-blur.module.js +6 -3
  85. package/dist/components/radio/radio-group.d.ts +1 -1
  86. package/dist/components/radio/radio-group.js +2 -2
  87. package/dist/components/radio/radio.css +1 -1
  88. package/dist/components/radio/radio.js +1 -1
  89. package/dist/components/radio/radio.module.js +8 -4
  90. package/dist/components/select/select-group.js +1 -1
  91. package/dist/components/select/select-option.js +3 -3
  92. package/dist/components/select/select.css +1 -1
  93. package/dist/components/select/select.guide.json +26 -1
  94. package/dist/components/select/select.js +5 -4
  95. package/dist/components/select/select.module.js +36 -18
  96. package/dist/components/separator/separator.css +1 -1
  97. package/dist/components/separator/separator.js +1 -1
  98. package/dist/components/separator/separator.module.js +4 -2
  99. package/dist/components/shimmer/shimmer.css +1 -1
  100. package/dist/components/shimmer/shimmer.guide.json +39 -1
  101. package/dist/components/shimmer/shimmer.js +4 -4
  102. package/dist/components/shimmer/shimmer.module.js +4 -2
  103. package/dist/components/skeleton/skeleton.css +1 -1
  104. package/dist/components/skeleton/skeleton.guide.json +50 -1
  105. package/dist/components/skeleton/skeleton.js +5 -5
  106. package/dist/components/skeleton/skeleton.module.js +4 -2
  107. package/dist/components/slider/slider.css +1 -1
  108. package/dist/components/slider/slider.guide.json +20 -1
  109. package/dist/components/slider/slider.js +1 -1
  110. package/dist/components/slider/slider.module.js +20 -10
  111. package/dist/components/spinner/spinner.css +1 -1
  112. package/dist/components/spinner/spinner.guide.json +15 -1
  113. package/dist/components/spinner/spinner.module.js +6 -3
  114. package/dist/components/stack/stack.css +1 -1
  115. package/dist/components/stack/stack.guide.json +77 -1
  116. package/dist/components/stack/stack.js +8 -8
  117. package/dist/components/stack/stack.module.js +4 -2
  118. package/dist/components/static-noise/static-noise.module.js +6 -3
  119. package/dist/components/surface/surface-radius-context.js +7 -7
  120. package/dist/components/surface/surface.css +1 -1
  121. package/dist/components/surface/surface.d.ts +1 -1
  122. package/dist/components/surface/surface.guide.json +85 -1
  123. package/dist/components/surface/surface.js +6 -6
  124. package/dist/components/surface/surface.module.js +4 -2
  125. package/dist/components/switch/switch.css +1 -1
  126. package/dist/components/switch/switch.guide.json +32 -1
  127. package/dist/components/switch/switch.js +1 -1
  128. package/dist/components/switch/switch.module.js +10 -5
  129. package/dist/components/tabs/tabs-indicator.js +2 -2
  130. package/dist/components/tabs/tabs-list.js +2 -2
  131. package/dist/components/tabs/tabs-panel.js +2 -2
  132. package/dist/components/tabs/tabs-tab.js +2 -2
  133. package/dist/components/tabs/tabs-viewport.js +2 -2
  134. package/dist/components/tabs/tabs.css +1 -1
  135. package/dist/components/tabs/tabs.guide.json +8 -1
  136. package/dist/components/tabs/tabs.js +2 -2
  137. package/dist/components/tabs/tabs.module.js +16 -8
  138. package/dist/components/text/text.css +1 -1
  139. package/dist/components/text/text.guide.json +125 -1
  140. package/dist/components/text/text.js +11 -11
  141. package/dist/components/text/text.module.js +4 -2
  142. package/dist/components/textarea/textarea.css +1 -1
  143. package/dist/components/textarea/textarea.guide.json +14 -1
  144. package/dist/components/textarea/textarea.js +1 -1
  145. package/dist/components/textarea/textarea.module.js +10 -5
  146. package/dist/components/textfield/textfield.css +1 -1
  147. package/dist/components/textfield/textfield.guide.json +20 -1
  148. package/dist/components/textfield/textfield.js +1 -1
  149. package/dist/components/textfield/textfield.module.js +14 -7
  150. package/dist/components/title/title.css +1 -1
  151. package/dist/components/title/title.guide.json +123 -1
  152. package/dist/components/title/title.js +11 -11
  153. package/dist/components/title/title.module.js +4 -2
  154. package/dist/components/toast/toast-action.js +2 -2
  155. package/dist/components/toast/toast-banner.js +1 -1
  156. package/dist/components/toast/toast-viewport.js +2 -2
  157. package/dist/components/toast/toast.css +1 -1
  158. package/dist/components/toast/toast.module.js +8 -4
  159. package/dist/components/toggle-button/index.d.ts +2 -0
  160. package/dist/components/toggle-button/toggle-button.d.ts +39 -0
  161. package/dist/components/toggle-button/toggle-button.guide.json +25 -0
  162. package/dist/components/toggle-button/toggle-button.js +25 -0
  163. package/dist/components/toggle-group/index.d.ts +2 -0
  164. package/dist/components/toggle-group/toggle-group.d.ts +11 -0
  165. package/dist/components/toggle-group/toggle-group.guide.json +26 -0
  166. package/dist/components/toggle-group/toggle-group.js +15 -0
  167. package/dist/components/tooltip/index.d.ts +6 -0
  168. package/dist/components/tooltip/tooltip-content.d.ts +15 -0
  169. package/dist/components/tooltip/tooltip-content.js +32 -0
  170. package/dist/components/tooltip/tooltip.css +1 -0
  171. package/dist/components/tooltip/tooltip.d.ts +13 -0
  172. package/dist/components/tooltip/tooltip.guide.json +25 -0
  173. package/dist/components/tooltip/tooltip.js +20 -0
  174. package/dist/components/tooltip/tooltip.module.js +11 -0
  175. package/dist/components/typewriter/index.d.ts +3 -0
  176. package/dist/components/typewriter/typewriter.css +1 -0
  177. package/dist/components/typewriter/typewriter.d.ts +68 -0
  178. package/dist/components/typewriter/typewriter.guide.json +39 -0
  179. package/dist/components/typewriter/typewriter.js +105 -0
  180. package/dist/components/typewriter/typewriter.module.js +18 -0
  181. package/dist/components/typewriter/typewriter.utils.d.ts +23 -0
  182. package/dist/components/typewriter/typewriter.utils.js +100 -0
  183. package/dist/index.js +26 -16
  184. package/dist/preflight-surface.json +17 -4
  185. package/dist/preflight.css +1 -1
  186. package/package.json +6 -6
@@ -1 +1 @@
1
- .viraui__tabs-module__Tabs_AwbZZ{--tabs-translate-amount:10px;min-block-size:10rem}.viraui__tabs-module__Viewport_15X1I{display:grid;grid-template-columns:minmax(0,1fr);inline-size:100%}.viraui__tabs-module__List_XJorr{position:relative;overflow-x:auto}.viraui__tabs-module__Indicator_UyNUn{position:absolute;pointer-events:none;inset-block-start:var(--active-tab-top);inset-inline-start:var(--active-tab-left);inline-size:var(--active-tab-width);block-size:var(--active-tab-height);transition:inset-inline-start var(--duration-fast) var(--easing-standard),inset-block-start var(--duration-fast) var(--easing-standard),inline-size var(--duration-fast) var(--easing-standard),block-size var(--duration-fast) var(--easing-standard)}.viraui__tabs-module__Item_XZ86Z{position:relative;flex-shrink:0;cursor:pointer;flex-basis:0;transition:none;will-change:auto;&[data-variant]:not(:disabled):active{translate:0 0}&:hover{background:#0000}&[data-disabled]{opacity:.5;background:#0000}&[data-active]{color:var(--global-foreground)}&:focus-visible{border-radius:var(--radius-small);outline-offset:0}}.viraui__tabs-module__Item_XZ86Z[data-active] .viraui__tabs-module__Label_5-8-Y{color:var(--global-foreground)}.viraui__tabs-module__Panel_vkCFI{grid-area:1/1;inline-size:100%;opacity:1;translate:0 0;transition:opacity var(--duration-fast) var(--easing-entrance),translate var(--duration-fast) var(--easing-entrance);&[data-ending-style]{pointer-events:none}&[data-ending-style],&[data-starting-style]{opacity:0}&[data-activation-direction=right][data-starting-style]{translate:var(--tabs-translate-amount) 0}&[data-activation-direction=left][data-starting-style],&[data-activation-direction=right][data-ending-style]{translate:calc(var(--tabs-translate-amount) * -1) 0}&[data-activation-direction=left][data-ending-style]{translate:var(--tabs-translate-amount) 0}&[data-activation-direction=none][data-ending-style],&[data-activation-direction=none][data-starting-style]{translate:0 var(--tabs-translate-amount)}&[hidden]{display:none}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style],&[data-starting-style]{opacity:1;translate:0 0}}}
1
+ .viraui__tabs-module__Tabs_AwbZZ{--vui-tabs-translate-amount:10px;min-block-size:10rem}.viraui__tabs-module__Viewport_15X1I{display:grid;grid-template-columns:minmax(0,1fr);inline-size:100%}.viraui__tabs-module__List_XJorr{position:relative;overflow-x:auto}.viraui__tabs-module__Indicator_UyNUn{position:absolute;pointer-events:none;inset-block-start:var(--active-tab-top);inset-inline-start:var(--active-tab-left);inline-size:var(--active-tab-width);block-size:var(--active-tab-height);transition:inset-inline-start var(--duration-fast) var(--easing-standard),inset-block-start var(--duration-fast) var(--easing-standard),inline-size var(--duration-fast) var(--easing-standard),block-size var(--duration-fast) var(--easing-standard)}.viraui__tabs-module__Item_XZ86Z{position:relative;flex-shrink:0;cursor:pointer;flex-basis:0;transition:none;will-change:auto;&[data-variant]:not(:disabled):active{translate:0 0}&:hover{background:#0000}&[data-disabled]{opacity:.5;background:#0000}&[data-active]{color:var(--global-foreground)}&:focus-visible{border-radius:var(--radius-small);outline-offset:0}}.viraui__tabs-module__Item_XZ86Z[data-active] .viraui__tabs-module__Label_5-8-Y{color:var(--global-foreground)}.viraui__tabs-module__Panel_vkCFI{grid-area:1/1;inline-size:100%;opacity:1;translate:0 0;transition:opacity var(--duration-fast) var(--easing-entrance),translate var(--duration-fast) var(--easing-entrance);&[data-ending-style]{pointer-events:none}&[data-ending-style],&[data-starting-style]{opacity:0}&[data-activation-direction=right][data-starting-style]{translate:var(--vui-tabs-translate-amount) 0}&[data-activation-direction=left][data-starting-style],&[data-activation-direction=right][data-ending-style]{translate:calc(var(--vui-tabs-translate-amount) * -1) 0}&[data-activation-direction=left][data-ending-style]{translate:var(--vui-tabs-translate-amount) 0}&[data-activation-direction=none][data-ending-style],&[data-activation-direction=none][data-starting-style]{translate:0 var(--vui-tabs-translate-amount)}&[hidden]{display:none}@media (prefers-reduced-motion:reduce){transition:none;&[data-ending-style],&[data-starting-style]{opacity:1;translate:0 0}}}
@@ -19,5 +19,12 @@
19
19
  "Using addons as the only visible label for a tab",
20
20
  "Trying to compose a separate public `Tabs.Indicator`; the indicator is owned by `Tabs.List`"
21
21
  ],
22
- "related": ["Surface", "Stack", "Text"]
22
+ "related": ["Surface", "Stack", "Text"],
23
+ "properties": {
24
+ "css": {
25
+ "translate-amount": {
26
+ "description": "Panel entry translate distance for tab transitions."
27
+ }
28
+ }
29
+ }
23
30
  }
@@ -10,14 +10,14 @@ import { jsx } from "react/jsx-runtime";
10
10
  import "react";
11
11
  import { Tabs } from "@base-ui/react/tabs";
12
12
  //#region src/components/tabs/tabs.tsx
13
- var TabsRootComponent = ({ children, className, listAlignment = "start", ...props }) => /* @__PURE__ */ jsx(Tabs.Root, {
13
+ var TabsRootComponent = ({ children, className, listAlignment = "start", ...otherProps }) => /* @__PURE__ */ jsx(Tabs.Root, {
14
14
  render: /* @__PURE__ */ jsx(Stack, {
15
15
  hAlign: listAlignment,
16
16
  vAlign: "start",
17
17
  fillChildren: false,
18
18
  className: clsx(tabs_module_default.Tabs, className)
19
19
  }),
20
- ...props,
20
+ ...otherProps,
21
21
  children
22
22
  });
23
23
  var Tabs$1 = Object.assign(TabsRootComponent, {
@@ -1,11 +1,19 @@
1
+ //#region src/components/tabs/tabs.module.css
2
+ var Tabs = "viraui__tabs-module__Tabs_AwbZZ";
3
+ var Viewport = "viraui__tabs-module__Viewport_15X1I";
4
+ var List = "viraui__tabs-module__List_XJorr";
5
+ var Indicator = "viraui__tabs-module__Indicator_UyNUn";
6
+ var Item = "viraui__tabs-module__Item_XZ86Z";
7
+ var Label = "viraui__tabs-module__Label_5-8-Y";
8
+ var Panel = "viraui__tabs-module__Panel_vkCFI";
1
9
  var tabs_module_default = {
2
- Tabs: "viraui__tabs-module__Tabs_AwbZZ",
3
- Viewport: "viraui__tabs-module__Viewport_15X1I",
4
- List: "viraui__tabs-module__List_XJorr",
5
- Indicator: "viraui__tabs-module__Indicator_UyNUn",
6
- Item: "viraui__tabs-module__Item_XZ86Z",
7
- Label: "viraui__tabs-module__Label_5-8-Y",
8
- Panel: "viraui__tabs-module__Panel_vkCFI"
10
+ Tabs,
11
+ Viewport,
12
+ List,
13
+ Indicator,
14
+ Item,
15
+ Label,
16
+ Panel
9
17
  };
10
18
  //#endregion
11
- export { tabs_module_default as default };
19
+ export { Indicator, Item, Label, List, Panel, Tabs, Viewport, tabs_module_default as default };
@@ -1 +1 @@
1
- .viraui__text-module__Text_bS8kv{--text-medium:clamp(var(--font-scale-body-medium),calc(var(--font-scale-body-medium) + var(--font-scale-body-x-small) / 12 + 0.24cqi),calc(var(--font-scale-body-medium) + var(--font-scale-body-x-small) / 3));--text-align:start;--text-max-width:none;--text-white-space:normal;--text-padding-inline-start:0;--text-padding-inline-end:0;--text-padding-block-start:0;--text-padding-block-end:0;--text-font-family:var(--font-family-body);--text-font-size:clamp(var(--font-scale-body-small),var(--text-medium),var(--font-scale-body-medium));--text-font-weight:400;--text-font-width:100;--text-font-opsz:16;--text-line-height:var(--font-leading-standard);margin:0;min-inline-size:0;max-inline-size:var(--text-max-width);font-family:var(--text-font-family);font-size:var(--text-font-size);line-height:var(--text-line-height);text-align:var(--text-align);white-space:var(--text-white-space);word-break:break-word;font-optical-sizing:auto;font-variation-settings:"wght" var(--text-font-weight),"wdth" var(--text-font-width),"opsz" var(--text-font-opsz);text-box:var(--text-trim) var(--text-trim-type);&[data-text-balanced=true]{text-wrap:balance}&[data-text-selection=false]{-webkit-user-select:none;user-select:none}&[data-text-has-padding=true]{padding:var(--text-padding-block-start) var(--text-padding-inline-end) var(--text-padding-block-end) var(--text-padding-inline-start)}&[data-text-family=mono]{--text-font-family:var(--font-family-mono)}&[data-text-size=x-large]{--text-font-size:clamp(var(--font-scale-body-large),calc(var(--text-medium) * pow(var(--font-heading-typescale), 2)),var(--font-scale-body-x-large))}&[data-text-size=large]{--text-font-size:clamp(var(--font-scale-body-medium),calc(var(--text-medium) * pow(var(--font-heading-typescale), 1)),var(--font-scale-body-large))}&[data-text-size=medium]{--text-font-size:clamp(var(--font-scale-body-small),var(--text-medium),var(--font-scale-body-medium))}&[data-text-size=small]{--text-font-size:clamp(var(--font-scale-body-x-small),calc(var(--text-medium) * pow(var(--font-heading-typescale), -0.1)),var(--font-scale-body-small))}&[data-text-size=x-small]{--text-font-size:var(--font-scale-body-x-small)}&[data-text-weight=light]{--text-font-weight:200}&[data-text-weight=semibold]{--text-font-weight:600}&[data-text-weight=bold]{--text-font-weight:800}&[data-text-tone=muted]{color:var(--global-muted)}&[data-text-tone=interactive]{color:var(--global-interactive-text)}&[data-text-tone=positive]{color:var(--highlight-green)}&[data-text-tone=informative]{color:var(--highlight-blue)}&[data-text-tone=danger]{color:var(--highlight-red)}&[data-text-tone=warning]{color:var(--highlight-yellow)}&[data-text-has-literal-color=true]{color:var(--text-literal-color)}&[data-text-line-height=none]{--text-line-height:0}&[data-text-line-height=x-small]{--text-line-height:var(--font-leading-x-small)}&[data-text-line-height=small]{--text-line-height:var(--font-leading-small)}&[data-text-line-height=large]{--text-line-height:var(--font-leading-large)}}
1
+ .viraui__text-module__Text_bS8kv{--text-medium:clamp(var(--font-scale-body-medium),calc(var(--font-scale-body-medium) + var(--font-scale-body-x-small) / 12 + 0.24cqi),calc(var(--font-scale-body-medium) + var(--font-scale-body-x-small) / 3));--vui-text-align:start;--vui-text-max-width:none;--vui-text-white-space:normal;--vui-text-padding-inline-start:0;--vui-text-padding-inline-end:0;--vui-text-padding-block-start:0;--vui-text-padding-block-end:0;--vui-text-font-family:var(--font-family-body);--vui-text-font-size:clamp(var(--font-scale-body-small),var(--text-medium),var(--font-scale-body-medium));--vui-text-font-weight:400;--vui-text-font-width:100;--vui-text-font-opsz:16;--vui-text-line-height:var(--font-leading-standard);margin:0;min-inline-size:0;max-inline-size:var(--vui-text-max-width);font-family:var(--vui-text-font-family);font-size:var(--vui-text-font-size);line-height:var(--vui-text-line-height);text-align:var(--vui-text-align);white-space:var(--vui-text-white-space);word-break:break-word;font-optical-sizing:auto;font-variation-settings:"wght" var(--vui-text-font-weight),"wdth" var(--vui-text-font-width),"opsz" var(--vui-text-font-opsz);text-box:var(--vui-text-trim) var(--vui-text-trim-type);&[data-text-balanced=true]{text-wrap:balance}&[data-text-selection=false]{-webkit-user-select:none;user-select:none}&[data-text-has-padding=true]{padding:var(--vui-text-padding-block-start) var(--vui-text-padding-inline-end) var(--vui-text-padding-block-end) var(--vui-text-padding-inline-start)}&[data-text-family=mono]{--vui-text-font-family:var(--font-family-mono)}&[data-text-size=x-large]{--vui-text-font-size:clamp(var(--font-scale-body-large),calc(var(--text-medium) * pow(var(--font-heading-typescale), 2)),var(--font-scale-body-x-large))}&[data-text-size=large]{--vui-text-font-size:clamp(var(--font-scale-body-medium),calc(var(--text-medium) * pow(var(--font-heading-typescale), 1)),var(--font-scale-body-large))}&[data-text-size=medium]{--vui-text-font-size:clamp(var(--font-scale-body-small),var(--text-medium),var(--font-scale-body-medium))}&[data-text-size=small]{--vui-text-font-size:clamp(var(--font-scale-body-x-small),calc(var(--text-medium) * pow(var(--font-heading-typescale), -0.1)),var(--font-scale-body-small))}&[data-text-size=x-small]{--vui-text-font-size:var(--font-scale-body-x-small)}&[data-text-weight=light]{--vui-text-font-weight:200}&[data-text-weight=semibold]{--vui-text-font-weight:600}&[data-text-weight=bold]{--vui-text-font-weight:800}&[data-text-tone=muted]{color:var(--global-muted)}&[data-text-tone=interactive]{color:var(--global-interactive-text)}&[data-text-tone=positive]{color:var(--highlight-green)}&[data-text-tone=informative]{color:var(--highlight-blue)}&[data-text-tone=danger]{color:var(--highlight-red)}&[data-text-tone=warning]{color:var(--highlight-yellow)}&[data-text-has-literal-color=true]{color:var(--vui-text-literal-color)}&[data-text-line-height=none]{--vui-text-line-height:0}&[data-text-line-height=x-small]{--vui-text-line-height:var(--font-leading-x-small)}&[data-text-line-height=small]{--vui-text-line-height:var(--font-leading-small)}&[data-text-line-height=large]{--vui-text-line-height:var(--font-leading-large)}}
@@ -16,5 +16,129 @@
16
16
  "Choose render when the copy must live on a specific inline or block element"
17
17
  ],
18
18
  "antiPatterns": ["Using Text for headings instead of Title"],
19
- "related": ["Title", "ClampText"]
19
+ "related": ["Title", "ClampText"],
20
+ "properties": {
21
+ "react": {
22
+ "align": {
23
+ "description": "Aligns text using logical alignment values.",
24
+ "refCss": "align"
25
+ },
26
+ "maxWidth": {
27
+ "description": "Constrains the maximum inline size of the rendered text block.",
28
+ "refCss": "max-width"
29
+ },
30
+ "color": {
31
+ "description": "Applies a literal color escape hatch when semantic tone is not used.",
32
+ "refCss": "literal-color"
33
+ },
34
+ "whiteSpace": {
35
+ "description": "Controls white-space preservation and wrapping behavior.",
36
+ "refCss": "white-space"
37
+ },
38
+ "weight": {
39
+ "description": "Numeric variable-font weight override.",
40
+ "refCss": "font-weight"
41
+ },
42
+ "fontWidth": {
43
+ "description": "Variable-font width axis override.",
44
+ "refCss": "font-width"
45
+ },
46
+ "opticalSize": {
47
+ "description": "Variable-font optical size axis override.",
48
+ "refCss": "font-opsz"
49
+ },
50
+ "trim": {
51
+ "description": "Trims text box whitespace at the chosen edge.",
52
+ "refCss": "trim"
53
+ },
54
+ "trimType": {
55
+ "description": "Selects the text-box trim basis when trim is active.",
56
+ "refCss": "trim-type"
57
+ },
58
+ "hPadding": {
59
+ "description": "Sets inline padding using one token or a [start, end] tuple."
60
+ },
61
+ "vPadding": {
62
+ "description": "Sets block padding using one token or a [start, end] tuple."
63
+ },
64
+ "size": {
65
+ "description": "Selects a semantic body typography size from the active theme scale.",
66
+ "refCss": "font-size"
67
+ },
68
+ "family": {
69
+ "description": "Selects the semantic font family for body copy.",
70
+ "refCss": "font-family"
71
+ },
72
+ "lineHeight": {
73
+ "description": "Controls line height through foundation leading tokens.",
74
+ "refCss": "line-height"
75
+ }
76
+ },
77
+ "css": {
78
+ "align": {
79
+ "description": "Text alignment on the root.",
80
+ "refReact": "align"
81
+ },
82
+ "max-width": {
83
+ "description": "Max inline size of the text root.",
84
+ "refReact": "maxWidth"
85
+ },
86
+ "literal-color": {
87
+ "description": "Literal color override on the root.",
88
+ "refReact": "color"
89
+ },
90
+ "white-space": {
91
+ "description": "White-space behavior on the root.",
92
+ "refReact": "whiteSpace"
93
+ },
94
+ "font-weight": {
95
+ "description": "Font weight on the root.",
96
+ "refReact": "weight"
97
+ },
98
+ "font-width": {
99
+ "description": "Font width axis on the root.",
100
+ "refReact": "fontWidth"
101
+ },
102
+ "font-opsz": {
103
+ "description": "Font optical size axis on the root.",
104
+ "refReact": "opticalSize"
105
+ },
106
+ "trim": {
107
+ "description": "Text-box trim mode on the root.",
108
+ "refReact": "trim"
109
+ },
110
+ "trim-type": {
111
+ "description": "Text-box trim basis on the root.",
112
+ "refReact": "trimType"
113
+ },
114
+ "padding-inline-start": {
115
+ "description": "Inline-start padding when padding is enabled.",
116
+ "refReact": "hPadding"
117
+ },
118
+ "padding-inline-end": {
119
+ "description": "Inline-end padding when padding is enabled.",
120
+ "refReact": "hPadding"
121
+ },
122
+ "padding-block-start": {
123
+ "description": "Block-start padding when padding is enabled.",
124
+ "refReact": "vPadding"
125
+ },
126
+ "padding-block-end": {
127
+ "description": "Block-end padding when padding is enabled.",
128
+ "refReact": "vPadding"
129
+ },
130
+ "font-size": {
131
+ "description": "Body font size; size prop presets via data attributes.",
132
+ "refReact": "size"
133
+ },
134
+ "font-family": {
135
+ "description": "Font family; family prop presets via data attributes.",
136
+ "refReact": "family"
137
+ },
138
+ "line-height": {
139
+ "description": "Line height; lineHeight prop presets via data attributes.",
140
+ "refReact": "lineHeight"
141
+ }
142
+ }
143
+ }
20
144
  }
@@ -9,17 +9,17 @@ var Text = ({ align = "start", balanced = false, selection = true, className, co
9
9
  const hasPadding = Boolean(hPadding || vPadding);
10
10
  const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
11
11
  const dynamicStyle = {
12
- "--text-align": align,
13
- "--text-max-width": maxWidth ?? "none",
14
- "--text-literal-color": color,
15
- "--text-white-space": whiteSpace,
16
- "--text-trim": trim ? `trim-${trim}` : "initial",
17
- "--text-trim-type": trim ? trimType : "initial",
18
- ...typeof weight === "number" && { "--text-font-weight": weight },
19
- "--text-font-width": fontWidth,
20
- "--text-font-opsz": opticalSize,
21
- ...resolveAxisPadding(hPadding, "--text-padding-inline-start", "--text-padding-inline-end"),
22
- ...resolveAxisPadding(vPadding, "--text-padding-block-start", "--text-padding-block-end"),
12
+ "--vui-text-align": align,
13
+ "--vui-text-max-width": maxWidth ?? "none",
14
+ "--vui-text-literal-color": color,
15
+ "--vui-text-white-space": whiteSpace,
16
+ "--vui-text-trim": trim ? `trim-${trim}` : "initial",
17
+ "--vui-text-trim-type": trim ? trimType : "initial",
18
+ ...typeof weight === "number" && { "--vui-text-font-weight": weight },
19
+ "--vui-text-font-width": fontWidth,
20
+ "--vui-text-font-opsz": opticalSize,
21
+ ...resolveAxisPadding(hPadding, "--vui-text-padding-inline-start", "--vui-text-padding-inline-end"),
22
+ ...resolveAxisPadding(vPadding, "--vui-text-padding-block-start", "--vui-text-padding-block-end"),
23
23
  ...style
24
24
  };
25
25
  return useRender({
@@ -1,3 +1,5 @@
1
- var text_module_default = { Text: "viraui__text-module__Text_bS8kv" };
1
+ //#region src/components/text/text.module.css
2
+ var Text = "viraui__text-module__Text_bS8kv";
3
+ var text_module_default = { Text };
2
4
  //#endregion
3
- export { text_module_default as default };
5
+ export { Text, text_module_default as default };
@@ -1 +1 @@
1
- .viraui__textarea-module__Textarea_mtOUG{--textarea-min-block-size:calc(var(--space-x-large) * 2);--textarea-padding-block:var(--space-small);--textarea-input-border-radius:var(--radius-small);--field-label-padding-inline:calc(var(--textarea-input-border-radius) / 2);inline-size:100%;&:has([required]) .viraui__textarea-module__Label_5dOso:after{content:" *";color:var(--highlight-red)}}.viraui__textarea-module__CustomBasicInput_Ce7yA{--basic-input-border-radius:var(--textarea-input-border-radius);border:1px solid var(--global-contrast);min-block-size:var(--textarea-min-block-size);padding-block:var(--textarea-padding-block);line-height:1.4;resize:none;&[data-resize=vertical]{resize:vertical}&[data-resize=both]{resize:both}&[data-invalid]{border-color:var(--highlight-red)}&:disabled,&[data-disabled]{border-color:#0000}}.viraui__textarea-module__Description_er3zI{padding-inline:calc(var(--textarea-input-border-radius) / 2)}
1
+ .viraui__textarea-module__Textarea_mtOUG{--vui-textarea-min-block-size:calc(var(--space-x-large) * 2);--vui-textarea-padding-block:var(--space-small);--vui-textarea-input-border-radius:var(--radius-small);--vui-field-label-padding-inline:calc(var(--vui-textarea-input-border-radius) / 2);inline-size:100%;&:has([required]) .viraui__textarea-module__Label_5dOso:after{content:" *";color:var(--highlight-red)}}.viraui__textarea-module__CustomBasicInput_Ce7yA{--vui-basic-input-border-radius:var(--vui-textarea-input-border-radius);border:1px solid var(--global-contrast);min-block-size:var(--vui-textarea-min-block-size);padding-block:var(--vui-textarea-padding-block);line-height:1.4;resize:none;&[data-resize=vertical]{resize:vertical}&[data-resize=both]{resize:both}&[data-invalid]{border-color:var(--highlight-red)}&:disabled,&[data-disabled]{border-color:#0000}}.viraui__textarea-module__Description_er3zI{padding-inline:calc(var(--vui-textarea-input-border-radius) / 2)}
@@ -18,5 +18,18 @@
18
18
  "Prefer resize modes that do not hide required content from keyboard users"
19
19
  ],
20
20
  "antiPatterns": ["Using Textarea for single-line values", "Expecting unsupported size or variant props"],
21
- "related": ["Fieldset", "Textfield", "Text"]
21
+ "related": ["Fieldset", "Textfield", "Text"],
22
+ "properties": {
23
+ "css": {
24
+ "min-block-size": {
25
+ "description": "Minimum block size of the textarea field root."
26
+ },
27
+ "padding-block": {
28
+ "description": "Block padding applied through the textarea root."
29
+ },
30
+ "input-border-radius": {
31
+ "description": "Corner radius for the textarea control group."
32
+ }
33
+ }
34
+ }
22
35
  }
@@ -1,10 +1,10 @@
1
1
  import './textarea.css';
2
2
  import { clsx } from "../../core/clsx.js";
3
3
  import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
4
- import { Stack } from "../stack/stack.js";
5
4
  import { BasicInput } from "../basic-input/basic-input.js";
6
5
  import { FieldHelperCopy } from "../basic-input/field-helper-copy.js";
7
6
  import { FieldLabel } from "../basic-input/field-label.js";
7
+ import { Stack } from "../stack/stack.js";
8
8
  import textarea_module_default from "./textarea.module.js";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import { Field } from "@base-ui/react/field";
@@ -1,8 +1,13 @@
1
+ //#region src/components/textarea/textarea.module.css
2
+ var Textarea = "viraui__textarea-module__Textarea_mtOUG";
3
+ var Label = "viraui__textarea-module__Label_5dOso";
4
+ var CustomBasicInput = "viraui__textarea-module__CustomBasicInput_Ce7yA";
5
+ var Description = "viraui__textarea-module__Description_er3zI";
1
6
  var textarea_module_default = {
2
- Textarea: "viraui__textarea-module__Textarea_mtOUG",
3
- Label: "viraui__textarea-module__Label_5dOso",
4
- CustomBasicInput: "viraui__textarea-module__CustomBasicInput_Ce7yA",
5
- Description: "viraui__textarea-module__Description_er3zI"
7
+ Textarea,
8
+ Label,
9
+ CustomBasicInput,
10
+ Description
6
11
  };
7
12
  //#endregion
8
- export { textarea_module_default as default };
13
+ export { CustomBasicInput, Description, Label, Textarea, textarea_module_default as default };
@@ -1 +1 @@
1
- .viraui__textfield-module__Textfield_o-70A{--input-height:var(--space-x-large);--control-group-background:var(--base-1);--control-group-color:var(--global-foreground);--control-group-border-color:var(--global-contrast);--control-group-border-radius:var(--radius-medium);--field-label-padding-inline:calc(var(--control-group-border-radius) / 2);inline-size:100%;&:has([required]) .viraui__textfield-module__Label_5rjr0:after{content:" *";color:var(--highlight-red)}}.viraui__textfield-module__ControlGroup_2W-OC{box-sizing:border-box;inline-size:100%;min-inline-size:0;block-size:var(--input-height);background:var(--control-group-background);border:1px solid var(--control-group-border-color);border-radius:var(--control-group-border-radius);&:has(.viraui__textfield-module__CustomBasicInput_oHgtd:focus-visible),&:has(.viraui__textfield-module__CustomBasicInput_oHgtd[data-focused]){outline:var(--outline);outline-offset:var(--outline-offset)}&:has(.viraui__textfield-module__CustomBasicInput_oHgtd[data-invalid]){--control-group-border-color:var(--highlight-red);box-shadow:none;outline-color:oklab(from var(--highlight-red) l a b/.5)}&:has(.viraui__textfield-module__CustomBasicInput_oHgtd:disabled),&:has(.viraui__textfield-module__CustomBasicInput_oHgtd[data-disabled]){--control-group-background:var(--global-disabled-background);--control-group-border-color:#0000;box-shadow:none;cursor:not-allowed}&:has(.viraui__textfield-module__Addon_kK1ef[data-position=start])>.viraui__textfield-module__CustomBasicInput_oHgtd{padding-inline-start:var(--space-x-small)}&:has(.viraui__textfield-module__Addon_kK1ef[data-position=end])>.viraui__textfield-module__CustomBasicInput_oHgtd{padding-inline-end:var(--space-x-small)}}.viraui__textfield-module__CustomBasicInput_oHgtd{flex:1 1 auto;min-inline-size:0;block-size:100%;line-height:1.2;border:none;background:#0000;box-shadow:none;border-radius:inherit;&:focus-visible{outline:none}&:disabled{cursor:not-allowed}}.viraui__textfield-module__Addon_kK1ef{min-inline-size:var(--space-x-large)}.viraui__textfield-module__Description_8Qxot{padding-inline:calc(var(--control-group-border-radius) / 2)}
1
+ .viraui__textfield-module__Textfield_o-70A{--vui-textfield-input-height:var(--space-x-large);--vui-textfield-control-group-background:var(--base-1);--vui-textfield-control-group-color:var(--global-foreground);--vui-textfield-control-group-border-color:var(--global-contrast);--vui-textfield-control-group-border-radius:var(--radius-medium);--vui-field-label-padding-inline:calc(var(--vui-textfield-control-group-border-radius) / 2);inline-size:100%;&:has([required]) .viraui__textfield-module__Label_5rjr0:after{content:" *";color:var(--highlight-red)}}.viraui__textfield-module__ControlGroup_2W-OC{box-sizing:border-box;inline-size:100%;min-inline-size:0;block-size:var(--vui-textfield-input-height);background:var(--vui-textfield-control-group-background);border:1px solid var(--vui-textfield-control-group-border-color);border-radius:var(--vui-textfield-control-group-border-radius);&:has(.viraui__textfield-module__CustomBasicInput_oHgtd:focus-visible),&:has(.viraui__textfield-module__CustomBasicInput_oHgtd[data-focused]){outline:var(--outline);outline-offset:var(--outline-offset)}&:has(.viraui__textfield-module__CustomBasicInput_oHgtd[data-invalid]){--vui-textfield-control-group-border-color:var(--highlight-red);box-shadow:none;outline-color:oklab(from var(--highlight-red) l a b/.5)}&:has(.viraui__textfield-module__CustomBasicInput_oHgtd:disabled),&:has(.viraui__textfield-module__CustomBasicInput_oHgtd[data-disabled]){--vui-textfield-control-group-background:var(--global-disabled-background);--vui-textfield-control-group-border-color:#0000;box-shadow:none;cursor:not-allowed}&:has(.viraui__textfield-module__Addon_kK1ef[data-position=start])>.viraui__textfield-module__CustomBasicInput_oHgtd{padding-inline-start:var(--space-x-small)}&:has(.viraui__textfield-module__Addon_kK1ef[data-position=end])>.viraui__textfield-module__CustomBasicInput_oHgtd{padding-inline-end:var(--space-x-small)}}.viraui__textfield-module__CustomBasicInput_oHgtd{flex:1 1 auto;min-inline-size:0;block-size:100%;line-height:1.2;border:none;background:#0000;box-shadow:none;border-radius:inherit;&:focus-visible{outline:none}&:disabled{cursor:not-allowed}}.viraui__textfield-module__Addon_kK1ef{min-inline-size:var(--space-x-large)}.viraui__textfield-module__Description_8Qxot{padding-inline:calc(var(--vui-textfield-control-group-border-radius) / 2)}
@@ -22,5 +22,24 @@
22
22
  "Passing unsupported size or variant props",
23
23
  "Expecting a focus ring when focus is only on addon controls"
24
24
  ],
25
- "related": ["Fieldset", "Textarea", "Select", "Text"]
25
+ "related": ["Fieldset", "Textarea", "Select", "Text"],
26
+ "properties": {
27
+ "css": {
28
+ "input-height": {
29
+ "description": "Textfield control group block size."
30
+ },
31
+ "control-group-background": {
32
+ "description": "Textfield control group background."
33
+ },
34
+ "control-group-color": {
35
+ "description": "Textfield control group foreground color."
36
+ },
37
+ "control-group-border-color": {
38
+ "description": "Textfield control group border color."
39
+ },
40
+ "control-group-border-radius": {
41
+ "description": "Textfield control group corner radius."
42
+ }
43
+ }
44
+ }
26
45
  }
@@ -1,11 +1,11 @@
1
1
  import './textfield.css';
2
2
  import { clsx } from "../../core/clsx.js";
3
3
  import { extractIntrinsicViraProps } from "../../core/props/intrinsic-vira-props.js";
4
- import { Stack } from "../stack/stack.js";
5
4
  import { BasicInput } from "../basic-input/basic-input.js";
6
5
  import { FieldHelperCopy } from "../basic-input/field-helper-copy.js";
7
6
  import { FieldLabel } from "../basic-input/field-label.js";
8
7
  import { InputControlGroup } from "../basic-input/input-control-group.js";
8
+ import { Stack } from "../stack/stack.js";
9
9
  import textfield_module_default from "./textfield.module.js";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import { Field } from "@base-ui/react/field";
@@ -1,10 +1,17 @@
1
+ //#region src/components/textfield/textfield.module.css
2
+ var Textfield = "viraui__textfield-module__Textfield_o-70A";
3
+ var Label = "viraui__textfield-module__Label_5rjr0";
4
+ var ControlGroup = "viraui__textfield-module__ControlGroup_2W-OC";
5
+ var CustomBasicInput = "viraui__textfield-module__CustomBasicInput_oHgtd";
6
+ var Addon = "viraui__textfield-module__Addon_kK1ef";
7
+ var Description = "viraui__textfield-module__Description_8Qxot";
1
8
  var textfield_module_default = {
2
- Textfield: "viraui__textfield-module__Textfield_o-70A",
3
- Label: "viraui__textfield-module__Label_5rjr0",
4
- ControlGroup: "viraui__textfield-module__ControlGroup_2W-OC",
5
- CustomBasicInput: "viraui__textfield-module__CustomBasicInput_oHgtd",
6
- Addon: "viraui__textfield-module__Addon_kK1ef",
7
- Description: "viraui__textfield-module__Description_8Qxot"
9
+ Textfield,
10
+ Label,
11
+ ControlGroup,
12
+ CustomBasicInput,
13
+ Addon,
14
+ Description
8
15
  };
9
16
  //#endregion
10
- export { textfield_module_default as default };
17
+ export { Addon, ControlGroup, CustomBasicInput, Description, Label, Textfield, textfield_module_default as default };
@@ -1 +1 @@
1
- .viraui__title-module__Title_CXMUX{--title-medium:clamp(var(--font-scale-body-medium),calc(var(--font-scale-body-medium) + var(--font-scale-body-x-small) / 12 + 0.24cqi),calc(var(--font-scale-body-medium) + var(--font-scale-body-x-small) / 3));--title-font-size:clamp(var(--font-scale-h2),calc(var(--title-medium) * pow(var(--font-heading-typescale), 5)),var(--font-scale-h1));--title-font-family:var(--font-family-heading);--title-font-weight:500;--title-font-width:100;--title-font-opsz:16;--title-line-height:var(--font-leading-standard);--title-letter-spacing:-0.03em;--title-align:start;--title-max-width:none;--title-white-space:normal;--title-padding-inline-start:0;--title-padding-inline-end:0;--title-padding-block-start:0;--title-padding-block-end:0;margin:0;max-inline-size:var(--title-max-width);font-family:var(--title-font-family);font-size:var(--title-font-size);line-height:var(--title-line-height);letter-spacing:var(--title-letter-spacing);text-align:var(--title-align);white-space:var(--title-white-space);word-break:break-word;font-optical-sizing:auto;font-variation-settings:"wght" var(--title-font-weight),"wdth" var(--title-font-width),"opsz" var(--title-font-opsz);text-box:var(--title-trim) var(--title-trim-type);display:inline-flex;&[data-title-balanced=true]{text-wrap:balance}&[data-title-selection=false]{-webkit-user-select:none;user-select:none}&[data-title-has-padding=true]{padding:var(--title-padding-block-start) var(--title-padding-inline-end) var(--title-padding-block-end) var(--title-padding-inline-start)}&[data-title-level=display]{--title-font-size:clamp(var(--font-scale-h1),calc(var(--font-scale-h1) + 4.643cqi - 0.9286rem),var(--font-scale-display))}&[data-title-level=h1]{--title-font-size:clamp(var(--font-scale-h2),calc(var(--title-medium) * pow(var(--font-heading-typescale), 5)),var(--font-scale-h1))}&[data-title-level=h2]{--title-font-size:clamp(var(--font-scale-h3),calc(var(--title-medium) * pow(var(--font-heading-typescale), 4)),var(--font-scale-h2))}&[data-title-level=h3]{--title-font-size:clamp(var(--font-scale-h4),calc(var(--title-medium) * pow(var(--font-heading-typescale), 3)),var(--font-scale-h3))}&[data-title-level=h4]{--title-font-size:clamp(var(--font-scale-h5),calc(var(--title-medium) * pow(var(--font-heading-typescale), 2)),var(--font-scale-h4))}&[data-title-level=h5]{--title-font-size:clamp(var(--font-scale-h6),calc(var(--title-medium) * pow(var(--font-heading-typescale), 1)),var(--font-scale-h5));--title-letter-spacing:-0.02em}&[data-title-level=h6]{--title-font-size:clamp(var(--font-scale-body-medium),var(--title-medium),var(--font-scale-h6));--title-letter-spacing:-0.02em}&[data-title-has-literal-color=true]{color:var(--title-literal-color)}&[data-title-line-height=none]{--title-line-height:0}&[data-title-line-height=x-small]{--title-line-height:var(--font-leading-x-small)}&[data-title-line-height=small]{--title-line-height:var(--font-leading-small)}&[data-title-line-height=large]{--title-line-height:var(--font-leading-large)}}
1
+ .viraui__title-module__Title_CXMUX{--title-medium:clamp(var(--font-scale-body-medium),calc(var(--font-scale-body-medium) + var(--font-scale-body-x-small) / 12 + 0.24cqi),calc(var(--font-scale-body-medium) + var(--font-scale-body-x-small) / 3));--vui-title-font-size:clamp(var(--font-scale-h2),calc(var(--title-medium) * pow(var(--font-heading-typescale), 5)),var(--font-scale-h1));--vui-title-font-family:var(--font-family-heading);--vui-title-font-weight:500;--vui-title-font-width:100;--vui-title-font-opsz:16;--vui-title-line-height:var(--font-leading-standard);--vui-title-letter-spacing:-0.03em;--vui-title-align:start;--vui-title-max-width:none;--vui-title-white-space:normal;--vui-title-padding-inline-start:0;--vui-title-padding-inline-end:0;--vui-title-padding-block-start:0;--vui-title-padding-block-end:0;margin:0;max-inline-size:var(--vui-title-max-width);font-family:var(--vui-title-font-family);font-size:var(--vui-title-font-size);line-height:var(--vui-title-line-height);letter-spacing:var(--vui-title-letter-spacing);text-align:var(--vui-title-align);white-space:var(--vui-title-white-space);word-break:break-word;font-optical-sizing:auto;font-variation-settings:"wght" var(--vui-title-font-weight),"wdth" var(--vui-title-font-width),"opsz" var(--vui-title-font-opsz);text-box:var(--vui-title-trim) var(--vui-title-trim-type);display:inline-flex;&[data-title-balanced=true]{text-wrap:balance}&[data-title-selection=false]{-webkit-user-select:none;user-select:none}&[data-title-has-padding=true]{padding:var(--vui-title-padding-block-start) var(--vui-title-padding-inline-end) var(--vui-title-padding-block-end) var(--vui-title-padding-inline-start)}&[data-title-level=display]{--vui-title-font-size:clamp(var(--font-scale-h1),calc(var(--font-scale-h1) + 4.643cqi - 0.9286rem),var(--font-scale-display))}&[data-title-level=h1]{--vui-title-font-size:clamp(var(--font-scale-h2),calc(var(--title-medium) * pow(var(--font-heading-typescale), 5)),var(--font-scale-h1))}&[data-title-level=h2]{--vui-title-font-size:clamp(var(--font-scale-h3),calc(var(--title-medium) * pow(var(--font-heading-typescale), 4)),var(--font-scale-h2))}&[data-title-level=h3]{--vui-title-font-size:clamp(var(--font-scale-h4),calc(var(--title-medium) * pow(var(--font-heading-typescale), 3)),var(--font-scale-h3))}&[data-title-level=h4]{--vui-title-font-size:clamp(var(--font-scale-h5),calc(var(--title-medium) * pow(var(--font-heading-typescale), 2)),var(--font-scale-h4))}&[data-title-level=h5]{--vui-title-font-size:clamp(var(--font-scale-h6),calc(var(--title-medium) * pow(var(--font-heading-typescale), 1)),var(--font-scale-h5));--vui-title-letter-spacing:-0.02em}&[data-title-level=h6]{--vui-title-font-size:clamp(var(--font-scale-body-medium),var(--title-medium),var(--font-scale-h6));--vui-title-letter-spacing:-0.02em}&[data-title-has-literal-color=true]{color:var(--vui-title-literal-color)}&[data-title-line-height=none]{--vui-title-line-height:0}&[data-title-line-height=x-small]{--vui-title-line-height:var(--font-leading-x-small)}&[data-title-line-height=small]{--vui-title-line-height:var(--font-leading-small)}&[data-title-line-height=large]{--vui-title-line-height:var(--font-leading-large)}}
@@ -19,5 +19,127 @@
19
19
  "Letting level force the HTML tag instead of choosing render explicitly",
20
20
  "Using Title for long body paragraphs"
21
21
  ],
22
- "related": ["Text", "ClampText"]
22
+ "related": ["Text", "ClampText"],
23
+ "properties": {
24
+ "react": {
25
+ "align": {
26
+ "description": "Aligns text using logical alignment values.",
27
+ "refCss": "align"
28
+ },
29
+ "maxWidth": {
30
+ "description": "Constrains the maximum inline size of the rendered title block.",
31
+ "refCss": "max-width"
32
+ },
33
+ "color": {
34
+ "description": "Applies a literal color escape hatch when semantic tone is not used.",
35
+ "refCss": "literal-color"
36
+ },
37
+ "whiteSpace": {
38
+ "description": "Controls white-space preservation and wrapping behavior.",
39
+ "refCss": "white-space"
40
+ },
41
+ "weight": {
42
+ "description": "Numeric variable-font weight override.",
43
+ "refCss": "font-weight"
44
+ },
45
+ "fontWidth": {
46
+ "description": "Variable-font width axis override.",
47
+ "refCss": "font-width"
48
+ },
49
+ "opticalSize": {
50
+ "description": "Variable-font optical size axis override.",
51
+ "refCss": "font-opsz"
52
+ },
53
+ "trim": {
54
+ "description": "Trims text box whitespace at the chosen edge.",
55
+ "refCss": "trim"
56
+ },
57
+ "trimType": {
58
+ "description": "Selects the text-box trim basis when trim is active.",
59
+ "refCss": "trim-type"
60
+ },
61
+ "hPadding": {
62
+ "description": "Sets inline padding using one token or a [start, end] tuple."
63
+ },
64
+ "vPadding": {
65
+ "description": "Sets block padding using one token or a [start, end] tuple."
66
+ },
67
+ "level": {
68
+ "description": "Selects the visual heading preset; does not change semantic heading level.",
69
+ "refCss": "font-size"
70
+ },
71
+ "lineHeight": {
72
+ "description": "Controls line height through foundation leading tokens.",
73
+ "refCss": "line-height"
74
+ }
75
+ },
76
+ "css": {
77
+ "align": {
78
+ "description": "Title alignment on the root.",
79
+ "refReact": "align"
80
+ },
81
+ "max-width": {
82
+ "description": "Max inline size of the title root.",
83
+ "refReact": "maxWidth"
84
+ },
85
+ "literal-color": {
86
+ "description": "Literal color override on the root.",
87
+ "refReact": "color"
88
+ },
89
+ "white-space": {
90
+ "description": "White-space behavior on the root.",
91
+ "refReact": "whiteSpace"
92
+ },
93
+ "font-weight": {
94
+ "description": "Font weight on the root.",
95
+ "refReact": "weight"
96
+ },
97
+ "font-width": {
98
+ "description": "Font width axis on the root.",
99
+ "refReact": "fontWidth"
100
+ },
101
+ "font-opsz": {
102
+ "description": "Font optical size axis on the root.",
103
+ "refReact": "opticalSize"
104
+ },
105
+ "trim": {
106
+ "description": "Text-box trim mode on the root.",
107
+ "refReact": "trim"
108
+ },
109
+ "trim-type": {
110
+ "description": "Text-box trim basis on the root.",
111
+ "refReact": "trimType"
112
+ },
113
+ "padding-inline-start": {
114
+ "description": "Inline-start padding when padding is enabled.",
115
+ "refReact": "hPadding"
116
+ },
117
+ "padding-inline-end": {
118
+ "description": "Inline-end padding when padding is enabled.",
119
+ "refReact": "hPadding"
120
+ },
121
+ "padding-block-start": {
122
+ "description": "Block-start padding when padding is enabled.",
123
+ "refReact": "vPadding"
124
+ },
125
+ "padding-block-end": {
126
+ "description": "Block-end padding when padding is enabled.",
127
+ "refReact": "vPadding"
128
+ },
129
+ "font-size": {
130
+ "description": "Heading font size; level prop presets via data attributes.",
131
+ "refReact": "level"
132
+ },
133
+ "line-height": {
134
+ "description": "Line height; lineHeight prop presets via data attributes.",
135
+ "refReact": "lineHeight"
136
+ },
137
+ "letter-spacing": {
138
+ "description": "Heading letter spacing; level presets adjust this."
139
+ },
140
+ "font-family": {
141
+ "description": "Heading font family on the root."
142
+ }
143
+ }
144
+ }
23
145
  }
@@ -9,17 +9,17 @@ var Title = ({ align = "start", balanced = false, selection = true, className, c
9
9
  const hasPadding = Boolean(hPadding || vPadding);
10
10
  const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
11
11
  const dynamicStyle = {
12
- "--title-align": align,
13
- "--title-max-width": maxWidth ?? "none",
14
- "--title-literal-color": color,
15
- "--title-white-space": whiteSpace,
16
- "--title-trim": trim ? `trim-${trim}` : "initial",
17
- "--title-trim-type": trim ? trimType : "initial",
18
- ...typeof weight === "number" && { "--title-font-weight": weight },
19
- "--title-font-width": fontWidth,
20
- "--title-font-opsz": opticalSize,
21
- ...resolveAxisPadding(hPadding, "--title-padding-inline-start", "--title-padding-inline-end"),
22
- ...resolveAxisPadding(vPadding, "--title-padding-block-start", "--title-padding-block-end"),
12
+ "--vui-title-align": align,
13
+ "--vui-title-max-width": maxWidth ?? "none",
14
+ "--vui-title-literal-color": color,
15
+ "--vui-title-white-space": whiteSpace,
16
+ "--vui-title-trim": trim ? `trim-${trim}` : "initial",
17
+ "--vui-title-trim-type": trim ? trimType : "initial",
18
+ ...typeof weight === "number" && { "--vui-title-font-weight": weight },
19
+ "--vui-title-font-width": fontWidth,
20
+ "--vui-title-font-opsz": opticalSize,
21
+ ...resolveAxisPadding(hPadding, "--vui-title-padding-inline-start", "--vui-title-padding-inline-end"),
22
+ ...resolveAxisPadding(vPadding, "--vui-title-padding-block-start", "--vui-title-padding-block-end"),
23
23
  ...style
24
24
  };
25
25
  return useRender({
@@ -1,3 +1,5 @@
1
- var title_module_default = { Title: "viraui__title-module__Title_CXMUX" };
1
+ //#region src/components/title/title.module.css
2
+ var Title = "viraui__title-module__Title_CXMUX";
3
+ var title_module_default = { Title };
2
4
  //#endregion
3
- export { title_module_default as default };
5
+ export { Title, title_module_default as default };
@@ -2,9 +2,9 @@ import { Button } from "../button/button.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { Toast } from "@base-ui/react/toast";
4
4
  //#region src/components/toast/toast-action.tsx
5
- var ToastAction = ({ render, ...props }) => /* @__PURE__ */ jsx(Toast.Action, {
5
+ var ToastAction = ({ render, ...otherProps }) => /* @__PURE__ */ jsx(Toast.Action, {
6
6
  render: render ?? /* @__PURE__ */ jsx(Button, { variant: "secondary" }),
7
- ...props
7
+ ...otherProps
8
8
  });
9
9
  //#endregion
10
10
  export { ToastAction };
@@ -1,7 +1,7 @@
1
1
  import { clsx } from "../../core/clsx.js";
2
- import { Stack } from "../stack/stack.js";
3
2
  import { Button } from "../button/button.js";
4
3
  import { Text } from "../text/text.js";
4
+ import { Stack } from "../stack/stack.js";
5
5
  import { Surface } from "../surface/surface.js";
6
6
  import toast_module_default from "./toast.module.js";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -3,10 +3,10 @@ import toast_module_default from "./toast.module.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Toast } from "@base-ui/react/toast";
5
5
  //#region src/components/toast/toast-viewport.tsx
6
- var ToastViewport = ({ className, position = "bottom-right", ...props }) => /* @__PURE__ */ jsx(Toast.Viewport, {
6
+ var ToastViewport = ({ className, position = "bottom-right", ...otherProps }) => /* @__PURE__ */ jsx(Toast.Viewport, {
7
7
  className: clsx(toast_module_default.Viewport, className),
8
8
  "data-position": position,
9
- ...props
9
+ ...otherProps
10
10
  });
11
11
  //#endregion
12
12
  export { ToastViewport };