@viraui/react 0.0.25 → 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/catalog.json +30 -0
  2. package/dist/components/accordion/accordion-item.d.ts +58 -0
  3. package/dist/components/accordion/accordion-item.js +65 -0
  4. package/dist/components/accordion/accordion.css +1 -0
  5. package/dist/components/accordion/accordion.d.ts +26 -0
  6. package/dist/components/accordion/accordion.guide.json +30 -0
  7. package/dist/components/accordion/accordion.js +22 -0
  8. package/dist/components/accordion/accordion.module.js +10 -0
  9. package/dist/components/accordion/index.d.ts +3 -0
  10. package/dist/components/avatar/avatar.css +1 -1
  11. package/dist/components/avatar/avatar.guide.json +25 -1
  12. package/dist/components/avatar/avatar.js +1 -1
  13. package/dist/components/avatar-group/avatar-group.css +2 -2
  14. package/dist/components/avatar-group/avatar-group.guide.json +27 -1
  15. package/dist/components/avatar-group/avatar-group.js +1 -1
  16. package/dist/components/basic-input/basic-input.css +1 -1
  17. package/dist/components/basic-input/basic-input.js +3 -3
  18. package/dist/components/basic-input/field-label.css +1 -1
  19. package/dist/components/bleed/bleed.css +1 -0
  20. package/dist/components/bleed/bleed.d.ts +26 -0
  21. package/dist/components/bleed/bleed.guide.json +39 -0
  22. package/dist/components/bleed/bleed.js +24 -0
  23. package/dist/components/bleed/bleed.module.js +3 -0
  24. package/dist/components/bleed/index.d.ts +2 -0
  25. package/dist/components/button/button.css +1 -1
  26. package/dist/components/button/button.guide.json +33 -3
  27. package/dist/components/checkbox/checkbox-group.js +2 -2
  28. package/dist/components/checkbox/checkbox.css +1 -1
  29. package/dist/components/chip/chip.css +1 -1
  30. package/dist/components/chip/chip.guide.json +26 -1
  31. package/dist/components/clamp-text/clamp-text.css +1 -1
  32. package/dist/components/clamp-text/clamp-text.guide.json +15 -1
  33. package/dist/components/clamp-text/clamp-text.js +1 -1
  34. package/dist/components/dialog/dialog-close.js +2 -2
  35. package/dist/components/dialog/dialog-indent-background.js +2 -2
  36. package/dist/components/dialog/dialog-indent.js +2 -2
  37. package/dist/components/dialog/dialog-sheet.js +1 -1
  38. package/dist/components/dialog/dialog-trigger.js +2 -2
  39. package/dist/components/dialog/dialog.css +1 -1
  40. package/dist/components/dialog/dialog.d.ts +5 -4
  41. package/dist/components/dialog/dialog.guide.json +15 -1
  42. package/dist/components/dialog/dialog.js +4 -3
  43. package/dist/components/icon-button/icon-button.js +2 -2
  44. package/dist/components/index.d.ts +5 -0
  45. package/dist/components/linear-progress/linear-progress.css +1 -1
  46. package/dist/components/linear-progress/linear-progress.guide.json +14 -1
  47. package/dist/components/masonry/masonry.css +1 -1
  48. package/dist/components/masonry/masonry.guide.json +42 -1
  49. package/dist/components/masonry/masonry.js +3 -3
  50. package/dist/components/meter/index.d.ts +2 -0
  51. package/dist/components/meter/meter.css +1 -0
  52. package/dist/components/meter/meter.d.ts +44 -0
  53. package/dist/components/meter/meter.guide.json +39 -0
  54. package/dist/components/meter/meter.js +59 -0
  55. package/dist/components/meter/meter.module.js +7 -0
  56. package/dist/components/popover/index.d.ts +4 -0
  57. package/dist/components/popover/popover-sheet.d.ts +65 -0
  58. package/dist/components/popover/popover-sheet.js +79 -0
  59. package/dist/components/popover/popover.css +1 -0
  60. package/dist/components/popover/popover.d.ts +74 -0
  61. package/dist/components/popover/popover.guide.json +28 -0
  62. package/dist/components/popover/popover.js +23 -0
  63. package/dist/components/popover/popover.module.js +8 -0
  64. package/dist/components/progressive-blur/progressive-blur.css +1 -1
  65. package/dist/components/progressive-blur/progressive-blur.guide.json +15 -1
  66. package/dist/components/progressive-blur/progressive-blur.js +1 -1
  67. package/dist/components/radio/radio-group.d.ts +1 -1
  68. package/dist/components/radio/radio-group.js +2 -2
  69. package/dist/components/radio/radio.css +1 -1
  70. package/dist/components/select/select-option.js +1 -1
  71. package/dist/components/select/select.css +1 -1
  72. package/dist/components/select/select.guide.json +26 -1
  73. package/dist/components/select/select.js +1 -0
  74. package/dist/components/separator/separator.css +1 -1
  75. package/dist/components/separator/separator.js +1 -1
  76. package/dist/components/shimmer/shimmer.css +1 -1
  77. package/dist/components/shimmer/shimmer.guide.json +39 -1
  78. package/dist/components/shimmer/shimmer.js +4 -4
  79. package/dist/components/skeleton/skeleton.css +1 -1
  80. package/dist/components/skeleton/skeleton.guide.json +50 -1
  81. package/dist/components/skeleton/skeleton.js +5 -5
  82. package/dist/components/slider/slider.css +1 -1
  83. package/dist/components/slider/slider.guide.json +20 -1
  84. package/dist/components/spinner/spinner.css +1 -1
  85. package/dist/components/spinner/spinner.guide.json +15 -1
  86. package/dist/components/stack/stack.css +1 -1
  87. package/dist/components/stack/stack.guide.json +77 -1
  88. package/dist/components/stack/stack.js +8 -8
  89. package/dist/components/surface/surface-radius-context.js +6 -6
  90. package/dist/components/surface/surface.css +1 -1
  91. package/dist/components/surface/surface.d.ts +1 -1
  92. package/dist/components/surface/surface.guide.json +85 -1
  93. package/dist/components/surface/surface.js +6 -6
  94. package/dist/components/switch/switch.css +1 -1
  95. package/dist/components/switch/switch.guide.json +32 -1
  96. package/dist/components/tabs/tabs-indicator.js +2 -2
  97. package/dist/components/tabs/tabs-list.js +2 -2
  98. package/dist/components/tabs/tabs-panel.js +2 -2
  99. package/dist/components/tabs/tabs-tab.js +2 -2
  100. package/dist/components/tabs/tabs-viewport.js +2 -2
  101. package/dist/components/tabs/tabs.css +1 -1
  102. package/dist/components/tabs/tabs.guide.json +8 -1
  103. package/dist/components/tabs/tabs.js +2 -2
  104. package/dist/components/text/text.css +1 -1
  105. package/dist/components/text/text.guide.json +125 -1
  106. package/dist/components/text/text.js +11 -11
  107. package/dist/components/textarea/textarea.css +1 -1
  108. package/dist/components/textarea/textarea.guide.json +14 -1
  109. package/dist/components/textfield/textfield.css +1 -1
  110. package/dist/components/textfield/textfield.guide.json +20 -1
  111. package/dist/components/title/title.css +1 -1
  112. package/dist/components/title/title.guide.json +123 -1
  113. package/dist/components/title/title.js +11 -11
  114. package/dist/components/toast/toast-action.js +2 -2
  115. package/dist/components/toast/toast-viewport.js +2 -2
  116. package/dist/index.js +6 -1
  117. package/dist/preflight-surface.json +17 -4
  118. package/dist/preflight.css +1 -1
  119. package/package.json +2 -2
