@dalcvil/steam-green-react 0.2.0 → 1.0.0
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/README.md +20 -5
- package/dist/components/Avatar/Avatar.css +136 -0
- package/dist/components/Avatar/Avatar.d.ts +22 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.js +49 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +3 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Button/Button.css +117 -0
- package/dist/components/Button/Button.d.ts +18 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/Button.js +29 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.css +116 -0
- package/dist/components/Checkbox/Checkbox.css.d.ts +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +19 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +51 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/ColorPicker/ColorPicker.css +331 -0
- package/dist/components/ColorPicker/ColorPicker.css.d.ts +1 -0
- package/dist/components/ColorPicker/ColorPicker.d.ts +29 -0
- package/dist/components/ColorPicker/ColorPicker.d.ts.map +1 -0
- package/dist/components/ColorPicker/ColorPicker.js +534 -0
- package/dist/components/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/components/ColorPicker/index.d.ts +3 -0
- package/dist/components/{GreenButton → ColorPicker}/index.d.ts.map +1 -1
- package/dist/components/Console/Console.css +96 -0
- package/dist/components/Console/Console.css.d.ts +1 -0
- package/dist/components/Console/Console.d.ts +26 -0
- package/dist/components/Console/Console.d.ts.map +1 -0
- package/dist/components/Console/Console.js +59 -0
- package/dist/components/Console/Console.js.map +1 -0
- package/dist/components/Console/index.d.ts +3 -0
- package/dist/components/Console/index.d.ts.map +1 -0
- package/dist/components/Dialog/Dialog.css +137 -0
- package/dist/components/Dialog/Dialog.css.d.ts +1 -0
- package/dist/components/Dialog/Dialog.d.ts +28 -0
- package/dist/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog/Dialog.js +151 -0
- package/dist/components/Dialog/Dialog.js.map +1 -0
- package/dist/components/Dialog/index.d.ts +3 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/Divider/Divider.css +68 -0
- package/dist/components/Divider/Divider.css.d.ts +1 -0
- package/dist/components/Divider/Divider.d.ts +12 -0
- package/dist/components/Divider/Divider.d.ts.map +1 -0
- package/dist/components/Divider/Divider.js +23 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/Divider/index.d.ts +3 -0
- package/dist/components/Divider/index.d.ts.map +1 -0
- package/dist/components/FieldLabel/FieldLabel.css +98 -0
- package/dist/components/FieldLabel/FieldLabel.css.d.ts +1 -0
- package/dist/components/FieldLabel/FieldLabel.d.ts +29 -0
- package/dist/components/FieldLabel/FieldLabel.d.ts.map +1 -0
- package/dist/components/FieldLabel/FieldLabel.js +42 -0
- package/dist/components/FieldLabel/FieldLabel.js.map +1 -0
- package/dist/components/FieldLabel/index.d.ts +3 -0
- package/dist/components/{GreenPanel → FieldLabel}/index.d.ts.map +1 -1
- package/dist/components/GroupBox/GroupBox.css +101 -0
- package/dist/components/GroupBox/GroupBox.css.d.ts +1 -0
- package/dist/components/GroupBox/GroupBox.d.ts +14 -0
- package/dist/components/GroupBox/GroupBox.d.ts.map +1 -0
- package/dist/components/GroupBox/GroupBox.js +25 -0
- package/dist/components/GroupBox/GroupBox.js.map +1 -0
- package/dist/components/GroupBox/index.d.ts +3 -0
- package/dist/components/GroupBox/index.d.ts.map +1 -0
- package/dist/components/IconButton/IconButton.css +184 -0
- package/dist/components/IconButton/IconButton.css.d.ts +1 -0
- package/dist/components/IconButton/IconButton.d.ts +56 -0
- package/dist/components/IconButton/IconButton.d.ts.map +1 -0
- package/dist/components/IconButton/IconButton.js +77 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/IconButton/index.d.ts +3 -0
- package/dist/components/IconButton/index.d.ts.map +1 -0
- package/dist/components/LevelMeter/LevelMeter.css +117 -0
- package/dist/components/LevelMeter/LevelMeter.css.d.ts +1 -0
- package/dist/components/LevelMeter/LevelMeter.d.ts +20 -0
- package/dist/components/LevelMeter/LevelMeter.d.ts.map +1 -0
- package/dist/components/LevelMeter/LevelMeter.js +44 -0
- package/dist/components/LevelMeter/LevelMeter.js.map +1 -0
- package/dist/components/LevelMeter/index.d.ts +3 -0
- package/dist/components/LevelMeter/index.d.ts.map +1 -0
- package/dist/components/Link/Link.css +127 -0
- package/dist/components/Link/Link.css.d.ts +1 -0
- package/dist/components/Link/Link.d.ts +26 -0
- package/dist/components/Link/Link.d.ts.map +1 -0
- package/dist/components/Link/Link.js +60 -0
- package/dist/components/Link/Link.js.map +1 -0
- package/dist/components/Link/index.d.ts +3 -0
- package/dist/components/Link/index.d.ts.map +1 -0
- package/dist/components/List/List.css +224 -0
- package/dist/components/List/List.css.d.ts +1 -0
- package/dist/components/List/List.d.ts +49 -0
- package/dist/components/List/List.d.ts.map +1 -0
- package/dist/components/List/List.js +300 -0
- package/dist/components/List/List.js.map +1 -0
- package/dist/components/List/index.d.ts +3 -0
- package/dist/components/List/index.d.ts.map +1 -0
- package/dist/components/Menu/Menu.css +122 -0
- package/dist/components/Menu/Menu.css.d.ts +1 -0
- package/dist/components/Menu/Menu.d.ts +46 -0
- package/dist/components/Menu/Menu.d.ts.map +1 -0
- package/dist/components/Menu/Menu.js +246 -0
- package/dist/components/Menu/Menu.js.map +1 -0
- package/dist/components/Menu/index.d.ts +3 -0
- package/dist/components/Menu/index.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBar.css +94 -0
- package/dist/components/MenuBar/MenuBar.css.d.ts +1 -0
- package/dist/components/MenuBar/MenuBar.d.ts +34 -0
- package/dist/components/MenuBar/MenuBar.d.ts.map +1 -0
- package/dist/components/MenuBar/MenuBar.js +129 -0
- package/dist/components/MenuBar/MenuBar.js.map +1 -0
- package/dist/components/MenuBar/index.d.ts +3 -0
- package/dist/components/MenuBar/index.d.ts.map +1 -0
- package/dist/components/NavBar/NavBar.css +179 -0
- package/dist/components/NavBar/NavBar.css.d.ts +1 -0
- package/dist/components/NavBar/NavBar.d.ts +39 -0
- package/dist/components/NavBar/NavBar.d.ts.map +1 -0
- package/dist/components/NavBar/NavBar.js +198 -0
- package/dist/components/NavBar/NavBar.js.map +1 -0
- package/dist/components/NavBar/index.d.ts +3 -0
- package/dist/components/NavBar/index.d.ts.map +1 -0
- package/dist/components/Notification/Notification.css +176 -0
- package/dist/components/Notification/Notification.css.d.ts +1 -0
- package/dist/components/Notification/Notification.d.ts +26 -0
- package/dist/components/Notification/Notification.d.ts.map +1 -0
- package/dist/components/Notification/Notification.js +181 -0
- package/dist/components/Notification/Notification.js.map +1 -0
- package/dist/components/Notification/index.d.ts +3 -0
- package/dist/components/Notification/index.d.ts.map +1 -0
- package/dist/components/Panel/Panel.css +56 -0
- package/dist/components/Panel/Panel.css.d.ts +1 -0
- package/dist/components/Panel/Panel.d.ts +14 -0
- package/dist/components/Panel/Panel.d.ts.map +1 -0
- package/dist/components/Panel/Panel.js +42 -0
- package/dist/components/Panel/Panel.js.map +1 -0
- package/dist/components/Panel/index.d.ts +3 -0
- package/dist/components/Panel/index.d.ts.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.css +108 -0
- package/dist/components/ProgressBar/ProgressBar.css.d.ts +1 -0
- package/dist/components/ProgressBar/ProgressBar.d.ts +22 -0
- package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.js +43 -0
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
- package/dist/components/ProgressBar/index.d.ts +3 -0
- package/dist/components/ProgressBar/index.d.ts.map +1 -0
- package/dist/components/Radio/Radio.css +125 -0
- package/dist/components/Radio/Radio.css.d.ts +1 -0
- package/dist/components/Radio/Radio.d.ts +40 -0
- package/dist/components/Radio/Radio.d.ts.map +1 -0
- package/dist/components/Radio/Radio.js +91 -0
- package/dist/components/Radio/Radio.js.map +1 -0
- package/dist/components/Radio/index.d.ts +3 -0
- package/dist/components/Radio/index.d.ts.map +1 -0
- package/dist/components/RichText/RichText.css +96 -0
- package/dist/components/RichText/RichText.css.d.ts +1 -0
- package/dist/components/RichText/RichText.d.ts +25 -0
- package/dist/components/RichText/RichText.d.ts.map +1 -0
- package/dist/components/RichText/RichText.js +56 -0
- package/dist/components/RichText/RichText.js.map +1 -0
- package/dist/components/RichText/index.d.ts +3 -0
- package/dist/components/RichText/index.d.ts.map +1 -0
- package/dist/components/ScrollArea/ScrollArea.css +236 -0
- package/dist/components/ScrollArea/ScrollArea.css.d.ts +1 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts +25 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts.map +1 -0
- package/dist/components/ScrollArea/ScrollArea.js +124 -0
- package/dist/components/ScrollArea/ScrollArea.js.map +1 -0
- package/dist/components/ScrollArea/index.d.ts +3 -0
- package/dist/components/ScrollArea/index.d.ts.map +1 -0
- package/dist/components/Scrollbar/Scrollbar.css +260 -0
- package/dist/components/Scrollbar/Scrollbar.css.d.ts +1 -0
- package/dist/components/Scrollbar/Scrollbar.d.ts +31 -0
- package/dist/components/Scrollbar/Scrollbar.d.ts.map +1 -0
- package/dist/components/Scrollbar/Scrollbar.js +277 -0
- package/dist/components/Scrollbar/Scrollbar.js.map +1 -0
- package/dist/components/Scrollbar/index.d.ts +3 -0
- package/dist/components/Scrollbar/index.d.ts.map +1 -0
- package/dist/components/Select/Select.css +299 -0
- package/dist/components/Select/Select.css.d.ts +1 -0
- package/dist/components/Select/Select.d.ts +52 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/Select.js +281 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/index.d.ts +3 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Slider/Slider.css +158 -0
- package/dist/components/Slider/Slider.css.d.ts +1 -0
- package/dist/components/Slider/Slider.d.ts +26 -0
- package/dist/components/Slider/Slider.d.ts.map +1 -0
- package/dist/components/Slider/Slider.js +67 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/index.d.ts +3 -0
- package/dist/components/Slider/index.d.ts.map +1 -0
- package/dist/components/SpinBox/SpinBox.css +152 -0
- package/dist/components/SpinBox/SpinBox.css.d.ts +1 -0
- package/dist/components/SpinBox/SpinBox.d.ts +28 -0
- package/dist/components/SpinBox/SpinBox.d.ts.map +1 -0
- package/dist/components/SpinBox/SpinBox.js +207 -0
- package/dist/components/SpinBox/SpinBox.js.map +1 -0
- package/dist/components/SpinBox/index.d.ts +3 -0
- package/dist/components/SpinBox/index.d.ts.map +1 -0
- package/dist/components/Spinner/Spinner.css +137 -0
- package/dist/components/Spinner/Spinner.css.d.ts +1 -0
- package/dist/components/Spinner/Spinner.d.ts +20 -0
- package/dist/components/Spinner/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner/Spinner.js +36 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/index.d.ts +3 -0
- package/dist/components/Spinner/index.d.ts.map +1 -0
- package/dist/components/Splitter/Splitter.css +119 -0
- package/dist/components/Splitter/Splitter.css.d.ts +1 -0
- package/dist/components/Splitter/Splitter.d.ts +25 -0
- package/dist/components/Splitter/Splitter.d.ts.map +1 -0
- package/dist/components/Splitter/Splitter.js +212 -0
- package/dist/components/Splitter/Splitter.js.map +1 -0
- package/dist/components/Splitter/index.d.ts +3 -0
- package/dist/components/Splitter/index.d.ts.map +1 -0
- package/dist/components/StatusBar/StatusBar.css +97 -0
- package/dist/components/StatusBar/StatusBar.css.d.ts +1 -0
- package/dist/components/StatusBar/StatusBar.d.ts +22 -0
- package/dist/components/StatusBar/StatusBar.d.ts.map +1 -0
- package/dist/components/StatusBar/StatusBar.js +56 -0
- package/dist/components/StatusBar/StatusBar.js.map +1 -0
- package/dist/components/StatusBar/index.d.ts +3 -0
- package/dist/components/StatusBar/index.d.ts.map +1 -0
- package/dist/components/StatusLabel/StatusLabel.css +93 -0
- package/dist/components/StatusLabel/StatusLabel.css.d.ts +1 -0
- package/dist/components/StatusLabel/StatusLabel.d.ts +20 -0
- package/dist/components/StatusLabel/StatusLabel.d.ts.map +1 -0
- package/dist/components/StatusLabel/StatusLabel.js +42 -0
- package/dist/components/StatusLabel/StatusLabel.js.map +1 -0
- package/dist/components/StatusLabel/index.d.ts +3 -0
- package/dist/components/StatusLabel/index.d.ts.map +1 -0
- package/dist/components/Table/Table.css +253 -0
- package/dist/components/Table/Table.css.d.ts +1 -0
- package/dist/components/Table/Table.d.ts +67 -0
- package/dist/components/Table/Table.d.ts.map +1 -0
- package/dist/components/Table/Table.js +429 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Table/index.d.ts +3 -0
- package/dist/components/Table/index.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.css +138 -0
- package/dist/components/Tabs/Tabs.css.d.ts +1 -0
- package/dist/components/Tabs/Tabs.d.ts +34 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.js +140 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tabs/index.d.ts +3 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/TextInput/TextInput.css +133 -0
- package/dist/components/TextInput/TextInput.css.d.ts +1 -0
- package/dist/components/TextInput/TextInput.d.ts +16 -0
- package/dist/components/TextInput/TextInput.d.ts.map +1 -0
- package/dist/components/TextInput/TextInput.js +38 -0
- package/dist/components/TextInput/TextInput.js.map +1 -0
- package/dist/components/TextInput/index.d.ts +3 -0
- package/dist/components/TextInput/index.d.ts.map +1 -0
- package/dist/components/Textarea/Textarea.css +121 -0
- package/dist/components/Textarea/Textarea.css.d.ts +1 -0
- package/dist/components/Textarea/Textarea.d.ts +21 -0
- package/dist/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea/Textarea.js +61 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/index.d.ts +3 -0
- package/dist/components/Textarea/index.d.ts.map +1 -0
- package/dist/components/TitleBar/TitleBar.css +76 -0
- package/dist/components/TitleBar/TitleBar.css.d.ts +1 -0
- package/dist/components/TitleBar/TitleBar.d.ts +20 -0
- package/dist/components/TitleBar/TitleBar.d.ts.map +1 -0
- package/dist/components/TitleBar/TitleBar.js +43 -0
- package/dist/components/TitleBar/TitleBar.js.map +1 -0
- package/dist/components/TitleBar/index.d.ts +3 -0
- package/dist/components/TitleBar/index.d.ts.map +1 -0
- package/dist/components/ToggleButton/ToggleButton.css +162 -0
- package/dist/components/ToggleButton/ToggleButton.css.d.ts +1 -0
- package/dist/components/ToggleButton/ToggleButton.d.ts +27 -0
- package/dist/components/ToggleButton/ToggleButton.d.ts.map +1 -0
- package/dist/components/ToggleButton/ToggleButton.js +52 -0
- package/dist/components/ToggleButton/ToggleButton.js.map +1 -0
- package/dist/components/ToggleButton/index.d.ts +3 -0
- package/dist/components/ToggleButton/index.d.ts.map +1 -0
- package/dist/components/Toolbar/Toolbar.css +202 -0
- package/dist/components/Toolbar/Toolbar.css.d.ts +1 -0
- package/dist/components/Toolbar/Toolbar.d.ts +46 -0
- package/dist/components/Toolbar/Toolbar.d.ts.map +1 -0
- package/dist/components/Toolbar/Toolbar.js +102 -0
- package/dist/components/Toolbar/Toolbar.js.map +1 -0
- package/dist/components/Toolbar/index.d.ts +3 -0
- package/dist/components/Toolbar/index.d.ts.map +1 -0
- package/dist/components/Tooltip/Tooltip.css +86 -0
- package/dist/components/Tooltip/Tooltip.css.d.ts +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +22 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip/Tooltip.js +92 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +3 -0
- package/dist/components/Tooltip/index.d.ts.map +1 -0
- package/dist/components/TreeView/TreeView.css +191 -0
- package/dist/components/TreeView/TreeView.css.d.ts +1 -0
- package/dist/components/TreeView/TreeView.d.ts +46 -0
- package/dist/components/TreeView/TreeView.d.ts.map +1 -0
- package/dist/components/TreeView/TreeView.js +331 -0
- package/dist/components/TreeView/TreeView.js.map +1 -0
- package/dist/components/TreeView/index.d.ts +3 -0
- package/dist/components/TreeView/index.d.ts.map +1 -0
- package/dist/components/Window/Window.css +218 -0
- package/dist/components/Window/Window.css.d.ts +1 -0
- package/dist/components/Window/Window.d.ts +30 -0
- package/dist/components/Window/Window.d.ts.map +1 -0
- package/dist/components/Window/Window.js +156 -0
- package/dist/components/Window/Window.js.map +1 -0
- package/dist/components/Window/index.d.ts +3 -0
- package/dist/components/Window/index.d.ts.map +1 -0
- package/dist/index.d.ts +91 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -3
- package/dist/styles/scrollbars.css +123 -0
- package/dist/styles/scrollbars.css.d.ts +1 -0
- package/dist/styles/theme.css +86 -41
- package/dist/styles/tokens.css +202 -0
- package/dist/styles/tokens.css.d.ts +1 -0
- package/dist/test/a11y.d.ts +3 -0
- package/dist/test/a11y.d.ts.map +1 -0
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/package.json +13 -2
- package/dist/components/GreenButton/GreenButton.css +0 -47
- package/dist/components/GreenButton/GreenButton.d.ts +0 -8
- package/dist/components/GreenButton/GreenButton.d.ts.map +0 -1
- package/dist/components/GreenButton/GreenButton.js +0 -20
- package/dist/components/GreenButton/GreenButton.js.map +0 -1
- package/dist/components/GreenButton/index.d.ts +0 -3
- package/dist/components/GreenPanel/GreenPanel.css +0 -45
- package/dist/components/GreenPanel/GreenPanel.d.ts +0 -12
- package/dist/components/GreenPanel/GreenPanel.d.ts.map +0 -1
- package/dist/components/GreenPanel/GreenPanel.js +0 -24
- package/dist/components/GreenPanel/GreenPanel.js.map +0 -1
- package/dist/components/GreenPanel/index.d.ts +0 -3
- /package/dist/components/{GreenButton/GreenButton.css.d.ts → Avatar/Avatar.css.d.ts} +0 -0
- /package/dist/components/{GreenPanel/GreenPanel.css.d.ts → Button/Button.css.d.ts} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
import './ProgressBar.css';
|
|
3
|
+
export interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/** 0–100. Omit to render the indeterminate variant. */
|
|
5
|
+
value?: number;
|
|
6
|
+
/** Upper bound when `value` is absolute rather than a percentage. Defaults to 100. */
|
|
7
|
+
max?: number;
|
|
8
|
+
/** Show a label under the bar. */
|
|
9
|
+
showValue?: boolean;
|
|
10
|
+
/** Format the label. Defaults to "NN%". */
|
|
11
|
+
formatValue?: (value: number, max: number) => string;
|
|
12
|
+
/** Accessible name. Required when there is no visible label. */
|
|
13
|
+
label?: string;
|
|
14
|
+
/** Compact variant, for inline use. */
|
|
15
|
+
small?: boolean;
|
|
16
|
+
/** Render the error frame. */
|
|
17
|
+
error?: boolean;
|
|
18
|
+
/** Continuous variant: no discrete value, advances on its own. */
|
|
19
|
+
continuous?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const ProgressBar: import("react").ForwardRefExoticComponent<ProgressBarProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
22
|
+
//# sourceMappingURL=ProgressBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../src/components/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,OAAO,CAAA;AAE1D,OAAO,mBAAmB,CAAA;AAE1B,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IACpD,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,WAAW,6GAkDtB,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import "./ProgressBar.css";
|
|
4
|
+
//#region src/components/ProgressBar/ProgressBar.tsx
|
|
5
|
+
var ProgressBar = forwardRef(function ProgressBar({ className, value, max = 100, showValue = false, formatValue, label, small = false, error = false, continuous = false, ...rest }, ref) {
|
|
6
|
+
const ratio = value === void 0 || max <= 0 ? 0 : value / max;
|
|
7
|
+
const percent = Math.min(100, Math.max(0, ratio * 100));
|
|
8
|
+
const text = value === void 0 ? null : formatValue ? formatValue(value, max) : `${Math.round(percent)}%`;
|
|
9
|
+
const hasText = text !== null;
|
|
10
|
+
const classes = ["vgui-progress"];
|
|
11
|
+
if (small) classes.push("vgui-progress--small");
|
|
12
|
+
if (error) classes.push("vgui-progress--error");
|
|
13
|
+
if (value === void 0) classes.push("vgui-progress--indeterminate");
|
|
14
|
+
if (continuous) classes.push("vgui-progress--continuous");
|
|
15
|
+
if (showValue && hasText) classes.push("vgui-progress--with-text");
|
|
16
|
+
if (className) classes.push(className);
|
|
17
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
18
|
+
ref,
|
|
19
|
+
className: classes.join(" "),
|
|
20
|
+
role: "progressbar",
|
|
21
|
+
"aria-label": label,
|
|
22
|
+
"aria-valuemin": 0,
|
|
23
|
+
"aria-valuemax": max,
|
|
24
|
+
"aria-valuenow": value === void 0 ? void 0 : value,
|
|
25
|
+
"aria-valuetext": formatValue && hasText ? text : void 0,
|
|
26
|
+
...rest,
|
|
27
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
28
|
+
className: "vgui-progress__trough",
|
|
29
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
30
|
+
className: "vgui-progress__fill",
|
|
31
|
+
style: { "--vgui-progress": `${percent}%` }
|
|
32
|
+
})
|
|
33
|
+
}), showValue && text !== null ? /* @__PURE__ */ jsx("span", {
|
|
34
|
+
className: "vgui-progress__text",
|
|
35
|
+
children: text
|
|
36
|
+
}) : null]
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
ProgressBar.displayName = "ProgressBar";
|
|
40
|
+
//#endregion
|
|
41
|
+
export { ProgressBar };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","names":[],"sources":["../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { CSSProperties, HTMLAttributes } from 'react'\n\nimport './ProgressBar.css'\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /** 0–100. Omit to render the indeterminate variant. */\n value?: number\n /** Upper bound when `value` is absolute rather than a percentage. Defaults to 100. */\n max?: number\n /** Show a label under the bar. */\n showValue?: boolean\n /** Format the label. Defaults to \"NN%\". */\n formatValue?: (value: number, max: number) => string\n /** Accessible name. Required when there is no visible label. */\n label?: string\n /** Compact variant, for inline use. */\n small?: boolean\n /** Render the error frame. */\n error?: boolean\n /** Continuous variant: no discrete value, advances on its own. */\n continuous?: boolean\n}\n\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(function ProgressBar(\n {\n className,\n value,\n max = 100,\n showValue = false,\n formatValue,\n label,\n small = false,\n error = false,\n continuous = false,\n ...rest\n },\n ref,\n) {\n const ratio = value === undefined || max <= 0 ? 0 : value / max\n const percent = Math.min(100, Math.max(0, ratio * 100))\n const text = value === undefined ? null : formatValue ? formatValue(value, max) : `${Math.round(percent)}%`\n const hasText = text !== null\n\n const classes = ['vgui-progress']\n if (small) classes.push('vgui-progress--small')\n if (error) classes.push('vgui-progress--error')\n if (value === undefined) classes.push('vgui-progress--indeterminate')\n if (continuous) classes.push('vgui-progress--continuous')\n if (showValue && hasText) classes.push('vgui-progress--with-text')\n if (className) classes.push(className)\n\n return (\n <div\n ref={ref}\n className={classes.join(' ')}\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n /* Omitted entirely when unknown: `0` would announce \"0%\", not \"busy\". */\n aria-valuenow={value === undefined ? undefined : value}\n aria-valuetext={formatValue && hasText ? text : undefined}\n {...rest}\n >\n <div className=\"vgui-progress__trough\">\n <div\n className=\"vgui-progress__fill\"\n style={{ '--vgui-progress': `${percent}%` } as CSSProperties}\n />\n </div>\n {showValue && text !== null ? <span className=\"vgui-progress__text\">{text}</span> : null}\n </div>\n )\n})\n\nProgressBar.displayName = 'ProgressBar'\n"],"mappings":";;;;AAwBA,IAAa,cAAc,WAA6C,SAAS,YAC/E,EACE,WACA,OACA,MAAM,KACN,YAAY,OACZ,aACA,OACA,QAAQ,OACR,QAAQ,OACR,aAAa,OACb,GAAG,QAEL,KACA;CACA,MAAM,QAAQ,UAAU,KAAA,KAAa,OAAO,IAAI,IAAI,QAAQ;CAC5D,MAAM,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,QAAQ,GAAG,CAAC;CACtD,MAAM,OAAO,UAAU,KAAA,IAAY,OAAO,cAAc,YAAY,OAAO,GAAG,IAAI,GAAG,KAAK,MAAM,OAAO,EAAE;CACzG,MAAM,UAAU,SAAS;CAEzB,MAAM,UAAU,CAAC,eAAe;CAChC,IAAI,OAAO,QAAQ,KAAK,sBAAsB;CAC9C,IAAI,OAAO,QAAQ,KAAK,sBAAsB;CAC9C,IAAI,UAAU,KAAA,GAAW,QAAQ,KAAK,8BAA8B;CACpE,IAAI,YAAY,QAAQ,KAAK,2BAA2B;CACxD,IAAI,aAAa,SAAS,QAAQ,KAAK,0BAA0B;CACjE,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OACE,qBAAC,OAAD;EACO;EACL,WAAW,QAAQ,KAAK,GAAG;EAC3B,MAAK;EACL,cAAY;EACZ,iBAAe;EACf,iBAAe;EAEf,iBAAe,UAAU,KAAA,IAAY,KAAA,IAAY;EACjD,kBAAgB,eAAe,UAAU,OAAO,KAAA;EAChD,GAAI;EAVN,UAAA,CAYE,oBAAC,OAAD;GAAK,WAAU;GACb,UAAA,oBAAC,OAAD;IACE,WAAU;IACV,OAAO,EAAE,mBAAmB,GAAG,QAAQ,GAAG;GAC3C,CAAA;EACE,CAAA,GACJ,aAAa,SAAS,OAAO,oBAAC,QAAD;GAAM,WAAU;GAAuB,UAAA;EAAW,CAAA,IAAI,IACjF;;AAET,CAAC;AAED,YAAY,cAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ProgressBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Green Steam radio button and its group.
|
|
3
|
+
*
|
|
4
|
+
* Geometry is identical to `.vgui-checkbox` — same 15×15, same 3px inset, same
|
|
5
|
+
* *inverted* bevel, same dotted `rad*Focus` ring — and only the shape and the
|
|
6
|
+
* mark differ (docs/components/Radio.md). The two stylesheets are kept as
|
|
7
|
+
* siblings rather than sharing a `vgui-check-control` base: a shared rule would
|
|
8
|
+
* have to live in one component's stylesheet and be imported by the other, and
|
|
9
|
+
* per-component CSS is what travels with a tree-shaken import.
|
|
10
|
+
*
|
|
11
|
+
* The circle and the dot are pure geometry — `border-radius` and a filled
|
|
12
|
+
* `::after` — so no sprites ship.
|
|
13
|
+
*
|
|
14
|
+
* Deviations required by WCAG:
|
|
15
|
+
*
|
|
16
|
+
* - `rad*Focus`'s dotted ring is 1.15:1 on the circle face; the shipped ring
|
|
17
|
+
* is `--vgui-focus-ring` at the same `-3px` offset, with the literal ring
|
|
18
|
+
* behind the `.vgui-crisp` opt-in.
|
|
19
|
+
* - A horizontal group wraps instead of overflowing at 200% zoom.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
.vgui-radio-group {
|
|
23
|
+
display: block;
|
|
24
|
+
margin: 0;
|
|
25
|
+
padding: 0;
|
|
26
|
+
border: 0;
|
|
27
|
+
font: inherit;
|
|
28
|
+
color: var(--vgui-text);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* The legend is the group's accessible name: "Fullscreen, selected, 1 of 3"
|
|
32
|
+
* is only intelligible with the question attached. */
|
|
33
|
+
.vgui-radio-group__legend {
|
|
34
|
+
padding: 0;
|
|
35
|
+
color: var(--vgui-text);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.vgui-radio-group__options {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
gap: 3px;
|
|
42
|
+
padding-top: 3px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.vgui-radio-group--horizontal .vgui-radio-group__options {
|
|
46
|
+
flex-direction: row;
|
|
47
|
+
flex-wrap: wrap;
|
|
48
|
+
column-gap: 12px;
|
|
49
|
+
row-gap: var(--vgui-field-inset);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.vgui-radio {
|
|
53
|
+
display: inline-flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
gap: 3px;
|
|
56
|
+
font: inherit;
|
|
57
|
+
color: var(--vgui-text);
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Hidden but present and focusable — never `display: none`. */
|
|
62
|
+
.vgui-radio__input {
|
|
63
|
+
position: absolute;
|
|
64
|
+
inline-size: 1px;
|
|
65
|
+
block-size: 1px;
|
|
66
|
+
margin: -1px;
|
|
67
|
+
padding: 0;
|
|
68
|
+
overflow: hidden;
|
|
69
|
+
clip-path: inset(50%);
|
|
70
|
+
white-space: nowrap;
|
|
71
|
+
border: 0;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.vgui-radio__circle {
|
|
75
|
+
position: relative;
|
|
76
|
+
flex: 0 0 auto;
|
|
77
|
+
box-sizing: border-box;
|
|
78
|
+
inline-size: var(--vgui-checkbox-size);
|
|
79
|
+
block-size: var(--vgui-checkbox-size);
|
|
80
|
+
border-radius: 50%;
|
|
81
|
+
background-color: var(--vgui-surface);
|
|
82
|
+
border-top: var(--vgui-bevel-width) solid var(--vgui-bevel-dark);
|
|
83
|
+
border-left: var(--vgui-bevel-width) solid var(--vgui-bevel-dark);
|
|
84
|
+
border-bottom: var(--vgui-bevel-width) solid var(--vgui-bevel-light);
|
|
85
|
+
border-right: var(--vgui-bevel-width) solid var(--vgui-bevel-light);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* `radSelStd`: a centred 5px filled dot, leaving a ring of background between
|
|
89
|
+
* the mark and the border, which is what the sprite shows. */
|
|
90
|
+
.vgui-radio__input:checked ~ .vgui-radio__circle::after {
|
|
91
|
+
content: '';
|
|
92
|
+
position: absolute;
|
|
93
|
+
left: 50%;
|
|
94
|
+
top: 50%;
|
|
95
|
+
inline-size: 5px;
|
|
96
|
+
block-size: 5px;
|
|
97
|
+
margin: -2.5px 0 0 -2.5px;
|
|
98
|
+
border-radius: 50%;
|
|
99
|
+
background-color: var(--vgui-text-strong);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.vgui-radio__input:focus-visible ~ .vgui-radio__circle {
|
|
103
|
+
outline: var(--vgui-focus-ring);
|
|
104
|
+
outline-offset: var(--vgui-focus-ring-offset);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* Valve's literal `rad*Focus` ring, reachable only through the opt-in. */
|
|
108
|
+
.vgui-crisp .vgui-radio__input:focus-visible ~ .vgui-radio__circle {
|
|
109
|
+
outline: var(--vgui-focus-ring-valve);
|
|
110
|
+
outline-offset: var(--vgui-focus-ring-valve-offset);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.vgui-radio__input:disabled ~ .vgui-radio__label {
|
|
114
|
+
color: var(--vgui-text-disabled);
|
|
115
|
+
text-shadow: 1px 1px 0 var(--vgui-text-disabled-shadow);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.vgui-radio__input:disabled ~ .vgui-radio__circle {
|
|
119
|
+
cursor: not-allowed;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.vgui-radio__label {
|
|
123
|
+
min-width: 0;
|
|
124
|
+
overflow-wrap: anywhere;
|
|
125
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { InputHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import './Radio.css';
|
|
3
|
+
export interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
|
|
4
|
+
/** Value reported to the enclosing RadioGroup. */
|
|
5
|
+
value: string;
|
|
6
|
+
/** The label. Rendered as part of the clickable area. */
|
|
7
|
+
label?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export interface RadioGroupProps {
|
|
10
|
+
/** Group legend, rendered as a <legend>. */
|
|
11
|
+
label: ReactNode;
|
|
12
|
+
/** Controlled selected value. */
|
|
13
|
+
value?: string;
|
|
14
|
+
/** Initial value for uncontrolled use. */
|
|
15
|
+
defaultValue?: string;
|
|
16
|
+
/** Called with the newly selected value. */
|
|
17
|
+
onValueChange?: (value: string) => void;
|
|
18
|
+
/** Shared input name; useId() is used when omitted. */
|
|
19
|
+
name?: string;
|
|
20
|
+
/** Lay the radios out horizontally rather than stacked. */
|
|
21
|
+
orientation?: 'vertical' | 'horizontal';
|
|
22
|
+
/** Disable the whole group. */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A `fieldset`/`legend` group for `Radio`s. It is a context provider, not a DOM
|
|
28
|
+
* wrapper for logic: it passes `name`, the selected value, `onChange` and
|
|
29
|
+
* `disabled` down, so `Radio` stays a thin wrapper over a native input and the
|
|
30
|
+
* browser's own arrow-key navigation inside the group keeps working
|
|
31
|
+
* (docs/components/Radio.md, "Grouping").
|
|
32
|
+
*/
|
|
33
|
+
export declare function RadioGroup({ label, value, defaultValue, onValueChange, name, orientation, disabled, children, }: RadioGroupProps): import("react").JSX.Element;
|
|
34
|
+
/**
|
|
35
|
+
* A 15×15 circle with the same *inset* bevel as `Checkbox` — dark top/left,
|
|
36
|
+
* light bottom/right — and a filled dot instead of a tick
|
|
37
|
+
* (docs/components/Radio.md, "CSS recipe").
|
|
38
|
+
*/
|
|
39
|
+
export declare const Radio: import("react").ForwardRefExoticComponent<RadioProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
40
|
+
//# sourceMappingURL=Radio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/components/Radio/Radio.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,mBAAmB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAExE,OAAO,aAAa,CAAA;AAWpB,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACrF,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,KAAK,EAAE,SAAS,CAAA;IAChB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2DAA2D;IAC3D,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;IACvC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,WAAwB,EACxB,QAAgB,EAChB,QAAQ,GACT,EAAE,eAAe,+BAkCjB;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,yGA+BhB,CAAA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { createContext, forwardRef, useCallback, useContext, useId, useMemo, useState } from "react";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import "./Radio.css";
|
|
4
|
+
//#region src/components/Radio/Radio.tsx
|
|
5
|
+
var RadioGroupContext = createContext(null);
|
|
6
|
+
/**
|
|
7
|
+
* A `fieldset`/`legend` group for `Radio`s. It is a context provider, not a DOM
|
|
8
|
+
* wrapper for logic: it passes `name`, the selected value, `onChange` and
|
|
9
|
+
* `disabled` down, so `Radio` stays a thin wrapper over a native input and the
|
|
10
|
+
* browser's own arrow-key navigation inside the group keeps working
|
|
11
|
+
* (docs/components/Radio.md, "Grouping").
|
|
12
|
+
*/
|
|
13
|
+
function RadioGroup({ label, value, defaultValue, onValueChange, name, orientation = "vertical", disabled = false, children }) {
|
|
14
|
+
const generatedName = useId();
|
|
15
|
+
const isControlled = value !== void 0;
|
|
16
|
+
const [uncontrolled, setUncontrolled] = useState(defaultValue);
|
|
17
|
+
const selected = isControlled ? value : uncontrolled;
|
|
18
|
+
const select = useCallback((next) => {
|
|
19
|
+
if (!isControlled) setUncontrolled(next);
|
|
20
|
+
onValueChange?.(next);
|
|
21
|
+
}, [isControlled, onValueChange]);
|
|
22
|
+
const context = useMemo(() => ({
|
|
23
|
+
name: name ?? generatedName,
|
|
24
|
+
value: selected,
|
|
25
|
+
select,
|
|
26
|
+
disabled
|
|
27
|
+
}), [
|
|
28
|
+
name,
|
|
29
|
+
generatedName,
|
|
30
|
+
selected,
|
|
31
|
+
select,
|
|
32
|
+
disabled
|
|
33
|
+
]);
|
|
34
|
+
return /* @__PURE__ */ jsxs("fieldset", {
|
|
35
|
+
className: orientation === "horizontal" ? "vgui-radio-group vgui-radio-group--horizontal" : "vgui-radio-group",
|
|
36
|
+
disabled,
|
|
37
|
+
children: [/* @__PURE__ */ jsx("legend", {
|
|
38
|
+
className: "vgui-radio-group__legend",
|
|
39
|
+
children: label
|
|
40
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
41
|
+
className: "vgui-radio-group__options",
|
|
42
|
+
children: /* @__PURE__ */ jsx(RadioGroupContext.Provider, {
|
|
43
|
+
value: context,
|
|
44
|
+
children
|
|
45
|
+
})
|
|
46
|
+
})]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A 15×15 circle with the same *inset* bevel as `Checkbox` — dark top/left,
|
|
51
|
+
* light bottom/right — and a filled dot instead of a tick
|
|
52
|
+
* (docs/components/Radio.md, "CSS recipe").
|
|
53
|
+
*/
|
|
54
|
+
var Radio = forwardRef(function Radio({ className, value, label, name, checked, disabled, onChange, ...rest }, ref) {
|
|
55
|
+
const group = useContext(RadioGroupContext);
|
|
56
|
+
const classes = ["vgui-radio"];
|
|
57
|
+
if (className) classes.push(className);
|
|
58
|
+
const handleChange = (event) => {
|
|
59
|
+
onChange?.(event);
|
|
60
|
+
if (!event.defaultPrevented) group?.select(value);
|
|
61
|
+
};
|
|
62
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
63
|
+
className: classes.join(" "),
|
|
64
|
+
children: [
|
|
65
|
+
/* @__PURE__ */ jsx("input", {
|
|
66
|
+
ref,
|
|
67
|
+
type: "radio",
|
|
68
|
+
className: "vgui-radio__input",
|
|
69
|
+
value,
|
|
70
|
+
name: name ?? group?.name,
|
|
71
|
+
checked: checked ?? (group ? group.value === value : void 0),
|
|
72
|
+
disabled: disabled ?? group?.disabled ?? false,
|
|
73
|
+
onChange: handleChange,
|
|
74
|
+
...rest
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ jsx("span", {
|
|
77
|
+
className: "vgui-radio__circle",
|
|
78
|
+
"aria-hidden": "true"
|
|
79
|
+
}),
|
|
80
|
+
label == null ? null : /* @__PURE__ */ jsx("span", {
|
|
81
|
+
className: "vgui-radio__label",
|
|
82
|
+
children: label
|
|
83
|
+
})
|
|
84
|
+
]
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
Radio.displayName = "Radio";
|
|
88
|
+
//#endregion
|
|
89
|
+
export { Radio, RadioGroup };
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=Radio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.js","names":[],"sources":["../../../src/components/Radio/Radio.tsx"],"sourcesContent":["import { createContext, forwardRef, useCallback, useContext, useId, useMemo, useState } from 'react'\nimport type { ChangeEvent, InputHTMLAttributes, ReactNode } from 'react'\n\nimport './Radio.css'\n\ninterface RadioGroupContextValue {\n name: string\n value: string | undefined\n select: (value: string) => void\n disabled: boolean\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Value reported to the enclosing RadioGroup. */\n value: string\n /** The label. Rendered as part of the clickable area. */\n label?: ReactNode\n}\n\nexport interface RadioGroupProps {\n /** Group legend, rendered as a <legend>. */\n label: ReactNode\n /** Controlled selected value. */\n value?: string\n /** Initial value for uncontrolled use. */\n defaultValue?: string\n /** Called with the newly selected value. */\n onValueChange?: (value: string) => void\n /** Shared input name; useId() is used when omitted. */\n name?: string\n /** Lay the radios out horizontally rather than stacked. */\n orientation?: 'vertical' | 'horizontal'\n /** Disable the whole group. */\n disabled?: boolean\n children: ReactNode\n}\n\n/**\n * A `fieldset`/`legend` group for `Radio`s. It is a context provider, not a DOM\n * wrapper for logic: it passes `name`, the selected value, `onChange` and\n * `disabled` down, so `Radio` stays a thin wrapper over a native input and the\n * browser's own arrow-key navigation inside the group keeps working\n * (docs/components/Radio.md, \"Grouping\").\n */\nexport function RadioGroup({\n label,\n value,\n defaultValue,\n onValueChange,\n name,\n orientation = 'vertical',\n disabled = false,\n children,\n}: RadioGroupProps) {\n const generatedName = useId()\n const isControlled = value !== undefined\n const [uncontrolled, setUncontrolled] = useState(defaultValue)\n const selected = isControlled ? value : uncontrolled\n\n const select = useCallback(\n (next: string) => {\n if (!isControlled) setUncontrolled(next)\n onValueChange?.(next)\n },\n [isControlled, onValueChange],\n )\n\n const context = useMemo<RadioGroupContextValue>(\n () => ({ name: name ?? generatedName, value: selected, select, disabled }),\n [name, generatedName, selected, select, disabled],\n )\n\n return (\n <fieldset\n className={\n orientation === 'horizontal'\n ? 'vgui-radio-group vgui-radio-group--horizontal'\n : 'vgui-radio-group'\n }\n disabled={disabled}\n >\n <legend className=\"vgui-radio-group__legend\">{label}</legend>\n <div className=\"vgui-radio-group__options\">\n <RadioGroupContext.Provider value={context}>{children}</RadioGroupContext.Provider>\n </div>\n </fieldset>\n )\n}\n\n/**\n * A 15×15 circle with the same *inset* bevel as `Checkbox` — dark top/left,\n * light bottom/right — and a filled dot instead of a tick\n * (docs/components/Radio.md, \"CSS recipe\").\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { className, value, label, name, checked, disabled, onChange, ...rest },\n ref,\n) {\n const group = useContext(RadioGroupContext)\n\n const classes = ['vgui-radio']\n if (className) classes.push(className)\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange?.(event)\n if (!event.defaultPrevented) group?.select(value)\n }\n\n return (\n <label className={classes.join(' ')}>\n <input\n ref={ref}\n type=\"radio\"\n className=\"vgui-radio__input\"\n value={value}\n name={name ?? group?.name}\n checked={checked ?? (group ? group.value === value : undefined)}\n disabled={disabled ?? group?.disabled ?? false}\n onChange={handleChange}\n {...rest}\n />\n <span className=\"vgui-radio__circle\" aria-hidden=\"true\" />\n {label == null ? null : <span className=\"vgui-radio__label\">{label}</span>}\n </label>\n )\n})\n\nRadio.displayName = 'Radio'\n"],"mappings":";;;;AAYA,IAAM,oBAAoB,cAA6C,IAAI;;;;;;;;AAkC3E,SAAgB,WAAW,EACzB,OACA,OACA,cACA,eACA,MACA,cAAc,YACd,WAAW,OACX,YACkB;CAClB,MAAM,gBAAgB,MAAM;CAC5B,MAAM,eAAe,UAAU,KAAA;CAC/B,MAAM,CAAC,cAAc,mBAAmB,SAAS,YAAY;CAC7D,MAAM,WAAW,eAAe,QAAQ;CAExC,MAAM,SAAS,aACZ,SAAiB;EAChB,IAAI,CAAC,cAAc,gBAAgB,IAAI;EACvC,gBAAgB,IAAI;CACtB,GACA,CAAC,cAAc,aAAa,CAC9B;CAEA,MAAM,UAAU,eACP;EAAE,MAAM,QAAQ;EAAe,OAAO;EAAU;EAAQ;CAAS,IACxE;EAAC;EAAM;EAAe;EAAU;EAAQ;CAAQ,CAClD;CAEA,OACE,qBAAC,YAAD;EACE,WACE,gBAAgB,eACZ,kDACA;EAEI;EANZ,UAAA,CAQE,oBAAC,UAAD;GAAQ,WAAU;GAA4B,UAAA;EAAc,CAAA,GAC5D,oBAAC,OAAD;GAAK,WAAU;GACb,UAAA,oBAAC,kBAAkB,UAAnB;IAA4B,OAAO;IAAU;GAAqC,CAAA;EAC/E,CAAA,CACG;;AAEd;;;;;;AAOA,IAAa,QAAQ,WAAyC,SAAS,MACrE,EAAE,WAAW,OAAO,OAAO,MAAM,SAAS,UAAU,UAAU,GAAG,QACjE,KACA;CACA,MAAM,QAAQ,WAAW,iBAAiB;CAE1C,MAAM,UAAU,CAAC,YAAY;CAC7B,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,MAAM,gBAAgB,UAAyC;EAC7D,WAAW,KAAK;EAChB,IAAI,CAAC,MAAM,kBAAkB,OAAO,OAAO,KAAK;CAClD;CAEA,OACE,qBAAC,SAAD;EAAO,WAAW,QAAQ,KAAK,GAAG;EAAlC,UAAA;GACE,oBAAC,SAAD;IACO;IACL,MAAK;IACL,WAAU;IACH;IACP,MAAM,QAAQ,OAAO;IACrB,SAAS,YAAY,QAAQ,MAAM,UAAU,QAAQ,KAAA;IACrD,UAAU,YAAY,OAAO,YAAY;IACzC,UAAU;IACV,GAAI;GACL,CAAA;GACD,oBAAC,QAAD;IAAM,WAAU;IAAqB,eAAY;GAAQ,CAAA;GACxD,SAAS,OAAO,OAAO,oBAAC,QAAD;IAAM,WAAU;IAAqB,UAAA;GAAY,CAAA;EACpE;;AAEX,CAAC;AAED,MAAM,cAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Radio/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC3C,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Green Steam rich text — `RichText` and its three inline runs
|
|
3
|
+
* (docs/components/RichText.md).
|
|
4
|
+
*
|
|
5
|
+
* `RichText` draws its own bevel *and* fills the interior with `DarkGreenBG`,
|
|
6
|
+
* which is what makes the 1px border read as a carved edge rather than a hollow
|
|
7
|
+
* outline. The frame orientation is the inverse of `Button`'s raised bevel.
|
|
8
|
+
*
|
|
9
|
+
* Two documented departures from the corpus live here:
|
|
10
|
+
* - selected text is dark (`--vgui-selection-text`) rather than `White`,
|
|
11
|
+
* because `MaizeBG` + white is 3.70:1 and foundations.md §10 baseline 1
|
|
12
|
+
* requires dark text on every maize highlight;
|
|
13
|
+
* - `url` gains a hover/focus colour, because the corpus's `"RichText
|
|
14
|
+
* url:hover"` is a no-op and underline alone is the weaker signal.
|
|
15
|
+
*
|
|
16
|
+
* Component-local metrics are declared here per foundations.md §4 (with `var()`
|
|
17
|
+
* fallbacks, as the docs' convention requires); shared palette tokens are
|
|
18
|
+
* referenced bare.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
.vgui-rich-text {
|
|
22
|
+
--vgui-richtext-bg: var(--vgui-surface-dark); /* DarkGreenBG */
|
|
23
|
+
--vgui-richtext-text: var(--vgui-text-strong); /* textcolor = White */
|
|
24
|
+
--vgui-richtext-selection-bg: var(--vgui-accent-dark); /* MaizeBG */
|
|
25
|
+
--vgui-richtext-inset: 6px; /* RichText.InsetX / InsetY */
|
|
26
|
+
--vgui-richtext-font-weight-bold: 700; /* origin 1000; 700 always resolves */
|
|
27
|
+
--vgui-richtext-underline-offset: 2px;
|
|
28
|
+
|
|
29
|
+
position: relative;
|
|
30
|
+
background-color: var(--vgui-richtext-bg);
|
|
31
|
+
color: var(--vgui-richtext-text);
|
|
32
|
+
font-family: var(--vgui-font);
|
|
33
|
+
font-size: var(--vgui-font-size);
|
|
34
|
+
font-weight: normal;
|
|
35
|
+
/* Recessed: top/left dark, bottom/right lit. */
|
|
36
|
+
border-block-start: var(--vgui-bevel-width) solid var(--vgui-bevel-dark);
|
|
37
|
+
border-inline-start: var(--vgui-bevel-width) solid var(--vgui-bevel-dark);
|
|
38
|
+
border-inline-end: var(--vgui-bevel-width) solid var(--vgui-bevel-light);
|
|
39
|
+
border-block-end: var(--vgui-bevel-width) solid var(--vgui-bevel-light);
|
|
40
|
+
padding: var(--vgui-richtext-inset);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* `RichTextInterior {}` — an empty hook kept for parity; it only removes the
|
|
44
|
+
paragraph margin the browser would otherwise add inside the frame. */
|
|
45
|
+
.vgui-rich-text__interior {
|
|
46
|
+
margin: 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* Two maizes exist: the corpus's `selectedbgcolor` (MaizeBG) and the theme
|
|
51
|
+
* layer's own `::selection`. Dark text is required on both, so the rule covers
|
|
52
|
+
* the container's own selection and any descendant's.
|
|
53
|
+
*/
|
|
54
|
+
.vgui-rich-text::selection,
|
|
55
|
+
.vgui-rich-text ::selection {
|
|
56
|
+
background-color: var(--vgui-richtext-selection-bg);
|
|
57
|
+
color: var(--vgui-selection-text);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.vgui-rich-text__bold {
|
|
61
|
+
font-weight: var(--vgui-richtext-font-weight-bold, 700);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.vgui-rich-text__emphasis {
|
|
65
|
+
font-style: italic;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.vgui-rich-text__url {
|
|
69
|
+
color: inherit;
|
|
70
|
+
text-decoration: underline;
|
|
71
|
+
text-underline-offset: var(--vgui-richtext-underline-offset, 2px);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Not in the corpus, where hover is byte-identical to idle. */
|
|
75
|
+
.vgui-rich-text__url:hover {
|
|
76
|
+
color: var(--vgui-text-hover);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
* The corpus's focus style is a 1px dotted `BorderDark` ring; the accessible
|
|
81
|
+
* ring is the default here, per foundations.md §10 — the Valve ring remains
|
|
82
|
+
* available as `--vgui-focus-ring-valve` for a `.vgui-crisp` subtree.
|
|
83
|
+
*/
|
|
84
|
+
.vgui-rich-text__url:focus-visible {
|
|
85
|
+
color: var(--vgui-text-hover);
|
|
86
|
+
outline: var(--vgui-focus-ring);
|
|
87
|
+
outline-offset: var(--vgui-focus-ring-offset);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Inside a List or a Panel the frame belongs to the container, not to us. */
|
|
91
|
+
.vgui-rich-text--interior,
|
|
92
|
+
.vgui-rich-text--list {
|
|
93
|
+
border: 0;
|
|
94
|
+
padding: 0;
|
|
95
|
+
background: transparent;
|
|
96
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AnchorHTMLAttributes, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import './RichText.css';
|
|
3
|
+
export interface RichTextProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
4
|
+
/** Sanitised HTML. Never pass untrusted markup — see Accessibility. */
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
/** Drops the recessed frame; use inside a List or Panel. */
|
|
7
|
+
interior?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface RichTextLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
10
|
+
}
|
|
11
|
+
export interface RichTextBoldProps extends HTMLAttributes<HTMLElement> {
|
|
12
|
+
}
|
|
13
|
+
export interface RichTextEmphasisProps extends HTMLAttributes<HTMLElement> {
|
|
14
|
+
}
|
|
15
|
+
export declare const RichText: import("react").ForwardRefExoticComponent<RichTextProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
16
|
+
/**
|
|
17
|
+
* `"RichText url"` — the element the style maps onto. Prefer a bare `<a>` with
|
|
18
|
+
* `vgui-rich-text__url`; this exists for call sites that want a React component.
|
|
19
|
+
*/
|
|
20
|
+
export declare const RichTextLink: import("react").ForwardRefExoticComponent<RichTextLinkProps & import("react").RefAttributes<HTMLAnchorElement>>;
|
|
21
|
+
/** `"RichText bold"` — `<strong>`, so the emphasis survives without the font. */
|
|
22
|
+
export declare const RichTextBold: import("react").ForwardRefExoticComponent<RichTextBoldProps & import("react").RefAttributes<HTMLElement>>;
|
|
23
|
+
/** `"RichText emphasis"` — `<em>`, for the same reason. */
|
|
24
|
+
export declare const RichTextEmphasis: import("react").ForwardRefExoticComponent<RichTextEmphasisProps & import("react").RefAttributes<HTMLElement>>;
|
|
25
|
+
//# sourceMappingURL=RichText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../../src/components/RichText/RichText.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE5E,OAAO,gBAAgB,CAAA;AAEvB,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACrF,uEAAuE;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;CAAG;AAErF,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,WAAW,CAAC;CAAG;AAEzE,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,WAAW,CAAC;CAAG;AAE7E,eAAO,MAAM,QAAQ,0GAanB,CAAA;AAIF;;;GAGG;AACH,eAAO,MAAM,YAAY,iHAOxB,CAAA;AAID,iFAAiF;AACjF,eAAO,MAAM,YAAY,2GAOxB,CAAA;AAID,2DAA2D;AAC3D,eAAO,MAAM,gBAAgB,+GAO5B,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import "./RichText.css";
|
|
4
|
+
//#region src/components/RichText/RichText.tsx
|
|
5
|
+
var RichText = forwardRef(function RichText({ className, children, interior = false, ...rest }, ref) {
|
|
6
|
+
const classes = ["vgui-rich-text"];
|
|
7
|
+
if (interior) classes.push("vgui-rich-text--interior");
|
|
8
|
+
if (className) classes.push(className);
|
|
9
|
+
return /* @__PURE__ */ jsx("div", {
|
|
10
|
+
ref,
|
|
11
|
+
className: classes.join(" "),
|
|
12
|
+
...rest,
|
|
13
|
+
children
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
RichText.displayName = "RichText";
|
|
17
|
+
/**
|
|
18
|
+
* `"RichText url"` — the element the style maps onto. Prefer a bare `<a>` with
|
|
19
|
+
* `vgui-rich-text__url`; this exists for call sites that want a React component.
|
|
20
|
+
*/
|
|
21
|
+
var RichTextLink = forwardRef(function RichTextLink({ className, ...rest }, ref) {
|
|
22
|
+
const classes = ["vgui-rich-text__url"];
|
|
23
|
+
if (className) classes.push(className);
|
|
24
|
+
return /* @__PURE__ */ jsx("a", {
|
|
25
|
+
ref,
|
|
26
|
+
className: classes.join(" "),
|
|
27
|
+
...rest
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
RichTextLink.displayName = "RichTextLink";
|
|
31
|
+
/** `"RichText bold"` — `<strong>`, so the emphasis survives without the font. */
|
|
32
|
+
var RichTextBold = forwardRef(function RichTextBold({ className, ...rest }, ref) {
|
|
33
|
+
const classes = ["vgui-rich-text__bold"];
|
|
34
|
+
if (className) classes.push(className);
|
|
35
|
+
return /* @__PURE__ */ jsx("strong", {
|
|
36
|
+
ref,
|
|
37
|
+
className: classes.join(" "),
|
|
38
|
+
...rest
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
RichTextBold.displayName = "RichTextBold";
|
|
42
|
+
/** `"RichText emphasis"` — `<em>`, for the same reason. */
|
|
43
|
+
var RichTextEmphasis = forwardRef(function RichTextEmphasis({ className, ...rest }, ref) {
|
|
44
|
+
const classes = ["vgui-rich-text__emphasis"];
|
|
45
|
+
if (className) classes.push(className);
|
|
46
|
+
return /* @__PURE__ */ jsx("em", {
|
|
47
|
+
ref,
|
|
48
|
+
className: classes.join(" "),
|
|
49
|
+
...rest
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
RichTextEmphasis.displayName = "RichTextEmphasis";
|
|
53
|
+
//#endregion
|
|
54
|
+
export { RichText, RichTextBold, RichTextEmphasis, RichTextLink };
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=RichText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RichText.js","names":[],"sources":["../../../src/components/RichText/RichText.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { AnchorHTMLAttributes, HTMLAttributes, ReactNode } from 'react'\n\nimport './RichText.css'\n\nexport interface RichTextProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Sanitised HTML. Never pass untrusted markup — see Accessibility. */\n children?: ReactNode\n /** Drops the recessed frame; use inside a List or Panel. */\n interior?: boolean\n}\n\nexport interface RichTextLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {}\n\nexport interface RichTextBoldProps extends HTMLAttributes<HTMLElement> {}\n\nexport interface RichTextEmphasisProps extends HTMLAttributes<HTMLElement> {}\n\nexport const RichText = forwardRef<HTMLDivElement, RichTextProps>(function RichText(\n { className, children, interior = false, ...rest },\n ref,\n) {\n const classes = ['vgui-rich-text']\n if (interior) classes.push('vgui-rich-text--interior')\n if (className) classes.push(className)\n\n return (\n <div ref={ref} className={classes.join(' ')} {...rest}>\n {children}\n </div>\n )\n})\n\nRichText.displayName = 'RichText'\n\n/**\n * `\"RichText url\"` — the element the style maps onto. Prefer a bare `<a>` with\n * `vgui-rich-text__url`; this exists for call sites that want a React component.\n */\nexport const RichTextLink = forwardRef<HTMLAnchorElement, RichTextLinkProps>(\n function RichTextLink({ className, ...rest }, ref) {\n const classes = ['vgui-rich-text__url']\n if (className) classes.push(className)\n\n return <a ref={ref} className={classes.join(' ')} {...rest} />\n },\n)\n\nRichTextLink.displayName = 'RichTextLink'\n\n/** `\"RichText bold\"` — `<strong>`, so the emphasis survives without the font. */\nexport const RichTextBold = forwardRef<HTMLElement, RichTextBoldProps>(\n function RichTextBold({ className, ...rest }, ref) {\n const classes = ['vgui-rich-text__bold']\n if (className) classes.push(className)\n\n return <strong ref={ref} className={classes.join(' ')} {...rest} />\n },\n)\n\nRichTextBold.displayName = 'RichTextBold'\n\n/** `\"RichText emphasis\"` — `<em>`, for the same reason. */\nexport const RichTextEmphasis = forwardRef<HTMLElement, RichTextEmphasisProps>(\n function RichTextEmphasis({ className, ...rest }, ref) {\n const classes = ['vgui-rich-text__emphasis']\n if (className) classes.push(className)\n\n return <em ref={ref} className={classes.join(' ')} {...rest} />\n },\n)\n\nRichTextEmphasis.displayName = 'RichTextEmphasis'\n"],"mappings":";;;;AAkBA,IAAa,WAAW,WAA0C,SAAS,SACzE,EAAE,WAAW,UAAU,WAAW,OAAO,GAAG,QAC5C,KACA;CACA,MAAM,UAAU,CAAC,gBAAgB;CACjC,IAAI,UAAU,QAAQ,KAAK,0BAA0B;CACrD,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OACE,oBAAC,OAAD;EAAU;EAAK,WAAW,QAAQ,KAAK,GAAG;EAAG,GAAI;EAC9C;CACE,CAAA;AAET,CAAC;AAED,SAAS,cAAc;;;;;AAMvB,IAAa,eAAe,WAC1B,SAAS,aAAa,EAAE,WAAW,GAAG,QAAQ,KAAK;CACjD,MAAM,UAAU,CAAC,qBAAqB;CACtC,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OAAO,oBAAC,KAAD;EAAQ;EAAK,WAAW,QAAQ,KAAK,GAAG;EAAG,GAAI;CAAO,CAAA;AAC/D,CACF;AAEA,aAAa,cAAc;;AAG3B,IAAa,eAAe,WAC1B,SAAS,aAAa,EAAE,WAAW,GAAG,QAAQ,KAAK;CACjD,MAAM,UAAU,CAAC,sBAAsB;CACvC,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OAAO,oBAAC,UAAD;EAAa;EAAK,WAAW,QAAQ,KAAK,GAAG;EAAG,GAAI;CAAO,CAAA;AACpE,CACF;AAEA,aAAa,cAAc;;AAG3B,IAAa,mBAAmB,WAC9B,SAAS,iBAAiB,EAAE,WAAW,GAAG,QAAQ,KAAK;CACrD,MAAM,UAAU,CAAC,0BAA0B;CAC3C,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OAAO,oBAAC,MAAD;EAAS;EAAK,WAAW,QAAQ,KAAK,GAAG;EAAG,GAAI;CAAO,CAAA;AAChE,CACF;AAEA,iBAAiB,cAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/RichText/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACnF,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAA"}
|