@lobehub/ui 5.51.1 → 5.52.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/es/Accordion/Accordion.mjs +1 -1
- package/es/Accordion/Accordion.mjs.map +1 -1
- package/es/ActionIconGroup/type.d.mts +2 -1
- package/es/Alert/Alert.mjs +1 -1
- package/es/AutoComplete/Select.mjs +1 -1
- package/es/Avatar/Avatar.mjs +2 -2
- package/es/Burger/Burger.mjs +2 -2
- package/es/Burger/Burger.mjs.map +1 -1
- package/es/Button/Button.mjs +1 -1
- package/es/CodeDiff/DiffPanel.mjs +1 -1
- package/es/CodeDiff/DiffPanel.mjs.map +1 -1
- package/es/Collapse/Collapse.mjs +1 -1
- package/es/ColorSwatches/ColorSwatches.mjs +21 -21
- package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
- package/es/ColorSwatches/style.mjs +3 -12
- package/es/ColorSwatches/style.mjs.map +1 -1
- package/es/DatePicker/DatePicker.mjs +1 -1
- package/es/DraggablePanel/DraggablePanel.mjs +1 -1
- package/es/Drawer/Drawer.mjs +1 -1
- package/es/EditableText/ControlInput.d.mts +2 -2
- package/es/EditableText/ControlInput.mjs +1 -1
- package/es/EditableText/ControlInput.mjs.map +1 -1
- package/es/EditableText/EditableText.mjs +1 -0
- package/es/EditableText/EditableText.mjs.map +1 -1
- package/es/EditableText/type.d.mts +5 -1
- package/es/EmojiPicker/AvatarUploader.mjs +76 -71
- package/es/EmojiPicker/AvatarUploader.mjs.map +1 -1
- package/es/EmojiPicker/EmojiPicker.mjs +12 -6
- package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
- package/es/EmojiPicker/style.mjs +32 -9
- package/es/EmojiPicker/style.mjs.map +1 -1
- package/es/EmojiPicker/type.d.mts +2 -1
- package/es/Form/Form.mjs +1 -1
- package/es/Form/components/FormDivider.mjs +1 -1
- package/es/Form/components/FormItem.mjs +1 -1
- package/es/Form/components/FormSubmitFooter.mjs +1 -1
- package/es/Form/components/FormTitle.mjs +1 -1
- package/es/GroupAvatar/GroupAvatar.mjs +1 -1
- package/es/GroupAvatar/GroupAvatar.mjs.map +1 -1
- package/es/GroupAvatar/type.d.mts +2 -1
- package/es/Highlighter/Highlighter.mjs +1 -1
- package/es/Highlighter/Highlighter.mjs.map +1 -1
- package/es/Highlighter/LangSelect.mjs +23 -13
- package/es/Highlighter/LangSelect.mjs.map +1 -1
- package/es/Highlighter/style.mjs +1 -1
- package/es/Highlighter/style.mjs.map +1 -1
- package/es/HtmlPreview/HtmlPreview.mjs +28 -1
- package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
- package/es/Image/viewer/ImageViewer.mjs +1 -1
- package/es/Image/viewer/ImageViewer.mjs.map +1 -1
- package/es/Image/viewer/Toolbar.mjs +1 -1
- package/es/Input/Input.mjs +1 -1
- package/es/Input/InputNumber.mjs +1 -1
- package/es/Input/InputOPT.mjs +1 -1
- package/es/Input/InputPassword.mjs +1 -1
- package/es/Input/TextArea.mjs +1 -1
- package/es/Menu/Menu.mjs +1 -1
- package/es/Menu/index.d.mts +2 -1
- package/es/Menu/index.mjs +1 -1
- package/es/Menu/itemInterface.d.mts +71 -0
- package/es/Menu/type.d.mts +8 -8
- package/es/Mermaid/Mermaid.mjs +1 -1
- package/es/Mermaid/Mermaid.mjs.map +1 -1
- package/es/Modal/Modal.mjs +1 -1
- package/es/SearchBar/SearchBar.mjs +1 -1
- package/es/SearchBar/SearchBar.mjs.map +1 -1
- package/es/SearchBar/type.d.mts +2 -2
- package/es/Segmented/Segmented.mjs +1 -1
- package/es/Select/Select.mjs +1 -1
- package/es/SliderWithInput/SliderWithInput.mjs +1 -1
- package/es/Tabs/Tabs.mjs +1 -1
- package/es/Tag/Tag.mjs +1 -1
- package/es/ThemeProvider/ConfigProvider.mjs +1 -1
- package/es/ThemeProvider/ThemeProvider.mjs +1 -1
- package/es/ThemeSwitch/ThemeSwitch.mjs +1 -1
- package/es/Toc/Toc.mjs +1 -1
- package/es/Toc/TocMobile.mjs +1 -1
- package/es/awesome/AgentSkillCard/AgentSkillCard.mjs +1 -1
- package/es/awesome/Hero/Hero.mjs +1 -1
- package/es/awesome/LandingSection/LandingSection.mjs +1 -1
- package/es/base-ui/Anchor/Anchor.d.mts +6 -0
- package/es/base-ui/Anchor/Anchor.mjs +141 -0
- package/es/base-ui/Anchor/Anchor.mjs.map +1 -0
- package/es/base-ui/Anchor/index.d.mts +3 -0
- package/es/base-ui/Anchor/style.mjs +80 -0
- package/es/base-ui/Anchor/style.mjs.map +1 -0
- package/es/base-ui/Anchor/type.d.mts +20 -0
- package/es/base-ui/AutoComplete/AutoComplete.mjs.map +1 -1
- package/es/base-ui/Avatar/Avatar.mjs +1 -1
- package/es/base-ui/Breadcrumb/Breadcrumb.d.mts +6 -0
- package/es/base-ui/Breadcrumb/Breadcrumb.mjs +58 -0
- package/es/base-ui/Breadcrumb/Breadcrumb.mjs.map +1 -0
- package/es/base-ui/Breadcrumb/index.d.mts +3 -0
- package/es/base-ui/Breadcrumb/style.mjs +65 -0
- package/es/base-ui/Breadcrumb/style.mjs.map +1 -0
- package/es/base-ui/Breadcrumb/type.d.mts +24 -0
- package/es/base-ui/Burger/Burger.d.mts +6 -0
- package/es/base-ui/Burger/Burger.mjs +69 -0
- package/es/base-ui/Burger/Burger.mjs.map +1 -0
- package/es/base-ui/Burger/index.d.mts +3 -0
- package/es/base-ui/Burger/style.mjs +63 -0
- package/es/base-ui/Burger/style.mjs.map +1 -0
- package/es/base-ui/Burger/type.d.mts +23 -0
- package/es/base-ui/Carousel/Carousel.d.mts +6 -0
- package/es/base-ui/Carousel/Carousel.mjs +157 -0
- package/es/base-ui/Carousel/Carousel.mjs.map +1 -0
- package/es/base-ui/Carousel/index.d.mts +3 -0
- package/es/base-ui/Carousel/style.mjs +88 -0
- package/es/base-ui/Carousel/style.mjs.map +1 -0
- package/es/base-ui/Carousel/type.d.mts +23 -0
- package/es/base-ui/ColorPicker/ColorPicker.d.mts +6 -0
- package/es/base-ui/ColorPicker/ColorPicker.mjs +227 -0
- package/es/base-ui/ColorPicker/ColorPicker.mjs.map +1 -0
- package/es/base-ui/ColorPicker/SaturationArea.mjs +64 -0
- package/es/base-ui/ColorPicker/SaturationArea.mjs.map +1 -0
- package/es/base-ui/ColorPicker/color.mjs +28 -0
- package/es/base-ui/ColorPicker/color.mjs.map +1 -0
- package/es/base-ui/ColorPicker/index.d.mts +3 -0
- package/es/base-ui/ColorPicker/style.mjs +180 -0
- package/es/base-ui/ColorPicker/style.mjs.map +1 -0
- package/es/base-ui/ColorPicker/type.d.mts +20 -0
- package/es/base-ui/ContextMenu/ContextMenuHost.mjs.map +1 -1
- package/es/base-ui/ContextMenu/renderItems.d.mts +0 -1
- package/es/base-ui/ContextMenu/renderItems.mjs.map +1 -1
- package/es/base-ui/DatePicker/CalendarPanel.mjs +188 -0
- package/es/base-ui/DatePicker/CalendarPanel.mjs.map +1 -0
- package/es/base-ui/DatePicker/DatePicker.d.mts +6 -0
- package/es/base-ui/DatePicker/DatePicker.mjs +88 -0
- package/es/base-ui/DatePicker/DatePicker.mjs.map +1 -0
- package/es/base-ui/DatePicker/DateRangePicker.d.mts +6 -0
- package/es/base-ui/DatePicker/DateRangePicker.mjs +128 -0
- package/es/base-ui/DatePicker/DateRangePicker.mjs.map +1 -0
- package/es/base-ui/DatePicker/PickerShell.mjs +43 -0
- package/es/base-ui/DatePicker/PickerShell.mjs.map +1 -0
- package/es/base-ui/DatePicker/calendar.d.mts +5 -0
- package/es/base-ui/DatePicker/calendar.mjs +46 -0
- package/es/base-ui/DatePicker/calendar.mjs.map +1 -0
- package/es/base-ui/DatePicker/index.d.mts +5 -0
- package/es/base-ui/DatePicker/style.mjs +193 -0
- package/es/base-ui/DatePicker/style.mjs.map +1 -0
- package/es/base-ui/DatePicker/type.d.mts +35 -0
- package/es/base-ui/Descriptions/Descriptions.d.mts +6 -0
- package/es/base-ui/Descriptions/Descriptions.mjs +62 -0
- package/es/base-ui/Descriptions/Descriptions.mjs.map +1 -0
- package/es/base-ui/Descriptions/index.d.mts +3 -0
- package/es/base-ui/Descriptions/style.mjs +64 -0
- package/es/base-ui/Descriptions/style.mjs.map +1 -0
- package/es/base-ui/Descriptions/type.d.mts +28 -0
- package/es/base-ui/Divider/Divider.d.mts +6 -0
- package/es/base-ui/Divider/Divider.mjs +30 -0
- package/es/base-ui/Divider/Divider.mjs.map +1 -0
- package/es/base-ui/Divider/index.d.mts +3 -0
- package/es/base-ui/Divider/style.mjs +59 -0
- package/es/base-ui/Divider/style.mjs.map +1 -0
- package/es/base-ui/Divider/type.d.mts +12 -0
- package/es/base-ui/DraggablePanel/atoms.mjs +56 -49
- package/es/base-ui/DraggablePanel/atoms.mjs.map +1 -1
- package/es/base-ui/DraggablePanel/style.mjs +30 -25
- package/es/base-ui/DraggablePanel/style.mjs.map +1 -1
- package/es/base-ui/Drawer/atoms.mjs.map +1 -1
- package/es/base-ui/DropdownMenu/atoms.mjs +1 -1
- package/es/base-ui/DropdownMenu/atoms.mjs.map +1 -1
- package/es/base-ui/DropdownMenu/renderItems.d.mts +0 -1
- package/es/base-ui/DropdownMenu/renderItems.mjs.map +1 -1
- package/es/base-ui/Form/components/FormTitle.mjs +1 -1
- package/es/base-ui/Form/components/FormTitle.mjs.map +1 -1
- package/es/base-ui/Form/type.d.mts +2 -2
- package/es/base-ui/Input/ClearButton.mjs +32 -0
- package/es/base-ui/Input/ClearButton.mjs.map +1 -0
- package/es/base-ui/Input/Input.mjs +30 -4
- package/es/base-ui/Input/Input.mjs.map +1 -1
- package/es/base-ui/Input/InputNumber.mjs +43 -22
- package/es/base-ui/Input/InputNumber.mjs.map +1 -1
- package/es/base-ui/Input/TextArea.mjs +50 -13
- package/es/base-ui/Input/TextArea.mjs.map +1 -1
- package/es/base-ui/Input/clearNativeValue.mjs +12 -0
- package/es/base-ui/Input/clearNativeValue.mjs.map +1 -0
- package/es/base-ui/Input/pressEnter.mjs +6 -0
- package/es/base-ui/Input/pressEnter.mjs.map +1 -0
- package/es/base-ui/Input/style.d.mts +6 -2
- package/es/base-ui/Input/style.mjs +67 -4
- package/es/base-ui/Input/style.mjs.map +1 -1
- package/es/base-ui/Input/type.d.mts +13 -2
- package/es/base-ui/List/List.d.mts +6 -0
- package/es/base-ui/List/List.mjs +50 -0
- package/es/base-ui/List/List.mjs.map +1 -0
- package/es/base-ui/List/ListRow.mjs +74 -0
- package/es/base-ui/List/ListRow.mjs.map +1 -0
- package/es/base-ui/List/index.d.mts +3 -0
- package/es/base-ui/List/style.mjs +146 -0
- package/es/base-ui/List/style.mjs.map +1 -0
- package/es/base-ui/List/type.d.mts +48 -0
- package/es/base-ui/Modal/atoms.mjs.map +1 -1
- package/es/base-ui/Modal/imperative.mjs +1 -1
- package/es/base-ui/Modal/imperative.mjs.map +1 -1
- package/es/base-ui/Modal/type.d.mts +1 -0
- package/es/base-ui/Popover/PopoverPortal.mjs.map +1 -1
- package/es/base-ui/Progress/Progress.mjs +16 -14
- package/es/base-ui/Progress/Progress.mjs.map +1 -1
- package/es/base-ui/Progress/style.mjs +16 -25
- package/es/base-ui/Progress/style.mjs.map +1 -1
- package/es/base-ui/QRCode/QRCode.d.mts +6 -0
- package/es/base-ui/QRCode/QRCode.mjs +105 -0
- package/es/base-ui/QRCode/QRCode.mjs.map +1 -0
- package/es/base-ui/QRCode/index.d.mts +3 -0
- package/es/base-ui/QRCode/qrPath.mjs +16 -0
- package/es/base-ui/QRCode/qrPath.mjs.map +1 -0
- package/es/base-ui/QRCode/style.mjs +52 -0
- package/es/base-ui/QRCode/style.mjs.map +1 -0
- package/es/base-ui/QRCode/type.d.mts +19 -0
- package/es/base-ui/Rate/Rate.d.mts +6 -0
- package/es/base-ui/Rate/Rate.mjs +111 -0
- package/es/base-ui/Rate/Rate.mjs.map +1 -0
- package/es/base-ui/Rate/index.d.mts +3 -0
- package/es/base-ui/Rate/style.mjs +81 -0
- package/es/base-ui/Rate/style.mjs.map +1 -0
- package/es/base-ui/Rate/type.d.mts +19 -0
- package/es/base-ui/Select/atoms.mjs.map +1 -1
- package/es/base-ui/Select/hooks.mjs.map +1 -1
- package/es/base-ui/Statistic/Statistic.d.mts +6 -0
- package/es/base-ui/Statistic/Statistic.mjs +42 -0
- package/es/base-ui/Statistic/Statistic.mjs.map +1 -0
- package/es/base-ui/Statistic/formatValue.d.mts +5 -0
- package/es/base-ui/Statistic/formatValue.mjs +23 -0
- package/es/base-ui/Statistic/formatValue.mjs.map +1 -0
- package/es/base-ui/Statistic/index.d.mts +4 -0
- package/es/base-ui/Statistic/style.mjs +34 -0
- package/es/base-ui/Statistic/style.mjs.map +1 -0
- package/es/base-ui/Statistic/type.d.mts +23 -0
- package/es/base-ui/Steps/Steps.d.mts +6 -0
- package/es/base-ui/Steps/Steps.mjs +74 -0
- package/es/base-ui/Steps/Steps.mjs.map +1 -0
- package/es/base-ui/Steps/index.d.mts +3 -0
- package/es/base-ui/Steps/style.mjs +155 -0
- package/es/base-ui/Steps/style.mjs.map +1 -0
- package/es/base-ui/Steps/type.d.mts +32 -0
- package/es/base-ui/Table/FilterMenu.mjs +45 -0
- package/es/base-ui/Table/FilterMenu.mjs.map +1 -0
- package/es/base-ui/Table/Table.d.mts +10 -0
- package/es/base-ui/Table/Table.mjs +134 -0
- package/es/base-ui/Table/Table.mjs.map +1 -0
- package/es/base-ui/Table/TableBody.mjs +59 -0
- package/es/base-ui/Table/TableBody.mjs.map +1 -0
- package/es/base-ui/Table/TableHead.mjs +50 -0
- package/es/base-ui/Table/TableHead.mjs.map +1 -0
- package/es/base-ui/Table/features.mjs +12 -0
- package/es/base-ui/Table/features.mjs.map +1 -0
- package/es/base-ui/Table/fixedOffsets.mjs +29 -0
- package/es/base-ui/Table/fixedOffsets.mjs.map +1 -0
- package/es/base-ui/Table/index.d.mts +3 -0
- package/es/base-ui/Table/style.mjs +168 -0
- package/es/base-ui/Table/style.mjs.map +1 -0
- package/es/base-ui/Table/toColumnDefs.mjs +26 -0
- package/es/base-ui/Table/toColumnDefs.mjs.map +1 -0
- package/es/base-ui/Table/type.d.mts +68 -0
- package/es/base-ui/Table/useTableState.mjs +99 -0
- package/es/base-ui/Table/useTableState.mjs.map +1 -0
- package/es/base-ui/Toast/imperative.mjs.map +1 -1
- package/es/base-ui/Tooltip/TooltipGroup.mjs.map +1 -1
- package/es/base-ui/Tooltip/TooltipStandalone.mjs.map +1 -1
- package/es/base-ui/index.d.mts +66 -21
- package/es/base-ui/index.mjs +42 -26
- package/es/base-ui/panelStyles.mjs +95 -0
- package/es/base-ui/panelStyles.mjs.map +1 -0
- package/es/chat/ChatList/components/HistoryDivider.mjs +9 -6
- package/es/chat/ChatList/components/HistoryDivider.mjs.map +1 -1
- package/es/chat/MessageModal/MessageModal.mjs +1 -1
- package/es/chat/TokenTag/TokenTag.mjs +1 -1
- package/es/color/CssVar/VarRow.mjs +1 -1
- package/es/color/CssVar/index.mjs +1 -1
- package/es/dashboard/FilterSidebar/FilterSidebar.mjs +1 -1
- package/es/i18n/resources/en/burger.d.mts +8 -0
- package/es/i18n/resources/en/burger.mjs +9 -0
- package/es/i18n/resources/en/burger.mjs.map +1 -0
- package/es/i18n/resources/en/colorPicker.d.mts +12 -0
- package/es/i18n/resources/en/colorPicker.mjs +13 -0
- package/es/i18n/resources/en/colorPicker.mjs.map +1 -0
- package/es/i18n/resources/en/common.d.mts +1 -0
- package/es/i18n/resources/en/common.mjs +1 -0
- package/es/i18n/resources/en/common.mjs.map +1 -1
- package/es/i18n/resources/en/datePicker.d.mts +13 -0
- package/es/i18n/resources/en/datePicker.mjs +14 -0
- package/es/i18n/resources/en/datePicker.mjs.map +1 -0
- package/es/i18n/resources/en/index.d.mts +15 -11
- package/es/i18n/resources/en/index.mjs +9 -1
- package/es/i18n/resources/en/index.mjs.map +1 -1
- package/es/i18n/resources/en/qrCode.d.mts +9 -0
- package/es/i18n/resources/en/qrCode.mjs +10 -0
- package/es/i18n/resources/en/qrCode.mjs.map +1 -0
- package/es/i18n/resources/zhCn/burger.d.mts +8 -0
- package/es/i18n/resources/zhCn/burger.mjs +9 -0
- package/es/i18n/resources/zhCn/burger.mjs.map +1 -0
- package/es/i18n/resources/zhCn/colorPicker.d.mts +12 -0
- package/es/i18n/resources/zhCn/colorPicker.mjs +13 -0
- package/es/i18n/resources/zhCn/colorPicker.mjs.map +1 -0
- package/es/i18n/resources/zhCn/common.d.mts +1 -0
- package/es/i18n/resources/zhCn/common.mjs +1 -0
- package/es/i18n/resources/zhCn/common.mjs.map +1 -1
- package/es/i18n/resources/zhCn/datePicker.d.mts +13 -0
- package/es/i18n/resources/zhCn/datePicker.mjs +14 -0
- package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -0
- package/es/i18n/resources/zhCn/index.d.mts +15 -11
- package/es/i18n/resources/zhCn/index.mjs +9 -1
- package/es/i18n/resources/zhCn/index.mjs.map +1 -1
- package/es/i18n/resources/zhCn/qrCode.d.mts +9 -0
- package/es/i18n/resources/zhCn/qrCode.mjs +10 -0
- package/es/i18n/resources/zhCn/qrCode.mjs.map +1 -0
- package/es/i18n/types.d.mts +14 -10
- package/es/index.d.mts +12 -11
- package/es/index.mjs +23 -23
- package/es/mdx/Cards/Card.d.mts +2 -2
- package/es/mdx/Cards/Card.mjs +1 -1
- package/es/mdx/Cards/Card.mjs.map +1 -1
- package/es/mdx/Mdx/index.mjs +1 -1
- package/es/mdx/Mdx/index.mjs.map +1 -1
- package/es/mdx/Tabs/index.d.mts +2 -2
- package/es/mdx/Tabs/index.mjs +7 -2
- package/es/mdx/Tabs/index.mjs.map +1 -1
- package/es/mdx/Tabs/style.mjs +33 -1
- package/es/mdx/Tabs/style.mjs.map +1 -1
- package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs +1 -1
- package/es/mdx/mdxComponents/Citation/PopoverPanel.mjs.map +1 -1
- package/es/static-css/baseline.mjs +1 -4
- package/es/static-css/baseline.mjs.map +1 -1
- package/es/static-css/buildAntdStaticCss.mjs +1 -1
- package/package.json +3 -1
|
@@ -11,6 +11,11 @@ const circleDiameterMap = {
|
|
|
11
11
|
middle: 40,
|
|
12
12
|
small: 20
|
|
13
13
|
};
|
|
14
|
+
const blockHeightMap = {
|
|
15
|
+
large: 12,
|
|
16
|
+
middle: 8,
|
|
17
|
+
small: 4
|
|
18
|
+
};
|
|
14
19
|
const circleStrokeMap = {
|
|
15
20
|
large: 4,
|
|
16
21
|
middle: 3,
|
|
@@ -128,20 +133,17 @@ const Progress = memo(({ className, format, label, percent, ref, segments = 20,
|
|
|
128
133
|
style,
|
|
129
134
|
...progressAria,
|
|
130
135
|
...rest,
|
|
131
|
-
children: [/* @__PURE__ */
|
|
132
|
-
className: cx(styles.
|
|
136
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
137
|
+
className: cx(styles.split, heightClass("block")),
|
|
133
138
|
style: heightStyle,
|
|
134
|
-
children: /* @__PURE__ */ jsx("
|
|
135
|
-
className: styles.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
children: /* @__PURE__ */ jsx("span", { className: styles.insetCap })
|
|
143
|
-
})
|
|
144
|
-
})
|
|
139
|
+
children: [clamped > 0 && /* @__PURE__ */ jsx("span", {
|
|
140
|
+
className: cx(styles.splitFill, status === "active" && styles.barActive),
|
|
141
|
+
style: {
|
|
142
|
+
backgroundColor: barColor,
|
|
143
|
+
minWidth: typeof size === "number" ? size : blockHeightMap[size],
|
|
144
|
+
width: clamped === 100 ? "100%" : `calc((100% - 3px) * ${clamped / 100})`
|
|
145
|
+
}
|
|
146
|
+
}), clamped < 100 && /* @__PURE__ */ jsx("span", { className: styles.splitRest })]
|
|
145
147
|
}), showInfo && /* @__PURE__ */ jsx("span", {
|
|
146
148
|
className: styles.rowInfo,
|
|
147
149
|
children: info
|
|
@@ -164,7 +166,7 @@ const Progress = memo(({ className, format, label, percent, ref, segments = 20,
|
|
|
164
166
|
style: heightStyle,
|
|
165
167
|
children: /* @__PURE__ */ jsx("div", {
|
|
166
168
|
style: {
|
|
167
|
-
|
|
169
|
+
backgroundColor: barColor,
|
|
168
170
|
width: `${clamped}%`
|
|
169
171
|
},
|
|
170
172
|
className: cx(styles.bar, variant === "line" && status === "active" && styles.barActive)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Progress.mjs","names":[],"sources":["../../../src/base-ui/Progress/Progress.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx } from 'antd-style';\nimport { Check, X } from 'lucide-react';\nimport { memo, useMemo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { styles, trackHeight } from './style';\nimport type { ProgressProps } from './type';\n\nconst circleDiameterMap: Record<'small' | 'middle' | 'large', number> = {\n large: 72,\n middle: 40,\n small: 20,\n};\nconst circleStrokeMap: Record<'small' | 'middle' | 'large', number> = {\n large: 4,\n middle: 3,\n small: 2,\n};\n\nconst statusColor = {\n active: cssVar.colorInfo,\n exception: cssVar.colorError,\n success: cssVar.colorSuccess,\n};\n\nconst Progress = memo<ProgressProps>(\n ({\n className,\n format,\n label,\n percent,\n ref,\n segments = 20,\n showInfo = true,\n size = 'middle',\n status = 'normal',\n strokeColor,\n style,\n type = 'line',\n variant = 'line',\n ...rest\n }) => {\n const clamped = Math.min(100, Math.max(0, percent));\n const barColor =\n strokeColor ?? (status === 'normal' ? cssVar.colorPrimary : statusColor[status]);\n\n const info = useMemo(() => {\n if (status === 'success') return <Icon icon={Check} size={14} style={{ color: barColor }} />;\n if (status === 'exception') return <Icon icon={X} size={14} style={{ color: barColor }} />;\n return format ? format(clamped) : `${clamped}%`;\n }, [status, format, clamped, barColor]);\n\n const ariaValueText = useMemo(() => {\n if (!format) return undefined;\n const value = format(clamped);\n return typeof value === 'string' || typeof value === 'number' ? String(value) : undefined;\n }, [format, clamped]);\n\n const progressAria = {\n 'aria-valuemax': 100,\n 'aria-valuemin': 0,\n 'aria-valuenow': clamped,\n 'aria-valuetext': ariaValueText,\n 'role': 'progressbar' as const,\n };\n\n if (type === 'circle') {\n const isPreset = typeof size === 'string';\n const diameter = isPreset\n ? circleDiameterMap[size as 'small' | 'middle' | 'large']\n : (size as number);\n const stroke = isPreset\n ? circleStrokeMap[size as 'small' | 'middle' | 'large']\n : Math.max(2, Math.round((diameter * 3) / 40));\n const radius = diameter / 2 - stroke;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference * (1 - clamped / 100);\n\n return (\n <div\n className={cx(styles.circleRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <svg\n className={styles.circleSvg}\n height={diameter}\n viewBox={`0 0 ${diameter} ${diameter}`}\n width={diameter}\n >\n <circle\n className={styles.circleTrack}\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n strokeWidth={stroke}\n />\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n fill=\"none\"\n r={radius}\n stroke={barColor}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n style={{ transition: 'stroke-dashoffset 0.3s' }}\n />\n </svg>\n {showInfo && diameter >= 40 && (\n <span\n className={styles.circleInfo}\n style={{ fontSize: Math.round(diameter * 0.15 + 6) }}\n >\n {info}\n </span>\n )}\n </div>\n );\n }\n\n const heightStyle = typeof size === 'number' ? { height: size } : undefined;\n const heightClass = (family: 'line' | 'block') =>\n typeof size === 'number' ? undefined : trackHeight({ family, size });\n\n if (variant === 'segments') {\n const filled = Math.round((segments * clamped) / 100);\n\n return (\n <div\n className={cx(styles.rowRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <div className={cx(styles.segments, heightClass('block'))} style={heightStyle}>\n {Array.from({ length: segments }, (_, index) => (\n <span\n className={cx(styles.segment, index < filled && styles.segmentOn)}\n key={index}\n style={index < filled ? { background: barColor } : undefined}\n />\n ))}\n </div>\n {showInfo && <span className={styles.rowInfo}>{info}</span>}\n </div>\n );\n }\n\n if (variant === 'inset') {\n return (\n <div\n className={cx(styles.rowRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <div\n className={cx(styles.rowTrack, styles.insetTrack, heightClass('block'))}\n style={heightStyle}\n >\n <div className={styles.insetBarWrapper}>\n <div className={styles.bar} style={{ background: barColor, width: `${clamped}%` }}>\n <span className={styles.insetCap} />\n </div>\n </div>\n </div>\n {showInfo && <span className={styles.rowInfo}>{info}</span>}\n </div>\n );\n }\n\n return (\n <div\n className={cx(styles.lineRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n {(label || showInfo) && (\n <div className={styles.lineMeta}>\n <span>{label}</span>\n {showInfo && <span className={styles.lineValue}>{info}</span>}\n </div>\n )}\n <div className={cx(styles.lineTrack, heightClass('line'))} style={heightStyle}>\n <div\n style={{ background: barColor, width: `${clamped}%` }}\n className={cx(\n styles.bar,\n variant === 'line' && status === 'active' && styles.barActive,\n )}\n />\n </div>\n </div>\n );\n },\n);\n\nProgress.displayName = 'Progress';\n\nexport default Progress;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Progress.mjs","names":[],"sources":["../../../src/base-ui/Progress/Progress.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx } from 'antd-style';\nimport { Check, X } from 'lucide-react';\nimport { memo, useMemo } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { styles, trackHeight } from './style';\nimport type { ProgressProps } from './type';\n\nconst circleDiameterMap: Record<'small' | 'middle' | 'large', number> = {\n large: 72,\n middle: 40,\n small: 20,\n};\nconst blockHeightMap: Record<'small' | 'middle' | 'large', number> = {\n large: 12,\n middle: 8,\n small: 4,\n};\nconst circleStrokeMap: Record<'small' | 'middle' | 'large', number> = {\n large: 4,\n middle: 3,\n small: 2,\n};\n\nconst statusColor = {\n active: cssVar.colorInfo,\n exception: cssVar.colorError,\n success: cssVar.colorSuccess,\n};\n\nconst Progress = memo<ProgressProps>(\n ({\n className,\n format,\n label,\n percent,\n ref,\n segments = 20,\n showInfo = true,\n size = 'middle',\n status = 'normal',\n strokeColor,\n style,\n type = 'line',\n variant = 'line',\n ...rest\n }) => {\n const clamped = Math.min(100, Math.max(0, percent));\n const barColor =\n strokeColor ?? (status === 'normal' ? cssVar.colorPrimary : statusColor[status]);\n\n const info = useMemo(() => {\n if (status === 'success') return <Icon icon={Check} size={14} style={{ color: barColor }} />;\n if (status === 'exception') return <Icon icon={X} size={14} style={{ color: barColor }} />;\n return format ? format(clamped) : `${clamped}%`;\n }, [status, format, clamped, barColor]);\n\n const ariaValueText = useMemo(() => {\n if (!format) return undefined;\n const value = format(clamped);\n return typeof value === 'string' || typeof value === 'number' ? String(value) : undefined;\n }, [format, clamped]);\n\n const progressAria = {\n 'aria-valuemax': 100,\n 'aria-valuemin': 0,\n 'aria-valuenow': clamped,\n 'aria-valuetext': ariaValueText,\n 'role': 'progressbar' as const,\n };\n\n if (type === 'circle') {\n const isPreset = typeof size === 'string';\n const diameter = isPreset\n ? circleDiameterMap[size as 'small' | 'middle' | 'large']\n : (size as number);\n const stroke = isPreset\n ? circleStrokeMap[size as 'small' | 'middle' | 'large']\n : Math.max(2, Math.round((diameter * 3) / 40));\n const radius = diameter / 2 - stroke;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference * (1 - clamped / 100);\n\n return (\n <div\n className={cx(styles.circleRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <svg\n className={styles.circleSvg}\n height={diameter}\n viewBox={`0 0 ${diameter} ${diameter}`}\n width={diameter}\n >\n <circle\n className={styles.circleTrack}\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n strokeWidth={stroke}\n />\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n fill=\"none\"\n r={radius}\n stroke={barColor}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n strokeWidth={stroke}\n style={{ transition: 'stroke-dashoffset 0.3s' }}\n />\n </svg>\n {showInfo && diameter >= 40 && (\n <span\n className={styles.circleInfo}\n style={{ fontSize: Math.round(diameter * 0.15 + 6) }}\n >\n {info}\n </span>\n )}\n </div>\n );\n }\n\n const heightStyle = typeof size === 'number' ? { height: size } : undefined;\n const heightClass = (family: 'line' | 'block') =>\n typeof size === 'number' ? undefined : trackHeight({ family, size });\n\n if (variant === 'segments') {\n const filled = Math.round((segments * clamped) / 100);\n\n return (\n <div\n className={cx(styles.rowRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <div className={cx(styles.segments, heightClass('block'))} style={heightStyle}>\n {Array.from({ length: segments }, (_, index) => (\n <span\n className={cx(styles.segment, index < filled && styles.segmentOn)}\n key={index}\n style={index < filled ? { background: barColor } : undefined}\n />\n ))}\n </div>\n {showInfo && <span className={styles.rowInfo}>{info}</span>}\n </div>\n );\n }\n\n if (variant === 'inset') {\n return (\n <div\n className={cx(styles.rowRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n <div className={cx(styles.split, heightClass('block'))} style={heightStyle}>\n {clamped > 0 && (\n <span\n className={cx(styles.splitFill, status === 'active' && styles.barActive)}\n style={{\n backgroundColor: barColor,\n minWidth: typeof size === 'number' ? size : blockHeightMap[size],\n width: clamped === 100 ? '100%' : `calc((100% - 3px) * ${clamped / 100})`,\n }}\n />\n )}\n {clamped < 100 && <span className={styles.splitRest} />}\n </div>\n {showInfo && <span className={styles.rowInfo}>{info}</span>}\n </div>\n );\n }\n\n return (\n <div\n className={cx(styles.lineRoot, className)}\n ref={ref}\n style={style}\n {...progressAria}\n {...rest}\n >\n {(label || showInfo) && (\n <div className={styles.lineMeta}>\n <span>{label}</span>\n {showInfo && <span className={styles.lineValue}>{info}</span>}\n </div>\n )}\n <div className={cx(styles.lineTrack, heightClass('line'))} style={heightStyle}>\n <div\n style={{ backgroundColor: barColor, width: `${clamped}%` }}\n className={cx(\n styles.bar,\n variant === 'line' && status === 'active' && styles.barActive,\n )}\n />\n </div>\n </div>\n );\n },\n);\n\nProgress.displayName = 'Progress';\n\nexport default Progress;\n"],"mappings":"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"}
|
|
@@ -58,28 +58,6 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
58
58
|
circleTrack: css`
|
|
59
59
|
fill: none;
|
|
60
60
|
stroke: ${cssVar.colorFillTertiary};
|
|
61
|
-
`,
|
|
62
|
-
insetBarWrapper: css`
|
|
63
|
-
position: relative;
|
|
64
|
-
overflow: hidden;
|
|
65
|
-
height: 100%;
|
|
66
|
-
border-radius: 999px;
|
|
67
|
-
`,
|
|
68
|
-
insetCap: css`
|
|
69
|
-
position: absolute;
|
|
70
|
-
inset-block: 0;
|
|
71
|
-
inset-inline-end: 0;
|
|
72
|
-
|
|
73
|
-
width: 4px;
|
|
74
|
-
border-radius: 999px;
|
|
75
|
-
|
|
76
|
-
opacity: 0.6;
|
|
77
|
-
background: ${cssVar.colorBgContainer};
|
|
78
|
-
`,
|
|
79
|
-
insetTrack: css`
|
|
80
|
-
padding: 2px;
|
|
81
|
-
border-radius: 999px;
|
|
82
|
-
background: ${cssVar.colorFillTertiary};
|
|
83
61
|
`,
|
|
84
62
|
lineLg: css`
|
|
85
63
|
height: 6px;
|
|
@@ -131,9 +109,6 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
131
109
|
align-items: center;
|
|
132
110
|
|
|
133
111
|
width: 100%;
|
|
134
|
-
`,
|
|
135
|
-
rowTrack: css`
|
|
136
|
-
flex: 1;
|
|
137
112
|
`,
|
|
138
113
|
segment: css`
|
|
139
114
|
flex: 1;
|
|
@@ -148,6 +123,22 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
148
123
|
flex: 1;
|
|
149
124
|
gap: 2px;
|
|
150
125
|
min-width: 0;
|
|
126
|
+
`,
|
|
127
|
+
split: css`
|
|
128
|
+
display: flex;
|
|
129
|
+
flex: 1;
|
|
130
|
+
gap: 3px;
|
|
131
|
+
min-width: 0;
|
|
132
|
+
`,
|
|
133
|
+
splitFill: css`
|
|
134
|
+
flex: none;
|
|
135
|
+
border-radius: 999px;
|
|
136
|
+
transition: width 0.3s;
|
|
137
|
+
`,
|
|
138
|
+
splitRest: css`
|
|
139
|
+
flex: 1;
|
|
140
|
+
border-radius: 999px;
|
|
141
|
+
background: ${cssVar.colorFillSecondary};
|
|
151
142
|
`
|
|
152
143
|
}));
|
|
153
144
|
const trackHeight = cva(void 0, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Progress/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst shimmer = keyframes`\n from {\n background-position: -80px 0;\n }\n to {\n background-position: 200px 0;\n }\n`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n bar: css`\n height: 100%;\n border-radius: 999px;\n transition: width 0.3s;\n `,\n barActive: css`\n background-image: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, ${cssVar.colorWhite} 35%, transparent),\n transparent\n );\n background-size: 80px 100%;\n animation: ${shimmer} 1.2s linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n `,\n blockLg: css`\n height: 12px;\n `,\n blockMd: css`\n height: 8px;\n `,\n blockSm: css`\n height: 4px;\n `,\n circleInfo: css`\n position: absolute;\n\n font-variant-numeric: tabular-nums;\n line-height: 1;\n color: ${cssVar.colorText};\n white-space: nowrap;\n `,\n circleRoot: css`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n `,\n circleSvg: css`\n rotate: -90deg;\n `,\n circleTrack: css`\n fill: none;\n stroke: ${cssVar.colorFillTertiary};\n `,\n
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Progress/style.ts"],"sourcesContent":["import { createStaticStyles, keyframes } from 'antd-style';\nimport { cva } from 'class-variance-authority';\n\nconst shimmer = keyframes`\n from {\n background-position: -80px 0;\n }\n to {\n background-position: 200px 0;\n }\n`;\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n bar: css`\n height: 100%;\n border-radius: 999px;\n transition: width 0.3s;\n `,\n barActive: css`\n background-image: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, ${cssVar.colorWhite} 35%, transparent),\n transparent\n );\n background-size: 80px 100%;\n animation: ${shimmer} 1.2s linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n `,\n blockLg: css`\n height: 12px;\n `,\n blockMd: css`\n height: 8px;\n `,\n blockSm: css`\n height: 4px;\n `,\n circleInfo: css`\n position: absolute;\n\n font-variant-numeric: tabular-nums;\n line-height: 1;\n color: ${cssVar.colorText};\n white-space: nowrap;\n `,\n circleRoot: css`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n `,\n circleSvg: css`\n rotate: -90deg;\n `,\n circleTrack: css`\n fill: none;\n stroke: ${cssVar.colorFillTertiary};\n `,\n lineLg: css`\n height: 6px;\n `,\n lineMd: css`\n height: 4px;\n `,\n lineMeta: css`\n display: flex;\n gap: 12px;\n align-items: baseline;\n justify-content: space-between;\n\n font-size: ${cssVar.fontSizeSM};\n color: ${cssVar.colorTextSecondary};\n `,\n lineRoot: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n `,\n lineSm: css`\n height: 2px;\n `,\n lineTrack: css`\n overflow: hidden;\n border-radius: 999px;\n background: ${cssVar.colorFillTertiary};\n `,\n lineValue: css`\n font-family: ${cssVar.fontFamilyCode};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorText};\n `,\n rowInfo: css`\n min-width: 3.5ch;\n\n font-family: ${cssVar.fontFamilyCode};\n font-size: ${cssVar.fontSizeSM};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorTextSecondary};\n text-align: end;\n `,\n rowRoot: css`\n display: flex;\n flex: 1;\n gap: 10px;\n align-items: center;\n\n width: 100%;\n `,\n segment: css`\n flex: 1;\n border-radius: 1px;\n background: ${cssVar.colorFillTertiary};\n `,\n segmentOn: css`\n background: ${cssVar.colorPrimary};\n `,\n segments: css`\n display: flex;\n flex: 1;\n gap: 2px;\n min-width: 0;\n `,\n split: css`\n display: flex;\n flex: 1;\n gap: 3px;\n min-width: 0;\n `,\n splitFill: css`\n flex: none;\n border-radius: 999px;\n transition: width 0.3s;\n `,\n splitRest: css`\n flex: 1;\n border-radius: 999px;\n background: ${cssVar.colorFillSecondary};\n `,\n}));\n\nexport const trackHeight = cva(undefined, {\n compoundVariants: [\n { className: styles.lineSm, family: 'line', size: 'small' },\n { className: styles.lineMd, family: 'line', size: 'middle' },\n { className: styles.lineLg, family: 'line', size: 'large' },\n { className: styles.blockSm, family: 'block', size: 'small' },\n { className: styles.blockMd, family: 'block', size: 'middle' },\n { className: styles.blockLg, family: 'block', size: 'large' },\n ],\n defaultVariants: {\n family: 'line',\n size: 'middle',\n },\n variants: {\n family: {\n block: null,\n line: null,\n },\n size: {\n large: null,\n middle: null,\n small: null,\n },\n },\n});\n"],"mappings":";;;AAGA,MAAM,UAAU,SAAS;;;;;;;;AASzB,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,KAAK,GAAG;;;;;CAKR,WAAW,GAAG;;;;2BAIW,OAAO,WAAW;;;;iBAI5B,QAAQ;;;;;;CAMvB,SAAS,GAAG;;;CAGZ,SAAS,GAAG;;;CAGZ,SAAS,GAAG;;;CAGZ,YAAY,GAAG;;;;;aAKJ,OAAO,UAAU;;;CAG5B,YAAY,GAAG;;;;;;CAMf,WAAW,GAAG;;;CAGd,aAAa,GAAG;;cAEJ,OAAO,kBAAkB;;CAErC,QAAQ,GAAG;;;CAGX,QAAQ,GAAG;;;CAGX,UAAU,GAAG;;;;;;iBAME,OAAO,WAAW;aACtB,OAAO,mBAAmB;;CAErC,UAAU,GAAG;;;;;;CAMb,QAAQ,GAAG;;;CAGX,WAAW,GAAG;;;kBAGE,OAAO,kBAAkB;;CAEzC,WAAW,GAAG;mBACG,OAAO,eAAe;;aAE5B,OAAO,UAAU;;CAE5B,SAAS,GAAG;;;mBAGK,OAAO,eAAe;iBACxB,OAAO,WAAW;;aAEtB,OAAO,mBAAmB;;;CAGrC,SAAS,GAAG;;;;;;;;CAQZ,SAAS,GAAG;;;kBAGI,OAAO,kBAAkB;;CAEzC,WAAW,GAAG;kBACE,OAAO,aAAa;;CAEpC,UAAU,GAAG;;;;;;CAMb,OAAO,GAAG;;;;;;CAMV,WAAW,GAAG;;;;;CAKd,WAAW,GAAG;;;kBAGE,OAAO,mBAAmB;;AAE5C,EAAE;AAEF,MAAa,cAAc,IAAI,KAAA,GAAW;CACxC,kBAAkB;EAChB;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAQ;EAC1D;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAS;EAC3D;GAAE,WAAW,OAAO;GAAQ,QAAQ;GAAQ,MAAM;EAAQ;EAC1D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAQ;EAC5D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAS;EAC7D;GAAE,WAAW,OAAO;GAAS,QAAQ;GAAS,MAAM;EAAQ;CAC9D;CACA,iBAAiB;EACf,QAAQ;EACR,MAAM;CACR;CACA,UAAU;EACR,QAAQ;GACN,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;CACF;AACF,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import Icon from "../../Icon/Icon.mjs";
|
|
3
|
+
import Spin from "../Spin/Spin.mjs";
|
|
4
|
+
import { useTranslation } from "../../i18n/useTranslation.mjs";
|
|
5
|
+
import { panelStyles } from "../panelStyles.mjs";
|
|
6
|
+
import qrCode_default from "../../i18n/resources/en/qrCode.mjs";
|
|
7
|
+
import { buildQrPath } from "./qrPath.mjs";
|
|
8
|
+
import { styles } from "./style.mjs";
|
|
9
|
+
import { memo, useMemo } from "react";
|
|
10
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { cx } from "antd-style";
|
|
12
|
+
import { RotateCw } from "lucide-react";
|
|
13
|
+
import { encode } from "uqr";
|
|
14
|
+
//#region src/base-ui/QRCode/QRCode.tsx
|
|
15
|
+
const ICON_RATIO = .22;
|
|
16
|
+
const QRCode = memo(({ bgColor = "#fff", bordered = true, className, color = "#000", errorLevel = "M", icon, onRefresh, ref, size = 160, status = "active", style, value, ...rest }) => {
|
|
17
|
+
const { t } = useTranslation(qrCode_default);
|
|
18
|
+
const { count, path } = useMemo(() => {
|
|
19
|
+
try {
|
|
20
|
+
const { data } = encode(value, {
|
|
21
|
+
border: 0,
|
|
22
|
+
ecc: icon ? "H" : errorLevel
|
|
23
|
+
});
|
|
24
|
+
const hole = icon ? Math.ceil(data.length * ICON_RATIO) | 1 : 0;
|
|
25
|
+
return {
|
|
26
|
+
count: data.length,
|
|
27
|
+
path: buildQrPath(data, hole)
|
|
28
|
+
};
|
|
29
|
+
} catch {
|
|
30
|
+
return {
|
|
31
|
+
count: 0,
|
|
32
|
+
path: ""
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}, [
|
|
36
|
+
value,
|
|
37
|
+
icon,
|
|
38
|
+
errorLevel
|
|
39
|
+
]);
|
|
40
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
41
|
+
className: cx(styles.root, bordered && styles.bordered, className),
|
|
42
|
+
ref,
|
|
43
|
+
style: {
|
|
44
|
+
background: bgColor,
|
|
45
|
+
...style
|
|
46
|
+
},
|
|
47
|
+
...rest,
|
|
48
|
+
children: [
|
|
49
|
+
/* @__PURE__ */ jsxs("svg", {
|
|
50
|
+
"aria-label": value,
|
|
51
|
+
height: size,
|
|
52
|
+
role: "img",
|
|
53
|
+
shapeRendering: "crispEdges",
|
|
54
|
+
viewBox: `0 0 ${count} ${count}`,
|
|
55
|
+
width: size,
|
|
56
|
+
children: [/* @__PURE__ */ jsx("rect", {
|
|
57
|
+
fill: bgColor,
|
|
58
|
+
height: count,
|
|
59
|
+
width: count
|
|
60
|
+
}), /* @__PURE__ */ jsx("path", {
|
|
61
|
+
d: path,
|
|
62
|
+
fill: color
|
|
63
|
+
})]
|
|
64
|
+
}),
|
|
65
|
+
icon && /* @__PURE__ */ jsx("span", {
|
|
66
|
+
className: styles.icon,
|
|
67
|
+
style: {
|
|
68
|
+
height: size * ICON_RATIO,
|
|
69
|
+
width: size * ICON_RATIO
|
|
70
|
+
},
|
|
71
|
+
children: icon
|
|
72
|
+
}),
|
|
73
|
+
status === "loading" && /* @__PURE__ */ jsx("span", {
|
|
74
|
+
"aria-label": t("qrCode.loading"),
|
|
75
|
+
className: styles.overlay,
|
|
76
|
+
role: "status",
|
|
77
|
+
children: /* @__PURE__ */ jsx(Spin, { style: { color: "#666" } })
|
|
78
|
+
}),
|
|
79
|
+
status === "expired" && /* @__PURE__ */ jsxs("span", {
|
|
80
|
+
className: styles.overlay,
|
|
81
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
82
|
+
className: styles.overlayTitle,
|
|
83
|
+
children: t("qrCode.expired")
|
|
84
|
+
}), onRefresh && /* @__PURE__ */ jsxs("button", {
|
|
85
|
+
className: panelStyles.pill,
|
|
86
|
+
style: {
|
|
87
|
+
background: "#080808",
|
|
88
|
+
color: "#fff"
|
|
89
|
+
},
|
|
90
|
+
type: "button",
|
|
91
|
+
onClick: onRefresh,
|
|
92
|
+
children: [/* @__PURE__ */ jsx(Icon, {
|
|
93
|
+
icon: RotateCw,
|
|
94
|
+
size: 14
|
|
95
|
+
}), t("qrCode.refresh")]
|
|
96
|
+
})]
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
QRCode.displayName = "QRCode";
|
|
102
|
+
//#endregion
|
|
103
|
+
export { QRCode as default };
|
|
104
|
+
|
|
105
|
+
//# sourceMappingURL=QRCode.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QRCode.mjs","names":["qrCodeMessages"],"sources":["../../../src/base-ui/QRCode/QRCode.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { RotateCw } from 'lucide-react';\nimport { memo, useMemo } from 'react';\nimport { encode } from 'uqr';\n\nimport { panelStyles } from '@/base-ui/panelStyles';\nimport Spin from '@/base-ui/Spin';\nimport qrCodeMessages from '@/i18n/resources/en/qrCode';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Icon from '@/Icon';\n\nimport { buildQrPath } from './qrPath';\nimport { styles } from './style';\nimport type { QRCodeProps } from './type';\n\nconst ICON_RATIO = 0.22;\n\nconst QRCode = memo<QRCodeProps>(\n ({\n bgColor = '#fff',\n bordered = true,\n className,\n color = '#000',\n errorLevel = 'M',\n icon,\n onRefresh,\n ref,\n size = 160,\n status = 'active',\n style,\n value,\n ...rest\n }) => {\n const { t } = useTranslation(qrCodeMessages);\n const { count, path } = useMemo(() => {\n try {\n const { data } = encode(value, { border: 0, ecc: icon ? 'H' : errorLevel });\n const hole = icon ? Math.ceil(data.length * ICON_RATIO) | 1 : 0;\n return { count: data.length, path: buildQrPath(data, hole) };\n } catch {\n return { count: 0, path: '' };\n }\n }, [value, icon, errorLevel]);\n\n return (\n <div\n className={cx(styles.root, bordered && styles.bordered, className)}\n ref={ref}\n style={{ background: bgColor, ...style }}\n {...rest}\n >\n <svg\n aria-label={value}\n height={size}\n role=\"img\"\n shapeRendering=\"crispEdges\"\n viewBox={`0 0 ${count} ${count}`}\n width={size}\n >\n <rect fill={bgColor} height={count} width={count} />\n <path d={path} fill={color} />\n </svg>\n {icon && (\n <span\n className={styles.icon}\n style={{ height: size * ICON_RATIO, width: size * ICON_RATIO }}\n >\n {icon}\n </span>\n )}\n {status === 'loading' && (\n <span aria-label={t('qrCode.loading')} className={styles.overlay} role=\"status\">\n <Spin style={{ color: '#666' }} />\n </span>\n )}\n {status === 'expired' && (\n <span className={styles.overlay}>\n <span className={styles.overlayTitle}>{t('qrCode.expired')}</span>\n {onRefresh && (\n <button\n className={panelStyles.pill}\n style={{ background: '#080808', color: '#fff' }}\n type=\"button\"\n onClick={onRefresh}\n >\n <Icon icon={RotateCw} size={14} />\n {t('qrCode.refresh')}\n </button>\n )}\n </span>\n )}\n </div>\n );\n },\n);\n\nQRCode.displayName = 'QRCode';\n\nexport default QRCode;\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,aAAa;AAEnB,MAAM,SAAS,MACZ,EACC,UAAU,QACV,WAAW,MACX,WACA,QAAQ,QACR,aAAa,KACb,MACA,WACA,KACA,OAAO,KACP,SAAS,UACT,OACA,OACA,GAAG,WACC;CACJ,MAAM,EAAE,MAAM,eAAeA,cAAc;CAC3C,MAAM,EAAE,OAAO,SAAS,cAAc;EACpC,IAAI;GACF,MAAM,EAAE,SAAS,OAAO,OAAO;IAAE,QAAQ;IAAG,KAAK,OAAO,MAAM;GAAW,CAAC;GAC1E,MAAM,OAAO,OAAO,KAAK,KAAK,KAAK,SAAS,UAAU,IAAI,IAAI;GAC9D,OAAO;IAAE,OAAO,KAAK;IAAQ,MAAM,YAAY,MAAM,IAAI;GAAE;EAC7D,QAAQ;GACN,OAAO;IAAE,OAAO;IAAG,MAAM;GAAG;EAC9B;CACF,GAAG;EAAC;EAAO;EAAM;CAAU,CAAC;CAE5B,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,OAAO,MAAM,YAAY,OAAO,UAAU,SAAS;EAC5D;EACL,OAAO;GAAE,YAAY;GAAS,GAAG;EAAM;EACvC,GAAI;EAJN,UAAA;GAME,qBAAC,OAAD;IACE,cAAY;IACZ,QAAQ;IACR,MAAK;IACL,gBAAe;IACf,SAAS,OAAO,MAAM,GAAG;IACzB,OAAO;IANT,UAAA,CAQE,oBAAC,QAAD;KAAM,MAAM;KAAS,QAAQ;KAAO,OAAO;IAAQ,CAAA,GACnD,oBAAC,QAAD;KAAM,GAAG;KAAM,MAAM;IAAQ,CAAA,CAC1B;;GACJ,QACC,oBAAC,QAAD;IACE,WAAW,OAAO;IAClB,OAAO;KAAE,QAAQ,OAAO;KAAY,OAAO,OAAO;IAAW;IAE5D,UAAA;GACG,CAAA;GAEP,WAAW,aACV,oBAAC,QAAD;IAAM,cAAY,EAAE,gBAAgB;IAAG,WAAW,OAAO;IAAS,MAAK;IACrE,UAAA,oBAAC,MAAD,EAAM,OAAO,EAAE,OAAO,OAAO,EAAI,CAAA;GAC7B,CAAA;GAEP,WAAW,aACV,qBAAC,QAAD;IAAM,WAAW,OAAO;IAAxB,UAAA,CACE,oBAAC,QAAD;KAAM,WAAW,OAAO;KAAe,UAAA,EAAE,gBAAgB;IAAQ,CAAA,GAChE,aACC,qBAAC,UAAD;KACE,WAAW,YAAY;KACvB,OAAO;MAAE,YAAY;MAAW,OAAO;KAAO;KAC9C,MAAK;KACL,SAAS;KAJX,UAAA,CAME,oBAAC,MAAD;MAAM,MAAM;MAAU,MAAM;KAAK,CAAA,GAChC,EAAE,gBAAgB,CACb;IAEN,CAAA,CAAA;;EAEL;;AAET,CACF;AAEA,OAAO,cAAc"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/base-ui/QRCode/qrPath.ts
|
|
2
|
+
const buildQrPath = (matrix, hole) => {
|
|
3
|
+
const count = matrix.length;
|
|
4
|
+
const from = Math.floor((count - hole) / 2);
|
|
5
|
+
const to = from + hole;
|
|
6
|
+
let path = "";
|
|
7
|
+
for (let y = 0; y < count; y++) for (let x = 0; x < count; x++) {
|
|
8
|
+
if (hole > 0 && x >= from && x < to && y >= from && y < to) continue;
|
|
9
|
+
if (matrix[y][x]) path += `M${x} ${y}h1v1h-1z`;
|
|
10
|
+
}
|
|
11
|
+
return path;
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { buildQrPath };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=qrPath.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qrPath.mjs","names":[],"sources":["../../../src/base-ui/QRCode/qrPath.ts"],"sourcesContent":["export const buildQrPath = (matrix: boolean[][], hole: number): string => {\n const count = matrix.length;\n const from = Math.floor((count - hole) / 2);\n const to = from + hole;\n let path = '';\n for (let y = 0; y < count; y++) {\n for (let x = 0; x < count; x++) {\n if (hole > 0 && x >= from && x < to && y >= from && y < to) continue;\n if (matrix[y][x]) path += `M${x} ${y}h1v1h-1z`;\n }\n }\n return path;\n};\n"],"mappings":";AAAA,MAAa,eAAe,QAAqB,SAAyB;CACxE,MAAM,QAAQ,OAAO;CACrB,MAAM,OAAO,KAAK,OAAO,QAAQ,QAAQ,CAAC;CAC1C,MAAM,KAAK,OAAO;CAClB,IAAI,OAAO;CACX,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,KACzB,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,KAAK;EAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,IAAI;EAC5D,IAAI,OAAO,EAAE,CAAC,IAAI,QAAQ,IAAI,EAAE,GAAG,EAAE;CACvC;CAEF,OAAO;AACT"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createStaticStyles } from "antd-style";
|
|
2
|
+
//#region src/base-ui/QRCode/style.ts
|
|
3
|
+
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
4
|
+
bordered: css`
|
|
5
|
+
box-shadow: inset 0 0 0 1px ${cssVar.colorBorderSecondary};
|
|
6
|
+
`,
|
|
7
|
+
icon: css`
|
|
8
|
+
position: absolute;
|
|
9
|
+
inset-block-start: 50%;
|
|
10
|
+
inset-inline-start: 50%;
|
|
11
|
+
transform: translate(-50%, -50%);
|
|
12
|
+
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
|
|
18
|
+
border-radius: 50%;
|
|
19
|
+
|
|
20
|
+
box-shadow: 0 0 0 4px #fff;
|
|
21
|
+
`,
|
|
22
|
+
overlay: css`
|
|
23
|
+
position: absolute;
|
|
24
|
+
inset: 0;
|
|
25
|
+
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
gap: 12px;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
|
|
32
|
+
border-radius: 16px;
|
|
33
|
+
|
|
34
|
+
color: #080808;
|
|
35
|
+
|
|
36
|
+
background: rgb(255 255 255 / 95%);
|
|
37
|
+
`,
|
|
38
|
+
overlayTitle: css`
|
|
39
|
+
font-size: 17px;
|
|
40
|
+
font-weight: 600;
|
|
41
|
+
`,
|
|
42
|
+
root: css`
|
|
43
|
+
position: relative;
|
|
44
|
+
display: inline-flex;
|
|
45
|
+
padding: 16px;
|
|
46
|
+
border-radius: 16px;
|
|
47
|
+
`
|
|
48
|
+
}));
|
|
49
|
+
//#endregion
|
|
50
|
+
export { styles };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/QRCode/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n bordered: css`\n box-shadow: inset 0 0 0 1px ${cssVar.colorBorderSecondary};\n `,\n icon: css`\n position: absolute;\n inset-block-start: 50%;\n inset-inline-start: 50%;\n transform: translate(-50%, -50%);\n\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n border-radius: 50%;\n\n box-shadow: 0 0 0 4px #fff;\n `,\n overlay: css`\n position: absolute;\n inset: 0;\n\n display: flex;\n flex-direction: column;\n gap: 12px;\n align-items: center;\n justify-content: center;\n\n border-radius: 16px;\n\n color: #080808;\n\n background: rgb(255 255 255 / 95%);\n `,\n overlayTitle: css`\n font-size: 17px;\n font-weight: 600;\n `,\n root: css`\n position: relative;\n display: inline-flex;\n padding: 16px;\n border-radius: 16px;\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,UAAU,GAAG;kCACmB,OAAO,qBAAqB;;CAE5D,MAAM,GAAG;;;;;;;;;;;;;;;CAeT,SAAS,GAAG;;;;;;;;;;;;;;;;CAgBZ,cAAc,GAAG;;;;CAIjB,MAAM,GAAG;;;;;;AAMX,EAAE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode, Ref } from "react";
|
|
2
|
+
//#region src/base-ui/QRCode/type.d.ts
|
|
3
|
+
type QRCodeErrorLevel = 'L' | 'M' | 'Q' | 'H';
|
|
4
|
+
type QRCodeStatus = 'active' | 'loading' | 'expired';
|
|
5
|
+
interface QRCodeProps extends Omit<ComponentProps<'div'>, 'children'> {
|
|
6
|
+
bgColor?: string;
|
|
7
|
+
bordered?: boolean;
|
|
8
|
+
color?: string;
|
|
9
|
+
errorLevel?: QRCodeErrorLevel;
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
onRefresh?: () => void;
|
|
12
|
+
ref?: Ref<HTMLDivElement>;
|
|
13
|
+
size?: number;
|
|
14
|
+
status?: QRCodeStatus;
|
|
15
|
+
value: string;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { QRCodeErrorLevel, QRCodeProps, QRCodeStatus };
|
|
19
|
+
//# sourceMappingURL=type.d.mts.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { styles } from "./style.mjs";
|
|
3
|
+
import { memo, useState } from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { cssVar, cx } from "antd-style";
|
|
6
|
+
import useMergeState from "use-merge-value";
|
|
7
|
+
import { Star } from "lucide-react";
|
|
8
|
+
//#region src/base-ui/Rate/Rate.tsx
|
|
9
|
+
const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
|
|
10
|
+
const formatValue = (value) => String(Math.round(value * 100) / 100);
|
|
11
|
+
const Rate = memo(({ allowHalf = false, character, className, color = cssVar.colorWarning, count = 5, defaultValue = 0, disabled = false, gap, onChange, onKeyDown, onPointerLeave, readOnly = false, size = 20, style, value, ...rest }) => {
|
|
12
|
+
const [mergedValue, setMergedValue] = useMergeState(defaultValue, {
|
|
13
|
+
onChange,
|
|
14
|
+
value
|
|
15
|
+
});
|
|
16
|
+
const [hoverValue, setHoverValue] = useState(null);
|
|
17
|
+
const interactive = !readOnly && !disabled;
|
|
18
|
+
const step = allowHalf ? .5 : 1;
|
|
19
|
+
const displayValue = clamp(hoverValue ?? mergedValue, 0, count);
|
|
20
|
+
const label = `${formatValue(clamp(mergedValue, 0, count))} out of ${count}`;
|
|
21
|
+
const icon = character ?? /* @__PURE__ */ jsx(Star, {
|
|
22
|
+
fill: "currentColor",
|
|
23
|
+
size
|
|
24
|
+
});
|
|
25
|
+
const handleKeyDown = (event) => {
|
|
26
|
+
onKeyDown?.(event);
|
|
27
|
+
if (!interactive || event.defaultPrevented) return;
|
|
28
|
+
const next = {
|
|
29
|
+
ArrowDown: mergedValue - step,
|
|
30
|
+
ArrowLeft: mergedValue - step,
|
|
31
|
+
ArrowRight: mergedValue + step,
|
|
32
|
+
ArrowUp: mergedValue + step,
|
|
33
|
+
End: count,
|
|
34
|
+
Home: 0
|
|
35
|
+
}[event.key];
|
|
36
|
+
if (next === void 0) return;
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
setMergedValue(clamp(Math.round(next / step) * step, 0, count));
|
|
39
|
+
};
|
|
40
|
+
const a11yProps = readOnly ? {
|
|
41
|
+
"aria-label": label,
|
|
42
|
+
"role": "img"
|
|
43
|
+
} : {
|
|
44
|
+
"aria-disabled": disabled || void 0,
|
|
45
|
+
"aria-valuemax": count,
|
|
46
|
+
"aria-valuemin": 0,
|
|
47
|
+
"aria-valuenow": mergedValue,
|
|
48
|
+
"aria-valuetext": label,
|
|
49
|
+
"role": "slider",
|
|
50
|
+
"tabIndex": disabled ? -1 : 0
|
|
51
|
+
};
|
|
52
|
+
return /* @__PURE__ */ jsx("div", {
|
|
53
|
+
className: cx(styles.root, className),
|
|
54
|
+
style: {
|
|
55
|
+
gap: gap ?? size / 2,
|
|
56
|
+
...style
|
|
57
|
+
},
|
|
58
|
+
onKeyDown: handleKeyDown,
|
|
59
|
+
onPointerLeave: (event) => {
|
|
60
|
+
onPointerLeave?.(event);
|
|
61
|
+
setHoverValue(null);
|
|
62
|
+
},
|
|
63
|
+
...a11yProps,
|
|
64
|
+
...rest,
|
|
65
|
+
children: Array.from({ length: count }, (_, index) => {
|
|
66
|
+
const fill = clamp(displayValue - index, 0, 1);
|
|
67
|
+
const targets = allowHalf ? [index + .5, index + 1] : [index + 1];
|
|
68
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
69
|
+
"aria-hidden": "true",
|
|
70
|
+
className: styles.star,
|
|
71
|
+
"data-index": index,
|
|
72
|
+
style: {
|
|
73
|
+
fontSize: size,
|
|
74
|
+
height: size
|
|
75
|
+
},
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ jsx("span", {
|
|
78
|
+
className: cx(styles.icon, styles.empty),
|
|
79
|
+
style: { minWidth: size },
|
|
80
|
+
children: icon
|
|
81
|
+
}),
|
|
82
|
+
/* @__PURE__ */ jsx("span", {
|
|
83
|
+
className: styles.fill,
|
|
84
|
+
style: {
|
|
85
|
+
color,
|
|
86
|
+
width: `${fill * 100}%`
|
|
87
|
+
},
|
|
88
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
89
|
+
className: styles.icon,
|
|
90
|
+
style: { minWidth: size },
|
|
91
|
+
children: icon
|
|
92
|
+
})
|
|
93
|
+
}),
|
|
94
|
+
interactive && targets.map((target) => /* @__PURE__ */ jsx("span", {
|
|
95
|
+
className: styles.half,
|
|
96
|
+
"data-half": target % 1 === 0 && allowHalf ? "end" : "start",
|
|
97
|
+
"data-value": target,
|
|
98
|
+
style: allowHalf ? void 0 : { width: "100%" },
|
|
99
|
+
onClick: () => setMergedValue(target),
|
|
100
|
+
onPointerEnter: () => setHoverValue(target)
|
|
101
|
+
}, target))
|
|
102
|
+
]
|
|
103
|
+
}, index);
|
|
104
|
+
})
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
Rate.displayName = "Rate";
|
|
108
|
+
//#endregion
|
|
109
|
+
export { Rate as default };
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=Rate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rate.mjs","names":["useControlledState"],"sources":["../../../src/base-ui/Rate/Rate.tsx"],"sourcesContent":["'use client';\n\nimport { cssVar, cx } from 'antd-style';\nimport { Star } from 'lucide-react';\nimport { type KeyboardEvent, memo, useState } from 'react';\nimport useControlledState from 'use-merge-value';\n\nimport { styles } from './style';\nimport type { RateProps } from './type';\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\n\nconst formatValue = (value: number) => String(Math.round(value * 100) / 100);\n\nconst Rate = memo<RateProps>(\n ({\n allowHalf = false,\n character,\n className,\n color = cssVar.colorWarning,\n count = 5,\n defaultValue = 0,\n disabled = false,\n gap,\n onChange,\n onKeyDown,\n onPointerLeave,\n readOnly = false,\n size = 20,\n style,\n value,\n ...rest\n }) => {\n const [mergedValue, setMergedValue] = useControlledState(defaultValue, { onChange, value });\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n\n const interactive = !readOnly && !disabled;\n const step = allowHalf ? 0.5 : 1;\n const displayValue = clamp(hoverValue ?? mergedValue, 0, count);\n const label = `${formatValue(clamp(mergedValue, 0, count))} out of ${count}`;\n const icon = character ?? <Star fill=\"currentColor\" size={size} />;\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!interactive || event.defaultPrevented) return;\n\n const next = {\n ArrowDown: mergedValue - step,\n ArrowLeft: mergedValue - step,\n ArrowRight: mergedValue + step,\n ArrowUp: mergedValue + step,\n End: count,\n Home: 0,\n }[event.key];\n if (next === undefined) return;\n\n event.preventDefault();\n setMergedValue(clamp(Math.round(next / step) * step, 0, count));\n };\n\n const a11yProps = readOnly\n ? { 'aria-label': label, 'role': 'img' }\n : {\n 'aria-disabled': disabled || undefined,\n 'aria-valuemax': count,\n 'aria-valuemin': 0,\n 'aria-valuenow': mergedValue,\n 'aria-valuetext': label,\n 'role': 'slider',\n 'tabIndex': disabled ? -1 : 0,\n };\n\n return (\n <div\n className={cx(styles.root, className)}\n style={{ gap: gap ?? size / 2, ...style }}\n onKeyDown={handleKeyDown}\n onPointerLeave={(event) => {\n onPointerLeave?.(event);\n setHoverValue(null);\n }}\n {...a11yProps}\n {...rest}\n >\n {Array.from({ length: count }, (_, index) => {\n const fill = clamp(displayValue - index, 0, 1);\n const targets = allowHalf ? [index + 0.5, index + 1] : [index + 1];\n\n return (\n <span\n aria-hidden=\"true\"\n className={styles.star}\n data-index={index}\n key={index}\n style={{ fontSize: size, height: size }}\n >\n <span className={cx(styles.icon, styles.empty)} style={{ minWidth: size }}>\n {icon}\n </span>\n <span className={styles.fill} style={{ color, width: `${fill * 100}%` }}>\n <span className={styles.icon} style={{ minWidth: size }}>\n {icon}\n </span>\n </span>\n {interactive &&\n targets.map((target) => (\n <span\n className={styles.half}\n data-half={target % 1 === 0 && allowHalf ? 'end' : 'start'}\n data-value={target}\n key={target}\n style={allowHalf ? undefined : { width: '100%' }}\n onClick={() => setMergedValue(target)}\n onPointerEnter={() => setHoverValue(target)}\n />\n ))}\n </span>\n );\n })}\n </div>\n );\n },\n);\n\nRate.displayName = 'Rate';\n\nexport default Rate;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { createStaticStyles } from "antd-style";
|
|
2
|
+
//#region src/base-ui/Rate/style.ts
|
|
3
|
+
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
4
|
+
empty: css`
|
|
5
|
+
/* Group opacity instead of the translucent colorFill so the star's stroke and fill don't double up where they overlap. */
|
|
6
|
+
color: ${cssVar.colorText};
|
|
7
|
+
opacity: 0.12;
|
|
8
|
+
`,
|
|
9
|
+
fill: css`
|
|
10
|
+
pointer-events: none;
|
|
11
|
+
|
|
12
|
+
position: absolute;
|
|
13
|
+
inset-block: 0;
|
|
14
|
+
inset-inline-start: 0;
|
|
15
|
+
|
|
16
|
+
overflow: hidden;
|
|
17
|
+
display: flex;
|
|
18
|
+
`,
|
|
19
|
+
half: css`
|
|
20
|
+
position: absolute;
|
|
21
|
+
inset-block: 0;
|
|
22
|
+
width: 50%;
|
|
23
|
+
|
|
24
|
+
&[data-half='start'] {
|
|
25
|
+
inset-inline-start: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&[data-half='end'] {
|
|
29
|
+
inset-inline-end: 0;
|
|
30
|
+
}
|
|
31
|
+
`,
|
|
32
|
+
icon: css`
|
|
33
|
+
display: inline-flex;
|
|
34
|
+
flex: none;
|
|
35
|
+
align-items: center;
|
|
36
|
+
justify-content: center;
|
|
37
|
+
`,
|
|
38
|
+
root: css`
|
|
39
|
+
display: inline-flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
line-height: 1;
|
|
42
|
+
outline: none;
|
|
43
|
+
|
|
44
|
+
&[role='slider'] {
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&[role='slider']:focus-visible {
|
|
49
|
+
border-radius: 4px;
|
|
50
|
+
outline: 2px solid ${cssVar.colorText};
|
|
51
|
+
outline-offset: 2px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&[aria-disabled='true'] {
|
|
55
|
+
cursor: not-allowed;
|
|
56
|
+
opacity: 0.5;
|
|
57
|
+
}
|
|
58
|
+
`,
|
|
59
|
+
star: css`
|
|
60
|
+
position: relative;
|
|
61
|
+
|
|
62
|
+
display: inline-flex;
|
|
63
|
+
flex: none;
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
|
|
67
|
+
transition: transform 0.15s ease;
|
|
68
|
+
|
|
69
|
+
[role='slider']:not([aria-disabled='true']) > &:hover {
|
|
70
|
+
transform: scale(1.1);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@media (prefers-reduced-motion: reduce) {
|
|
74
|
+
transition: none;
|
|
75
|
+
}
|
|
76
|
+
`
|
|
77
|
+
}));
|
|
78
|
+
//#endregion
|
|
79
|
+
export { styles };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Rate/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n empty: css`\n /* Group opacity instead of the translucent colorFill so the star's stroke and fill don't double up where they overlap. */\n color: ${cssVar.colorText};\n opacity: 0.12;\n `,\n fill: css`\n pointer-events: none;\n\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n\n overflow: hidden;\n display: flex;\n `,\n half: css`\n position: absolute;\n inset-block: 0;\n width: 50%;\n\n &[data-half='start'] {\n inset-inline-start: 0;\n }\n\n &[data-half='end'] {\n inset-inline-end: 0;\n }\n `,\n icon: css`\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n `,\n root: css`\n display: inline-flex;\n align-items: center;\n line-height: 1;\n outline: none;\n\n &[role='slider'] {\n cursor: pointer;\n }\n\n &[role='slider']:focus-visible {\n border-radius: 4px;\n outline: 2px solid ${cssVar.colorText};\n outline-offset: 2px;\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n `,\n star: css`\n position: relative;\n\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n transition: transform 0.15s ease;\n\n [role='slider']:not([aria-disabled='true']) > &:hover {\n transform: scale(1.1);\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,OAAO,GAAG;;aAEC,OAAO,UAAU;;;CAG5B,MAAM,GAAG;;;;;;;;;;CAUT,MAAM,GAAG;;;;;;;;;;;;;CAaT,MAAM,GAAG;;;;;;CAMT,MAAM,GAAG;;;;;;;;;;;;2BAYgB,OAAO,UAAU;;;;;;;;;CAS1C,MAAM,GAAG;;;;;;;;;;;;;;;;;;AAkBX,EAAE"}
|