@@ -20,5 +20,81 @@
20
20
  "Re-declaring primitive flex container rules in app CSS when Stack can own the layout",
21
21
  "Using viewport media queries when @container stack queries against the rendered Stack size would match the design intent"
22
22
  ],
23
- "related": ["Surface", "Text", "Button"]
23
+ "related": ["Surface", "Text", "Button"],
24
+ "properties": {
25
+ "react": {
26
+ "rowGap": {
27
+ "description": "Sets row gap using a Vira space token.",
28
+ "refCss": "row-gap"
29
+ },
30
+ "columnGap": {
31
+ "description": "Sets column gap using a Vira space token.",
32
+ "refCss": "column-gap"
33
+ },
34
+ "hAlign": {
35
+ "description": "Sets main-axis alignment for column layouts and cross-axis for row layouts.",
36
+ "refCss": "h-align"
37
+ },
38
+ "vAlign": {
39
+ "description": "Sets cross-axis alignment for column layouts and main-axis for row layouts.",
40
+ "refCss": "v-align"
41
+ },
42
+ "hPadding": {
43
+ "description": "Sets inline padding using one token or a [start, end] tuple."
44
+ },
45
+ "vPadding": {
46
+ "description": "Sets block padding using one token or a [start, end] tuple."
47
+ },
48
+ "maxWidth": {
49
+ "description": "Constrains max inline size of the stack root.",
50
+ "refCss": "max-width"
51
+ },
52
+ "minWidth": {
53
+ "description": "Constrains min inline size of the stack root.",
54
+ "refCss": "min-width"
55
+ }
56
+ },
57
+ "css": {
58
+ "row-gap": {
59
+ "description": "Flex row gap on the root.",
60
+ "refReact": "rowGap"
61
+ },
62
+ "column-gap": {
63
+ "description": "Flex column gap on the root.",
64
+ "refReact": "columnGap"
65
+ },
66
+ "h-align": {
67
+ "description": "Logical horizontal flex alignment hook.",
68
+ "refReact": "hAlign"
69
+ },
70
+ "v-align": {
71
+ "description": "Logical vertical flex alignment hook.",
72
+ "refReact": "vAlign"
73
+ },
74
+ "padding-inline-start": {
75
+ "description": "Inline-start padding when padding is enabled.",
76
+ "refReact": "hPadding"
77
+ },
78
+ "padding-inline-end": {
79
+ "description": "Inline-end padding when padding is enabled.",
80
+ "refReact": "hPadding"
81
+ },
82
+ "padding-block-start": {
83
+ "description": "Block-start padding when padding is enabled.",
84
+ "refReact": "vPadding"
85
+ },
86
+ "padding-block-end": {
87
+ "description": "Block-end padding when padding is enabled.",
88
+ "refReact": "vPadding"
89
+ },
90
+ "max-width": {
91
+ "description": "Max inline size of the stack root.",
92
+ "refReact": "maxWidth"
93
+ },
94
+ "min-width": {
95
+ "description": "Min inline size of the stack root.",
96
+ "refReact": "minWidth"
97
+ }
98
+ }
99
+ }
24
100
  }
