@soroush.tech/design-system 2.0.0-rc.1 → 2.0.0-rc.3
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 +30 -10
- package/dist/AppBar.d.cts +1 -3
- package/dist/AppBar.d.mts +1 -3
- package/dist/Avatar.cjs +1 -1
- package/dist/Avatar.d.cts +1 -3
- package/dist/Avatar.d.mts +1 -3
- package/dist/Avatar.mjs +1 -1
- package/dist/Backdrop.d.cts +1 -1
- package/dist/Backdrop.d.mts +1 -1
- package/dist/Breadcrumbs.cjs +132 -0
- package/dist/Breadcrumbs.d.cts +40 -0
- package/dist/Breadcrumbs.d.mts +40 -0
- package/dist/Breadcrumbs.mjs +131 -0
- package/dist/Button.cjs +1 -1
- package/dist/Button.d.cts +1 -1
- package/dist/Button.d.mts +1 -1
- package/dist/Button.mjs +1 -1
- package/dist/ButtonGroup.d.cts +1 -1
- package/dist/ButtonGroup.d.mts +1 -1
- package/dist/Card.cjs +3 -3
- package/dist/Card.d.cts +4 -3
- package/dist/Card.d.mts +4 -3
- package/dist/Card.mjs +3 -3
- package/dist/Checkbox.d.cts +1 -2
- package/dist/Checkbox.d.mts +1 -2
- package/dist/CircularProgress.d.cts +2 -3
- package/dist/CircularProgress.d.mts +2 -3
- package/dist/Drawer.d.cts +3 -2
- package/dist/Drawer.d.mts +3 -2
- package/dist/Flex.d.cts +1 -1
- package/dist/Flex.d.mts +1 -1
- package/dist/Form.d.cts +1 -1
- package/dist/Form.d.mts +1 -1
- package/dist/FormControl.cjs +10 -2
- package/dist/FormControl.d.cts +9 -2
- package/dist/FormControl.d.mts +9 -2
- package/dist/FormControl.mjs +10 -2
- package/dist/FormHelperText.d.cts +1 -1
- package/dist/FormHelperText.d.mts +1 -1
- package/dist/FormLabel.cjs +9 -1
- package/dist/FormLabel.d.cts +2 -2
- package/dist/FormLabel.d.mts +2 -2
- package/dist/FormLabel.mjs +10 -2
- package/dist/Grid.d.cts +1 -3
- package/dist/Grid.d.mts +1 -3
- package/dist/{Icon-CH3asUJu.mjs → Icon-BihOAP4u.mjs} +52 -2
- package/dist/{Icon-CI6q2Eyi.cjs → Icon-D-EWsBVg.cjs} +52 -2
- package/dist/Icon.cjs +1 -1
- package/dist/Icon.d.cts +1 -1
- package/dist/Icon.d.mts +1 -1
- package/dist/Icon.mjs +1 -1
- package/dist/Image.d.cts +1 -2
- package/dist/Image.d.mts +1 -2
- package/dist/InputRange.cjs +675 -0
- package/dist/InputRange.d.cts +79 -0
- package/dist/InputRange.d.mts +79 -0
- package/dist/InputRange.mjs +673 -0
- package/dist/LinearProgress.d.cts +2 -3
- package/dist/LinearProgress.d.mts +2 -3
- package/dist/Link.cjs +1 -1
- package/dist/Link.d.cts +1 -1
- package/dist/Link.d.mts +1 -1
- package/dist/Link.mjs +1 -1
- package/dist/Menu/ContextMenu.cjs +146 -0
- package/dist/Menu/ContextMenu.d.cts +52 -0
- package/dist/Menu/ContextMenu.d.mts +52 -0
- package/dist/Menu/ContextMenu.mjs +145 -0
- package/dist/Menu/Menu.cjs +3 -0
- package/dist/Menu/Menu.d.cts +2 -0
- package/dist/Menu/Menu.d.mts +2 -0
- package/dist/Menu/Menu.mjs +2 -0
- package/dist/Menu/MenuDivider.cjs +29 -0
- package/dist/Menu/MenuDivider.d.cts +12 -0
- package/dist/Menu/MenuDivider.d.mts +12 -0
- package/dist/Menu/MenuDivider.mjs +28 -0
- package/dist/Menu/MenuItems.cjs +29 -0
- package/dist/Menu/MenuItems.d.cts +2 -0
- package/dist/Menu/MenuItems.d.mts +2 -0
- package/dist/Menu/MenuItems.mjs +28 -0
- package/dist/Menu/MenuList.cjs +3 -0
- package/dist/Menu/MenuList.d.cts +38 -0
- package/dist/Menu/MenuList.d.mts +38 -0
- package/dist/Menu/MenuList.mjs +2 -0
- package/dist/Menu-Cgg-sX4W.cjs +173 -0
- package/dist/Menu-CrzHc_cn.mjs +168 -0
- package/dist/Menu.cjs +13 -0
- package/dist/Menu.d.cts +7 -0
- package/dist/Menu.d.mts +7 -0
- package/dist/Menu.mjs +6 -0
- package/dist/MenuItem-BTP7Ijwi.cjs +673 -0
- package/dist/MenuItem-DUn4IZKK.mjs +649 -0
- package/dist/MenuItem.cjs +2 -148
- package/dist/MenuItem.d.cts +2 -52
- package/dist/MenuItem.d.mts +2 -52
- package/dist/MenuItem.mjs +1 -147
- package/dist/MenuList-B7msJ1IG.mjs +187 -0
- package/dist/MenuList-D4imLXAa.cjs +223 -0
- package/dist/MenuListContext-DKUOhNyw.d.cts +21 -0
- package/dist/MenuListContext-x-7lH4CH.d.mts +21 -0
- package/dist/Modal.d.cts +1 -1
- package/dist/Modal.d.mts +1 -1
- package/dist/NativeSelect.cjs +9 -8
- package/dist/NativeSelect.d.cts +3 -4
- package/dist/NativeSelect.d.mts +3 -4
- package/dist/NativeSelect.mjs +9 -8
- package/dist/NumberField.cjs +476 -0
- package/dist/NumberField.d.cts +74 -0
- package/dist/NumberField.d.mts +74 -0
- package/dist/NumberField.mjs +474 -0
- package/dist/Pagination/PaginationItem.cjs +1 -1
- package/dist/Pagination/PaginationItem.d.cts +1 -1
- package/dist/Pagination/PaginationItem.d.mts +1 -1
- package/dist/Pagination/PaginationItem.mjs +1 -1
- package/dist/Pagination.d.cts +2 -2
- package/dist/Pagination.d.mts +2 -2
- package/dist/Paper.cjs +1 -1
- package/dist/Paper.d.cts +2 -1
- package/dist/Paper.d.mts +2 -1
- package/dist/Paper.mjs +1 -1
- package/dist/{Popover-TpwRSORC.cjs → Popover-CiZfgiKE.cjs} +5 -125
- package/dist/Popover-QjM5Z1CR.mjs +133 -0
- package/dist/Popover.cjs +1 -1
- package/dist/Popover.d.cts +6 -7
- package/dist/Popover.d.mts +6 -7
- package/dist/Popover.mjs +1 -1
- package/dist/Pressable.cjs +1 -1
- package/dist/Pressable.d.cts +1 -1
- package/dist/Pressable.d.mts +1 -1
- package/dist/Pressable.mjs +1 -1
- package/dist/Quote.d.cts +2 -3
- package/dist/Quote.d.mts +2 -3
- package/dist/Radio.d.cts +1 -2
- package/dist/Radio.d.mts +1 -2
- package/dist/Rating.cjs +373 -0
- package/dist/Rating.d.cts +57 -0
- package/dist/Rating.d.mts +57 -0
- package/dist/Rating.mjs +371 -0
- package/dist/Select.cjs +5 -4
- package/dist/Select.d.cts +3 -4
- package/dist/Select.d.mts +3 -4
- package/dist/Select.mjs +7 -6
- package/dist/Sidebar/Sidebar.d.cts +1 -1
- package/dist/Sidebar/Sidebar.d.mts +1 -1
- package/dist/Sidebar/SidebarItem.cjs +1 -1
- package/dist/Sidebar/SidebarItem.d.cts +3 -4
- package/dist/Sidebar/SidebarItem.d.mts +3 -4
- package/dist/Sidebar/SidebarItem.mjs +3 -3
- package/dist/Skeleton.d.cts +1 -2
- package/dist/Skeleton.d.mts +1 -2
- package/dist/Switch.cjs +23 -16
- package/dist/Switch.d.cts +2 -3
- package/dist/Switch.d.mts +2 -3
- package/dist/Switch.mjs +25 -18
- package/dist/Table/Table.d.cts +2 -3
- package/dist/Table/Table.d.mts +2 -3
- package/dist/Table/TableBody.d.cts +1 -2
- package/dist/Table/TableBody.d.mts +1 -2
- package/dist/Table/TableCell.d.cts +1 -1
- package/dist/Table/TableCell.d.mts +1 -1
- package/dist/Table/TableContainer.d.cts +1 -3
- package/dist/Table/TableContainer.d.mts +1 -3
- package/dist/Table/TableControl.d.cts +1 -1
- package/dist/Table/TableControl.d.mts +1 -1
- package/dist/Table/TableControl.mjs +2 -2
- package/dist/Table/TableFooter.d.cts +1 -2
- package/dist/Table/TableFooter.d.mts +1 -2
- package/dist/Table/TableHead.d.cts +1 -2
- package/dist/Table/TableHead.d.mts +1 -2
- package/dist/Table/TablePagination.d.cts +2 -2
- package/dist/Table/TablePagination.d.mts +2 -2
- package/dist/Table/TablePaginationActions.cjs +1 -1
- package/dist/Table/TablePaginationActions.d.cts +1 -1
- package/dist/Table/TablePaginationActions.d.mts +1 -1
- package/dist/Table/TablePaginationActions.mjs +1 -1
- package/dist/Table/TableRow.d.cts +1 -2
- package/dist/Table/TableRow.d.mts +1 -2
- package/dist/Table/TableSortLabel.cjs +1 -1
- package/dist/Table/TableSortLabel.d.cts +1 -1
- package/dist/Table/TableSortLabel.d.mts +1 -1
- package/dist/Table/TableSortLabel.mjs +1 -1
- package/dist/Table/hooks.d.cts +1 -1
- package/dist/Table/hooks.d.mts +1 -1
- package/dist/Table.d.cts +5 -5
- package/dist/Table.d.mts +5 -5
- package/dist/{TableContext-BeCxbtHH.d.cts → TableContext-DhuRf6Wy.d.mts} +1 -1
- package/dist/{TableContext-BiRiYkVZ.d.mts → TableContext-Duj1nVG7.d.cts} +1 -1
- package/dist/Tabs/Tab.cjs +306 -0
- package/dist/Tabs/Tab.d.cts +62 -0
- package/dist/Tabs/Tab.d.mts +62 -0
- package/dist/Tabs/Tab.mjs +305 -0
- package/dist/Tabs/TabContext.cjs +34 -0
- package/dist/Tabs/TabContext.d.cts +20 -0
- package/dist/Tabs/TabContext.d.mts +20 -0
- package/dist/Tabs/TabContext.mjs +33 -0
- package/dist/Tabs/TabList.cjs +31 -0
- package/dist/Tabs/TabList.d.cts +11 -0
- package/dist/Tabs/TabList.d.mts +11 -0
- package/dist/Tabs/TabList.mjs +30 -0
- package/dist/Tabs/TabPanel.cjs +40 -0
- package/dist/Tabs/TabPanel.d.cts +27 -0
- package/dist/Tabs/TabPanel.d.mts +27 -0
- package/dist/Tabs/TabPanel.mjs +38 -0
- package/dist/Tabs/TabScrollButton.cjs +93 -0
- package/dist/Tabs/TabScrollButton.d.cts +2 -0
- package/dist/Tabs/TabScrollButton.d.mts +2 -0
- package/dist/Tabs/TabScrollButton.mjs +91 -0
- package/dist/Tabs/Tabs.cjs +3 -0
- package/dist/Tabs/Tabs.d.cts +3 -0
- package/dist/Tabs/Tabs.d.mts +3 -0
- package/dist/Tabs/Tabs.mjs +2 -0
- package/dist/Tabs-BTNOJx5v.mjs +634 -0
- package/dist/Tabs-D4tWCq78.cjs +646 -0
- package/dist/Tabs.cjs +13 -0
- package/dist/Tabs.d.cts +8 -0
- package/dist/Tabs.d.mts +8 -0
- package/dist/Tabs.mjs +7 -0
- package/dist/TabsContext-B_XHbjcS.d.cts +6 -0
- package/dist/TabsContext-Dn2kqUwr.d.mts +6 -0
- package/dist/TabsValueContext-D40zGCpE.cjs +19 -0
- package/dist/TabsValueContext-DvL3inf7.mjs +8 -0
- package/dist/TextInput.cjs +4 -4
- package/dist/TextInput.d.cts +2 -3
- package/dist/TextInput.d.mts +2 -3
- package/dist/TextInput.mjs +4 -4
- package/dist/ToggleButton/ToggleButton.cjs +1 -1
- package/dist/ToggleButton/ToggleButton.d.cts +1 -1
- package/dist/ToggleButton/ToggleButton.d.mts +1 -1
- package/dist/ToggleButton/ToggleButton.mjs +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.cjs +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.cts +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.mts +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.mjs +1 -1
- package/dist/TransferList.cjs +356 -0
- package/dist/TransferList.d.cts +67 -0
- package/dist/TransferList.d.mts +67 -0
- package/dist/TransferList.mjs +354 -0
- package/dist/Typography.cjs +1 -1
- package/dist/Typography.d.cts +2 -2
- package/dist/Typography.d.mts +2 -2
- package/dist/Typography.mjs +1 -1
- package/dist/View.d.cts +1 -1
- package/dist/View.d.mts +1 -1
- package/dist/catalog.cjs +4568 -0
- package/dist/catalog.d.cts +90 -0
- package/dist/catalog.d.mts +90 -0
- package/dist/catalog.mjs +4567 -0
- package/dist/computePopoverPosition-BIprs_xo.mjs +123 -0
- package/dist/computePopoverPosition-DiyEOHnU.cjs +128 -0
- package/dist/dividerLine-BNljcGlv.cjs +66 -0
- package/dist/dividerLine-FahY-M6_.mjs +31 -0
- package/dist/engine.d.cts +1 -1
- package/dist/engine.d.mts +1 -1
- package/dist/index-B1RFybA_.d.mts +72 -0
- package/dist/index-B4TeaB7b.d.cts +72 -0
- package/dist/{index-BUoVTCqX.d.mts → index-BGbTuHP9.d.mts} +1 -2
- package/dist/{index-Celm-8iN.d.cts → index-BHKgEOZJ.d.cts} +2 -3
- package/dist/{index-Chg6pSrr.d.mts → index-BQWjh4rK.d.mts} +2 -3
- package/dist/{index-B78VkB0-.d.cts → index-BelFIizY.d.cts} +2 -3
- package/dist/index-BkzZxHVj.d.mts +35 -0
- package/dist/{index-DbEnSf2m.d.cts → index-BrgwkY6z.d.mts} +3 -4
- package/dist/{index-Wnv6jCR3.d.mts → index-Bx0-6yeX.d.mts} +1 -2
- package/dist/index-BxVTIMnB.d.cts +1 -0
- package/dist/{index-BfZuh9c2.d.mts → index-ByYxVl9O.d.mts} +2 -3
- package/dist/index-CE5JG1us.d.mts +34 -0
- package/dist/{index-BhibLnZ0.d.cts → index-CG_1uPrD.d.mts} +2 -3
- package/dist/{themes-RX2UX5gD.d.mts → index-CJhK7JND.d.mts} +265 -8
- package/dist/{index-BB-dLv5V.d.mts → index-CQfJZADG.d.cts} +3 -4
- package/dist/{index-CxUsrlg1.d.cts → index-CUz2h5xY.d.mts} +2 -3
- package/dist/{index-Bid71KeF.d.cts → index-CbFaWtjK.d.mts} +2 -2
- package/dist/{index-DdqdSOct.d.cts → index-ChXeKJCk.d.cts} +1 -2
- package/dist/index-CknoXDLQ.d.cts +35 -0
- package/dist/{index-BSqet8aO.d.cts → index-ClZyaZrR.d.mts} +2 -3
- package/dist/{index-DXvQ-JVZ.d.mts → index-DAwcmIjN.d.cts} +2 -3
- package/dist/index-DGnXJwLj.d.mts +72 -0
- package/dist/{themes-Kbk9h5cN.d.cts → index-DJ0f69wh.d.cts} +262 -5
- package/dist/index-DWjz5ZzG.d.cts +72 -0
- package/dist/{index-DNwF3DUX.d.cts → index-DYF8sRE-.d.cts} +2 -3
- package/dist/index-DaIIo5QU.d.mts +1 -0
- package/dist/{index-CrN4MSUF.d.cts → index-DchHf5cF.d.cts} +1 -1
- package/dist/{index-S-ClM6WM.d.mts → index-DtYjdBvO.d.cts} +2 -2
- package/dist/{index-Ctqajtac.d.cts → index-Dv_fk1_F.d.cts} +27 -3
- package/dist/{index-smqjMLAZ.d.mts → index-K5exjvnX.d.cts} +2 -3
- package/dist/index-KnXhlKMr.d.cts +34 -0
- package/dist/index-WHFhjfgy.d.cts +98 -0
- package/dist/{index-GpnmW6vu.d.mts → index-YKrfFC_I.d.cts} +2 -3
- package/dist/index-bpnLB_4K.d.mts +98 -0
- package/dist/{index-VOsBSWEu.d.mts → index-h4dYtVrp.d.mts} +1 -1
- package/dist/{index-DO9J-Fla.d.mts → index-ha1WjSZ5.d.mts} +27 -3
- package/dist/{index-Belxmt1X.d.cts → index-nqUA_6J_.d.cts} +1 -2
- package/dist/{index-nc4Sxiy9.d.mts → index-pTNq3iQn.d.mts} +2 -3
- package/dist/index.d.cts +1 -2
- package/dist/index.d.mts +1 -2
- package/dist/isRtl-BJDtm86G.mjs +7 -0
- package/dist/isRtl-DTkYHRPo.cjs +12 -0
- package/dist/precision-B1lhxnnO.mjs +25 -0
- package/dist/precision-B58cTPB2.cjs +48 -0
- package/dist/style.cjs +1 -1
- package/dist/style.d.cts +2 -2
- package/dist/style.d.mts +2 -2
- package/dist/style.mjs +1 -1
- package/dist/surfaceSystem-BGQBoXv_.cjs +38 -0
- package/dist/surfaceSystem-D8TbmKy3.mjs +21 -0
- package/dist/theme-BxXuXRgQ.cjs +137 -0
- package/dist/theme-Z9_QludW.mjs +102 -0
- package/dist/theme.cjs +25 -24
- package/dist/theme.d.cts +3 -3
- package/dist/theme.d.mts +3 -3
- package/dist/theme.mjs +2 -1
- package/dist/{theme-CDVxig_g.mjs → themes-L-dE7_ck.mjs} +10 -110
- package/dist/{theme-BXlAP3xf.cjs → themes-gd6tcmqS.cjs} +0 -136
- package/dist/useControlled-C666KpQ0.cjs +18 -0
- package/dist/useControlled-CBRLsO-H.mjs +13 -0
- package/dist/{useTablePagination-COTiNH_8.d.mts → useTablePagination-C-u3ru4N.d.cts} +1 -1
- package/dist/{useTablePagination-WFkaUZu8.d.cts → useTablePagination-D-39ZmQh.d.mts} +1 -1
- package/package.json +83 -2
- package/dist/Popover-DwnSLpp1.mjs +0 -253
- package/dist/index-B_dKjEDR.d.mts +0 -23
- package/dist/index-C1WqEDtQ.d.mts +0 -69
- package/dist/index-CA7HnbtH.d.cts +0 -21
- package/dist/index-CKZaErxJ.d.mts +0 -21
- package/dist/index-DBUwu65Z.d.cts +0 -69
- package/dist/index-DzQJSYIh.d.cts +0 -23
- package/dist/index-cuv3o-L7.d.mts +0 -34
- package/dist/index-nB94D7UM.d.cts +0 -34
package/dist/Rating.cjs
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_src = require("./src-DU81aGy9.cjs");
|
|
3
|
+
const require_utils = require("./utils.cjs");
|
|
4
|
+
const require_theme = require("./theme-BxXuXRgQ.cjs");
|
|
5
|
+
const require_Icon = require("./Icon-D-EWsBVg.cjs");
|
|
6
|
+
const require_FormControlContext = require("./FormControlContext-74gvPGFk.cjs");
|
|
7
|
+
const require_FormControl = require("./FormControl.cjs");
|
|
8
|
+
const require_isRtl = require("./isRtl-DTkYHRPo.cjs");
|
|
9
|
+
const require_useControlled = require("./useControlled-C666KpQ0.cjs");
|
|
10
|
+
const require_precision = require("./precision-B58cTPB2.cjs");
|
|
11
|
+
let react = require("react");
|
|
12
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
13
|
+
let _soroush_tech_styled_system_should_forward_prop = require("@soroush.tech/styled-system/should-forward-prop");
|
|
14
|
+
//#region src/Rating/utils/precision.ts
|
|
15
|
+
/** The value under the pointer: along the width, rounded to a step, between one step and `max`. */
|
|
16
|
+
function getHoverValue({ offset, width, max, precision }) {
|
|
17
|
+
const raw = max * (offset / width) + precision / 2;
|
|
18
|
+
return require_utils.clamp(require_precision.roundToPrecision(raw, precision), precision, max);
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/Rating/hooks/useRating.ts
|
|
22
|
+
const NONE = -1;
|
|
23
|
+
const parseRating = (raw) => raw === "" ? null : Number.parseFloat(raw);
|
|
24
|
+
const getDisplayValue = (focus, rounded) => focus === NONE ? rounded : focus;
|
|
25
|
+
/**
|
|
26
|
+
* A rating's state: the rating itself (controlled or not, rounded to its precision), what the
|
|
27
|
+
* pointer and the focus are on, and the handlers that move them. The pointer takes priority over
|
|
28
|
+
* the keys when both change at once, and pressing the chosen item again clears it.
|
|
29
|
+
*/
|
|
30
|
+
function useRating({ value: valueProp, defaultValue, precision, max, rootRef, onChange, onChangeActive }) {
|
|
31
|
+
const [value, setValue] = require_useControlled.useControlled({
|
|
32
|
+
controlled: valueProp,
|
|
33
|
+
default: defaultValue ?? null
|
|
34
|
+
});
|
|
35
|
+
const rounded = require_precision.roundToPrecision(value, precision);
|
|
36
|
+
const [{ hover, focus }, setActive] = (0, react.useState)({
|
|
37
|
+
hover: NONE,
|
|
38
|
+
focus: NONE
|
|
39
|
+
});
|
|
40
|
+
const handleMouseMove = (event) => {
|
|
41
|
+
const { left, right, width } = rootRef.current.getBoundingClientRect();
|
|
42
|
+
if (width === 0) return;
|
|
43
|
+
const next = getHoverValue({
|
|
44
|
+
offset: require_isRtl.isRtl(rootRef.current) ? right - event.clientX : event.clientX - left,
|
|
45
|
+
width,
|
|
46
|
+
max,
|
|
47
|
+
precision
|
|
48
|
+
});
|
|
49
|
+
setActive({
|
|
50
|
+
hover: next,
|
|
51
|
+
focus: next
|
|
52
|
+
});
|
|
53
|
+
if (hover !== next) onChangeActive?.(event, next);
|
|
54
|
+
};
|
|
55
|
+
const handleMouseLeave = (event) => {
|
|
56
|
+
setActive({
|
|
57
|
+
hover: NONE,
|
|
58
|
+
focus: NONE
|
|
59
|
+
});
|
|
60
|
+
if (hover !== NONE) onChangeActive?.(event, NONE);
|
|
61
|
+
};
|
|
62
|
+
const handleChange = (event) => {
|
|
63
|
+
const next = hover === NONE ? parseRating(event.currentTarget.value) : hover;
|
|
64
|
+
setValue(next);
|
|
65
|
+
onChange?.(event, next);
|
|
66
|
+
};
|
|
67
|
+
const handleClear = (event) => {
|
|
68
|
+
if (event.clientX === 0 && event.clientY === 0) return;
|
|
69
|
+
setActive({
|
|
70
|
+
hover: NONE,
|
|
71
|
+
focus: NONE
|
|
72
|
+
});
|
|
73
|
+
setValue(null);
|
|
74
|
+
if (Number.parseFloat(event.currentTarget.value) === rounded) onChange?.(event, null);
|
|
75
|
+
};
|
|
76
|
+
const handleFocus = (event) => {
|
|
77
|
+
const next = Number.parseFloat(event.currentTarget.value);
|
|
78
|
+
setActive((previous) => ({
|
|
79
|
+
hover: previous.hover,
|
|
80
|
+
focus: next
|
|
81
|
+
}));
|
|
82
|
+
};
|
|
83
|
+
const handleBlur = () => {
|
|
84
|
+
if (hover !== NONE) return;
|
|
85
|
+
setActive((previous) => ({
|
|
86
|
+
hover: previous.hover,
|
|
87
|
+
focus: NONE
|
|
88
|
+
}));
|
|
89
|
+
};
|
|
90
|
+
return {
|
|
91
|
+
rounded,
|
|
92
|
+
displayValue: getDisplayValue(focus, rounded),
|
|
93
|
+
isActive: hover !== NONE || focus !== NONE,
|
|
94
|
+
handleMouseMove,
|
|
95
|
+
handleMouseLeave,
|
|
96
|
+
handleChange,
|
|
97
|
+
handleClear,
|
|
98
|
+
handleFocus,
|
|
99
|
+
handleBlur
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
//#region src/Rating/Rating.tsx
|
|
104
|
+
const visuallyHidden = {
|
|
105
|
+
position: "absolute",
|
|
106
|
+
width: 1,
|
|
107
|
+
height: 1,
|
|
108
|
+
margin: -1,
|
|
109
|
+
padding: 0,
|
|
110
|
+
border: 0,
|
|
111
|
+
overflow: "hidden",
|
|
112
|
+
clip: "rect(0 0 0 0)",
|
|
113
|
+
whiteSpace: "nowrap"
|
|
114
|
+
};
|
|
115
|
+
const RatingRoot = require_src.styled("span", {
|
|
116
|
+
name: "Rating",
|
|
117
|
+
label: "Rating",
|
|
118
|
+
shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)([
|
|
119
|
+
..._soroush_tech_styled_system_should_forward_prop.props,
|
|
120
|
+
"size",
|
|
121
|
+
"color",
|
|
122
|
+
"isDisabled",
|
|
123
|
+
"isReadOnly",
|
|
124
|
+
"isInField"
|
|
125
|
+
]),
|
|
126
|
+
systemProps: [require_src.src_exports.space]
|
|
127
|
+
})(({ theme, size, isDisabled, isReadOnly, isInField }) => ({
|
|
128
|
+
display: isInField ? "flex" : "inline-flex",
|
|
129
|
+
position: "relative",
|
|
130
|
+
width: "min-content",
|
|
131
|
+
fontSize: theme.icon[size],
|
|
132
|
+
lineHeight: 1,
|
|
133
|
+
cursor: isReadOnly ? "default" : "pointer",
|
|
134
|
+
...isDisabled && {
|
|
135
|
+
opacity: .5,
|
|
136
|
+
cursor: "not-allowed"
|
|
137
|
+
},
|
|
138
|
+
...(isDisabled || isReadOnly) && { pointerEvents: "none" }
|
|
139
|
+
}));
|
|
140
|
+
const focusRing = (theme, color) => {
|
|
141
|
+
const main = (0, require_src.src_exports.get)(theme, `palette.${color}.main`);
|
|
142
|
+
return {
|
|
143
|
+
outline: `${theme.borderWidths.base} solid ${main}`,
|
|
144
|
+
outlineOffset: theme.borderWidths.thin
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
const RatingItem = require_src.styled("label", {
|
|
148
|
+
name: "Rating",
|
|
149
|
+
slot: "item",
|
|
150
|
+
label: "RatingItem",
|
|
151
|
+
shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)(["color"])
|
|
152
|
+
})(({ theme, color }) => ({
|
|
153
|
+
display: "block",
|
|
154
|
+
position: "relative",
|
|
155
|
+
cursor: "inherit",
|
|
156
|
+
"&:has(input:focus-visible)": focusRing(theme, color)
|
|
157
|
+
}));
|
|
158
|
+
const RatingEmptyLabel = require_src.styled("label", {
|
|
159
|
+
name: "Rating",
|
|
160
|
+
slot: "emptyLabel",
|
|
161
|
+
label: "RatingEmptyLabel",
|
|
162
|
+
shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)(["color"])
|
|
163
|
+
})(({ theme, color }) => ({
|
|
164
|
+
position: "absolute",
|
|
165
|
+
inset: 0,
|
|
166
|
+
pointerEvents: "none",
|
|
167
|
+
"&:has(input:focus-visible)": focusRing(theme, color)
|
|
168
|
+
}));
|
|
169
|
+
const RatingInput = require_src.styled("input", {
|
|
170
|
+
name: "Rating",
|
|
171
|
+
slot: "input",
|
|
172
|
+
label: "RatingInput"
|
|
173
|
+
})(visuallyHidden);
|
|
174
|
+
const RatingText = require_src.styled("span", {
|
|
175
|
+
name: "Rating",
|
|
176
|
+
slot: "text",
|
|
177
|
+
label: "RatingText"
|
|
178
|
+
})(visuallyHidden);
|
|
179
|
+
const getIconColor = (theme, { color, isFilled, isError }) => {
|
|
180
|
+
if (isFilled) return (0, require_src.src_exports.get)(theme, `palette.${color}.main`);
|
|
181
|
+
if (isError) return (0, require_src.src_exports.get)(theme, "palette.error.main");
|
|
182
|
+
return (0, require_src.src_exports.get)(theme, "text.disabled");
|
|
183
|
+
};
|
|
184
|
+
const activeTransform = (isActive) => isActive ? "scale(1.2)" : "none";
|
|
185
|
+
const RatingIcon = require_src.styled("span", {
|
|
186
|
+
name: "Rating",
|
|
187
|
+
slot: "icon",
|
|
188
|
+
label: "RatingIcon",
|
|
189
|
+
shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)([
|
|
190
|
+
"color",
|
|
191
|
+
"isFilled",
|
|
192
|
+
"isActive",
|
|
193
|
+
"isError"
|
|
194
|
+
])
|
|
195
|
+
})(({ theme, ...style }) => ({
|
|
196
|
+
display: "flex",
|
|
197
|
+
flexShrink: 0,
|
|
198
|
+
width: "max-content",
|
|
199
|
+
pointerEvents: "none",
|
|
200
|
+
color: getIconColor(theme, style),
|
|
201
|
+
transition: "transform 0.2s",
|
|
202
|
+
transform: activeTransform(style.isActive),
|
|
203
|
+
"@media (prefers-reduced-motion: reduce)": { transition: "none" }
|
|
204
|
+
}));
|
|
205
|
+
const RatingDecimal = require_src.styled("span", {
|
|
206
|
+
name: "Rating",
|
|
207
|
+
slot: "decimal",
|
|
208
|
+
label: "RatingDecimal",
|
|
209
|
+
shouldForwardProp: (0, _soroush_tech_styled_system_should_forward_prop.createShouldForwardProp)(["isActive"])
|
|
210
|
+
})(({ isActive }) => ({
|
|
211
|
+
position: "relative",
|
|
212
|
+
display: "flex",
|
|
213
|
+
transition: "transform 0.2s",
|
|
214
|
+
transform: activeTransform(isActive),
|
|
215
|
+
"@media (prefers-reduced-motion: reduce)": { transition: "none" }
|
|
216
|
+
}));
|
|
217
|
+
function Item({ itemValue, isFilled, isActive, isChecked, isInteractive, label, labelStyle, icon, emptyIcon, name, required, disabled, color, isError, state }) {
|
|
218
|
+
const glyph = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RatingIcon, {
|
|
219
|
+
color,
|
|
220
|
+
isFilled,
|
|
221
|
+
isActive,
|
|
222
|
+
isError,
|
|
223
|
+
children: isFilled ? icon : emptyIcon
|
|
224
|
+
});
|
|
225
|
+
if (!isInteractive) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RatingItem, {
|
|
226
|
+
as: "span",
|
|
227
|
+
color,
|
|
228
|
+
style: labelStyle,
|
|
229
|
+
children: glyph
|
|
230
|
+
});
|
|
231
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(RatingItem, {
|
|
232
|
+
color,
|
|
233
|
+
style: labelStyle,
|
|
234
|
+
children: [
|
|
235
|
+
glyph,
|
|
236
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RatingText, { children: label }),
|
|
237
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RatingInput, {
|
|
238
|
+
type: "radio",
|
|
239
|
+
name,
|
|
240
|
+
value: itemValue,
|
|
241
|
+
checked: isChecked,
|
|
242
|
+
required,
|
|
243
|
+
disabled,
|
|
244
|
+
onChange: state.handleChange,
|
|
245
|
+
onClick: state.handleClear,
|
|
246
|
+
onFocus: state.handleFocus,
|
|
247
|
+
onBlur: state.handleBlur
|
|
248
|
+
})
|
|
249
|
+
]
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* @description A rating: a row of icons the user sets - or, `readOnly`, shows. A group of visually
|
|
254
|
+
* hidden native radio inputs, so keys (Tab to the rating, the arrows to change it), assistive
|
|
255
|
+
* technology and forms work as the platform's; hovering previews the value, and pressing the
|
|
256
|
+
* chosen item clears it. In a `FormControl` it takes the field's size, color, error and
|
|
257
|
+
* disabled state, and its `FormLabel` names it.
|
|
258
|
+
*/
|
|
259
|
+
function Rating({ value, defaultValue, onChange, onChangeActive, max: maxProp, precision: precisionProp, highlightSelectedOnly: highlightSelectedOnlyProp, icon: iconProp, emptyIcon: emptyIconProp, getLabelText = String, emptyLabelText, readOnly = false, size: sizeProp, color: colorProp, disabled: disabledProp, required: requiredProp, error: errorProp, name: nameProp, id: idProp, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, "aria-describedby": ariaDescribedby, "data-testid": dataTestid, ...spaceProps }) {
|
|
260
|
+
const dp = require_theme.useDefaultProps("Rating");
|
|
261
|
+
const isInField = (0, react.useContext)(require_FormControlContext.FormControlContext) !== null;
|
|
262
|
+
const fc = require_FormControl.useFormControl({
|
|
263
|
+
id: idProp,
|
|
264
|
+
error: errorProp,
|
|
265
|
+
disabled: disabledProp,
|
|
266
|
+
required: requiredProp,
|
|
267
|
+
size: sizeProp ?? dp.size,
|
|
268
|
+
color: colorProp ?? dp.color
|
|
269
|
+
});
|
|
270
|
+
const color = fc.color ?? "warning";
|
|
271
|
+
const max = maxProp ?? dp.max ?? 5;
|
|
272
|
+
const precision = precisionProp ?? dp.precision ?? 1;
|
|
273
|
+
const highlightSelectedOnly = highlightSelectedOnlyProp ?? dp.highlightSelectedOnly ?? false;
|
|
274
|
+
const icon = iconProp ?? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
|
|
275
|
+
name: "star",
|
|
276
|
+
size: "1em",
|
|
277
|
+
color: "inherit"
|
|
278
|
+
});
|
|
279
|
+
const emptyIcon = emptyIconProp ?? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
|
|
280
|
+
name: "star_border",
|
|
281
|
+
size: "1em",
|
|
282
|
+
color: "inherit"
|
|
283
|
+
});
|
|
284
|
+
const generatedName = (0, react.useId)();
|
|
285
|
+
const name = nameProp ?? generatedName;
|
|
286
|
+
const isInput = !readOnly;
|
|
287
|
+
const rootRef = (0, react.useRef)(null);
|
|
288
|
+
const state = useRating({
|
|
289
|
+
value,
|
|
290
|
+
defaultValue,
|
|
291
|
+
precision,
|
|
292
|
+
max,
|
|
293
|
+
rootRef,
|
|
294
|
+
onChange,
|
|
295
|
+
onChangeActive
|
|
296
|
+
});
|
|
297
|
+
const shown = state.displayValue ?? 0;
|
|
298
|
+
const renderItem = (itemValue, labelStyle, isActive = false) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Item, {
|
|
299
|
+
itemValue,
|
|
300
|
+
isFilled: highlightSelectedOnly ? itemValue === shown : itemValue <= shown,
|
|
301
|
+
isActive,
|
|
302
|
+
isChecked: itemValue === state.rounded,
|
|
303
|
+
isInteractive: isInput,
|
|
304
|
+
label: getLabelText(itemValue),
|
|
305
|
+
labelStyle,
|
|
306
|
+
icon,
|
|
307
|
+
emptyIcon,
|
|
308
|
+
name,
|
|
309
|
+
required: fc.required,
|
|
310
|
+
disabled: fc.disabled,
|
|
311
|
+
color,
|
|
312
|
+
isError: fc.error,
|
|
313
|
+
state
|
|
314
|
+
}, itemValue);
|
|
315
|
+
const items = Array.from({ length: max }, (_, index) => {
|
|
316
|
+
const itemValue = index + 1;
|
|
317
|
+
const isActive = state.isActive && itemValue === Math.ceil(shown);
|
|
318
|
+
if (precision >= 1) return renderItem(itemValue, void 0, isActive);
|
|
319
|
+
const steps = Math.round(1 / precision);
|
|
320
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RatingDecimal, {
|
|
321
|
+
isActive,
|
|
322
|
+
children: Array.from({ length: steps }, (__, step) => {
|
|
323
|
+
const stepValue = require_precision.roundToPrecision(itemValue - 1 + (step + 1) * precision, precision);
|
|
324
|
+
const isLast = step === steps - 1;
|
|
325
|
+
const width = stepValue === state.displayValue ? `${(step + 1) * precision * 100}%` : "0%";
|
|
326
|
+
return renderItem(stepValue, isLast ? void 0 : {
|
|
327
|
+
width,
|
|
328
|
+
overflow: "hidden",
|
|
329
|
+
position: "absolute"
|
|
330
|
+
});
|
|
331
|
+
})
|
|
332
|
+
}, itemValue);
|
|
333
|
+
});
|
|
334
|
+
const displayLabel = isInput ? void 0 : getLabelText(state.rounded ?? 0);
|
|
335
|
+
const groupProps = isInput ? {
|
|
336
|
+
role: "radiogroup",
|
|
337
|
+
"aria-labelledby": ariaLabelledby ?? fc.labelId,
|
|
338
|
+
"aria-describedby": ariaDescribedby ?? fc["aria-describedby"],
|
|
339
|
+
"aria-required": fc.required || void 0,
|
|
340
|
+
"aria-invalid": fc.error || void 0,
|
|
341
|
+
onMouseMove: state.handleMouseMove,
|
|
342
|
+
onMouseLeave: state.handleMouseLeave
|
|
343
|
+
} : {
|
|
344
|
+
role: "img",
|
|
345
|
+
"aria-labelledby": ariaLabelledby
|
|
346
|
+
};
|
|
347
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(RatingRoot, {
|
|
348
|
+
ref: rootRef,
|
|
349
|
+
id: fc.id,
|
|
350
|
+
size: fc.size,
|
|
351
|
+
color,
|
|
352
|
+
isDisabled: fc.disabled,
|
|
353
|
+
isReadOnly: readOnly,
|
|
354
|
+
isInField,
|
|
355
|
+
className,
|
|
356
|
+
"data-testid": dataTestid,
|
|
357
|
+
"aria-label": ariaLabel ?? displayLabel,
|
|
358
|
+
...groupProps,
|
|
359
|
+
...spaceProps,
|
|
360
|
+
children: [items, isInput && !fc.disabled && emptyLabelText !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(RatingEmptyLabel, {
|
|
361
|
+
color,
|
|
362
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RatingInput, {
|
|
363
|
+
type: "radio",
|
|
364
|
+
name,
|
|
365
|
+
value: "",
|
|
366
|
+
checked: state.rounded === null,
|
|
367
|
+
onChange: state.handleChange
|
|
368
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RatingText, { children: emptyLabelText })]
|
|
369
|
+
})]
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
//#endregion
|
|
373
|
+
exports.Rating = Rating;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { W as Theme } from "./index-DJ0f69wh.cjs";
|
|
2
|
+
import { MouseEvent, ReactNode, SyntheticEvent } from "react";
|
|
3
|
+
import { SpaceProps } from "@soroush.tech/styled-system";
|
|
4
|
+
//#region src/Rating/Rating.d.ts
|
|
5
|
+
interface RatingProps extends SpaceProps<Theme> {
|
|
6
|
+
/** The rating - `null` for none. Controlled with `onChange`. */
|
|
7
|
+
value?: number | null;
|
|
8
|
+
/** The rating at first, when uncontrolled. */
|
|
9
|
+
defaultValue?: number | null;
|
|
10
|
+
/** Fired when the rating changes - `null` when it is cleared. */
|
|
11
|
+
onChange?: (event: SyntheticEvent<HTMLInputElement>, value: number | null) => void;
|
|
12
|
+
/** Fired as the hovered value changes - `-1` when the pointer leaves. */
|
|
13
|
+
onChangeActive?: (event: MouseEvent<HTMLElement>, value: number) => void;
|
|
14
|
+
/** How many items. Default: `5`. */
|
|
15
|
+
max?: number;
|
|
16
|
+
/** The least step - `0.5` for halves. Default: `1`. */
|
|
17
|
+
precision?: number;
|
|
18
|
+
/** Only the chosen item is filled, not every one up to it. Default: `false`. */
|
|
19
|
+
highlightSelectedOnly?: boolean;
|
|
20
|
+
/** The filled item. Default: the `star` icon. */
|
|
21
|
+
icon?: ReactNode;
|
|
22
|
+
/** The empty item. Default: the `star_border` icon. */
|
|
23
|
+
emptyIcon?: ReactNode;
|
|
24
|
+
/** The accessible name of an item (and of a read-only rating). Default: its number. */
|
|
25
|
+
getLabelText?: (value: number) => string;
|
|
26
|
+
/** Names the "no rating" radio, which clears the rating from the keys - none is drawn without it. */
|
|
27
|
+
emptyLabelText?: string;
|
|
28
|
+
/** A display: `role="img"` named by `getLabelText`, not focusable. Default: `false`. */
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
/** Resolves against `theme.sizes`. Default: its `FormControl`'s, else `'md'`. */
|
|
31
|
+
size?: keyof Theme['sizes'];
|
|
32
|
+
/** The filled items' color - resolves to `theme.palette`. Default: its `FormControl`'s, else `'warning'`. */
|
|
33
|
+
color?: keyof Theme['palette'];
|
|
34
|
+
disabled?: boolean;
|
|
35
|
+
required?: boolean;
|
|
36
|
+
/** The empty items take the error color. */
|
|
37
|
+
error?: boolean;
|
|
38
|
+
/** Prefixes the radios' names, and submits the rating in a form. Default: generated. */
|
|
39
|
+
name?: string;
|
|
40
|
+
/** On the rating's group, which a `FormLabel` names it by. Default: its `FormControl`'s. */
|
|
41
|
+
id?: string;
|
|
42
|
+
className?: string;
|
|
43
|
+
'aria-label'?: string;
|
|
44
|
+
'aria-labelledby'?: string;
|
|
45
|
+
'aria-describedby'?: string;
|
|
46
|
+
'data-testid'?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @description A rating: a row of icons the user sets - or, `readOnly`, shows. A group of visually
|
|
50
|
+
* hidden native radio inputs, so keys (Tab to the rating, the arrows to change it), assistive
|
|
51
|
+
* technology and forms work as the platform's; hovering previews the value, and pressing the
|
|
52
|
+
* chosen item clears it. In a `FormControl` it takes the field's size, color, error and
|
|
53
|
+
* disabled state, and its `FormLabel` names it.
|
|
54
|
+
*/
|
|
55
|
+
declare function Rating({ value, defaultValue, onChange, onChangeActive, max: maxProp, precision: precisionProp, highlightSelectedOnly: highlightSelectedOnlyProp, icon: iconProp, emptyIcon: emptyIconProp, getLabelText, emptyLabelText, readOnly, size: sizeProp, color: colorProp, disabled: disabledProp, required: requiredProp, error: errorProp, name: nameProp, id: idProp, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, 'aria-describedby': ariaDescribedby, 'data-testid': dataTestid, ...spaceProps }: Readonly<RatingProps>): import("react").JSX.Element;
|
|
56
|
+
//#endregion
|
|
57
|
+
export { Rating, RatingProps };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { W as Theme } from "./index-CJhK7JND.mjs";
|
|
2
|
+
import { SpaceProps } from "@soroush.tech/styled-system";
|
|
3
|
+
import { MouseEvent, ReactNode, SyntheticEvent } from "react";
|
|
4
|
+
//#region src/Rating/Rating.d.ts
|
|
5
|
+
interface RatingProps extends SpaceProps<Theme> {
|
|
6
|
+
/** The rating - `null` for none. Controlled with `onChange`. */
|
|
7
|
+
value?: number | null;
|
|
8
|
+
/** The rating at first, when uncontrolled. */
|
|
9
|
+
defaultValue?: number | null;
|
|
10
|
+
/** Fired when the rating changes - `null` when it is cleared. */
|
|
11
|
+
onChange?: (event: SyntheticEvent<HTMLInputElement>, value: number | null) => void;
|
|
12
|
+
/** Fired as the hovered value changes - `-1` when the pointer leaves. */
|
|
13
|
+
onChangeActive?: (event: MouseEvent<HTMLElement>, value: number) => void;
|
|
14
|
+
/** How many items. Default: `5`. */
|
|
15
|
+
max?: number;
|
|
16
|
+
/** The least step - `0.5` for halves. Default: `1`. */
|
|
17
|
+
precision?: number;
|
|
18
|
+
/** Only the chosen item is filled, not every one up to it. Default: `false`. */
|
|
19
|
+
highlightSelectedOnly?: boolean;
|
|
20
|
+
/** The filled item. Default: the `star` icon. */
|
|
21
|
+
icon?: ReactNode;
|
|
22
|
+
/** The empty item. Default: the `star_border` icon. */
|
|
23
|
+
emptyIcon?: ReactNode;
|
|
24
|
+
/** The accessible name of an item (and of a read-only rating). Default: its number. */
|
|
25
|
+
getLabelText?: (value: number) => string;
|
|
26
|
+
/** Names the "no rating" radio, which clears the rating from the keys - none is drawn without it. */
|
|
27
|
+
emptyLabelText?: string;
|
|
28
|
+
/** A display: `role="img"` named by `getLabelText`, not focusable. Default: `false`. */
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
/** Resolves against `theme.sizes`. Default: its `FormControl`'s, else `'md'`. */
|
|
31
|
+
size?: keyof Theme['sizes'];
|
|
32
|
+
/** The filled items' color - resolves to `theme.palette`. Default: its `FormControl`'s, else `'warning'`. */
|
|
33
|
+
color?: keyof Theme['palette'];
|
|
34
|
+
disabled?: boolean;
|
|
35
|
+
required?: boolean;
|
|
36
|
+
/** The empty items take the error color. */
|
|
37
|
+
error?: boolean;
|
|
38
|
+
/** Prefixes the radios' names, and submits the rating in a form. Default: generated. */
|
|
39
|
+
name?: string;
|
|
40
|
+
/** On the rating's group, which a `FormLabel` names it by. Default: its `FormControl`'s. */
|
|
41
|
+
id?: string;
|
|
42
|
+
className?: string;
|
|
43
|
+
'aria-label'?: string;
|
|
44
|
+
'aria-labelledby'?: string;
|
|
45
|
+
'aria-describedby'?: string;
|
|
46
|
+
'data-testid'?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @description A rating: a row of icons the user sets - or, `readOnly`, shows. A group of visually
|
|
50
|
+
* hidden native radio inputs, so keys (Tab to the rating, the arrows to change it), assistive
|
|
51
|
+
* technology and forms work as the platform's; hovering previews the value, and pressing the
|
|
52
|
+
* chosen item clears it. In a `FormControl` it takes the field's size, color, error and
|
|
53
|
+
* disabled state, and its `FormLabel` names it.
|
|
54
|
+
*/
|
|
55
|
+
declare function Rating({ value, defaultValue, onChange, onChangeActive, max: maxProp, precision: precisionProp, highlightSelectedOnly: highlightSelectedOnlyProp, icon: iconProp, emptyIcon: emptyIconProp, getLabelText, emptyLabelText, readOnly, size: sizeProp, color: colorProp, disabled: disabledProp, required: requiredProp, error: errorProp, name: nameProp, id: idProp, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, 'aria-describedby': ariaDescribedby, 'data-testid': dataTestid, ...spaceProps }: Readonly<RatingProps>): import("react").JSX.Element;
|
|
56
|
+
//#endregion
|
|
57
|
+
export { Rating, RatingProps };
|