@viraui/react 1.0.12 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalog.json +16 -4
- package/dist/components/accordion/accordion.css +1 -1
- package/dist/components/accordion/accordion.guide.json +26 -0
- package/dist/components/annotate/annotate.css +1 -1
- package/dist/components/annotate/annotate.guide.json +46 -57
- package/dist/components/avatar/avatar.css +1 -1
- package/dist/components/avatar/avatar.guide.json +22 -10
- package/dist/components/avatar/avatar.js +0 -2
- package/dist/components/avatar-group/avatar-group.css +1 -7
- package/dist/components/avatar-group/avatar-group.guide.json +23 -16
- package/dist/components/badge/badge.css +1 -0
- package/dist/components/badge/badge.d.ts +39 -0
- package/dist/components/badge/badge.guide.json +59 -0
- package/dist/components/badge/badge.js +50 -0
- package/dist/components/badge/badge.module.js +11 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/basic-input/basic-input.css +1 -1
- package/dist/components/basic-input/field-label.css +1 -1
- package/dist/components/basic-input/field-label.js +2 -0
- package/dist/components/bleed/bleed.guide.json +9 -6
- package/dist/components/button/button-chrome.d.ts +3 -1
- package/dist/components/button/button-chrome.js +3 -2
- package/dist/components/button/button-link.guide.json +55 -1
- package/dist/components/button/button-link.js +2 -1
- package/dist/components/button/button.css +1 -1
- package/dist/components/button/button.guide.json +27 -7
- package/dist/components/button/button.js +2 -1
- package/dist/components/checkbox/checkbox.css +1 -1
- package/dist/components/checkbox/checkbox.guide.json +40 -1
- package/dist/components/checkbox/checkbox.js +2 -2
- package/dist/components/checkbox/checkbox.module.js +1 -3
- package/dist/components/chip/chip.css +1 -1
- package/dist/components/chip/chip.guide.json +23 -6
- package/dist/components/chip/chip.js +2 -1
- package/dist/components/clamp-text/clamp-text.css +1 -1
- package/dist/components/clamp-text/clamp-text.guide.json +9 -0
- package/dist/components/clamp-text/clamp-text.js +1 -1
- package/dist/components/dialog/dialog-sheet.js +1 -1
- package/dist/components/dialog/dialog.css +1 -1
- package/dist/components/dialog/dialog.guide.json +24 -0
- package/dist/components/dialog/dialog.module.js +1 -3
- package/dist/components/elevator/elevator.guide.json +23 -1
- package/dist/components/fieldset/fieldset.guide.json +16 -3
- package/dist/components/fieldset/fieldset.js +6 -6
- package/dist/components/fit-text/fit-text.css +1 -1
- package/dist/components/fit-text/fit-text.guide.json +2 -4
- package/dist/components/icon-button/icon-button-link.guide.json +52 -1
- package/dist/components/icon-button/icon-button-link.js +2 -2
- package/dist/components/icon-button/icon-button.d.ts +1 -1
- package/dist/components/icon-button/icon-button.guide.json +48 -3
- package/dist/components/icon-button/icon-button.js +2 -2
- package/dist/components/index.d.ts +2 -0
- package/dist/components/linear-progress/linear-progress.guide.json +16 -5
- package/dist/components/linear-progress/linear-progress.js +0 -1
- package/dist/components/masonry/masonry.d.ts +1 -1
- package/dist/components/masonry/masonry.guide.json +11 -9
- package/dist/components/masonry/masonry.js +1 -1
- package/dist/components/menu/index.d.ts +11 -0
- package/dist/components/menu/menu-checkbox-item.d.ts +42 -0
- package/dist/components/menu/menu-checkbox-item.js +28 -0
- package/dist/components/menu/menu-group.d.ts +12 -0
- package/dist/components/menu/menu-group.js +36 -0
- package/dist/components/menu/menu-indicator-slot.d.ts +15 -0
- package/dist/components/menu/menu-indicator-slot.js +52 -0
- package/dist/components/menu/menu-item-row.d.ts +18 -0
- package/dist/components/menu/menu-item-row.js +47 -0
- package/dist/components/menu/menu-item.d.ts +36 -0
- package/dist/components/menu/menu-item.js +23 -0
- package/dist/components/menu/menu-link-item.d.ts +36 -0
- package/dist/components/menu/menu-link-item.js +26 -0
- package/dist/components/menu/menu-popup.d.ts +17 -0
- package/dist/components/menu/menu-popup.js +28 -0
- package/dist/components/menu/menu-radio-group.d.ts +16 -0
- package/dist/components/menu/menu-radio-group.js +36 -0
- package/dist/components/menu/menu-radio-item.d.ts +42 -0
- package/dist/components/menu/menu-radio-item.js +28 -0
- package/dist/components/menu/menu-separator.d.ts +9 -0
- package/dist/components/menu/menu-separator.js +15 -0
- package/dist/components/menu/menu-submenu-trigger.d.ts +29 -0
- package/dist/components/menu/menu-submenu-trigger.js +26 -0
- package/dist/components/menu/menu.css +1 -0
- package/dist/components/menu/menu.d.ts +58 -0
- package/dist/components/menu/menu.guide.json +101 -0
- package/dist/components/menu/menu.js +36 -0
- package/dist/components/menu/menu.module.js +13 -0
- package/dist/components/meter/meter.guide.json +15 -4
- package/dist/components/meter/meter.js +0 -1
- package/dist/components/popover/popover-sheet.js +1 -1
- package/dist/components/popover/popover.guide.json +25 -1
- package/dist/components/progressive-blur/progressive-blur.css +1 -1
- package/dist/components/progressive-blur/progressive-blur.guide.json +14 -4
- package/dist/components/progressive-blur/progressive-blur.js +2 -2
- package/dist/components/radio/radio.css +1 -1
- package/dist/components/radio/radio.guide.json +34 -1
- package/dist/components/radio/radio.js +28 -31
- package/dist/components/select/select-group.js +1 -1
- package/dist/components/select/select-option.d.ts +1 -1
- package/dist/components/select/select-option.js +2 -5
- package/dist/components/select/select-separator.js +7 -4
- package/dist/components/select/select.css +1 -1
- package/dist/components/select/select.guide.json +49 -8
- package/dist/components/select/select.js +1 -1
- package/dist/components/select/select.module.js +1 -5
- package/dist/components/separator/separator.guide.json +28 -1
- package/dist/components/shimmer/shimmer.css +1 -1
- package/dist/components/shimmer/shimmer.guide.json +19 -16
- package/dist/components/skeleton/skeleton.guide.json +24 -31
- package/dist/components/slider/slider.guide.json +27 -7
- package/dist/components/spinner/spinner.guide.json +5 -4
- package/dist/components/stack/stack.guide.json +49 -47
- package/dist/components/static-noise/static-noise.guide.json +18 -2
- package/dist/components/surface/surface.css +1 -1
- package/dist/components/surface/surface.guide.json +41 -48
- package/dist/components/switch/switch.css +1 -1
- package/dist/components/switch/switch.guide.json +25 -10
- package/dist/components/tabs/tabs.guide.json +11 -0
- package/dist/components/text/text.css +1 -1
- package/dist/components/text/text.guide.json +67 -76
- package/dist/components/textarea/textarea.css +1 -1
- package/dist/components/textarea/textarea.d.ts +4 -3
- package/dist/components/textarea/textarea.guide.json +19 -7
- package/dist/components/textfield/textfield.css +1 -1
- package/dist/components/textfield/textfield.guide.json +22 -7
- package/dist/components/title/title.css +1 -1
- package/dist/components/title/title.guide.json +62 -72
- package/dist/components/title/title.js +0 -1
- package/dist/components/toast/toast.css +1 -1
- package/dist/components/toast/toast.guide.json +32 -1
- package/dist/components/toggle-button/toggle-button.css +1 -0
- package/dist/components/toggle-button/toggle-button.d.ts +7 -0
- package/dist/components/toggle-button/toggle-button.guide.json +29 -2
- package/dist/components/toggle-button/toggle-button.js +18 -3
- package/dist/components/toggle-button/toggle-button.module.js +9 -0
- package/dist/components/toggle-group/toggle-group.d.ts +2 -1
- package/dist/components/toggle-group/toggle-group.guide.json +2 -3
- package/dist/components/tooltip/tooltip.guide.json +8 -1
- package/dist/components/typewriter/typewriter.css +1 -1
- package/dist/components/typewriter/typewriter.guide.json +27 -5
- package/dist/index.js +13 -2
- package/dist/internal/chrome-icons/chrome-icons.d.ts +2 -0
- package/dist/internal/chrome-icons/chrome-icons.js +7 -1
- package/dist/preflight-surface.json +1 -1
- package/dist/preflight.css +1 -1
- package/package.json +2 -2
|
@@ -23,19 +23,32 @@
|
|
|
23
23
|
"related": ["Textfield", "Stack", "Text"],
|
|
24
24
|
"properties": {
|
|
25
25
|
"react": {
|
|
26
|
+
"description": {
|
|
27
|
+
"description": "Helper copy rendered with `Field.Description` and `Text` while the field is valid."
|
|
28
|
+
},
|
|
29
|
+
"error": {
|
|
30
|
+
"description": "Error copy rendered with `Field.Error` and `Text` in the same slot as `description`. Replaces description while the field is invalid."
|
|
31
|
+
},
|
|
32
|
+
"hPadding": {
|
|
33
|
+
"description": "Sets inline padding using one token for both sides or a `[start, end]` tuple."
|
|
34
|
+
},
|
|
35
|
+
"label": {
|
|
36
|
+
"description": "Visible label rendered with shared internal `FieldLabel`."
|
|
37
|
+
},
|
|
26
38
|
"size": {
|
|
27
39
|
"description": "Controls the visual switch size.",
|
|
28
40
|
"refCss": "track-block-size"
|
|
41
|
+
},
|
|
42
|
+
"vPadding": {
|
|
43
|
+
"description": "Sets block padding using one token for both sides or a `[start, end]` tuple."
|
|
29
44
|
}
|
|
30
45
|
},
|
|
31
46
|
"css": {
|
|
32
|
-
"
|
|
33
|
-
"description": "Switch
|
|
34
|
-
"refReact": "size"
|
|
47
|
+
"thumb-background": {
|
|
48
|
+
"description": "Switch thumb background color."
|
|
35
49
|
},
|
|
36
|
-
"
|
|
37
|
-
"description": "
|
|
38
|
-
"refReact": "size"
|
|
50
|
+
"thumb-inset": {
|
|
51
|
+
"description": "Inset between thumb and track edges."
|
|
39
52
|
},
|
|
40
53
|
"thumb-size": {
|
|
41
54
|
"description": "Switch thumb size derived from track block size.",
|
|
@@ -44,11 +57,13 @@
|
|
|
44
57
|
"track-background": {
|
|
45
58
|
"description": "Switch track background color."
|
|
46
59
|
},
|
|
47
|
-
"
|
|
48
|
-
"description": "Switch
|
|
60
|
+
"track-block-size": {
|
|
61
|
+
"description": "Switch track block size; size presets adjust track and thumb.",
|
|
62
|
+
"refReact": "size"
|
|
49
63
|
},
|
|
50
|
-
"
|
|
51
|
-
"description": "
|
|
64
|
+
"track-radius": {
|
|
65
|
+
"description": "Switch track corner radius.",
|
|
66
|
+
"refReact": "size"
|
|
52
67
|
}
|
|
53
68
|
}
|
|
54
69
|
}
|
|
@@ -22,6 +22,17 @@
|
|
|
22
22
|
],
|
|
23
23
|
"related": ["Surface", "Stack", "Text"],
|
|
24
24
|
"properties": {
|
|
25
|
+
"react": {
|
|
26
|
+
"listAlignment": {
|
|
27
|
+
"description": "Horizontal alignment of tab list within root Stack."
|
|
28
|
+
},
|
|
29
|
+
"Tab.addon": {
|
|
30
|
+
"description": "Decorative addon rendered alongside the tab label."
|
|
31
|
+
},
|
|
32
|
+
"Tab.addonPosition": {
|
|
33
|
+
"description": "Controls whether the addon appears before or after the label."
|
|
34
|
+
}
|
|
35
|
+
},
|
|
25
36
|
"css": {
|
|
26
37
|
"translate-amount": {
|
|
27
38
|
"description": "Panel entry translate distance for tab transitions."
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-text-align{syntax:"*";inherits:false;initial-value:start}@property --vui-text-max-width{syntax:"*";inherits:false;initial-value:none}@property --vui-text-literal-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-text-white-space{syntax:"*";inherits:false;initial-value:normal}@property --vui-text-font-weight{syntax:"<number>";inherits:false;initial-value:400}@property --vui-text-font-width{syntax:"<number>";inherits:false;initial-value:100}@property --vui-text-font-opsz{syntax:"<number>";inherits:false;initial-value:16}@property --vui-text-trim{syntax:"*";inherits:false;initial-value:
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-text-align{syntax:"*";inherits:false;initial-value:start}@property --vui-text-max-width{syntax:"*";inherits:false;initial-value:none}@property --vui-text-literal-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-text-white-space{syntax:"*";inherits:false;initial-value:normal}@property --vui-text-font-weight{syntax:"<number>";inherits:false;initial-value:400}@property --vui-text-font-width{syntax:"<number>";inherits:false;initial-value:100}@property --vui-text-font-opsz{syntax:"<number>";inherits:false;initial-value:16}@property --vui-text-trim{syntax:"*";inherits:false;initial-value:trim-both}@property --vui-text-trim-type{syntax:"*";inherits:false;initial-value:cap alphabetic}@property --vui-text-padding-inline-start{syntax:"<length>";inherits:false;initial-value:0}@property --vui-text-padding-inline-end{syntax:"<length>";inherits:false;initial-value:0}@property --vui-text-padding-block-start{syntax:"<length>";inherits:false;initial-value:0}@property --vui-text-padding-block-end{syntax:"<length>";inherits:false;initial-value:0}@property --vui-text-font-size{syntax:"<length>";inherits:false;initial-value:1rem}@property --vui-text-font-family{syntax:"*";inherits:false;initial-value:sans-serif}@property --vui-text-line-height{syntax:"normal | <number> | <length-percentage>";inherits:false;initial-value:normal}@property --__text-medium{syntax:"*";inherits:false;initial-value:0}.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-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-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-weight:var(--vui-text-font-weight);font-stretch:calc(var(--vui-text-font-width) * 1%);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=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)}}}
|
|
@@ -24,55 +24,60 @@
|
|
|
24
24
|
"description": "Aligns text using logical alignment values.",
|
|
25
25
|
"refCss": "align"
|
|
26
26
|
},
|
|
27
|
-
"
|
|
28
|
-
"description": "
|
|
29
|
-
"refCss": "max-width"
|
|
27
|
+
"balanced": {
|
|
28
|
+
"description": "Enables balanced wrapping for block-like copy."
|
|
30
29
|
},
|
|
31
30
|
"color": {
|
|
32
|
-
"description": "Applies a literal color escape hatch when semantic tone is not used."
|
|
33
|
-
"refCss": "literal-color"
|
|
34
|
-
},
|
|
35
|
-
"whiteSpace": {
|
|
36
|
-
"description": "Controls white-space preservation and wrapping behavior.",
|
|
37
|
-
"refCss": "white-space"
|
|
31
|
+
"description": "Applies a literal color escape hatch when semantic `tone` is not used."
|
|
38
32
|
},
|
|
39
|
-
"
|
|
40
|
-
"description": "
|
|
41
|
-
"refCss": "font-weight"
|
|
33
|
+
"family": {
|
|
34
|
+
"description": "Selects the semantic font family for body copy and inline code-like text."
|
|
42
35
|
},
|
|
43
36
|
"fontWidth": {
|
|
44
|
-
"description": "
|
|
45
|
-
|
|
37
|
+
"description": "Overrides font width as a percentage (100 = normal); maps to `font-stretch` and `wdth`."
|
|
38
|
+
},
|
|
39
|
+
"hPadding": {
|
|
40
|
+
"description": "Sets inline padding using one token for both sides or a `[start, end]` tuple."
|
|
41
|
+
},
|
|
42
|
+
"lineHeight": {
|
|
43
|
+
"description": "Controls line height through foundation leading tokens."
|
|
44
|
+
},
|
|
45
|
+
"maxWidth": {
|
|
46
|
+
"description": "Constrains the maximum inline size of the rendered text block."
|
|
46
47
|
},
|
|
47
48
|
"opticalSize": {
|
|
48
|
-
"description": "
|
|
49
|
-
|
|
49
|
+
"description": "Overrides the optical size (`opsz`) axis on variable fonts; static fonts keep `font-optical-sizing: auto`."
|
|
50
|
+
},
|
|
51
|
+
"ref": {
|
|
52
|
+
"description": "Ref forwarded to the rendered text root element."
|
|
53
|
+
},
|
|
54
|
+
"render": {
|
|
55
|
+
"description": "Replaces the default `span` root using Base UI render semantics."
|
|
56
|
+
},
|
|
57
|
+
"selection": {
|
|
58
|
+
"description": "Enables text selection on the rendered copy."
|
|
59
|
+
},
|
|
60
|
+
"size": {
|
|
61
|
+
"description": "Selects a semantic body typography size from the active theme scale."
|
|
62
|
+
},
|
|
63
|
+
"tone": {
|
|
64
|
+
"description": "Sets the semantic text color role when no literal `color` override is used."
|
|
50
65
|
},
|
|
51
66
|
"trim": {
|
|
52
|
-
"description": "Trims text box whitespace at the chosen edge
|
|
67
|
+
"description": "Trims text box whitespace at the chosen edge when the browser supports `text-box`.",
|
|
53
68
|
"refCss": "trim"
|
|
54
69
|
},
|
|
55
70
|
"trimType": {
|
|
56
|
-
"description": "Selects the text-box trim basis when trim is active."
|
|
57
|
-
"refCss": "trim-type"
|
|
58
|
-
},
|
|
59
|
-
"hPadding": {
|
|
60
|
-
"description": "Sets inline padding using one token or a [start, end] tuple."
|
|
71
|
+
"description": "Selects the `text-box` trim basis when `trim` is active."
|
|
61
72
|
},
|
|
62
73
|
"vPadding": {
|
|
63
|
-
"description": "Sets block padding using one token or a [start, end] tuple."
|
|
64
|
-
},
|
|
65
|
-
"size": {
|
|
66
|
-
"description": "Selects a semantic body typography size from the active theme scale.",
|
|
67
|
-
"refCss": "font-size"
|
|
74
|
+
"description": "Sets block padding using one token for both sides or a `[start, end]` tuple."
|
|
68
75
|
},
|
|
69
|
-
"
|
|
70
|
-
"description": "Selects
|
|
71
|
-
"refCss": "font-family"
|
|
76
|
+
"weight": {
|
|
77
|
+
"description": "Selects a semantic weight keyword or a numeric weight (`font-weight` + `wght` axis)."
|
|
72
78
|
},
|
|
73
|
-
"
|
|
74
|
-
"description": "Controls
|
|
75
|
-
"refCss": "line-height"
|
|
79
|
+
"whiteSpace": {
|
|
80
|
+
"description": "Controls white-space preservation and wrapping behavior."
|
|
76
81
|
}
|
|
77
82
|
},
|
|
78
83
|
"css": {
|
|
@@ -80,65 +85,51 @@
|
|
|
80
85
|
"description": "Text alignment on the root.",
|
|
81
86
|
"refReact": "align"
|
|
82
87
|
},
|
|
83
|
-
"
|
|
84
|
-
"description": "
|
|
85
|
-
"refReact": "maxWidth"
|
|
88
|
+
"font-family": {
|
|
89
|
+
"description": "Font family; family prop presets via data attributes."
|
|
86
90
|
},
|
|
87
|
-
"
|
|
88
|
-
"description": "
|
|
89
|
-
"refReact": "color"
|
|
91
|
+
"font-opsz": {
|
|
92
|
+
"description": "Optical size axis on the root (variable fonts)."
|
|
90
93
|
},
|
|
91
|
-
"
|
|
92
|
-
"description": "
|
|
93
|
-
"refReact": "whiteSpace"
|
|
94
|
+
"font-size": {
|
|
95
|
+
"description": "Body font size; size prop presets via data attributes."
|
|
94
96
|
},
|
|
95
97
|
"font-weight": {
|
|
96
|
-
"description": "Font weight on the root."
|
|
97
|
-
"refReact": "weight"
|
|
98
|
+
"description": "Font weight on the root; keyword presets or numeric via weight prop."
|
|
98
99
|
},
|
|
99
100
|
"font-width": {
|
|
100
|
-
"description": "Font width percentage on the root (font-stretch + wdth)."
|
|
101
|
-
"refReact": "fontWidth"
|
|
101
|
+
"description": "Font width percentage on the root (font-stretch + wdth)."
|
|
102
102
|
},
|
|
103
|
-
"
|
|
104
|
-
"description": "
|
|
105
|
-
"refReact": "opticalSize"
|
|
106
|
-
},
|
|
107
|
-
"trim": {
|
|
108
|
-
"description": "Text-box trim mode on the root.",
|
|
109
|
-
"refReact": "trim"
|
|
103
|
+
"line-height": {
|
|
104
|
+
"description": "Line height; lineHeight prop presets via data attributes."
|
|
110
105
|
},
|
|
111
|
-
"
|
|
112
|
-
"description": "
|
|
113
|
-
"refReact": "trimType"
|
|
106
|
+
"literal-color": {
|
|
107
|
+
"description": "Literal color override on the root."
|
|
114
108
|
},
|
|
115
|
-
"
|
|
116
|
-
"description": "
|
|
117
|
-
"refReact": "hPadding"
|
|
109
|
+
"max-width": {
|
|
110
|
+
"description": "Max inline size of the text root."
|
|
118
111
|
},
|
|
119
|
-
"padding-
|
|
120
|
-
"description": "
|
|
121
|
-
"refReact": "hPadding"
|
|
112
|
+
"padding-block-end": {
|
|
113
|
+
"description": "Block-end padding when padding is enabled."
|
|
122
114
|
},
|
|
123
115
|
"padding-block-start": {
|
|
124
|
-
"description": "Block-start padding when padding is enabled."
|
|
125
|
-
"refReact": "vPadding"
|
|
116
|
+
"description": "Block-start padding when padding is enabled."
|
|
126
117
|
},
|
|
127
|
-
"padding-
|
|
128
|
-
"description": "
|
|
129
|
-
"refReact": "vPadding"
|
|
118
|
+
"padding-inline-end": {
|
|
119
|
+
"description": "Inline-end padding when padding is enabled."
|
|
130
120
|
},
|
|
131
|
-
"
|
|
132
|
-
"description": "
|
|
133
|
-
"refReact": "size"
|
|
121
|
+
"padding-inline-start": {
|
|
122
|
+
"description": "Inline-start padding when padding is enabled."
|
|
134
123
|
},
|
|
135
|
-
"
|
|
136
|
-
"description": "
|
|
137
|
-
"refReact": "
|
|
124
|
+
"trim": {
|
|
125
|
+
"description": "Text-box trim mode on the root.",
|
|
126
|
+
"refReact": "trim"
|
|
138
127
|
},
|
|
139
|
-
"
|
|
140
|
-
"description": "
|
|
141
|
-
|
|
128
|
+
"trim-type": {
|
|
129
|
+
"description": "Text-box trim basis on the root."
|
|
130
|
+
},
|
|
131
|
+
"white-space": {
|
|
132
|
+
"description": "White-space behavior on the root."
|
|
142
133
|
}
|
|
143
134
|
}
|
|
144
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-textarea-min-block-size{syntax:"<length>";inherits:true;initial-value:0}@property --vui-textarea-padding-block{syntax:"<length>";inherits:true;initial-value:0}@property --vui-textarea-input-border-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}.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__Description_er3zI{padding-inline:
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-textarea-min-block-size{syntax:"<length>";inherits:true;initial-value:0}@property --vui-textarea-padding-block{syntax:"<length>";inherits:true;initial-value:0}@property --vui-textarea-input-border-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}.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__Description_er3zI{padding-inline:var(--vui-field-label-padding-inline)}}@layer viraui.overrides{.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=horizontal]{resize:horizontal}&[data-resize=both]{resize:both}&[data-resize=block]{resize:block}&[data-resize=inline]{resize:inline}&[data-invalid]{border-color:var(--highlight-red)}&:disabled,&[data-disabled]{border-color:#0000}}}
|
|
@@ -32,12 +32,13 @@ export type TextareaProps = React.ComponentPropsWithRef<'textarea'> & Omit<Field
|
|
|
32
32
|
*/
|
|
33
33
|
error?: React.ReactNode;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
* `
|
|
35
|
+
* Native CSS `resize` for the control, serialized to `data-resize`. Omitted keeps resize disabled
|
|
36
|
+
* (`none`); accepts any valid `CSSProperties['resize']` value such as `"vertical"`, `"horizontal"`,
|
|
37
|
+
* or `"both"`.
|
|
37
38
|
*
|
|
38
39
|
* @default undefined (no resize)
|
|
39
40
|
*/
|
|
40
|
-
resize?: '
|
|
41
|
+
resize?: React.CSSProperties['resize'];
|
|
41
42
|
/**
|
|
42
43
|
* When `true`, sets `field-sizing: content` so the control grows with its value.
|
|
43
44
|
* Still respects `min-block-size` and `resize`. Omitted / `false` keeps the browser fixed default.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"summary": "Multi-line field control with shared field copy, optional resize, and optional content sizing.",
|
|
5
5
|
"whenToUse": [
|
|
6
6
|
"Multi-line text entry with label, description, and error",
|
|
7
|
-
"
|
|
7
|
+
"Optional native CSS resize (vertical, horizontal, both, and other valid resize values)",
|
|
8
8
|
"Content-sized growth via fitContent",
|
|
9
9
|
"Native textarea attributes through the field control",
|
|
10
10
|
"One or more Textareas inside Fieldset when they belong to a labeled form section with other fields"
|
|
@@ -23,19 +23,31 @@
|
|
|
23
23
|
"related": ["Fieldset", "Textfield", "Text"],
|
|
24
24
|
"properties": {
|
|
25
25
|
"react": {
|
|
26
|
+
"description": {
|
|
27
|
+
"description": "Helper copy rendered with `Field.Description` and `Text` while the field is valid."
|
|
28
|
+
},
|
|
29
|
+
"error": {
|
|
30
|
+
"description": "Error copy rendered with `Field.Error` and `Text` in the same slot as `description`. Replaces description while the field is invalid. Validation messages from `validate` are shown by `Field.Error` even when this prop is omitted."
|
|
31
|
+
},
|
|
26
32
|
"fitContent": {
|
|
27
|
-
"description": "When true
|
|
33
|
+
"description": "When `true`, sets `field-sizing: content` so the control grows with its value. Still respects `min-block-size` and `resize`. Omitted / `false` keeps the browser fixed default."
|
|
34
|
+
},
|
|
35
|
+
"label": {
|
|
36
|
+
"description": "Visible label rendered with shared internal `FieldLabel`."
|
|
37
|
+
},
|
|
38
|
+
"resize": {
|
|
39
|
+
"description": "Native CSS `resize` for the control, serialized to `data-resize`. Omitted keeps resize disabled (`none`); accepts any valid `CSSProperties['resize']` value such as `\"vertical\"`, `\"horizontal\"`, or `\"both\"`."
|
|
28
40
|
}
|
|
29
41
|
},
|
|
30
42
|
"css": {
|
|
43
|
+
"input-border-radius": {
|
|
44
|
+
"description": "Corner radius for the BasicInput textarea control (also drives field label/description inline padding)."
|
|
45
|
+
},
|
|
31
46
|
"min-block-size": {
|
|
32
|
-
"description": "Minimum block size of the textarea
|
|
47
|
+
"description": "Minimum block size of the BasicInput textarea control."
|
|
33
48
|
},
|
|
34
49
|
"padding-block": {
|
|
35
|
-
"description": "Block padding
|
|
36
|
-
},
|
|
37
|
-
"input-border-radius": {
|
|
38
|
-
"description": "Corner radius for the textarea control group."
|
|
50
|
+
"description": "Block padding on the BasicInput textarea control."
|
|
39
51
|
}
|
|
40
52
|
}
|
|
41
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-textfield-input-height{syntax:"<length>";inherits:true;initial-value:0}@property --vui-textfield-control-group-background{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-textfield-control-group-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-textfield-control-group-border-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-textfield-control-group-border-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}.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__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)}}@layer viraui.overrides{.viraui__textfield-module__CustomBasicInput_oHgtd{flex:1 1 auto;
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-textfield-input-height{syntax:"<length>";inherits:true;initial-value:0}@property --vui-textfield-control-group-background{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-textfield-control-group-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-textfield-control-group-border-color{syntax:"<color>";inherits:true;initial-value:#0000}@property --vui-textfield-control-group-border-radius{syntax:"<length-percentage>";inherits:true;initial-value:0}.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);color:var(--vui-textfield-control-group-color);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;--vui-textfield-control-group-color:var(--global-disabled-foreground);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__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)}}@layer viraui.overrides{.viraui__textfield-module__CustomBasicInput_oHgtd{flex:1 1 auto;block-size:100%;line-height:1.2;background:#0000;box-shadow:none;border-radius:inherit;&:focus-visible{outline:none}}}
|
|
@@ -26,25 +26,40 @@
|
|
|
26
26
|
"related": ["Fieldset", "Textarea", "Select", "Text"],
|
|
27
27
|
"properties": {
|
|
28
28
|
"react": {
|
|
29
|
+
"description": {
|
|
30
|
+
"description": "Helper copy rendered with `Field.Description` and `Text` while the field is valid."
|
|
31
|
+
},
|
|
32
|
+
"endAddon": {
|
|
33
|
+
"description": "Trailing decoration (icon, button). Buttons must use `type=\"button\"`."
|
|
34
|
+
},
|
|
35
|
+
"error": {
|
|
36
|
+
"description": "Error copy rendered with `Field.Error` and `Text` in the same slot as `description`. Replaces description while the field is invalid. Validation messages from `validate` are shown by `Field.Error` even when this prop is omitted."
|
|
37
|
+
},
|
|
29
38
|
"fitContent": {
|
|
30
|
-
"description": "When true
|
|
39
|
+
"description": "When `true`, sets `field-sizing: content` so the control grows inline with its value. Block chrome stays `var(--vui-textfield-input-height)`. Omitted / `false` keeps the browser fixed default."
|
|
40
|
+
},
|
|
41
|
+
"label": {
|
|
42
|
+
"description": "Visible label rendered with shared internal `FieldLabel`."
|
|
43
|
+
},
|
|
44
|
+
"startAddon": {
|
|
45
|
+
"description": "Leading decoration (prefix text, icon). Not a second field control."
|
|
31
46
|
}
|
|
32
47
|
},
|
|
33
48
|
"css": {
|
|
34
|
-
"input-height": {
|
|
35
|
-
"description": "Textfield control group block size."
|
|
36
|
-
},
|
|
37
49
|
"control-group-background": {
|
|
38
50
|
"description": "Textfield control group background."
|
|
39
51
|
},
|
|
40
|
-
"control-group-color": {
|
|
41
|
-
"description": "Textfield control group foreground color."
|
|
42
|
-
},
|
|
43
52
|
"control-group-border-color": {
|
|
44
53
|
"description": "Textfield control group border color."
|
|
45
54
|
},
|
|
46
55
|
"control-group-border-radius": {
|
|
47
56
|
"description": "Textfield control group corner radius."
|
|
57
|
+
},
|
|
58
|
+
"control-group-color": {
|
|
59
|
+
"description": "Textfield control group foreground color."
|
|
60
|
+
},
|
|
61
|
+
"input-height": {
|
|
62
|
+
"description": "Textfield control group block size."
|
|
48
63
|
}
|
|
49
64
|
}
|
|
50
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-title-align{syntax:"*";inherits:false;initial-value:start}@property --vui-title-max-width{syntax:"*";inherits:false;initial-value:none}@property --vui-title-literal-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-title-white-space{syntax:"*";inherits:false;initial-value:normal}@property --vui-title-font-weight{syntax:"<number>";inherits:false;initial-value:500}@property --vui-title-font-width{syntax:"<number>";inherits:false;initial-value:100}@property --vui-title-font-opsz{syntax:"<number>";inherits:false;initial-value:16}@property --vui-title-trim{syntax:"*";inherits:false;initial-value:
|
|
1
|
+
@layer viraui.preflight, viraui.components, viraui.overrides;@layer viraui.components{@property --vui-title-align{syntax:"*";inherits:false;initial-value:start}@property --vui-title-max-width{syntax:"*";inherits:false;initial-value:none}@property --vui-title-literal-color{syntax:"<color>";inherits:false;initial-value:#0000}@property --vui-title-white-space{syntax:"*";inherits:false;initial-value:normal}@property --vui-title-font-weight{syntax:"<number>";inherits:false;initial-value:500}@property --vui-title-font-width{syntax:"<number>";inherits:false;initial-value:100}@property --vui-title-font-opsz{syntax:"<number>";inherits:false;initial-value:16}@property --vui-title-trim{syntax:"*";inherits:false;initial-value:trim-both}@property --vui-title-trim-type{syntax:"*";inherits:false;initial-value:cap alphabetic}@property --vui-title-padding-inline-start{syntax:"<length>";inherits:false;initial-value:0}@property --vui-title-padding-inline-end{syntax:"<length>";inherits:false;initial-value:0}@property --vui-title-padding-block-start{syntax:"<length>";inherits:false;initial-value:0}@property --vui-title-padding-block-end{syntax:"<length>";inherits:false;initial-value:0}@property --vui-title-font-size{syntax:"<length>";inherits:false;initial-value:1rem}@property --vui-title-line-height{syntax:"normal | <number> | <length-percentage>";inherits:false;initial-value:normal}@property --vui-title-letter-spacing{syntax:"normal | <length>";inherits:false;initial-value:-.03em}@property --vui-title-font-family{syntax:"*";inherits:false;initial-value:sans-serif}@property --__title-medium{syntax:"*";inherits:false;initial-value:0}.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-line-height:var(--font-leading-standard);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-weight:var(--vui-title-font-weight);font-stretch:calc(var(--vui-title-font-width) * 1%);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-size=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-size="2"]{--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-size="3"]{--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-size="4"]{--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-size="5"]{--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-size="6"]{--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)}}}
|