@@ -10,14 +10,14 @@ var Stack = ({ className, direction = "column", fillChildren = true, hAlign = "i
10
10
  const hasPadding = Boolean(hPadding || vPadding);
11
11
  const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
12
12
  const dynamicStyle = {
13
- "--stack-row-gap": resolveThemeValue(rowGap, "space", 0),
14
- "--stack-column-gap": resolveThemeValue(columnGap, "space", 0),
15
- "--stack-h-align": hAlign,
16
- "--stack-v-align": vAlign,
17
- ...maxWidth && { "--stack-max-width": maxWidth },
18
- ...minWidth && { "--stack-min-width": minWidth },
19
- ...resolveAxisPadding(hPadding, "--stack-padding-inline-start", "--stack-padding-inline-end"),
20
- ...resolveAxisPadding(vPadding, "--stack-padding-block-start", "--stack-padding-block-end"),
13
+ "--vui-stack-row-gap": resolveThemeValue(rowGap, "space", 0),
14
+ "--vui-stack-column-gap": resolveThemeValue(columnGap, "space", 0),
15
+ "--vui-stack-h-align": hAlign,
16
+ "--vui-stack-v-align": vAlign,
17
+ ...maxWidth && { "--vui-stack-max-width": maxWidth },
18
+ ...minWidth && { "--vui-stack-min-width": minWidth },
19
+ ...resolveAxisPadding(hPadding, "--vui-stack-padding-inline-start", "--vui-stack-padding-inline-end"),
20
+ ...resolveAxisPadding(vPadding, "--vui-stack-padding-block-start", "--vui-stack-padding-block-end"),
21
21
  ...style
22
22
  };
23
23
  return useRender({
@@ -31,12 +31,12 @@ var resolvePerCornerRadiusInput = (corners) => ({
31
31
  bottomRight: resolveRadiusToken(corners[2]),
32
32
  bottomLeft: resolveRadiusToken(corners[3])
33
33
  });
34
- var getSurfaceStyleRadius = (style) => style?.["--surface-border-radius"];
34
+ var getSurfaceStyleRadius = (style) => style?.["--vui-surface-border-radius"];
35
35
  var getSurfaceRadiusStyle = (radius) => ({
36
- "--surface-border-radius-top-left": radius.topLeft,
37
- "--surface-border-radius-top-right": radius.topRight,
38
- "--surface-border-radius-bottom-right": radius.bottomRight,
39
- "--surface-border-radius-bottom-left": radius.bottomLeft
36
+ "--vui-surface-border-radius-top-left": radius.topLeft,
37
+ "--vui-surface-border-radius-top-right": radius.topRight,
38
+ "--vui-surface-border-radius-bottom-right": radius.bottomRight,
39
+ "--vui-surface-border-radius-bottom-left": radius.bottomLeft
40
40
  });
41
41
  var resolveDefaultContext = ({ hPadding, radius, style, vPadding }) => {
42
42
  const [paddingInlineStart, paddingInlineEnd] = resolveAxisPaddingValues(hPadding);
@@ -74,7 +74,7 @@ var useSurfaceRadius = ({ defaults, hPadding, radius, style, vPadding }) => {
74
74
  }
75
75
  },
76
76
  hasAutoRadius,
77
- radiusStyle: hasAutoRadius || hasPerCornerRadius ? getSurfaceRadiusStyle(ownRadius) : { "--surface-border-radius": tokenRadius }
77
+ radiusStyle: hasAutoRadius || hasPerCornerRadius ? getSurfaceRadiusStyle(ownRadius) : { "--vui-surface-border-radius": tokenRadius }
78
78
  };
79
79
  };
80
80
  //#endregion
@@ -1 +1 @@
1
- .viraui__surface-module__Surface_slEYq{--surface-border-radius:0;--surface-border-radius-top-left:var(--surface-border-radius);--surface-border-radius-top-right:var(--surface-border-radius);--surface-border-radius-bottom-right:var(--surface-border-radius);--surface-border-radius-bottom-left:var(--surface-border-radius);--surface-padding-inline-start:0;--surface-padding-inline-end:0;--surface-padding-block-start:0;--surface-padding-block-end:0;--surface-background-hover:var(--surface-background);--surface-overflow:visible;container:surface/inline-size block-size;position:relative;overflow:var(--surface-overflow);box-sizing:border-box;background:var(--surface-background,#0000);border-radius:var(--surface-border-radius-top-left) var(--surface-border-radius-top-right) var(--surface-border-radius-bottom-right) var(--surface-border-radius-bottom-left);border:0;@container root not style(--vibrancy-enable: initial){&[data-vibrant]{background:oklab(from var(--surface-background) l a b/80%)}}&[data-surface-radius=auto]{--surface-border-radius-top-left:0;--surface-border-radius-top-right:0;--surface-border-radius-bottom-right:0;--surface-border-radius-bottom-left:0}&[data-surface-has-padding=true]{padding:var(--surface-padding-block-start) var(--surface-padding-inline-end) var(--surface-padding-block-end) var(--surface-padding-inline-start)}&[data-surface-border]{border-style:var(--surface-border-style,solid);border-color:var(--global-contrast)}&[data-surface-border=all]{border-width:1px}&[data-surface-border=top]{border-width:1px 0 0}&[data-surface-border=right]{border-width:0 1px 0 0}&[data-surface-border=bottom]{border-width:0 0 1px}&[data-surface-border=left]{border-width:0 0 0 1px}&[data-surface-border=x]{border-width:0 1px}&[data-surface-border=y]{border-width:1px 0}@media (hover:hover) and (pointer:fine){&[data-surface-has-hover-color=true]:hover{background:var(--surface-background-hover)}}}
1
+ .viraui__surface-module__Surface_slEYq{--vui-surface-border-radius:0;--vui-surface-border-radius-top-left:var(--vui-surface-border-radius);--vui-surface-border-radius-top-right:var(--vui-surface-border-radius);--vui-surface-border-radius-bottom-right:var(--vui-surface-border-radius);--vui-surface-border-radius-bottom-left:var(--vui-surface-border-radius);--vui-surface-padding-inline-start:0;--vui-surface-padding-inline-end:0;--vui-surface-padding-block-start:0;--vui-surface-padding-block-end:0;--vui-surface-background-hover:var(--vui-surface-background);container:surface/inline-size block-size;position:relative;overflow:var(--vui-surface-overflow,visible);box-sizing:border-box;background:var(--vui-surface-background,#0000);border-radius:var(--vui-surface-border-radius-top-left) var(--vui-surface-border-radius-top-right) var(--vui-surface-border-radius-bottom-right) var(--vui-surface-border-radius-bottom-left);border:0;@container root not style(--vibrancy-enable: initial){&[data-vibrant]{background:oklab(from var(--vui-surface-background) l a b/80%)}}&[data-surface-radius=auto]{--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}&[data-surface-has-padding=true]{padding:var(--vui-surface-padding-block-start) var(--vui-surface-padding-inline-end) var(--vui-surface-padding-block-end) var(--vui-surface-padding-inline-start)}&[data-surface-border]{border-style:var(--vui-surface-border-style,solid);border-color:var(--global-contrast)}&[data-surface-border=all]{border-width:1px}&[data-surface-border=top]{border-width:1px 0 0}&[data-surface-border=right]{border-width:0 1px 0 0}&[data-surface-border=bottom]{border-width:0 0 1px}&[data-surface-border=left]{border-width:0 0 0 1px}&[data-surface-border=x]{border-width:0 1px}&[data-surface-border=y]{border-width:1px 0}@media (hover:hover) and (pointer:fine){&[data-surface-has-hover-color=true]:hover{background:var(--vui-surface-background-hover)}}}
@@ -69,7 +69,7 @@ export type SurfaceProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'color'>
69
69
  */
70
70
  vPadding?: SurfacePadding;
71
71
  /**
72
- * Sets root overflow through the `--surface-overflow` custom property.
72
+ * Sets root overflow through the `--vui-surface-overflow` custom property.
73
73
  *
74
74
  * @default visible
75
75
  */
@@ -29,5 +29,89 @@
29
29
  "Expecting radius=\"auto\" to inherit a token when the nearest ancestor Surface has no radius set",
30
30
  "Using viewport media queries when @container surface queries against the rendered Surface size would match the design intent"
31
31
  ],
32
- "related": ["Elevator", "Stack"]
32
+ "related": ["Elevator", "Stack"],
33
+ "properties": {
34
+ "react": {
35
+ "color": {
36
+ "description": "Sets the resting background using a base ramp layer or literal CSS color.",
37
+ "refCss": "background"
38
+ },
39
+ "hoverColor": {
40
+ "description": "Sets the hover background on hover-capable pointers.",
41
+ "refCss": "background-hover"
42
+ },
43
+ "borderStyle": {
44
+ "description": "Sets the CSS border style when border is set.",
45
+ "refCss": "border-style"
46
+ },
47
+ "overflow": {
48
+ "description": "Sets root overflow through the surface overflow custom property.",
49
+ "refCss": "overflow"
50
+ },
51
+ "radius": {
52
+ "description": "Sets corner radius from tokens, a per-corner tuple, or auto for concentric radii.",
53
+ "refCss": "border-radius"
54
+ },
55
+ "hPadding": {
56
+ "description": "Sets inline padding using one token or a [start, end] tuple."
57
+ },
58
+ "vPadding": {
59
+ "description": "Sets block padding using one token or a [start, end] tuple."
60
+ }
61
+ },
62
+ "css": {
63
+ "background": {
64
+ "description": "Resting surface background on the root.",
65
+ "refReact": "color"
66
+ },
67
+ "background-hover": {
68
+ "description": "Hover surface background on the root.",
69
+ "refReact": "hoverColor"
70
+ },
71
+ "border-style": {
72
+ "description": "Border style when border is enabled.",
73
+ "refReact": "borderStyle"
74
+ },
75
+ "overflow": {
76
+ "description": "Root overflow behavior.",
77
+ "refReact": "overflow"
78
+ },
79
+ "border-radius": {
80
+ "description": "Uniform corner radius when radius is a single token.",
81
+ "refReact": "radius"
82
+ },
83
+ "border-radius-top-left": {
84
+ "description": "Top-left corner radius; radius tuple or auto resolves per corner.",
85
+ "refReact": "radius"
86
+ },
87
+ "border-radius-top-right": {
88
+ "description": "Top-right corner radius; radius tuple or auto resolves per corner.",
89
+ "refReact": "radius"
90
+ },
91
+ "border-radius-bottom-right": {
92
+ "description": "Bottom-right corner radius; radius tuple or auto resolves per corner.",
93
+ "refReact": "radius"
94
+ },
95
+ "border-radius-bottom-left": {
96
+ "description": "Bottom-left corner radius; radius tuple or auto resolves per corner.",
97
+ "refReact": "radius"
98
+ },
99
+ "padding-inline-start": {
100
+ "description": "Inline-start padding when padding is enabled.",
101
+ "refReact": "hPadding"
102
+ },
103
+ "padding-inline-end": {
104
+ "description": "Inline-end padding when padding is enabled.",
105
+ "refReact": "hPadding"
106
+ },
107
+ "padding-block-start": {
108
+ "description": "Block-start padding when padding is enabled.",
109
+ "refReact": "vPadding"
110
+ },
111
+ "padding-block-end": {
112
+ "description": "Block-end padding when padding is enabled.",
113
+ "refReact": "vPadding"
114
+ }
115
+ }
116
+ }
33
117
  }
@@ -32,13 +32,13 @@ var Surface = ({ border, borderStyle = "solid", className, color, hPadding, hove
32
32
  vPadding
33
33
  });
34
34
  const dynamicStyle = {
35
- "--surface-background": toSurfaceColor(color ?? "none"),
36
- ...hasHoverColor && { "--surface-background-hover": toSurfaceColor(hoverColor) },
37
- ...border && { "--surface-border-style": borderStyle },
38
- "--surface-overflow": overflow,
35
+ "--vui-surface-background": toSurfaceColor(color ?? "none"),
36
+ ...hasHoverColor && { "--vui-surface-background-hover": toSurfaceColor(hoverColor) },
37
+ ...border && { "--vui-surface-border-style": borderStyle },
38
+ ...overflow && { "--vui-surface-overflow": overflow },
39
39
  ...radiusStyle,
40
- ...resolveAxisPadding(hPadding, "--surface-padding-inline-start", "--surface-padding-inline-end"),
41
- ...resolveAxisPadding(vPadding, "--surface-padding-block-start", "--surface-padding-block-end"),
40
+ ...resolveAxisPadding(hPadding, "--vui-surface-padding-inline-start", "--vui-surface-padding-inline-end"),
41
+ ...resolveAxisPadding(vPadding, "--vui-surface-padding-block-start", "--vui-surface-padding-block-end"),
42
42
  ...style
43
43
  };
44
44
  const surface = useRender({
@@ -1 +1 @@
1
- .viraui__switch-module__Switch_L86y7{--switch-track-block-size:var(--space-large);--switch-track-radius:var(--radius-small);--switch-track-background:var(--global-contrast);--switch-thumb-background:var(--base-7);--switch-thumb-size:calc(var(--space-large) - var(--space-x-small));--switch-thumb-inset:var(--space-2x-small);&:has([required]) .viraui__switch-module__Label_9R-rv:after{content:" *";color:var(--highlight-red)}}.viraui__switch-module__SwitchRoot_Zv9An{position:relative;appearance:none;border:0;box-shadow:none;inline-size:calc((var(--switch-thumb-size) * 2) + var(--switch-thumb-inset) * 2);block-size:var(--switch-track-block-size);background:var(--switch-track-background);border-radius:var(--switch-track-radius);&[data-size=small]{--switch-track-radius:var(--radius-x-small);--switch-track-block-size:var(--space-medium);--switch-thumb-size:calc(var(--space-medium) - var(--space-x-small))}&[data-checked]:not([data-disabled]):not([data-invalid]){--switch-track-background:var(--global-primary);--switch-thumb-background:contrast-color(var(--global-primary))}&[data-invalid]:not([data-disabled]),.viraui__switch-module__Switch_L86y7[data-invalid]>&:not([data-disabled]){box-shadow:inset 0 0 0 1px var(--highlight-red);outline-color:oklab(from var(--highlight-red) l a b/.5)}&[data-disabled],.viraui__switch-module__Switch_L86y7[data-disabled]>&{--switch-track-background:var(--global-disabled-background);--switch-thumb-background:var(--global-disabled-foreground);box-shadow:none;cursor:not-allowed}}.viraui__switch-module__Thumb_ldwJw{--switch-thumb-radius:calc(var(--switch-track-radius) - var(--switch-thumb-inset));position:absolute;inset-block:var(--switch-thumb-inset);inset-inline-start:var(--switch-thumb-inset);background:var(--switch-thumb-background);inline-size:var(--switch-thumb-size);block-size:var(--switch-thumb-size);border-radius:var(--switch-thumb-radius);transition:translate var(--easing-entrance) var(--duration-fast);.viraui__switch-module__SwitchRoot_Zv9An[data-checked]>&{translate:100% 0}.viraui__switch-module__SwitchRoot_Zv9An[data-checked]:dir(rtl)>&{translate:-100% 0}}
1
+ .viraui__switch-module__Switch_L86y7{--vui-switch-track-block-size:var(--space-large);--vui-switch-track-radius:var(--radius-small);--vui-switch-track-background:var(--global-contrast);--vui-switch-thumb-background:var(--base-1);--vui-switch-thumb-size:calc(var(--space-large) - var(--space-x-small));--vui-switch-thumb-inset:var(--space-2x-small);&:has([required]) .viraui__switch-module__Label_9R-rv:after{content:" *";color:var(--highlight-red)}}.viraui__switch-module__SwitchRoot_Zv9An{position:relative;appearance:none;border:0;box-shadow:none;inline-size:calc((var(--vui-switch-thumb-size) * 2) + var(--vui-switch-thumb-inset) * 2);block-size:var(--vui-switch-track-block-size);background:var(--vui-switch-track-background);border-radius:var(--vui-switch-track-radius);&[data-size=small]{--vui-switch-track-radius:var(--radius-x-small);--vui-switch-track-block-size:var(--space-medium);--vui-switch-thumb-size:calc(var(--space-medium) - var(--space-x-small))}&[data-checked]:not([data-disabled]){--vui-switch-track-background:var(--global-primary);--vui-switch-thumb-background:contrast-color(var(--global-primary))}&[data-invalid]:not([data-disabled]),.viraui__switch-module__Switch_L86y7[data-invalid]>&:not([data-disabled]){box-shadow:inset 0 0 0 1px var(--highlight-red);outline-color:oklab(from var(--highlight-red) l a b/.5)}&[data-disabled],.viraui__switch-module__Switch_L86y7[data-disabled]>&{--vui-switch-track-background:var(--global-disabled-background);--vui-switch-thumb-background:var(--global-disabled-foreground);box-shadow:none;cursor:not-allowed}}.viraui__switch-module__Thumb_ldwJw{--switch-thumb-radius:calc(var(--vui-switch-track-radius) - var(--vui-switch-thumb-inset));position:absolute;inset-block:var(--vui-switch-thumb-inset);inset-inline-start:var(--vui-switch-thumb-inset);background:var(--vui-switch-thumb-background);inline-size:var(--vui-switch-thumb-size);block-size:var(--vui-switch-thumb-size);border-radius:var(--switch-thumb-radius);transition:translate var(--easing-entrance) var(--duration-fast);box-shadow:0 0 1px 1px var(--global-contrast);.viraui__switch-module__SwitchRoot_Zv9An[data-checked]>&{translate:100% 0;box-shadow:none}.viraui__switch-module__SwitchRoot_Zv9An[data-checked]:dir(rtl)>&{translate:-100% 0}}
@@ -19,5 +19,36 @@
19
19
  "Rendering a switch without label and without aria-label",
20
20
  "Expecting description to stay visible when invalid without an error message"
21
21
  ],
22
- "related": ["Textfield", "Stack", "Text"]
22
+ "related": ["Textfield", "Stack", "Text"],
23
+ "properties": {
24
+ "react": {
25
+ "size": {
26
+ "description": "Controls the visual switch size.",
27
+ "refCss": "track-block-size"
28
+ }
29
+ },
30
+ "css": {
31
+ "track-block-size": {
32
+ "description": "Switch track block size; size presets adjust track and thumb.",
33
+ "refReact": "size"
34
+ },
35
+ "track-radius": {
36
+ "description": "Switch track corner radius.",
37
+ "refReact": "size"
38
+ },
39
+ "thumb-size": {
40
+ "description": "Switch thumb size derived from track block size.",
41
+ "refReact": "size"
42
+ },
43
+ "track-background": {
44
+ "description": "Switch track background color."
45
+ },
46
+ "thumb-background": {
47
+ "description": "Switch thumb background color."
48
+ },
49
+ "thumb-inset": {
50
+ "description": "Inset between thumb and track edges."
51
+ }
52
+ }
53
+ }
23
54
  }
@@ -3,14 +3,14 @@ import tabs_module_default from "./tabs.module.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Tabs } from "@base-ui/react/tabs";
5
5
  //#region src/components/tabs/tabs-indicator.tsx
6
- var TabsIndicator = ({ className, ref, ...props }) => /* @__PURE__ */ jsx(Tabs.Indicator, {
6
+ var TabsIndicator = ({ className, ref, ...otherProps }) => /* @__PURE__ */ jsx(Tabs.Indicator, {
7
7
  render: /* @__PURE__ */ jsx(Surface, {
8
8
  border: "all",
9
9
  radius: "auto",
10
10
  color: 3
11
11
  }),
12
12
  className: tabs_module_default.Indicator,
13
- ...props
13
+ ...otherProps
14
14
  });
15
15
  //#endregion
16
16
  export { TabsIndicator };
@@ -6,7 +6,7 @@ import { TabsIndicator } from "./tabs-indicator.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import { Tabs } from "@base-ui/react/tabs";
8
8
  //#region src/components/tabs/tabs-list.tsx
9
- var TabsList = ({ children, className, activateOnFocus = true, ref, ...props }) => /* @__PURE__ */ jsx(Tabs.List, {
9
+ var TabsList = ({ children, className, activateOnFocus = true, ref, ...otherProps }) => /* @__PURE__ */ jsx(Tabs.List, {
10
10
  className: clsx(tabs_module_default.List, className),
11
11
  activateOnFocus,
12
12
  render: /* @__PURE__ */ jsx(Surface, {
@@ -16,7 +16,7 @@ var TabsList = ({ children, className, activateOnFocus = true, ref, ...props })
16
16
  radius: "medium",
17
17
  vPadding: "2x-small"
18
18
  }),
19
- ...props,
19
+ ...otherProps,
20
20
  children: /* @__PURE__ */ jsxs(Stack, {
21
21
  direction: "row",
22
22
  columnGap: "small",
@@ -3,10 +3,10 @@ import tabs_module_default from "./tabs.module.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Tabs } from "@base-ui/react/tabs";
5
5
  //#region src/components/tabs/tabs-panel.tsx
6
- var TabsPanel = ({ children, className, ref, ...props }) => /* @__PURE__ */ jsx(Tabs.Panel, {
6
+ var TabsPanel = ({ children, className, ref, ...otherProps }) => /* @__PURE__ */ jsx(Tabs.Panel, {
7
7
  ref,
8
8
  className: clsx(tabs_module_default.Panel, className),
9
- ...props,
9
+ ...otherProps,
10
10
  children
11
11
  });
12
12
  //#endregion
@@ -5,14 +5,14 @@ import tabs_module_default from "./tabs.module.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { Tabs } from "@base-ui/react/tabs";
7
7
  //#region src/components/tabs/tabs-tab.tsx
8
- var TabsTab = ({ addon, addonPosition = "start", children, className, ...props }) => /* @__PURE__ */ jsx(Tabs.Tab, {
8
+ var TabsTab = ({ addon, addonPosition = "start", children, className, ...otherProps }) => /* @__PURE__ */ jsx(Tabs.Tab, {
9
9
  render: /* @__PURE__ */ jsx(Button, {
10
10
  variant: "flat",
11
11
  addon,
12
12
  addonPosition,
13
13
  className: clsx(tabs_module_default.Item, className)
14
14
  }),
15
- ...props,
15
+ ...otherProps,
16
16
  children: /* @__PURE__ */ jsx(Text, {
17
17
  tone: "muted",
18
18
  whiteSpace: "nowrap",
@@ -2,9 +2,9 @@ import { clsx } from "../../core/clsx.js";
2
2
  import tabs_module_default from "./tabs.module.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/components/tabs/tabs-viewport.tsx
5
- var TabsViewport = ({ children, className, ...props }) => /* @__PURE__ */ jsx("div", {
5
+ var TabsViewport = ({ children, className, ...otherProps }) => /* @__PURE__ */ jsx("div", {
6
6
  className: clsx(tabs_module_default.Viewport, className),
7
- ...props,
7
+ ...otherProps,
8
8
  children
9
9
  });
10
10
  //#endregion
@@ -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 +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 +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)}