@996-design/996-ui 0.1.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/LICENSE +21 -0
- package/NOTICE.md +35 -0
- package/README.md +31 -0
- package/dist/cjs/index.cjs +4228 -0
- package/dist/cjs/index.cjs.map +41 -0
- package/dist/cjs/legacy-index.cjs +17297 -0
- package/dist/cjs/legacy-index.cjs.map +96 -0
- package/dist/cjs/pro/index.cjs +8544 -0
- package/dist/cjs/pro/index.cjs.map +35 -0
- package/dist/esm/index.js +4063 -0
- package/dist/esm/index.js.map +41 -0
- package/dist/esm/legacy-index.js +17294 -0
- package/dist/esm/legacy-index.js.map +96 -0
- package/dist/esm/pro/index.js +8554 -0
- package/dist/esm/pro/index.js.map +35 -0
- package/dist/styles.css +5816 -0
- package/dist/theme.css +601 -0
- package/dist/types/ConfigProvider.d.ts +195 -0
- package/dist/types/antd-theme.d.ts +12 -0
- package/dist/types/components/Alert.d.ts +51 -0
- package/dist/types/components/Avatar.d.ts +44 -0
- package/dist/types/components/Badge.d.ts +31 -0
- package/dist/types/components/Breadcrumb.d.ts +45 -0
- package/dist/types/components/Button.d.ts +42 -0
- package/dist/types/components/ButtonGroup.d.ts +13 -0
- package/dist/types/components/Card.d.ts +55 -0
- package/dist/types/components/Carousel.d.ts +70 -0
- package/dist/types/components/Checkbox.d.ts +43 -0
- package/dist/types/components/Collapse.d.ts +23 -0
- package/dist/types/components/ColorPicker.d.ts +143 -0
- package/dist/types/components/DataDisplayPrimitives.d.ts +205 -0
- package/dist/types/components/DataEntryPrimitives.d.ts +454 -0
- package/dist/types/components/Divider.d.ts +24 -0
- package/dist/types/components/Drawer.d.ts +68 -0
- package/dist/types/components/Dropdown.d.ts +41 -0
- package/dist/types/components/Empty.d.ts +14 -0
- package/dist/types/components/EmptyState.d.ts +6 -0
- package/dist/types/components/FeedbackPrimitives.d.ts +102 -0
- package/dist/types/components/Form.d.ts +67 -0
- package/dist/types/components/GameCover.d.ts +8 -0
- package/dist/types/components/Grid.d.ts +50 -0
- package/dist/types/components/Icon.d.ts +13 -0
- package/dist/types/components/IconButton.d.ts +14 -0
- package/dist/types/components/Input.d.ts +110 -0
- package/dist/types/components/InputNumber.d.ts +29 -0
- package/dist/types/components/LayoutPrimitives.d.ts +130 -0
- package/dist/types/components/List.d.ts +64 -0
- package/dist/types/components/Masonry.d.ts +43 -0
- package/dist/types/components/MenuList.d.ts +24 -0
- package/dist/types/components/Message.d.ts +58 -0
- package/dist/types/components/MessageToast.d.ts +27 -0
- package/dist/types/components/Modal.d.ts +123 -0
- package/dist/types/components/NavigationPrimitives.d.ts +73 -0
- package/dist/types/components/OtherPrimitives.d.ts +36 -0
- package/dist/types/components/Pagination.d.ts +18 -0
- package/dist/types/components/Panel.d.ts +8 -0
- package/dist/types/components/Popconfirm.d.ts +18 -0
- package/dist/types/components/Popover.d.ts +10 -0
- package/dist/types/components/PriceText.d.ts +9 -0
- package/dist/types/components/Progress.d.ts +57 -0
- package/dist/types/components/ProgressBar.d.ts +8 -0
- package/dist/types/components/ProgressButton.d.ts +9 -0
- package/dist/types/components/Radio.d.ts +67 -0
- package/dist/types/components/Rate.d.ts +17 -0
- package/dist/types/components/Result.d.ts +11 -0
- package/dist/types/components/SectionHeader.d.ts +11 -0
- package/dist/types/components/Segmented.d.ts +41 -0
- package/dist/types/components/SegmentedTabs.d.ts +42 -0
- package/dist/types/components/SelectInput.d.ts +33 -0
- package/dist/types/components/Skeleton.d.ts +54 -0
- package/dist/types/components/Slider.d.ts +48 -0
- package/dist/types/components/Spin.d.ts +21 -0
- package/dist/types/components/Splitter.d.ts +7 -0
- package/dist/types/components/StatCard.d.ts +10 -0
- package/dist/types/components/Statistic.d.ts +48 -0
- package/dist/types/components/StatusItem.d.ts +12 -0
- package/dist/types/components/Steps.d.ts +40 -0
- package/dist/types/components/Switch.d.ts +41 -0
- package/dist/types/components/Table.d.ts +61 -0
- package/dist/types/components/Tabs.d.ts +50 -0
- package/dist/types/components/Tag.d.ts +52 -0
- package/dist/types/components/TagPill.d.ts +7 -0
- package/dist/types/components/Tooltip.d.ts +64 -0
- package/dist/types/components/Typography.d.ts +374 -0
- package/dist/types/components/affix/utils.d.ts +10 -0
- package/dist/types/components/feedback/FloatButton.d.ts +51 -0
- package/dist/types/components/feedback/Watermark.d.ts +33 -0
- package/dist/types/components/feedback/globalHolder.d.ts +17 -0
- package/dist/types/components/form/statusContext.d.ts +18 -0
- package/dist/types/components/form/statusContext.type-smoke.d.ts +24 -0
- package/dist/types/components/splitter/Panel.d.ts +6 -0
- package/dist/types/components/splitter/SplitBar.d.ts +32 -0
- package/dist/types/components/splitter/interface.d.ts +89 -0
- package/dist/types/components/splitter/sizeUtil.d.ts +5 -0
- package/dist/types/components/splitter/useItems.d.ts +3 -0
- package/dist/types/components/splitter/useResizable.d.ts +9 -0
- package/dist/types/components/splitter/useResize.d.ts +9 -0
- package/dist/types/components/splitter/useSizes.d.ts +11 -0
- package/dist/types/components/table/columnState.d.ts +36 -0
- package/dist/types/components/table/pagination.d.ts +34 -0
- package/dist/types/components/table/selection.d.ts +23 -0
- package/dist/types/components/table/types.d.ts +163 -0
- package/dist/types/hooks/useReducedMotion.d.ts +1 -0
- package/dist/types/index.d.ts +44 -0
- package/dist/types/legacy-index.d.ts +136 -0
- package/dist/types/pro/index.d.ts +17 -0
- package/dist/types/tokens.d.ts +266 -0
- package/dist/types/utils/cn.d.ts +3 -0
- package/dist/types/utils/slots.d.ts +5 -0
- package/package.json +126 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts", "../../src/antd-theme.ts", "../../src/utils/cn.ts", "../../src/utils/slots.ts", "../../src/components/ButtonGroup.tsx", "../../src/components/EmptyState.tsx", "../../src/components/GameCover.tsx", "../../src/components/Icon.tsx", "../../src/components/IconButton.tsx", "../../src/ConfigProvider.tsx", "../../src/components/MenuList.tsx", "../../src/components/MessageToast.tsx", "../../src/hooks/useReducedMotion.ts", "../../src/components/Panel.tsx", "../../src/components/PriceText.tsx", "../../src/components/ProgressBar.tsx", "../../src/components/Button.tsx", "../../src/components/ProgressButton.tsx", "../../src/components/Typography.tsx", "../../src/components/Tooltip.tsx", "../../src/components/SectionHeader.tsx", "../../src/components/Segmented.tsx", "../../src/components/SegmentedTabs.tsx", "../../src/components/SelectInput.tsx", "../../src/components/Input.tsx", "../../src/components/form/statusContext.ts", "../../src/components/StatCard.tsx", "../../src/components/StatusItem.tsx", "../../src/components/TagPill.tsx", "../../src/components/OtherPrimitives.tsx", "../../src/components/affix/utils.ts", "../../src/tokens.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Ant Design 6.5.1-compatible public surface.\n *\n * Core behavior is exported unchanged from the source mirror. 996UX additions\n * below use distinct names and never replace an AntD core export.\n */\nexport * from \"@996-design/996-antd\";\n\nexport {\n antd996DarkTheme,\n antd996LightTheme,\n antd996Theme,\n getAntd996Theme,\n} from \"./antd-theme\";\nexport type { Antd996ColorScheme } from \"./antd-theme\";\n\nexport { ButtonGroup } from \"./components/ButtonGroup\";\nexport type { ButtonGroupProps } from \"./components/ButtonGroup\";\nexport { EmptyState } from \"./components/EmptyState\";\nexport { GameCover } from \"./components/GameCover\";\nexport { Icon } from \"./components/Icon\";\nexport type { IconName, IconProps } from \"./components/Icon\";\nexport { IconButton } from \"./components/IconButton\";\nexport type { IconButtonProps } from \"./components/IconButton\";\nexport { MenuList } from \"./components/MenuList\";\nexport type { MenuListItem, MenuListProps } from \"./components/MenuList\";\nexport { MessageToast } from \"./components/MessageToast\";\nexport type { MessageToastProps } from \"./components/MessageToast\";\nexport { Panel } from \"./components/Panel\";\nexport { PriceText } from \"./components/PriceText\";\nexport { ProgressBar } from \"./components/ProgressBar\";\nexport { ProgressButton } from \"./components/ProgressButton\";\nexport { SectionHeader } from \"./components/SectionHeader\";\nexport { SegmentedTabs } from \"./components/SegmentedTabs\";\nexport type { SegmentedTabItem, SegmentedTabsProps } from \"./components/SegmentedTabs\";\nexport { SelectInput } from \"./components/SelectInput\";\nexport type { SelectInputOption, SelectInputProps } from \"./components/SelectInput\";\nexport { StatCard } from \"./components/StatCard\";\nexport { StatusItem } from \"./components/StatusItem\";\nexport { TagPill } from \"./components/TagPill\";\nexport { Util } from \"./components/OtherPrimitives\";\nexport { Text, Title } from \"./components/Typography\";\nexport { cssVar, themeToken } from \"./tokens\";\nexport type { CssVarName, ThemeToken as ThemeTokenName } from \"./tokens\";\nexport { useReducedMotion } from \"./hooks/useReducedMotion\";\n\nexport const uiPackage = {\n package: \"@996-design/996-ui\",\n upstream: \"antd@6.5.1\",\n upstreamCommit: \"46bfeb5c667bf701eb6941b740c96f0fdac9325b\",\n componentPolicy: \"exact-upstream-behavior-with-996ux-style-layer\",\n} as const;\n",
|
|
6
|
+
"import { type ThemeConfig, theme } from \"@996-design/996-antd\";\n\nexport type Antd996ColorScheme = \"dark\" | \"light\";\n\nconst sharedToken = {\n borderRadius: 8,\n borderRadiusLG: 16,\n colorError: \"#fa433d\",\n colorInfo: \"#1e8cff\",\n colorSuccess: \"#07c160\",\n colorWarning: \"#f39713\",\n controlHeight: 40,\n controlHeightLG: 48,\n controlHeightSM: 32,\n fontFamily: '\"PingFang SC\", \"Microsoft YaHei\", \"Helvetica Neue\", Arial, sans-serif',\n} as const;\n\n/**\n * 996UX changes AntD's visual tokens only. Component state machines, event\n * ordering, keyboard behavior and imperative refs remain owned by the exact\n * AntD 6.5.1 source mirror.\n */\nexport const antd996DarkTheme: ThemeConfig = {\n algorithm: theme.darkAlgorithm,\n // CSS variable scope keys become class selectors and cannot start with a digit.\n cssVar: { key: \"hj-996ux\", prefix: \"hj\" },\n token: {\n ...sharedToken,\n colorBgBase: \"#121318\",\n colorPrimary: \"#ffcc33\",\n colorTextBase: \"#ffffff\",\n },\n};\n\nexport const antd996LightTheme: ThemeConfig = {\n algorithm: theme.defaultAlgorithm,\n cssVar: { key: \"hj-996ux\", prefix: \"hj\" },\n token: {\n ...sharedToken,\n colorBgBase: \"#f5f7fa\",\n colorPrimary: \"#9a6d00\",\n colorTextBase: \"#17191f\",\n },\n};\n\nexport function getAntd996Theme(colorScheme: Antd996ColorScheme): ThemeConfig {\n return colorScheme === \"light\" ? antd996LightTheme : antd996DarkTheme;\n}\n\n/** @deprecated Use `antd996DarkTheme` when the color scheme should be explicit. */\nexport const antd996Theme = antd996DarkTheme;\n",
|
|
7
|
+
"type ClassValue = string | false | null | undefined;\n\nexport function cn(...values: readonly ClassValue[]) {\n return values.filter(Boolean).join(\" \");\n}\n",
|
|
8
|
+
"import type { CSSProperties } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type SlotClassNames<TSlot extends string> = Partial<Record<TSlot, string>>;\nexport type SlotStyles<TSlot extends string> = Partial<Record<TSlot, CSSProperties>>;\n\nexport function slotClass<TSlot extends string>(\n classNames: SlotClassNames<TSlot> | undefined,\n slot: TSlot,\n ...defaults: readonly (string | false | null | undefined)[]\n) {\n return cn(...defaults, classNames?.[slot]);\n}\n\nexport function slotStyle<TSlot extends string>(\n styles: SlotStyles<TSlot> | undefined,\n slot: TSlot,\n defaults?: CSSProperties,\n): CSSProperties {\n return { ...defaults, ...styles?.[slot] };\n}\n",
|
|
9
|
+
"import type { HTMLAttributes, ReactNode } from \"react\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\n\ntype ButtonGroupSlot = \"root\";\n\nexport interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {\n readonly attached?: boolean;\n readonly block?: boolean;\n readonly children: ReactNode;\n readonly classNames?: SlotClassNames<ButtonGroupSlot>;\n readonly separated?: boolean;\n readonly styles?: SlotStyles<ButtonGroupSlot>;\n}\n\nexport function ButtonGroup({\n attached = true,\n block = false,\n children,\n className = \"\",\n classNames,\n separated = false,\n style,\n styles,\n ...props\n}: ButtonGroupProps) {\n return (\n <div\n className={slotClass(\n classNames,\n \"root\",\n \"hj-button-group\",\n attached && \"hj-button-group-attached\",\n block && \"hj-button-group-block\",\n separated && \"hj-button-group-separated\",\n className,\n )}\n // biome-ignore lint/a11y/useSemanticElements: ButtonGroup accepts div attributes; a fieldset would change its DOM contract.\n role=\"group\"\n style={slotStyle(styles, \"root\", style)}\n {...props}\n >\n {children}\n </div>\n );\n}\n",
|
|
10
|
+
"interface EmptyStateProps {\n readonly description?: string;\n readonly title: string;\n}\n\nexport function EmptyState({ description, title }: EmptyStateProps) {\n return (\n <div className=\"rounded-[4px] border border-dashed border-[#3b4652] bg-[#111923] p-4 text-center\">\n <p className=\"text-sm font-semibold text-[#f2f4f6]\">{title}</p>\n {description ? <p className=\"mt-1.5 text-xs text-[#6f7985]\">{description}</p> : null}\n </div>\n );\n}\n",
|
|
11
|
+
"interface GameCoverProps {\n readonly alt?: string;\n readonly className?: string;\n readonly fallback: string;\n readonly src?: string;\n}\n\nexport function GameCover({ alt = \"\", className = \"\", fallback, src }: GameCoverProps) {\n if (src) {\n return <img className={`h-full w-full object-cover ${className}`} alt={alt} src={src} />;\n }\n\n return (\n <div\n className={`flex h-full w-full items-center justify-center bg-[#151f29] text-xl font-semibold text-[#6f7985] ${className}`}\n >\n {fallback}\n </div>\n );\n}\n",
|
|
12
|
+
"import type { SVGAttributes } from \"react\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\n\nexport type IconName =\n | \"back\"\n | \"bars\"\n | \"bell\"\n | \"calendar\"\n | \"cart\"\n | \"check\"\n | \"chevron-down\"\n | \"chevron-right\"\n | \"close\"\n | \"copy\"\n | \"document\"\n | \"download\"\n | \"eye\"\n | \"flame\"\n | \"gamepad\"\n | \"gift\"\n | \"lock\"\n | \"minus\"\n | \"plus\"\n | \"refresh\"\n | \"rocket\"\n | \"search\"\n | \"shield\"\n | \"star\"\n | \"tag\"\n | \"thumb-up\"\n | \"user\"\n | \"warning\";\n\ntype IconSlot = \"root\";\n\nexport interface IconProps extends Omit<SVGAttributes<SVGSVGElement>, \"children\"> {\n readonly classNames?: SlotClassNames<IconSlot>;\n readonly name: IconName;\n readonly size?: 16 | 20 | 22 | 24 | number;\n readonly strokeWidth?: number;\n readonly styles?: SlotStyles<IconSlot>;\n}\n\nexport function Icon({\n className = \"\",\n classNames,\n name,\n size = 16,\n strokeWidth = 2,\n style,\n styles,\n ...props\n}: IconProps) {\n return (\n // biome-ignore lint/a11y/noSvgWithoutTitle: Decorative icons are hidden; labelled icons receive aria-label from props.\n <svg\n aria-hidden={props[\"aria-label\"] ? undefined : true}\n className={slotClass(classNames, \"root\", \"inline-block shrink-0\", className)}\n fill=\"none\"\n height={size}\n style={slotStyle(styles, \"root\", style)}\n viewBox=\"0 0 24 24\"\n width={size}\n {...props}\n >\n {renderPath(name, strokeWidth)}\n </svg>\n );\n}\n\nfunction renderPath(name: IconName, strokeWidth: number) {\n switch (name) {\n case \"back\":\n return (\n <path\n d=\"m14.5 6-6 6 6 6\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"bars\":\n return (\n <>\n <rect fill=\"currentColor\" height=\"8\" rx=\"1.5\" width=\"4\" x=\"4\" y=\"10\" />\n <rect fill=\"currentColor\" height=\"14\" rx=\"1.5\" width=\"4\" x=\"10\" y=\"4\" />\n <rect fill=\"currentColor\" height=\"6\" rx=\"1.5\" width=\"4\" x=\"16\" y=\"12\" />\n </>\n );\n case \"bell\":\n return (\n <>\n <path\n d=\"M6.5 10.5c0-3.4 2.1-5.7 5.5-5.7s5.5 2.3 5.5 5.7v3.2l1.5 2H5l1.5-2v-3.2Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n <path\n d=\"M9.8 18.2c.45.72 1.18 1.08 2.2 1.08s1.75-.36 2.2-1.08\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"calendar\":\n return (\n <>\n <rect\n height=\"16\"\n rx=\"3\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n width=\"16\"\n x=\"4\"\n y=\"5\"\n />\n <path\n d=\"M8 3.5v4M16 3.5v4M4 10h16\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"cart\":\n return (\n <>\n <path\n d=\"M4 5h2l1.5 9h9.2l2-6.5H7\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n <circle cx=\"9.3\" cy=\"18.5\" fill=\"currentColor\" r=\"1.3\" />\n <circle cx=\"16.4\" cy=\"18.5\" fill=\"currentColor\" r=\"1.3\" />\n </>\n );\n case \"check\":\n return (\n <path\n d=\"m5 12.5 4.2 4.2L19 7\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"chevron-down\":\n return (\n <path\n d=\"m7 10 5 5 5-5\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"chevron-right\":\n return (\n <path\n d=\"m10 7 5 5-5 5\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"close\":\n return (\n <path\n d=\"m7 7 10 10M17 7 7 17\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"copy\":\n return (\n <>\n <rect\n height=\"11\"\n rx=\"2\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n width=\"11\"\n x=\"8\"\n y=\"5\"\n />\n <path\n d=\"M5 8v9c0 1.1.9 2 2 2h9\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"document\":\n return (\n <>\n <rect\n height=\"20\"\n rx=\"4\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n width=\"20\"\n x=\"2\"\n y=\"2\"\n />\n <path\n d=\"M8 8h8M8 12h8M8 16h5\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"download\":\n return (\n <>\n <path\n d=\"M12 4v10M8 10l4 4 4-4M5 19h14\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"eye\":\n return (\n <>\n <path\n d=\"M3.5 12s3-5 8.5-5 8.5 5 8.5 5-3 5-8.5 5-8.5-5-8.5-5Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n <circle cx=\"12\" cy=\"12\" r=\"2.2\" stroke=\"currentColor\" strokeWidth={strokeWidth} />\n </>\n );\n case \"flame\":\n return (\n <path\n d=\"M12.4 21c-3.4 0-6.2-2.3-6.2-5.9 0-2.4 1.4-4.3 3.4-5.9.4 1.8 1.4 2.8 2.6 3.3-.6-3.1.8-5.8 3-7.5.3 2.8 2.6 4.4 2.6 8.1 0 4.6-2.6 7.9-5.4 7.9Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"gamepad\":\n return (\n <>\n <path\n d=\"M7.1 8.2h9.8c1.73 0 2.8.93 3.18 2.76l.66 3.17c.34 1.62-.53 2.77-1.95 2.77-.84 0-1.39-.34-2.06-1.12l-.83-.98H8.1l-.83.98c-.67.78-1.22 1.12-2.06 1.12-1.42 0-2.29-1.15-1.95-2.77l.66-3.17C4.3 9.13 5.37 8.2 7.1 8.2Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n <path\n d=\"M7.1 12.5h3.4M8.8 10.8v3.4\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n <circle cx=\"15.1\" cy=\"12.5\" fill=\"currentColor\" r=\"1\" />\n <circle cx=\"17.7\" cy=\"12.5\" fill=\"currentColor\" r=\"1\" />\n </>\n );\n case \"gift\":\n return (\n <>\n <path\n d=\"M4 10h16v10H4V10ZM3.5 7h17v3h-17V7ZM12 7v13\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n <path\n d=\"M12 7c-2.7 0-4.5-.8-4.5-2.2C7.5 3.8 8.2 3 9.2 3 10.8 3 12 7 12 7Zm0 0c2.7 0 4.5-.8 4.5-2.2 0-1-.7-1.8-1.7-1.8C13.2 3 12 7 12 7Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"lock\":\n return (\n <>\n <path\n d=\"M7.5 10V8.2C7.5 5.65 9.2 4 12 4s4.5 1.65 4.5 4.2V10\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n <rect\n height=\"9\"\n rx=\"2.2\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n width=\"15\"\n x=\"4.5\"\n y=\"10\"\n />\n </>\n );\n case \"minus\":\n return (\n <path d=\"M5 12h14\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeWidth={strokeWidth} />\n );\n case \"plus\":\n return (\n <path\n d=\"M12 5v14M5 12h14\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"refresh\":\n return (\n <path\n d=\"M18 8.2A6.8 6.8 0 1 0 19 12M18 4v4.2h-4.2\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"rocket\":\n return (\n <>\n <path\n d=\"M13 5.5c2-1.9 4.3-2.4 6.2-2.2.2 1.9-.3 4.2-2.2 6.2l-5.6 5.6-3.9.9.9-3.9L13 5.5Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n <path\n d=\"M8 16l-3 3M14.8 6.2l3 3\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"search\":\n return (\n <>\n <circle cx=\"11\" cy=\"11\" r=\"6\" stroke=\"currentColor\" strokeWidth={strokeWidth} />\n <path\n d=\"m16 16 4 4\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"shield\":\n return (\n <path\n d=\"M12 3.5 18 6v5.2c0 4.2-2.3 7.2-6 9.3-3.7-2.1-6-5.1-6-9.3V6l6-2.5Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"star\":\n return (\n <path\n d=\"m12 3.8 2.35 4.76 5.25.76-3.8 3.7.9 5.23L12 15.78l-4.7 2.47.9-5.23-3.8-3.7 5.25-.76L12 3.8Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n );\n case \"tag\":\n return (\n <>\n <path\n d=\"M4 5.5V12l7.3 7.3a2.4 2.4 0 0 0 3.4 0l4.6-4.6a2.4 2.4 0 0 0 0-3.4L12 4H5.5A1.5 1.5 0 0 0 4 5.5Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n <circle cx=\"8\" cy=\"8\" fill=\"currentColor\" r=\"1.2\" />\n </>\n );\n case \"thumb-up\":\n return (\n <>\n <path\n d=\"M8.5 10.5 11.5 4c1.7.4 2.3 1.7 1.8 3.2l-.6 1.8H18c1.4 0 2.3 1.2 2 2.6l-1.1 5.7c-.3 1.4-1.3 2.2-2.7 2.2H8.5v-9Z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n <path\n d=\"M4 10.5h4.5v9H4z\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"user\":\n return (\n <>\n <path\n d=\"M7.7 8.4a4.3 4.3 0 1 1 8.6 0 4.3 4.3 0 0 1-8.6 0Z\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n />\n <path\n d=\"M5 20c.66-3.38 3.2-5.33 7-5.33s6.34 1.95 7 5.33\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n </>\n );\n case \"warning\":\n return (\n <>\n <circle cx=\"12\" cy=\"12\" fill=\"currentColor\" r=\"10\" />\n <path\n d=\"M12 6.8v6.6\"\n stroke=\"var(--hj-color-web-surface)\"\n strokeLinecap=\"round\"\n strokeWidth={strokeWidth}\n />\n <circle cx=\"12\" cy=\"17\" fill=\"var(--hj-color-web-surface)\" r=\"1.2\" />\n </>\n );\n }\n}\n",
|
|
13
|
+
"import type { ButtonHTMLAttributes, ReactNode } from \"react\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\n\nexport type IconButtonTone = \"default\" | \"primary\" | \"ghost\" | \"selected\";\nexport type IconButtonSize = \"xs\" | \"sm\" | \"md\";\ntype IconButtonSlot = \"root\" | \"content\";\n\nexport interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n readonly children: ReactNode;\n readonly classNames?: SlotClassNames<IconButtonSlot>;\n readonly styles?: SlotStyles<IconButtonSlot>;\n readonly tone?: IconButtonTone;\n readonly size?: IconButtonSize;\n}\n\nconst toneClass: Record<IconButtonTone, string> = {\n default:\n \"border-[var(--hj-icon-button-default-border)] bg-[var(--hj-icon-button-default-bg)] text-[var(--hj-icon-button-default-fg)] hover:border-[var(--hj-icon-button-default-border-hover)] hover:text-[var(--hj-icon-button-default-fg-hover)]\",\n primary:\n \"border-[var(--hj-icon-button-primary-border)] bg-[var(--hj-icon-button-primary-bg)] text-[var(--hj-icon-button-primary-fg)] hover:bg-[var(--hj-icon-button-primary-bg-hover)]\",\n ghost:\n \"border-[var(--hj-icon-button-ghost-border)] bg-[var(--hj-icon-button-ghost-bg)] text-[var(--hj-icon-button-ghost-fg)] hover:text-[var(--hj-icon-button-ghost-fg-hover)]\",\n selected:\n \"border-[var(--hj-icon-button-selected-border)] bg-[var(--hj-icon-button-selected-bg)] text-[var(--hj-icon-button-selected-fg)]\",\n};\n\nconst sizeClass: Record<IconButtonSize, string> = {\n xs: \"h-2 w-2 text-[0px]\",\n sm: \"h-6 w-6 text-sm\",\n md: \"h-9 w-9 text-lg\",\n};\n\nexport function IconButton({\n children,\n className = \"\",\n classNames,\n size = \"sm\",\n style,\n styles,\n tone = \"default\",\n type = \"button\",\n ...props\n}: IconButtonProps) {\n return (\n <button\n className={slotClass(\n classNames,\n \"root\",\n \"hj-wave inline-flex shrink-0 items-center justify-center rounded-[3px] border font-semibold leading-none transition disabled:cursor-not-allowed disabled:opacity-50\",\n toneClass[tone],\n sizeClass[size],\n className,\n )}\n style={slotStyle(styles, \"root\", style)}\n type={type}\n {...props}\n >\n <span className={slotClass(classNames, \"content\")} style={slotStyle(styles, \"content\")}>\n {children}\n </span>\n </button>\n );\n}\n",
|
|
14
|
+
"import type { CSSProperties, FC, ReactNode } from \"react\";\nimport { createContext, useCallback, useContext, useId, useMemo } from \"react\";\nimport { cn } from \"./utils/cn\";\n\nexport type UiSurface = \"web\" | \"admin\";\nexport type AntdSize = \"small\" | \"medium\" | \"middle\" | \"large\";\nexport type UiSize = AntdSize | \"xs\" | \"sm\" | \"md\" | \"lg\";\nexport type UiVisualSize = \"sm\" | \"md\" | \"lg\";\nexport type UiMotionConfig = boolean | { readonly disabled?: boolean };\nexport type DirectionType = \"ltr\" | \"rtl\";\n\nexport const Variants = [\"outlined\", \"borderless\", \"filled\", \"underlined\"] as const;\nexport type Variant = (typeof Variants)[number];\n\nexport const defaultPrefixCls = \"hj\";\nexport const defaultIconPrefixCls = \"hjicon\";\n\nexport type PopupContainer = HTMLElement;\nexport type TargetContainer = HTMLElement | Window | ShadowRoot;\nexport type GetPrefixCls = (suffixCls?: string, customizePrefixCls?: string) => string;\nexport type GetPopupContainer = (triggerNode?: HTMLElement) => PopupContainer;\nexport type GetTargetContainer = () => TargetContainer;\nexport type RenderEmptyHandler = (componentName?: string) => ReactNode;\nexport type Locale = Readonly<Record<string, unknown>>;\n\nexport interface ThemeCssVarConfig {\n readonly key?: string;\n readonly prefix?: string;\n}\n\nexport type ThemeToken = Readonly<Record<string, unknown>>;\nexport type ThemeComponentTokens = Readonly<Record<string, ThemeToken>>;\n\nexport interface ThemeConfig {\n readonly algorithm?: unknown;\n readonly components?: ThemeComponentTokens;\n readonly cssVar?: boolean | ThemeCssVarConfig;\n readonly hashed?: boolean;\n readonly inherit?: boolean;\n readonly token?: ThemeToken;\n readonly zeroRuntime?: boolean;\n}\n\nexport interface ComponentDefaults {\n readonly [componentName: string]: object | undefined;\n readonly Button?: {\n readonly size?: UiSize;\n readonly disabled?: boolean;\n readonly motion?: UiMotionConfig;\n };\n readonly Input?: {\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly disabled?: boolean;\n };\n readonly SelectInput?: {\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly disabled?: boolean;\n readonly popupOffset?: number;\n };\n readonly Select?: {\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly disabled?: boolean;\n };\n readonly AutoComplete?: {\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly disabled?: boolean;\n };\n readonly Cascader?: {\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly disabled?: boolean;\n };\n readonly TreeSelect?: {\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly disabled?: boolean;\n };\n readonly Mentions?: {\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly disabled?: boolean;\n };\n readonly MenuList?: {\n readonly disabled?: boolean;\n readonly variant?: \"menu\" | \"user\" | \"dropdown\";\n };\n readonly SegmentedTabs?: {\n readonly size?: UiSize;\n readonly disabled?: boolean;\n readonly motion?: UiMotionConfig;\n };\n readonly Segmented?: {\n readonly size?: UiSize;\n readonly disabled?: boolean;\n };\n readonly Modal?: {\n readonly motion?: UiMotionConfig;\n readonly width?: number | string;\n };\n readonly Tooltip?: {\n readonly arrow?: boolean;\n readonly disabled?: boolean;\n readonly placement?:\n | \"topLeft\"\n | \"top\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottom\"\n | \"bottomRight\"\n | \"leftTop\"\n | \"left\"\n | \"leftBottom\"\n | \"rightTop\"\n | \"right\"\n | \"rightBottom\";\n readonly trigger?: \"hover\" | \"focus\" | \"click\" | readonly (\"hover\" | \"focus\" | \"click\")[];\n readonly variant?: \"dark\" | \"light\";\n };\n readonly MessageToast?: {\n readonly showIcon?: boolean;\n readonly variant?: \"dark\" | \"light\";\n };\n readonly Checkbox?: {\n readonly disabled?: boolean;\n };\n readonly Switch?: {\n readonly disabled?: boolean;\n };\n readonly AdminButton?: {\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly disabled?: boolean;\n readonly motion?: UiMotionConfig;\n };\n readonly AdminInput?: {\n readonly disabled?: boolean;\n };\n readonly DataTable?: {\n readonly pageSize?: number;\n };\n}\n\nexport interface UiConfig {\n readonly componentDisabled: boolean;\n readonly componentSize: AntdSize;\n readonly components: ComponentDefaults;\n readonly direction?: DirectionType;\n readonly disabled: boolean;\n readonly getPopupContainer?: GetPopupContainer;\n readonly getPrefixCls: GetPrefixCls;\n readonly getTargetContainer?: GetTargetContainer;\n readonly iconPrefixCls: string;\n readonly locale?: Locale;\n readonly motion: UiMotionConfig;\n readonly popupMatchSelectWidth?: boolean | number;\n readonly prefixCls: string;\n readonly renderEmpty?: RenderEmptyHandler;\n readonly rootPrefixCls: string;\n readonly size: UiVisualSize;\n readonly surface: UiSurface;\n readonly theme?: ThemeConfig;\n readonly variant?: Variant;\n readonly virtual?: boolean;\n}\n\nexport type ConfigConsumerProps = UiConfig;\n\nexport interface ConfigProviderProps {\n readonly children?: ReactNode;\n readonly className?: string;\n readonly componentDisabled?: boolean;\n readonly componentSize?: AntdSize;\n readonly components?: ComponentDefaults;\n readonly direction?: DirectionType;\n readonly disabled?: boolean;\n /** @deprecated Use `popupMatchSelectWidth`. */\n readonly dropdownMatchSelectWidth?: boolean | number;\n readonly getPopupContainer?: GetPopupContainer;\n readonly getTargetContainer?: GetTargetContainer;\n readonly iconPrefixCls?: string;\n readonly locale?: Locale;\n readonly motion?: UiMotionConfig;\n readonly popupMatchSelectWidth?: boolean | number;\n readonly prefixCls?: string;\n readonly renderEmpty?: RenderEmptyHandler;\n readonly size?: Exclude<UiSize, \"xs\">;\n readonly style?: CSSProperties;\n readonly surface?: UiSurface;\n readonly theme?: ThemeConfig;\n readonly variant?: Variant;\n readonly virtual?: boolean;\n}\n\nexport type HolderRender = (children: ReactNode) => ReactNode;\n\nexport interface GlobalConfigProps {\n readonly holderRender?: HolderRender;\n readonly iconPrefixCls?: string;\n readonly prefixCls?: string;\n readonly theme?: ThemeConfig;\n}\n\nexport interface GlobalConfig {\n readonly getIconPrefixCls: () => string;\n readonly getPrefixCls: GetPrefixCls;\n readonly getRootPrefixCls: () => string;\n readonly getTheme: () => ThemeConfig | undefined;\n readonly holderRender?: HolderRender;\n}\n\nconst defaultGetPrefixCls: GetPrefixCls = (suffixCls, customizePrefixCls) => {\n if (customizePrefixCls) return customizePrefixCls;\n return suffixCls ? `${defaultPrefixCls}-${suffixCls}` : defaultPrefixCls;\n};\n\nexport const defaultConfig: UiConfig = {\n componentDisabled: false,\n componentSize: \"medium\",\n components: {},\n disabled: false,\n getPrefixCls: defaultGetPrefixCls,\n iconPrefixCls: defaultIconPrefixCls,\n motion: true,\n prefixCls: defaultPrefixCls,\n rootPrefixCls: defaultPrefixCls,\n size: \"md\",\n surface: \"web\",\n};\n\nexport const ConfigContext = createContext<UiConfig>(defaultConfig);\nexport const { Consumer: ConfigConsumer } = ConfigContext;\n\nlet globalPrefixCls: string | undefined;\nlet globalIconPrefixCls: string | undefined;\nlet globalTheme: ThemeConfig | undefined;\nlet globalHolderRender: HolderRender | undefined;\n\nfunction getGlobalPrefixCls() {\n return globalPrefixCls ?? defaultPrefixCls;\n}\n\nfunction getGlobalIconPrefixCls() {\n return globalIconPrefixCls ?? defaultIconPrefixCls;\n}\n\nfunction setGlobalConfig(props: GlobalConfigProps) {\n if (props.prefixCls !== undefined) globalPrefixCls = props.prefixCls;\n if (props.iconPrefixCls !== undefined) globalIconPrefixCls = props.iconPrefixCls;\n if (Object.prototype.hasOwnProperty.call(props, \"holderRender\")) {\n globalHolderRender = props.holderRender;\n }\n if (props.theme) globalTheme = props.theme;\n}\n\nexport function globalConfig(): GlobalConfig {\n const prefixCls = getGlobalPrefixCls();\n return {\n getIconPrefixCls: getGlobalIconPrefixCls,\n getPrefixCls: (suffixCls, customizePrefixCls) => {\n if (customizePrefixCls) return customizePrefixCls;\n return suffixCls ? `${prefixCls}-${suffixCls}` : prefixCls;\n },\n getRootPrefixCls: () => prefixCls,\n getTheme: () => globalTheme,\n holderRender: globalHolderRender,\n };\n}\n\nexport function isMotionDisabled(motion: UiMotionConfig | undefined) {\n return motion === false || (typeof motion === \"object\" && motion.disabled === true);\n}\n\nexport function normalizeUiSize(\n size: Exclude<UiSize, \"xs\"> | undefined,\n fallback: UiVisualSize = \"md\",\n): UiVisualSize {\n if (size === \"small\" || size === \"sm\") return \"sm\";\n if (size === \"large\" || size === \"lg\") return \"lg\";\n if (size === \"medium\" || size === \"middle\" || size === \"md\") return \"md\";\n return fallback;\n}\n\nfunction normalizeComponentSize(\n size: Exclude<UiSize, \"xs\"> | undefined,\n fallback: AntdSize,\n): AntdSize {\n if (size === \"small\" || size === \"sm\") return \"small\";\n if (size === \"large\" || size === \"lg\") return \"large\";\n if (size === \"middle\") return \"middle\";\n if (size === \"medium\" || size === \"md\") return \"medium\";\n return fallback;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction mergeObjectMap<T extends object>(parent: T, current: T | undefined): T {\n if (!current) return parent;\n\n const merged: Record<string, unknown> = {\n ...(parent as Record<string, unknown>),\n };\n for (const [name, value] of Object.entries(current)) {\n const parentValue = merged[name];\n merged[name] = isRecord(parentValue) && isRecord(value) ? { ...parentValue, ...value } : value;\n }\n return merged as T;\n}\n\nfunction normalizeLocale(locale: Locale | undefined): Locale | undefined {\n if (!locale) return undefined;\n const defaultLocale = locale.default;\n return isRecord(defaultLocale) && defaultLocale.locale ? defaultLocale : locale;\n}\n\nfunction normalizeCssVarConfig(\n theme: ThemeConfig,\n parentTheme: ThemeConfig | undefined,\n prefixCls: string,\n generatedKey: string,\n): ThemeConfig[\"cssVar\"] {\n if (theme.cssVar === false) return false;\n\n const inherited = parentTheme?.cssVar;\n const effective = theme.cssVar ?? inherited;\n if (!effective) return effective;\n\n const parentConfig = isRecord(inherited) ? inherited : {};\n const currentConfig = isRecord(theme.cssVar) ? theme.cssVar : {};\n return {\n ...parentConfig,\n ...currentConfig,\n key: typeof currentConfig.key === \"string\" ? currentConfig.key : generatedKey,\n prefix:\n typeof currentConfig.prefix === \"string\"\n ? currentConfig.prefix\n : typeof parentConfig.prefix === \"string\"\n ? parentConfig.prefix\n : prefixCls,\n };\n}\n\nfunction mergeTheme(\n theme: ThemeConfig | undefined,\n parentTheme: ThemeConfig | undefined,\n prefixCls: string,\n generatedKey: string,\n): ThemeConfig | undefined {\n if (!theme) return parentTheme;\n\n const inheritedTheme = theme.inherit === false ? undefined : parentTheme;\n const mergedComponents = mergeObjectMap<ThemeComponentTokens>(\n inheritedTheme?.components ?? {},\n theme.components,\n );\n const cssVar = normalizeCssVarConfig(theme, parentTheme, prefixCls, generatedKey);\n\n return {\n ...inheritedTheme,\n ...theme,\n components: mergedComponents,\n cssVar,\n hashed: theme.hashed ?? parentTheme?.hashed,\n token: {\n ...inheritedTheme?.token,\n ...theme.token,\n },\n };\n}\n\nconst tokenCssVariableAliases: Readonly<Record<string, readonly string[]>> = {\n borderRadius: [\"--hj-radius-md\"],\n borderRadiusLG: [\"--hj-radius-lg\"],\n borderRadiusSM: [\"--hj-radius-sm\"],\n borderRadiusXS: [\"--hj-radius-xs\"],\n boxShadowSecondary: [\"--hj-shadow-lg\"],\n colorBgBase: [\"--hj-color-web-page\"],\n colorBgContainer: [\"--hj-color-web-surface\"],\n colorBgElevated: [\"--hj-color-web-surface-raised\"],\n colorBorder: [\"--hj-color-web-border\"],\n colorDanger: [\"--hj-color-danger\"],\n colorError: [\"--hj-color-danger\"],\n colorForeground: [\"--hj-color-web-foreground\"],\n colorInfo: [\"--hj-color-info\"],\n colorMuted: [\"--hj-color-web-muted\"],\n colorPrimary: [\"--hj-color-brand\"],\n colorPrimaryActive: [\"--hj-color-brand-active\"],\n colorPrimaryHover: [\"--hj-color-brand-hover\"],\n colorSuccess: [\"--hj-color-success\"],\n colorSurface: [\"--hj-color-web-surface\"],\n colorSurfaceElevated: [\"--hj-color-web-surface-raised\"],\n colorText: [\"--hj-color-web-foreground\"],\n colorTextSecondary: [\"--hj-color-web-muted\"],\n colorWarning: [\"--hj-color-warning\"],\n motionDurationMid: [\"--hj-motion-duration-normal\"],\n shadowPopup: [\"--hj-shadow-lg\"],\n zDropdown: [\"--hj-z-dropdown\"],\n zModal: [\"--hj-z-modal\"],\n zToast: [\"--hj-z-toast\"],\n};\n\nfunction toKebabCase(value: string) {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z])([A-Z][a-z])/g, \"$1-$2\")\n .replace(/[^a-zA-Z0-9_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase();\n}\n\nfunction formatTokenValue(name: string, value: string | number) {\n if (typeof value !== \"number\") return value;\n if (/duration/i.test(name)) return `${value}ms`;\n if (\n /radius/i.test(name) ||\n /(fontSize|width|height|size|padding|margin|gap|offset|inset)$/i.test(name)\n ) {\n return `${value}px`;\n }\n return String(value);\n}\n\nfunction createThemeStyle(theme: ThemeConfig | undefined): CSSProperties {\n if (!theme) return {};\n\n const style: Record<string, string> = {};\n const cssVarConfig = isRecord(theme.cssVar) ? theme.cssVar : undefined;\n const customPrefix =\n typeof cssVarConfig?.prefix === \"string\" ? toKebabCase(cssVarConfig.prefix) : undefined;\n\n const assignToken = (name: string, value: unknown, namespace?: string) => {\n if (typeof value !== \"string\" && typeof value !== \"number\") return;\n const kebabName = toKebabCase(name);\n if (!kebabName) return;\n\n const formattedValue = formatTokenValue(name, value);\n const componentPrefix = namespace ? `${toKebabCase(namespace)}-` : \"\";\n style[`--hj-${componentPrefix}${kebabName}`] = formattedValue;\n\n if (customPrefix) {\n style[`--${customPrefix}-${componentPrefix}${kebabName}`] = formattedValue;\n }\n\n if (!namespace) {\n for (const variableName of tokenCssVariableAliases[name] ?? []) {\n style[variableName] = formattedValue;\n }\n }\n };\n\n for (const [name, value] of Object.entries(theme.token ?? {})) {\n assignToken(name, value);\n }\n for (const [componentName, componentToken] of Object.entries(theme.components ?? {})) {\n for (const [name, value] of Object.entries(componentToken)) {\n if (name !== \"algorithm\") assignToken(name, value, componentName);\n }\n }\n\n return style as CSSProperties;\n}\n\nconst InternalConfigProvider: FC<ConfigProviderProps> = ({\n children,\n className,\n componentDisabled,\n componentSize,\n components,\n direction,\n disabled,\n dropdownMatchSelectWidth,\n getPopupContainer,\n getTargetContainer,\n iconPrefixCls,\n locale,\n motion,\n popupMatchSelectWidth,\n prefixCls,\n renderEmpty,\n size,\n style,\n surface,\n theme,\n variant,\n virtual,\n}) => {\n const parent = useContext(ConfigContext);\n const themeId = useId().replace(/:/g, \"\");\n const rootPrefixCls = prefixCls ?? parent.getPrefixCls();\n const getPrefixCls = useCallback<GetPrefixCls>(\n (suffixCls, customizePrefixCls) => {\n if (customizePrefixCls) return customizePrefixCls;\n return suffixCls ? `${rootPrefixCls}-${suffixCls}` : rootPrefixCls;\n },\n [rootPrefixCls],\n );\n const localSize = componentSize ?? size;\n const mergedTheme = useMemo(\n () => mergeTheme(theme, parent.theme, rootPrefixCls, `css-var-${themeId}`),\n [parent.theme, rootPrefixCls, theme, themeId],\n );\n const mergedComponents = useMemo(\n () => mergeObjectMap(parent.components, components),\n [components, parent.components],\n );\n\n const value = useMemo<UiConfig>(() => {\n const mergedDisabled = componentDisabled ?? disabled ?? parent.disabled;\n return {\n componentDisabled: mergedDisabled,\n componentSize: normalizeComponentSize(localSize, parent.componentSize),\n components: mergedComponents,\n direction: direction ?? parent.direction,\n disabled: mergedDisabled,\n getPopupContainer: getPopupContainer ?? parent.getPopupContainer,\n getPrefixCls,\n getTargetContainer: getTargetContainer ?? parent.getTargetContainer,\n iconPrefixCls: iconPrefixCls ?? parent.iconPrefixCls,\n locale: normalizeLocale(locale) ?? parent.locale,\n motion: motion ?? parent.motion,\n popupMatchSelectWidth:\n popupMatchSelectWidth ?? dropdownMatchSelectWidth ?? parent.popupMatchSelectWidth,\n prefixCls: rootPrefixCls,\n renderEmpty: renderEmpty ?? parent.renderEmpty,\n rootPrefixCls,\n size: normalizeUiSize(localSize, parent.size),\n surface: surface ?? parent.surface,\n theme: mergedTheme,\n variant: variant ?? parent.variant,\n virtual: virtual ?? parent.virtual,\n };\n }, [\n componentDisabled,\n direction,\n disabled,\n dropdownMatchSelectWidth,\n getPopupContainer,\n getPrefixCls,\n getTargetContainer,\n iconPrefixCls,\n localSize,\n locale,\n mergedComponents,\n mergedTheme,\n motion,\n parent,\n popupMatchSelectWidth,\n renderEmpty,\n rootPrefixCls,\n surface,\n variant,\n virtual,\n ]);\n const rootClass = value.surface === \"admin\" ? \"huaijiu-admin-root\" : \"huaijiu-web-root\";\n const cssVarClassName =\n isRecord(value.theme?.cssVar) && typeof value.theme.cssVar.key === \"string\"\n ? value.theme.cssVar.key\n : undefined;\n const themeStyle = useMemo(() => createThemeStyle(value.theme), [value.theme]);\n\n return (\n <ConfigContext.Provider value={value}>\n <div\n className={cn(\n rootClass,\n value.direction === \"rtl\" && `${value.rootPrefixCls}-rtl`,\n isMotionDisabled(value.motion) && \"huaijiu-motion-disabled\",\n cssVarClassName,\n className,\n )}\n dir={value.direction}\n style={{ ...themeStyle, ...style }}\n >\n {children}\n </div>\n </ConfigContext.Provider>\n );\n};\n\nexport function useConfig(): UiConfig {\n return useContext(ConfigContext);\n}\n\nexport interface ConfigProviderType extends FC<ConfigProviderProps> {\n readonly ConfigConsumer: typeof ConfigConsumer;\n readonly ConfigContext: typeof ConfigContext;\n readonly config: typeof setGlobalConfig;\n readonly useConfig: typeof useConfig;\n}\n\nexport const ConfigProvider: ConfigProviderType = Object.assign(InternalConfigProvider, {\n ConfigConsumer,\n ConfigContext,\n config: setGlobalConfig,\n useConfig,\n});\n\nConfigProvider.displayName = \"ConfigProvider\";\n\nexport default ConfigProvider;\n",
|
|
15
|
+
"import type { CSSProperties, ReactNode } from \"react\";\nimport { useConfig } from \"../ConfigProvider\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\n\nexport interface MenuListItem {\n readonly id: string;\n readonly label: ReactNode;\n readonly description?: ReactNode;\n readonly avatar?: ReactNode;\n readonly suffix?: ReactNode;\n readonly disabled?: boolean;\n}\n\ntype MenuListSlot = \"root\" | \"item\" | \"avatar\" | \"content\" | \"label\" | \"description\" | \"suffix\";\n\nexport interface MenuListProps {\n readonly activeId?: string;\n readonly className?: string;\n readonly classNames?: SlotClassNames<MenuListSlot>;\n readonly disabled?: boolean;\n readonly items: readonly MenuListItem[];\n readonly style?: CSSProperties;\n readonly styles?: SlotStyles<MenuListSlot>;\n readonly variant?: \"menu\" | \"user\" | \"dropdown\";\n readonly onSelect?: (id: string) => void;\n}\n\nconst rootWidthClass: Record<NonNullable<MenuListProps[\"variant\"]>, string> = {\n dropdown: \"w-full py-0\",\n menu: \"w-40 py-2\",\n user: \"w-[172px] py-2\",\n};\n\nconst itemClass: Record<NonNullable<MenuListProps[\"variant\"]>, string> = {\n dropdown: \"h-[45px] px-4 text-base leading-6\",\n menu: \"h-10 px-4 text-sm leading-[18px]\",\n user: \"h-16 px-4\",\n};\n\nexport function MenuList({\n activeId,\n className = \"\",\n classNames,\n disabled,\n items,\n onSelect,\n style,\n styles,\n variant,\n}: MenuListProps) {\n const config = useConfig();\n const mergedVariant = variant ?? config.components.MenuList?.variant ?? \"menu\";\n const mergedDisabled = disabled || config.disabled || config.components.MenuList?.disabled;\n\n return (\n <div\n className={slotClass(\n classNames,\n \"root\",\n \"overflow-hidden rounded-[var(--hj-radius-md)] border border-[var(--hj-menu-border)] bg-[var(--hj-menu-bg)] shadow-[var(--hj-menu-shadow)]\",\n rootWidthClass[mergedVariant],\n className,\n )}\n aria-disabled={mergedDisabled || undefined}\n role=\"menu\"\n style={slotStyle(styles, \"root\", style)}\n >\n {items.map((item) => {\n const active = item.id === activeId;\n return (\n <button\n aria-current={active || undefined}\n className={slotClass(\n classNames,\n \"item\",\n \"flex w-full items-center gap-3 text-left transition hover:bg-[var(--hj-menu-item-bg-hover)] disabled:cursor-not-allowed disabled:opacity-50\",\n itemClass[mergedVariant],\n active\n ? \"bg-[var(--hj-menu-item-bg-active)] text-[var(--hj-menu-item-fg-active)]\"\n : \"bg-[var(--hj-menu-item-bg)] text-[var(--hj-menu-item-fg)]\",\n )}\n disabled={mergedDisabled || item.disabled}\n key={item.id}\n onClick={() => onSelect?.(item.id)}\n role=\"menuitem\"\n style={slotStyle(styles, \"item\")}\n type=\"button\"\n >\n {item.avatar ? (\n <span\n className={slotClass(\n classNames,\n \"avatar\",\n \"flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-full bg-[var(--hj-menu-avatar-bg)] text-[var(--hj-menu-avatar-fg)]\",\n )}\n style={slotStyle(styles, \"avatar\")}\n >\n {item.avatar}\n </span>\n ) : null}\n <span\n className={slotClass(classNames, \"content\", \"min-w-0 flex-1\")}\n style={slotStyle(styles, \"content\")}\n >\n <span\n className={slotClass(\n classNames,\n \"label\",\n \"block truncate\",\n active ? \"font-semibold\" : \"font-normal\",\n mergedVariant === \"dropdown\" ? \"text-base leading-6\" : \"text-sm leading-[18px]\",\n active\n ? \"text-[var(--hj-menu-item-fg-active)]\"\n : mergedVariant === \"user\"\n ? \"text-[var(--hj-menu-item-fg-active)]\"\n : \"text-[var(--hj-menu-item-fg)]\",\n )}\n style={slotStyle(styles, \"label\")}\n >\n {item.label}\n </span>\n {item.description ? (\n <span\n className={slotClass(\n classNames,\n \"description\",\n \"mt-[5px] block truncate text-xs leading-4 text-[var(--hj-menu-item-muted)]\",\n )}\n style={slotStyle(styles, \"description\")}\n >\n {item.description}\n </span>\n ) : null}\n </span>\n {item.suffix ? (\n <span\n className={slotClass(classNames, \"suffix\", \"shrink-0 text-[var(--hj-input-clear)]\")}\n style={slotStyle(styles, \"suffix\")}\n >\n {item.suffix}\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n",
|
|
16
|
+
"import CSSMotion from \"@rc-component/motion\";\nimport type { NotificationProps as RcNotificationProps } from \"@rc-component/notification\";\nimport type { ReactNode } from \"react\";\nimport { isMotionDisabled, useConfig } from \"../ConfigProvider\";\nimport { useReducedMotion } from \"../hooks/useReducedMotion\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\n\nexport type MessageNoticeType = \"success\" | \"warning\" | \"error\" | \"info\" | \"loading\";\nexport interface MessageType extends PromiseLike<boolean> {\n (): void;\n}\ntype MessageToastRole = NonNullable<RcNotificationProps[\"role\"]> & (\"alert\" | \"status\");\ntype MessageToastSlot = \"root\" | \"icon\" | \"content\" | \"action\" | \"close\";\n\nexport interface MessageToastProps {\n readonly action?: ReactNode;\n readonly children: ReactNode;\n readonly className?: string;\n readonly classNames?: SlotClassNames<MessageToastSlot>;\n readonly closable?: boolean;\n readonly closeIcon?: ReactNode;\n readonly icon?: ReactNode;\n readonly onClose?: () => void;\n readonly open?: boolean;\n readonly role?: MessageToastRole;\n readonly showIcon?: boolean;\n readonly styles?: SlotStyles<MessageToastSlot>;\n readonly type?: MessageNoticeType;\n readonly variant?: \"dark\" | \"light\";\n}\n\nconst iconClass: Record<MessageNoticeType, string> = {\n success: \"bg-[var(--hj-message-success)]\",\n warning: \"bg-[var(--hj-message-warning)]\",\n error: \"bg-[var(--hj-message-error)]\",\n info: \"bg-[var(--hj-message-info)]\",\n loading: \"bg-[var(--hj-message-info)]\",\n};\n\nconst defaultIcon: Record<MessageNoticeType, string> = {\n success: \"✓\",\n warning: \"!\",\n error: \"×\",\n info: \"i\",\n loading: \"…\",\n};\n\nexport function MessageToast({\n action,\n children,\n className = \"\",\n classNames,\n closable = false,\n closeIcon,\n icon,\n onClose,\n open = true,\n role = \"status\",\n showIcon,\n styles,\n type = \"info\",\n variant,\n}: MessageToastProps) {\n const config = useConfig();\n const reducedMotion = useReducedMotion();\n const mergedShowIcon = showIcon ?? config.components.MessageToast?.showIcon ?? true;\n const mergedVariant = variant ?? config.components.MessageToast?.variant ?? \"dark\";\n const motionDisabled = reducedMotion || isMotionDisabled(config.motion);\n\n return (\n <CSSMotion\n motionAppear\n motionDeadline={motionDisabled ? 1 : 300}\n motionName={motionDisabled ? undefined : \"hj-slide-up\"}\n removeOnLeave\n visible={open}\n >\n {({ className: motionClassName, style: motionStyle }, ref) => (\n <div\n className={slotClass(\n classNames,\n \"root\",\n \"inline-flex min-h-[var(--hj-message-height)] max-w-full items-center gap-[var(--hj-message-gap)] rounded-[var(--hj-message-radius)] px-[var(--hj-message-padding-x)] text-sm leading-[18px] shadow-[var(--hj-message-shadow)]\",\n mergedVariant === \"dark\"\n ? \"bg-[var(--hj-message-bg)] text-[var(--hj-message-fg)]\"\n : \"bg-[var(--hj-message-light-bg)] text-[var(--hj-message-light-fg)]\",\n motionDisabled && \"huaijiu-motion-disabled\",\n motionClassName,\n className,\n )}\n ref={ref}\n role={role}\n style={{ ...slotStyle(styles, \"root\"), ...motionStyle }}\n >\n {mergedShowIcon && icon !== null ? (\n <span\n className={slotClass(\n classNames,\n \"icon\",\n \"flex h-[var(--hj-message-icon-size)] w-[var(--hj-message-icon-size)] shrink-0 items-center justify-center rounded-full text-xs font-bold leading-none text-white\",\n iconClass[type],\n )}\n style={slotStyle(styles, \"icon\")}\n >\n {icon ?? defaultIcon[type]}\n </span>\n ) : null}\n <span\n className={slotClass(classNames, \"content\", \"min-w-0 break-words\")}\n style={slotStyle(styles, \"content\")}\n >\n {children}\n </span>\n {action ? (\n <span\n className={slotClass(\n classNames,\n \"action\",\n \"ml-1 whitespace-nowrap text-[var(--hj-message-action-fg)]\",\n )}\n style={slotStyle(styles, \"action\")}\n >\n {action}\n </span>\n ) : null}\n {closable ? (\n <button\n aria-label=\"关闭\"\n className={slotClass(\n classNames,\n \"close\",\n \"ml-1 inline-flex h-4 w-4 shrink-0 items-center justify-center text-[var(--hj-message-close-fg)] transition hover:text-[var(--hj-message-close-fg-hover)]\",\n )}\n onClick={onClose}\n style={slotStyle(styles, \"close\")}\n type=\"button\"\n >\n {closeIcon ?? \"×\"}\n </button>\n ) : null}\n </div>\n )}\n </CSSMotion>\n );\n}\n",
|
|
17
|
+
"import { useEffect, useState } from \"react\";\n\nexport function useReducedMotion() {\n const [reduced, setReduced] = useState(false);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") return;\n const query = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const update = () => setReduced(query.matches);\n update();\n query.addEventListener(\"change\", update);\n return () => query.removeEventListener(\"change\", update);\n }, []);\n\n return reduced;\n}\n",
|
|
18
|
+
"import type { HTMLAttributes, ReactNode } from \"react\";\n\ninterface PanelProps extends HTMLAttributes<HTMLElement> {\n readonly as?: \"article\" | \"section\" | \"div\";\n readonly children: ReactNode;\n readonly radius?: \"sm\" | \"md\";\n}\n\nconst radiusClass = { sm: \"rounded-[6px]\", md: \"rounded-[8px]\" } as const;\n\nexport function Panel({\n as: Component = \"section\",\n children,\n className = \"\",\n radius = \"md\",\n ...props\n}: PanelProps) {\n return (\n <Component className={`${radiusClass[radius]} bg-[#242731] ${className}`} {...props}>\n {children}\n </Component>\n );\n}\n",
|
|
19
|
+
"interface PriceTextProps {\n readonly className?: string;\n readonly freeLabel?: string;\n readonly freeClassName?: string;\n readonly originalPrice?: string | null;\n readonly price: string;\n}\n\nexport function PriceText({\n className,\n freeClassName,\n freeLabel = \"免费\",\n originalPrice,\n price,\n}: PriceTextProps) {\n const priceClassName = className ?? \"text-base\";\n const numericPrice = Number(price);\n if (numericPrice === 0) {\n return (\n <span className={`${priceClassName} ${freeClassName ?? \"font-semibold text-[#69c04a]\"}`}>\n {freeLabel}\n </span>\n );\n }\n\n return (\n <span className=\"inline-flex items-baseline gap-2\">\n {originalPrice && originalPrice !== price ? (\n <span className=\"text-xs text-[#6f7985] line-through\">¥{originalPrice}</span>\n ) : null}\n <span className={`${priceClassName} font-semibold text-[#ffcc33]`}>¥{price}</span>\n </span>\n );\n}\n",
|
|
20
|
+
"interface ProgressBarProps {\n readonly className?: string;\n readonly max?: number;\n readonly tone?: \"primary\" | \"success\" | \"achievement\";\n readonly value: number;\n}\n\nconst toneClass = {\n primary: \"bg-[#ffcc33]\",\n success: \"bg-[#69c04a]\",\n achievement: \"\",\n} as const;\n\nexport function ProgressBar({\n className = \"\",\n max = 100,\n tone = \"primary\",\n value,\n}: ProgressBarProps) {\n const width = `${Math.round((value / Math.max(max, 1)) * 100)}%`;\n const achievementGradient = \"linear-gradient(90deg, #ffa50e 0%, #ff5f0b 100%)\";\n const trackColor = tone === \"achievement\" ? \"rgba(255, 255, 255, 0.2)\" : \"#24303a\";\n\n return (\n <div\n className={`h-1.5 overflow-hidden rounded ${tone === \"achievement\" ? \"bg-white/20\" : \"bg-[#24303a]\"} ${className}`}\n style={{ backgroundColor: trackColor, flexShrink: 0, height: \"6px\", minHeight: \"6px\" }}\n >\n <div\n className={`h-full rounded ${toneClass[tone]}`}\n style={{\n height: \"100%\",\n width,\n ...(tone === \"achievement\" ? { backgroundImage: achievementGradient } : {}),\n }}\n />\n </div>\n );\n}\n",
|
|
21
|
+
"import type {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n ForwardedRef,\n HTMLAttributes,\n MouseEvent,\n ReactNode,\n} from \"react\";\nimport { forwardRef, useEffect, useMemo, useState } from \"react\";\nimport { useConfig } from \"../ConfigProvider\";\nimport { cn } from \"../utils/cn\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\n\nexport type ButtonType = \"default\" | \"primary\" | \"dashed\" | \"link\" | \"text\";\nexport type ButtonColor =\n | \"default\"\n | \"primary\"\n | \"danger\"\n | \"blue\"\n | \"purple\"\n | \"cyan\"\n | \"green\"\n | \"magenta\"\n | \"pink\"\n | \"red\"\n | \"orange\"\n | \"yellow\"\n | \"volcano\"\n | \"geekblue\"\n | \"lime\"\n | \"gold\"\n | \"success\"\n | \"info\"\n | \"purchase\"\n | \"download\";\nexport type ButtonShape = \"default\" | \"circle\" | \"round\" | \"square\";\nexport type ButtonTone =\n | \"primary\"\n | \"default\"\n | \"secondary\"\n | \"ghost\"\n | \"danger\"\n | \"success\"\n | \"info\"\n | \"light\"\n | \"purchase\"\n | \"download\";\nexport type AntdButtonVariant = \"outlined\" | \"dashed\" | \"solid\" | \"filled\" | \"text\" | \"link\";\nexport type ButtonVariant = AntdButtonVariant | \"secondary\" | \"translucent\" | \"toggle\" | \"icon\";\nexport type AntdButtonSize = \"small\" | \"medium\" | \"middle\" | \"large\";\nexport type ButtonSize = AntdButtonSize | \"xs\" | \"sm\" | \"md\" | \"lg\";\ntype ButtonVisualSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\nexport type ButtonStatus = \"default\" | \"hover\" | \"active\";\nexport type ButtonWidth = \"default\" | \"narrow\" | \"auto\";\ntype ButtonSlot = \"root\" | \"icon\" | \"content\" | \"loadingIcon\";\n\ntype MergedButtonHtmlAttributes = Omit<\n HTMLAttributes<HTMLElement> &\n ButtonHTMLAttributes<HTMLElement> &\n AnchorHTMLAttributes<HTMLElement>,\n \"color\" | \"type\"\n>;\n\nexport interface ButtonProps extends MergedButtonHtmlAttributes {\n readonly autoInsertSpace?: boolean;\n readonly block?: boolean;\n readonly classNames?: SlotClassNames<ButtonSlot>;\n readonly color?: ButtonColor;\n readonly danger?: boolean;\n readonly ghost?: boolean;\n readonly href?: string;\n readonly htmlType?: ButtonHTMLAttributes<HTMLButtonElement>[\"type\"];\n readonly icon?: ReactNode;\n readonly iconPosition?: \"start\" | \"end\";\n readonly iconPlacement?: \"start\" | \"end\";\n readonly loading?: boolean | { readonly delay?: number; readonly icon?: ReactNode };\n readonly rootClassName?: string;\n readonly shape?: ButtonShape;\n readonly styles?: SlotStyles<ButtonSlot>;\n readonly status?: ButtonStatus;\n readonly tone?: ButtonTone;\n readonly size?: ButtonSize;\n readonly type?: ButtonType;\n readonly variant?: ButtonVariant;\n readonly width?: ButtonWidth;\n}\n\nconst solidToneClass: Record<ButtonTone, string> = {\n primary:\n \"bg-[var(--hj-button-primary-bg)] text-[var(--hj-button-primary-fg)] hover:bg-[var(--hj-button-primary-bg-hover)] active:bg-[var(--hj-button-primary-bg-active)] active:text-[var(--hj-button-primary-fg-active)]\",\n default:\n \"bg-[var(--hj-button-default-bg)] text-[var(--hj-button-default-fg)] hover:bg-[var(--hj-button-default-bg-hover)] hover:text-[var(--hj-button-default-fg-hover)] active:bg-[var(--hj-button-default-bg-active)] active:text-[var(--hj-button-default-fg-hover)]\",\n secondary:\n \"bg-[var(--hj-button-default-bg)] text-[var(--hj-button-default-fg)] hover:bg-[var(--hj-button-default-bg-hover)] hover:text-[var(--hj-button-default-fg-hover)] active:bg-[var(--hj-button-default-bg-active)] active:text-[var(--hj-button-default-fg-hover)]\",\n ghost: \"bg-transparent text-white/60 hover:bg-white/5 hover:text-white\",\n danger: \"bg-[var(--hj-color-danger)] text-white hover:bg-[var(--hj-color-danger-soft)]\",\n success: \"bg-[var(--hj-color-success)] text-white hover:brightness-110\",\n info: \"bg-[var(--hj-color-info)] text-white hover:brightness-110\",\n light:\n \"bg-[var(--hj-button-light-bg)] text-[var(--hj-button-light-fg)] shadow-[inset_0_0_0_1px_var(--hj-button-light-border)] hover:bg-[var(--hj-button-light-bg-hover)] hover:shadow-[inset_0_0_0_1px_var(--hj-button-light-border-hover)] active:bg-[var(--hj-button-light-bg-active)]\",\n purchase: \"bg-[var(--hj-color-purchase)] text-white hover:brightness-110\",\n download:\n \"bg-[var(--hj-button-primary-bg)] text-[var(--hj-button-primary-fg)] hover:bg-[var(--hj-button-primary-bg-hover)] active:bg-[var(--hj-button-primary-bg-active)] active:text-[var(--hj-button-primary-fg-active)]\",\n};\n\nconst sizeClass: Record<ButtonVisualSize, string> = {\n xs: \"h-[var(--hj-button-xs-height)] min-w-[var(--hj-button-xs-min-width)] rounded-[var(--hj-radius-sm)] px-[var(--hj-button-xs-padding-x)] text-[length:var(--hj-button-xs-font-size)] leading-[var(--hj-button-xs-line-height)]\",\n sm: \"h-[var(--hj-button-sm-height)] min-w-[var(--hj-button-sm-min-width)] rounded-[var(--hj-radius-sm)] px-[var(--hj-button-sm-padding-x)] text-[length:var(--hj-button-sm-font-size)] leading-[var(--hj-button-sm-line-height)]\",\n md: \"h-[var(--hj-button-md-height)] min-w-[var(--hj-button-md-min-width)] rounded-[var(--hj-radius-md)] px-[var(--hj-button-md-padding-x)] text-[length:var(--hj-button-md-font-size)] leading-[var(--hj-button-md-line-height)]\",\n lg: \"h-[var(--hj-button-lg-height)] min-w-[var(--hj-button-lg-min-width)] rounded-[var(--hj-radius-md)] px-[var(--hj-button-lg-padding-x)] text-[length:var(--hj-button-lg-font-size)] leading-[var(--hj-button-lg-line-height)]\",\n};\n\nconst iconTextPaddingVariable: Record<ButtonVisualSize, string> = {\n xs: \"var(--hj-button-xs-icon-padding-x)\",\n sm: \"var(--hj-button-sm-icon-padding-x)\",\n md: \"var(--hj-button-md-icon-padding-x)\",\n lg: \"var(--hj-button-lg-icon-padding-x)\",\n};\n\nconst narrowWidthClass: Record<ButtonVisualSize, string> = {\n xs: \"w-[var(--hj-button-xs-narrow-width)] min-w-[var(--hj-button-xs-narrow-width)] px-0\",\n sm: \"w-[var(--hj-button-sm-narrow-width)] min-w-[var(--hj-button-sm-narrow-width)] px-0\",\n md: \"w-[var(--hj-button-md-min-width)] min-w-[var(--hj-button-md-min-width)]\",\n lg: \"w-[var(--hj-button-lg-min-width)] min-w-[var(--hj-button-lg-min-width)]\",\n};\n\nconst autoWidthClass = \"w-auto min-w-0\";\n\nconst iconSizeClass: Record<ButtonVisualSize, string> = {\n xs: \"h-[var(--hj-button-xs-height)] w-[var(--hj-button-xs-height)] min-w-[var(--hj-button-xs-height)] rounded-[var(--hj-radius-sm)] p-0 text-[length:var(--hj-button-xs-font-size)] leading-[var(--hj-button-xs-line-height)]\",\n sm: \"h-[var(--hj-button-sm-height)] w-[var(--hj-button-sm-height)] min-w-[var(--hj-button-sm-height)] rounded-[var(--hj-radius-sm)] p-0 text-[length:var(--hj-button-sm-font-size)] leading-[var(--hj-button-sm-line-height)]\",\n md: \"h-[var(--hj-button-md-height)] w-[var(--hj-button-md-height)] min-w-[var(--hj-button-md-height)] rounded-[var(--hj-radius-md)] p-0 text-[length:var(--hj-button-md-font-size)] leading-[var(--hj-button-md-line-height)]\",\n lg: \"h-[var(--hj-button-lg-height)] w-[var(--hj-button-lg-height)] min-w-[var(--hj-button-lg-height)] rounded-[var(--hj-radius-md)] p-0 text-[length:var(--hj-button-lg-font-size)] leading-[var(--hj-button-lg-line-height)]\",\n};\nconst circleSizeClass: Record<ButtonVisualSize, string> = {\n xs: \"h-[var(--hj-button-xs-height)] w-[var(--hj-button-xs-height)] min-w-[var(--hj-button-xs-height)] rounded-full px-0\",\n sm: \"h-[var(--hj-button-sm-height)] w-[var(--hj-button-sm-height)] min-w-[var(--hj-button-sm-height)] rounded-full px-0\",\n md: \"h-[var(--hj-button-md-height)] w-[var(--hj-button-md-height)] min-w-[var(--hj-button-md-height)] rounded-full px-0\",\n lg: \"h-[var(--hj-button-lg-height)] w-[var(--hj-button-lg-height)] min-w-[var(--hj-button-lg-height)] rounded-full px-0\",\n};\nconst textSizeClass =\n \"h-5 min-w-0 rounded-none p-0 text-[length:var(--hj-button-md-font-size)] leading-[var(--hj-button-md-line-height)]\";\n\nfunction normalizeButtonSize(\n size: ButtonSize | undefined,\n fallback: \"sm\" | \"md\" | \"lg\",\n): ButtonVisualSize {\n if (size === \"small\" || size === \"sm\") return \"sm\";\n if (size === \"large\" || size === \"lg\") return \"lg\";\n if (size === \"medium\" || size === \"middle\" || size === \"md\") return \"md\";\n return size ?? fallback;\n}\n\nconst statusClass: Record<\n ButtonStatus,\n Record<\"primary\" | \"default\" | \"toggle\" | \"text\", string>\n> = {\n default: {\n primary: \"\",\n default: \"\",\n toggle: \"\",\n text: \"\",\n },\n hover: {\n primary: \"bg-[var(--hj-button-primary-bg-hover)] text-[var(--hj-button-primary-fg-active)]\",\n default: \"bg-[var(--hj-button-default-bg-hover)] text-[var(--hj-button-default-fg-hover)]\",\n toggle: \"bg-[var(--hj-button-toggle-bg-hover)] text-[var(--hj-button-primary-bg)]\",\n text: \"text-[var(--hj-button-primary-bg)] brightness-110\",\n },\n active: {\n primary: \"bg-[var(--hj-button-primary-bg-active)] text-[var(--hj-button-primary-fg-active)]\",\n default: \"bg-[var(--hj-button-default-bg-active)] text-[var(--hj-button-default-fg-hover)]\",\n toggle: \"bg-[var(--hj-button-toggle-bg-active)] text-[var(--hj-button-primary-fg-active)]\",\n text: \"text-[var(--hj-button-text-fg)] brightness-50\",\n },\n};\n\nfunction resolveVariantClass(tone: ButtonTone, variant: ButtonVariant) {\n if ((variant === \"text\" || variant === \"link\") && (tone === \"default\" || tone === \"secondary\"))\n return \"bg-transparent text-[var(--hj-button-text-default-fg)] hover:text-[var(--hj-button-text-fg)] active:brightness-50\";\n if (variant === \"text\" || variant === \"link\")\n return \"bg-transparent text-[var(--hj-button-text-fg)] hover:brightness-110 active:brightness-50\";\n if (variant === \"outlined\" || variant === \"dashed\") {\n const toneClass =\n tone === \"danger\"\n ? \"text-[var(--hj-color-danger)]\"\n : tone === \"success\"\n ? \"text-[var(--hj-color-success)]\"\n : tone === \"info\"\n ? \"text-[var(--hj-color-info)]\"\n : tone === \"purchase\"\n ? \"text-[var(--hj-color-purchase)]\"\n : tone === \"primary\" || tone === \"download\"\n ? \"text-[var(--hj-color-brand)]\"\n : \"text-[var(--hj-button-default-fg)]\";\n return cn(\n \"border border-current bg-transparent hover:bg-[var(--hj-button-default-bg-hover)]\",\n variant === \"dashed\" && \"border-dashed\",\n toneClass,\n );\n }\n if (variant === \"translucent\" || variant === \"filled\")\n return \"bg-[var(--hj-button-translucent-bg)] text-[var(--hj-button-default-fg)] hover:bg-[var(--hj-button-translucent-bg-hover)] hover:text-[var(--hj-button-default-fg-hover)] active:bg-[var(--hj-button-translucent-bg-active)] active:text-[var(--hj-button-default-fg-hover)]\";\n if (variant === \"toggle\")\n return \"border border-[var(--hj-button-toggle-border)] bg-[var(--hj-button-toggle-bg)] text-[var(--hj-color-brand-weak)] hover:bg-[var(--hj-button-toggle-bg-hover)] active:bg-[var(--hj-button-toggle-bg-active)]\";\n if (variant === \"icon\" || variant === \"solid\") return solidToneClass[tone];\n if (variant === \"secondary\" || tone === \"secondary\" || tone === \"default\")\n return solidToneClass.secondary;\n return solidToneClass[tone];\n}\n\nfunction resolveStatusClass(tone: ButtonTone, variant: ButtonVariant, status: ButtonStatus) {\n if (status === \"default\") return \"\";\n if (variant === \"text\" || variant === \"link\") return statusClass[status].text;\n if (variant === \"translucent\" || variant === \"filled\") {\n if (status === \"hover\")\n return \"bg-[var(--hj-button-translucent-bg-hover)] text-[var(--hj-button-default-fg-hover)]\";\n return \"bg-[var(--hj-button-translucent-bg-active)] text-[var(--hj-button-default-fg-hover)]\";\n }\n if (variant === \"toggle\") return statusClass[status].toggle;\n if (\n variant === \"secondary\" ||\n variant === \"outlined\" ||\n variant === \"dashed\" ||\n tone === \"secondary\" ||\n tone === \"default\" ||\n tone === \"light\"\n )\n return statusClass[status].default;\n return statusClass[status].primary;\n}\n\nfunction resolveDisabledOpacity(tone: ButtonTone, variant: ButtonVariant) {\n if (variant === \"toggle\") return \"disabled:opacity-50\";\n if (\n variant === \"secondary\" ||\n variant === \"outlined\" ||\n variant === \"dashed\" ||\n tone === \"secondary\" ||\n tone === \"default\" ||\n tone === \"light\"\n )\n return \"disabled:opacity-40\";\n return \"disabled:opacity-50\";\n}\n\nfunction resolveAntdTone({\n color,\n danger,\n ghost,\n tone,\n type,\n}: {\n readonly color?: ButtonColor;\n readonly danger?: boolean;\n readonly ghost?: boolean;\n readonly tone?: ButtonTone;\n readonly type?: ButtonType;\n}): ButtonTone {\n if (tone) return tone;\n if (\n danger ||\n color === \"danger\" ||\n color === \"red\" ||\n color === \"pink\" ||\n color === \"magenta\" ||\n color === \"volcano\"\n )\n return \"danger\";\n if (color === \"success\" || color === \"green\" || color === \"lime\") return \"success\";\n if (\n color === \"info\" ||\n color === \"blue\" ||\n color === \"cyan\" ||\n color === \"geekblue\" ||\n color === \"purple\"\n )\n return \"info\";\n if (color === \"purchase\" || color === \"orange\" || color === \"yellow\" || color === \"gold\")\n return \"purchase\";\n if (color === \"download\") return \"download\";\n if (ghost) return \"ghost\";\n if (type === \"primary\" || color === \"primary\") return \"primary\";\n if (type === \"link\" || type === \"text\") return \"ghost\";\n return \"secondary\";\n}\n\nfunction resolveAntdVariant({\n ghost,\n tone,\n type,\n variant,\n}: {\n readonly ghost?: boolean;\n readonly tone: ButtonTone;\n readonly type?: ButtonType;\n readonly variant?: ButtonVariant;\n}): ButtonVariant {\n if (variant) return variant;\n if (type === \"text\" || ghost || tone === \"ghost\") return \"text\";\n if (type === \"link\") return \"link\";\n if (type === \"dashed\") return \"dashed\";\n if (tone === \"secondary\" || tone === \"default\") return \"outlined\";\n return \"solid\";\n}\n\nfunction getLoadingDelay(loading: ButtonProps[\"loading\"]) {\n if (typeof loading === \"object\") return Math.max(0, loading.delay ?? 0);\n return 0;\n}\n\nexport const Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(\n function Button(\n {\n autoInsertSpace,\n block = false,\n children,\n className = \"\",\n classNames,\n color,\n danger,\n disabled,\n ghost,\n href,\n htmlType = \"button\",\n icon,\n iconPlacement,\n iconPosition = \"start\",\n loading = false,\n onClick,\n rootClassName,\n shape = \"default\",\n size,\n style,\n styles,\n status = \"default\",\n tone,\n type,\n variant,\n width = \"default\",\n ...props\n },\n ref,\n ) {\n const config = useConfig();\n const mergedSize = normalizeButtonSize(size ?? config.components.Button?.size, config.size);\n const delay = useMemo(() => getLoadingDelay(loading), [loading]);\n const [delayedLoading, setDelayedLoading] = useState(\n typeof loading === \"boolean\" ? loading : delay <= 0 && Boolean(loading),\n );\n useEffect(() => {\n if (!loading) {\n setDelayedLoading(false);\n return undefined;\n }\n if (delay <= 0) {\n setDelayedLoading(true);\n return undefined;\n }\n const timer = window.setTimeout(() => setDelayedLoading(true), delay);\n return () => window.clearTimeout(timer);\n }, [delay, loading]);\n\n const mergedTone = resolveAntdTone({ color, danger, ghost, tone, type });\n const mergedDisabled =\n disabled || delayedLoading || config.disabled || config.components.Button?.disabled;\n const mergedVariant = resolveAntdVariant({ ghost, tone: mergedTone, type, variant });\n const isTextVariant = mergedVariant === \"text\" || mergedVariant === \"link\";\n const mergedSizeClass =\n mergedVariant === \"icon\"\n ? iconSizeClass[mergedSize]\n : isTextVariant\n ? textSizeClass\n : sizeClass[mergedSize];\n const fontStyle =\n mergedTone === \"light\"\n ? {\n fontFamily: \"var(--hj-button-light-font-family)\",\n fontWeight: \"var(--hj-button-light-font-weight)\",\n }\n : { fontFamily: \"var(--hj-button-font-family)\" };\n const mergedIconPosition = iconPlacement ?? iconPosition;\n const loadingIcon = typeof loading === \"object\" ? loading.icon : undefined;\n const iconNode = delayedLoading ? (\n <span\n aria-hidden=\"true\"\n className={slotClass(\n classNames,\n \"loadingIcon\",\n \"h-3.5 w-3.5 animate-spin rounded-full border-2 border-current border-t-transparent motion-reduce:animate-none\",\n )}\n style={slotStyle(styles, \"loadingIcon\")}\n >\n {loadingIcon}\n </span>\n ) : icon ? (\n <span\n className={slotClass(\n classNames,\n \"icon\",\n \"inline-flex shrink-0 items-center justify-center\",\n )}\n style={slotStyle(styles, \"icon\")}\n >\n {icon}\n </span>\n ) : null;\n const hasTextIcon = Boolean(\n iconNode && children != null && mergedVariant !== \"icon\" && !isTextVariant,\n );\n const iconTextPaddingStyle = hasTextIcon\n ? { paddingInline: iconTextPaddingVariable[mergedSize] }\n : undefined;\n const rootClass = slotClass(\n classNames,\n \"root\",\n \"hj-wave inline-flex cursor-pointer select-none items-center justify-center gap-1.5 border-0 font-[var(--hj-button-font-weight)] transition disabled:cursor-not-allowed\",\n block && \"w-full\",\n mergedSizeClass,\n shape === \"round\" && \"rounded-full\",\n shape === \"circle\" && circleSizeClass[mergedSize],\n shape === \"square\" && children == null && iconSizeClass[mergedSize],\n width === \"narrow\" &&\n mergedVariant !== \"icon\" &&\n !isTextVariant &&\n narrowWidthClass[mergedSize],\n width === \"auto\" && mergedVariant !== \"icon\" && !isTextVariant && autoWidthClass,\n resolveVariantClass(mergedTone, mergedVariant),\n resolveStatusClass(mergedTone, mergedVariant, status),\n resolveDisabledOpacity(mergedTone, mergedVariant),\n rootClassName,\n className,\n );\n const rootStyle = {\n ...fontStyle,\n ...iconTextPaddingStyle,\n ...slotStyle(styles, \"root\", style),\n };\n const content = (\n <>\n {mergedIconPosition === \"start\" ? iconNode : null}\n {children == null ? null : (\n <span\n className={cn(\n \"relative overflow-visible whitespace-nowrap\",\n autoInsertSpace && \"tracking-normal\",\n classNames?.content,\n )}\n style={styles?.content}\n >\n {children}\n </span>\n )}\n {mergedIconPosition === \"end\" ? iconNode : null}\n </>\n );\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (mergedDisabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n onClick?.(event);\n };\n\n if (href !== undefined) {\n return (\n <a\n {...(props as AnchorHTMLAttributes<HTMLAnchorElement>)}\n aria-busy={delayedLoading || undefined}\n aria-disabled={mergedDisabled || undefined}\n className={rootClass}\n href={mergedDisabled ? undefined : href}\n onClick={handleClick}\n ref={ref as ForwardedRef<HTMLAnchorElement>}\n style={rootStyle}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n {...(props as ButtonHTMLAttributes<HTMLButtonElement>)}\n aria-busy={delayedLoading || undefined}\n className={rootClass}\n disabled={mergedDisabled}\n onClick={handleClick}\n ref={ref as ForwardedRef<HTMLButtonElement>}\n style={rootStyle}\n type={htmlType}\n >\n {content}\n </button>\n );\n },\n);\n",
|
|
22
|
+
"import { Button, type ButtonProps, type ButtonTone } from \"./Button\";\n\ninterface ProgressButtonProps extends Omit<ButtonProps, \"children\" | \"value\"> {\n readonly label: string;\n readonly max?: number;\n readonly tone?: ButtonTone;\n readonly value: number | null;\n}\n\nexport function ProgressButton({\n className = \"\",\n disabled,\n label,\n max = 100,\n tone = \"download\",\n value,\n ...props\n}: ProgressButtonProps) {\n const normalizedMax = Number.isFinite(max) && max > 0 ? max : 100;\n const normalizedValue =\n value == null || !Number.isFinite(value) ? null : Math.max(0, Math.min(normalizedMax, value));\n const width = normalizedValue == null ? \"100%\" : `${(normalizedValue / normalizedMax) * 100}%`;\n\n return (\n <Button\n {...props}\n className={`relative overflow-hidden ${className}`}\n disabled={disabled}\n tone={tone}\n >\n {/* biome-ignore lint/a11y/useFocusableInteractive: the parent button owns focus; this nested progressbar is read-only. */}\n <span\n aria-label={label}\n aria-valuemax={normalizedMax}\n aria-valuemin={0}\n aria-valuenow={normalizedValue ?? undefined}\n className={`absolute inset-y-0 left-0 bg-[#d6a84a]/30 ${normalizedValue == null ? \"animate-pulse motion-reduce:animate-none\" : \"\"}`}\n role=\"progressbar\"\n style={{ width }}\n />\n <span className=\"relative\">{label}</span>\n </Button>\n );\n}\n",
|
|
23
|
+
"import { TextArea as RcTextArea } from \"@rc-component/input\";\nimport type { AutoSizeType, TextAreaRef } from \"@rc-component/input\";\nimport ResizeObserver from \"@rc-component/resize-observer\";\nimport {\n composeRef,\n toArray,\n useControlledState,\n useEvent,\n useLayoutEffect,\n} from \"@rc-component/util\";\nimport type {\n AnchorHTMLAttributes,\n CSSProperties,\n ChangeEventHandler,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEventHandler,\n MouseEvent,\n ReactNode,\n} from \"react\";\nimport {\n createElement,\n forwardRef,\n isValidElement,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Icon } from \"./Icon\";\nimport { Tooltip, type TooltipProps } from \"./Tooltip\";\n\nexport type TitleVariant = \"page\" | \"section\" | \"card\";\nexport type TextVariant = \"body\" | \"muted\" | \"action\";\nexport type TypographyType = \"secondary\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface TypographyActionsConfig {\n readonly placement?: \"start\" | \"end\";\n}\n\nexport interface TypographyCopyConfig {\n readonly format?: \"text/html\" | \"text/plain\";\n readonly icon?: ReactNode | readonly [ReactNode, ReactNode];\n readonly onCopy?: (event?: MouseEvent<HTMLButtonElement>) => void;\n readonly tabIndex?: number;\n readonly text?: string | (() => string | Promise<string>);\n readonly tooltips?: boolean | ReactNode | readonly [ReactNode, ReactNode];\n}\n\nexport interface TypographyEditableConfig {\n readonly autoSize?: boolean | AutoSizeType;\n readonly editing?: boolean;\n readonly enterIcon?: ReactNode;\n readonly icon?: ReactNode;\n readonly maxLength?: number;\n readonly onCancel?: () => void;\n readonly onChange?: (value: string) => void;\n readonly onEnd?: () => void;\n readonly onStart?: () => void;\n readonly tabIndex?: number;\n readonly text?: string;\n readonly tooltip?: boolean | ReactNode;\n readonly triggerType?: readonly (\"icon\" | \"text\")[];\n}\n\nexport type TypographyEllipsisTooltip = ReactNode | Omit<TooltipProps, \"children\">;\n\nexport interface TypographyEllipsisConfig {\n readonly defaultExpanded?: boolean;\n readonly expandable?: boolean | \"collapsible\";\n readonly expanded?: boolean;\n readonly onEllipsis?: (ellipsis: boolean) => void;\n readonly onExpand?: (\n event: MouseEvent<HTMLElement>,\n info: { readonly expanded: boolean },\n ) => void;\n readonly rows?: number;\n readonly suffix?: string;\n readonly symbol?: ReactNode | ((expanded: boolean) => ReactNode);\n readonly tooltip?: TypographyEllipsisTooltip;\n}\n\ninterface TypographyBehaviorProps {\n readonly actions?: TypographyActionsConfig;\n readonly code?: boolean;\n readonly copyable?: boolean | TypographyCopyConfig;\n readonly delete?: boolean;\n readonly disabled?: boolean;\n readonly editable?: boolean | TypographyEditableConfig;\n readonly ellipsis?: boolean | TypographyEllipsisConfig;\n readonly italic?: boolean;\n readonly keyboard?: boolean;\n readonly mark?: boolean;\n readonly rootClassName?: string;\n readonly strong?: boolean;\n readonly type?: TypographyType | \"button\";\n readonly underline?: boolean;\n}\n\nexport interface BaseTypographyProps\n extends Omit<HTMLAttributes<HTMLElement>, \"type\">,\n TypographyBehaviorProps {\n readonly children?: ReactNode;\n}\n\nexport interface TitleProps extends Omit<BaseTypographyProps, \"strong\"> {\n readonly as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"p\";\n readonly level?: 1 | 2 | 3 | 4 | 5;\n readonly variant?: TitleVariant;\n}\n\nexport interface TextProps extends BaseTypographyProps {\n readonly as?: \"p\" | \"span\" | \"div\" | \"button\";\n readonly variant?: TextVariant;\n}\n\nexport interface ParagraphProps extends BaseTypographyProps {\n readonly as?: \"p\" | \"div\";\n}\n\nexport type LinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"type\"> &\n TypographyBehaviorProps;\n\nexport interface TypographyProps extends HTMLAttributes<HTMLElement> {\n readonly component?: keyof HTMLElementTagNameMap;\n readonly rootClassName?: string;\n}\n\nconst titleClass: Record<TitleVariant, string> = {\n page: \"text-[32px] font-bold leading-[38px] tracking-normal text-white\",\n section: \"text-sm font-semibold text-[#f2f4f6]\",\n card: \"text-[13px] font-semibold text-[#f2f4f6]\",\n};\n\nconst titleLevelClass: Record<NonNullable<TitleProps[\"level\"]>, string> = {\n 1: \"text-[32px] font-semibold leading-[1.25] text-[var(--hj-color-web-foreground)]\",\n 2: \"text-2xl font-semibold leading-[1.3] text-[var(--hj-color-web-foreground)]\",\n 3: \"text-xl font-semibold leading-[1.35] text-[var(--hj-color-web-foreground)]\",\n 4: \"text-base font-semibold leading-[1.4] text-[var(--hj-color-web-foreground)]\",\n 5: \"text-sm font-semibold leading-[1.45] text-[var(--hj-color-web-foreground)]\",\n};\n\nconst textClass: Record<TextVariant, string> = {\n body: \"text-sm text-[#a5adb8]\",\n muted: \"text-xs text-[#8b94a0]\",\n action: \"text-xs font-normal leading-none text-[#8b94a0] hover:text-[#d6a84a]\",\n};\n\nconst typeClass: Record<TypographyType, string> = {\n secondary: \"text-[var(--hj-color-web-muted)]\",\n success: \"text-[var(--hj-color-success)]\",\n warning: \"text-[var(--hj-color-warning)]\",\n danger: \"text-[var(--hj-color-danger)]\",\n};\n\nconst EMPTY_COPY_CONFIG: TypographyCopyConfig = {};\nconst EMPTY_EDIT_CONFIG: TypographyEditableConfig = {};\nconst EMPTY_ELLIPSIS_CONFIG: TypographyEllipsisConfig = {};\nconst ELLIPSIS_TEXT = \"...\";\n\nfunction decorateContent(props: TypographyBehaviorProps, content: ReactNode) {\n let result = content;\n if (props.mark) result = <mark>{result}</mark>;\n if (props.code) result = <code>{result}</code>;\n if (props.keyboard) result = <kbd>{result}</kbd>;\n if (props.underline) result = <u>{result}</u>;\n if (props.delete) result = <del>{result}</del>;\n if (props.strong) result = <strong>{result}</strong>;\n if (props.italic) result = <i>{result}</i>;\n return result;\n}\n\nfunction getNodeText(node: ReactNode): string {\n if (typeof node === \"string\" || typeof node === \"number\" || typeof node === \"bigint\") {\n return String(node);\n }\n if (Array.isArray(node)) return node.map(getNodeText).join(\"\");\n if (isValidElement<{ readonly children?: ReactNode }>(node)) {\n return getNodeText(node.props.children);\n }\n return \"\";\n}\n\nfunction legacyCopy(text: string, format: \"text/html\" | \"text/plain\") {\n const holder = document.createElement(\"textarea\");\n holder.value = text;\n holder.setAttribute(\"readonly\", \"\");\n holder.style.position = \"fixed\";\n holder.style.insetInlineStart = \"-9999px\";\n holder.style.opacity = \"0\";\n\n const handleCopy = (event: ClipboardEvent) => {\n event.clipboardData?.setData(format, text);\n event.preventDefault();\n };\n\n document.addEventListener(\"copy\", handleCopy);\n document.body.appendChild(holder);\n holder.select();\n let copied = false;\n try {\n if (typeof document.execCommand !== \"function\") throw new Error(\"Clipboard is unavailable\");\n copied = document.execCommand(\"copy\");\n } finally {\n holder.remove();\n document.removeEventListener(\"copy\", handleCopy);\n }\n\n if (!copied) throw new Error(\"Unable to copy text to the clipboard\");\n}\n\nasync function copyText(text: string, format: \"text/html\" | \"text/plain\" = \"text/plain\") {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n try {\n if (\n format === \"text/html\" &&\n typeof ClipboardItem !== \"undefined\" &&\n typeof navigator.clipboard.write === \"function\"\n ) {\n const item = new ClipboardItem({\n [format]: new Blob([text], { type: format }),\n });\n await navigator.clipboard.write([item]);\n return;\n }\n if (typeof navigator.clipboard.writeText === \"function\") {\n await navigator.clipboard.writeText(text);\n return;\n }\n } catch {\n // The legacy path still works in browsers that reject the async clipboard permission.\n }\n }\n\n if (typeof document === \"undefined\") throw new Error(\"Clipboard is unavailable\");\n legacyCopy(text, format);\n}\n\nfunction toConfigList(value: ReactNode | readonly ReactNode[] | undefined): readonly ReactNode[] {\n if (value === false) return [false, false];\n return Array.isArray(value) ? value : [value];\n}\n\nfunction getConfigNode(value: ReactNode, fallback: ReactNode, alwaysRender = false) {\n if (value === true || value === undefined) return fallback;\n return value || (alwaysRender ? fallback : value);\n}\n\ninterface EditableTypographyProps {\n readonly ariaLabel?: string;\n readonly className?: string;\n readonly component: keyof HTMLElementTagNameMap;\n readonly config: TypographyEditableConfig;\n readonly disabled?: boolean;\n readonly style?: CSSProperties;\n readonly value: string;\n readonly onCancel: () => void;\n readonly onSave: (value: string) => void;\n}\n\nfunction EditableTypography({\n ariaLabel,\n className,\n component,\n config,\n disabled,\n onCancel,\n onSave,\n style,\n value,\n}: EditableTypographyProps) {\n const inputRef = useRef<TextAreaRef>(null);\n const composingRef = useRef(false);\n const lastKeyCodeRef = useRef<number | null>(null);\n const [current, setCurrent] = useState(value);\n\n useEffect(() => setCurrent(value), [value]);\n\n useLayoutEffect(() => {\n const textArea = inputRef.current?.resizableTextArea.textArea;\n if (!textArea) return;\n textArea.focus();\n textArea.setSelectionRange(textArea.value.length, textArea.value.length);\n }, []);\n\n const confirmChange = useEvent(() => onSave(current.trim()));\n\n const handleChange: ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n setCurrent(event.target.value.replace(/[\\n\\r]/g, \"\"));\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (event) => {\n if (!composingRef.current) lastKeyCodeRef.current = event.keyCode;\n };\n\n const handleKeyUp: KeyboardEventHandler<HTMLTextAreaElement> = (event) => {\n if (\n composingRef.current ||\n lastKeyCodeRef.current !== event.keyCode ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n ) {\n return;\n }\n\n if (event.key === \"Enter\" || event.keyCode === 13) {\n confirmChange();\n config.onEnd?.();\n } else if (event.key === \"Escape\" || event.keyCode === 27) {\n onCancel();\n }\n };\n\n const handleBlur: FocusEventHandler<HTMLTextAreaElement> = () => confirmChange();\n const enterIcon =\n config.enterIcon === undefined ? (\n <Icon aria-hidden=\"true\" name=\"check\" size={14} />\n ) : (\n config.enterIcon\n );\n\n return (\n <div\n className={cn(\n \"hj-typography hj-typography-edit-content relative inline-flex w-full min-w-0 items-start\",\n `hj-typography-${component}`,\n className,\n )}\n style={style}\n >\n <RcTextArea\n aria-label={ariaLabel}\n autoSize={config.autoSize ?? true}\n className=\"hj-typography-edit-input min-w-0 flex-1 rounded-[var(--hj-input-radius)] border border-[var(--hj-input-border-active)] bg-[var(--hj-input-bg)] text-[var(--hj-input-fg)]\"\n classNames={{\n affixWrapper:\n \"hj-typography-edit-input min-w-0 flex-1 rounded-[var(--hj-input-radius)] border border-[var(--hj-input-border-active)] bg-[var(--hj-input-bg)]\",\n textarea: cn(\n \"hj-typography-edit-textarea block min-h-8 w-full resize-none bg-transparent px-3 py-2 font-[inherit] leading-[inherit] text-[var(--hj-input-fg)] outline-none\",\n enterIcon !== null && \"pr-8\",\n ),\n }}\n disabled={disabled}\n maxLength={config.maxLength}\n prefixCls=\"hj-typography-edit\"\n ref={inputRef}\n rows={1}\n value={current}\n onBlur={handleBlur}\n onChange={handleChange}\n onCompositionEnd={() => {\n composingRef.current = false;\n }}\n onCompositionStart={() => {\n composingRef.current = true;\n }}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n />\n {enterIcon !== null ? (\n <span\n aria-hidden=\"true\"\n className=\"hj-typography-edit-content-confirm pointer-events-none absolute right-2 top-2 inline-flex text-[var(--hj-color-brand)]\"\n >\n {enterIcon}\n </span>\n ) : null}\n </div>\n );\n}\n\ninterface MeasureTextRef {\n readonly getHeight: () => number;\n readonly isExceed: () => boolean;\n}\n\ninterface MeasureTextProps {\n readonly children: ReactNode;\n readonly style?: CSSProperties;\n}\n\nconst MeasureText = forwardRef<MeasureTextRef, MeasureTextProps>(function MeasureText(\n { children, style },\n ref,\n) {\n const elementRef = useRef<HTMLSpanElement>(null);\n\n useImperativeHandle(ref, () => ({\n getHeight: () => {\n const element = elementRef.current;\n return element ? element.getBoundingClientRect().height || element.clientHeight : 0;\n },\n isExceed: () => {\n const element = elementRef.current;\n return element ? element.scrollHeight > element.clientHeight : false;\n },\n }));\n\n return (\n <span\n aria-hidden=\"true\"\n ref={elementRef}\n style={{\n background: \"transparent\",\n insetInlineStart: 0,\n pointerEvents: \"none\",\n position: \"fixed\",\n top: 0,\n visibility: \"hidden\",\n zIndex: -1,\n ...style,\n }}\n >\n {children}\n </span>\n );\n});\n\nfunction getNodesLength(nodes: readonly ReactNode[]) {\n return nodes.reduce<number>(\n (length, node) =>\n length + (typeof node === \"string\" || typeof node === \"number\" ? String(node).length : 1),\n 0,\n );\n}\n\nfunction sliceNodes(nodes: readonly ReactNode[], length: number) {\n let currentLength = 0;\n const result: ReactNode[] = [];\n\n for (const node of nodes) {\n if (currentLength === length) break;\n const canSlice = typeof node === \"string\" || typeof node === \"number\";\n const nodeLength = canSlice ? String(node).length : 1;\n const nextLength = currentLength + nodeLength;\n\n if (nextLength > length) {\n result.push(String(node).slice(0, length - currentLength));\n break;\n }\n\n result.push(node);\n currentLength = nextLength;\n }\n\n return result;\n}\n\ntype EllipsisMeasureStatus = \"none\" | \"prepare\" | \"start\" | \"need\" | \"not-needed\";\n\nconst lineClampStyle: CSSProperties = {\n WebkitBoxOrient: \"vertical\",\n display: \"-webkit-box\",\n overflow: \"hidden\",\n};\n\ninterface EllipsisMeasureProps {\n readonly enable: boolean;\n readonly expanded: boolean;\n readonly measureKey: object;\n readonly rows: number;\n readonly text: ReactNode;\n readonly width: number;\n readonly onEllipsis: (ellipsis: boolean) => void;\n readonly renderContent: (nodes: readonly ReactNode[], canEllipsis: boolean) => ReactNode;\n}\n\nfunction EllipsisMeasure({\n enable,\n expanded,\n measureKey,\n onEllipsis,\n renderContent,\n rows,\n text,\n width,\n}: EllipsisMeasureProps) {\n const render = useEvent(renderContent);\n const triggerEllipsis = useEvent(onEllipsis);\n const nodes = useMemo(() => toArray(text) as ReactNode[], [text]);\n const nodeLength = useMemo(() => getNodesLength(nodes), [nodes]);\n const cutMeasureRef = useRef<MeasureTextRef>(null);\n const overflowMeasureRef = useRef<MeasureTextRef>(null);\n const previousRowsMeasureRef = useRef<MeasureTextRef>(null);\n const operationMeasureRef = useRef<MeasureTextRef>(null);\n const whiteSpaceMeasureRef = useRef<HTMLSpanElement>(null);\n const [status, setStatus] = useState<EllipsisMeasureStatus>(\"none\");\n const [cutRange, setCutRange] = useState<readonly [number, number] | null>(null);\n const [canEllipsis, setCanEllipsis] = useState(false);\n const [ellipsisHeight, setEllipsisHeight] = useState(0);\n const [parentWhiteSpace, setParentWhiteSpace] = useState<CSSProperties[\"whiteSpace\"] | null>(\n null,\n );\n\n useLayoutEffect(() => {\n if (enable && width > 0 && nodeLength > 0) {\n setStatus(\"prepare\");\n } else {\n setStatus(\"none\");\n setCutRange(null);\n setCanEllipsis(false);\n }\n }, [enable, measureKey, nodeLength, rows, text, width]);\n\n useLayoutEffect(() => {\n if (status === \"prepare\") {\n setParentWhiteSpace(\n whiteSpaceMeasureRef.current\n ? getComputedStyle(whiteSpaceMeasureRef.current).whiteSpace\n : null,\n );\n setStatus(\"start\");\n return;\n }\n\n if (status !== \"start\") return;\n const overflowing = overflowMeasureRef.current?.isExceed() ?? false;\n const baseHeight = overflowMeasureRef.current?.getHeight() ?? 0;\n const previousRowsHeight = rows === 1 ? 0 : (previousRowsMeasureRef.current?.getHeight() ?? 0);\n const operationHeight = operationMeasureRef.current?.getHeight() ?? 0;\n\n setCanEllipsis(overflowing);\n setCutRange(overflowing ? [0, nodeLength] : null);\n setEllipsisHeight(Math.max(baseHeight, previousRowsHeight + operationHeight) + 1);\n setStatus(overflowing ? \"need\" : \"not-needed\");\n triggerEllipsis(overflowing);\n }, [nodeLength, rows, status, triggerEllipsis]);\n\n const cutMiddle = cutRange ? Math.ceil((cutRange[0] + cutRange[1]) / 2) : 0;\n\n useLayoutEffect(() => {\n if (!cutRange || cutRange[0] === cutRange[1]) return;\n const [minimum, maximum] = cutRange;\n const overflowing = (cutMeasureRef.current?.getHeight() ?? 0) > ellipsisHeight;\n let target = cutMiddle;\n if (maximum - minimum === 1) target = overflowing ? minimum : maximum;\n setCutRange(overflowing ? [minimum, target] : [target, maximum]);\n }, [cutMiddle, cutRange, ellipsisHeight]);\n\n const fullContent = render(nodes, false);\n let visibleContent: ReactNode;\n\n if (!enable || status === \"none\" || status === \"not-needed\") {\n visibleContent = fullContent;\n } else if (status !== \"need\" || !cutRange || cutRange[0] !== cutRange[1]) {\n visibleContent = (\n <span style={{ ...lineClampStyle, WebkitLineClamp: rows }}>{fullContent}</span>\n );\n } else {\n visibleContent = render(expanded ? nodes : sliceNodes(nodes, cutRange[0]), canEllipsis);\n }\n\n const measureStyle: CSSProperties = {\n margin: 0,\n padding: 0,\n whiteSpace: parentWhiteSpace === \"nowrap\" ? \"normal\" : \"inherit\",\n width,\n };\n\n return (\n <>\n {visibleContent}\n {status === \"start\" ? (\n <>\n <MeasureText\n ref={overflowMeasureRef}\n style={{ ...measureStyle, ...lineClampStyle, WebkitLineClamp: rows }}\n >\n {fullContent}\n </MeasureText>\n <MeasureText\n ref={previousRowsMeasureRef}\n style={{ ...measureStyle, ...lineClampStyle, WebkitLineClamp: rows - 1 }}\n >\n {fullContent}\n </MeasureText>\n <MeasureText\n ref={operationMeasureRef}\n style={{ ...measureStyle, ...lineClampStyle, WebkitLineClamp: 1 }}\n >\n {render([], true)}\n </MeasureText>\n </>\n ) : null}\n {status === \"need\" && cutRange && cutRange[0] !== cutRange[1] ? (\n <MeasureText ref={cutMeasureRef} style={{ ...measureStyle, top: 400 }}>\n {render(sliceNodes(nodes, cutMiddle), true)}\n </MeasureText>\n ) : null}\n {status === \"prepare\" ? (\n <span ref={whiteSpaceMeasureRef} style={{ whiteSpace: \"inherit\" }} />\n ) : null}\n </>\n );\n}\n\nfunction isPlainObject(value: unknown): value is Record<PropertyKey, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value) || isValidElement(value)) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction getEllipsisTooltipProps(\n tooltip: TypographyEllipsisTooltip | undefined,\n editText: string | undefined,\n children: ReactNode,\n): Omit<TooltipProps, \"children\"> {\n if (tooltip === true) return { title: editText ?? children };\n if (isValidElement(tooltip)) return { title: tooltip };\n if (isPlainObject(tooltip)) {\n return {\n title: editText ?? children,\n ...(tooltip as Omit<TooltipProps, \"children\">),\n };\n }\n return { title: tooltip };\n}\n\nfunction isElementEllipsized(element: HTMLElement, rows: number) {\n return rows === 1\n ? element.scrollWidth > element.clientWidth\n : element.scrollHeight > element.clientHeight;\n}\n\nfunction TypographyBase({\n actions,\n children,\n className,\n code,\n copyable = false,\n delete: deleted,\n disabled = false,\n editable = false,\n ellipsis,\n italic,\n keyboard,\n mark,\n rootClassName,\n strong,\n style,\n type,\n underline,\n component,\n onClick,\n \"aria-label\": ariaLabel,\n ...props\n}: BaseTypographyProps & { readonly component: keyof HTMLElementTagNameMap }) {\n const typographyRef = useRef<HTMLElement>(null);\n const editButtonRef = useRef<HTMLButtonElement>(null);\n const copyTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const enableCopy = Boolean(copyable);\n const enableEdit = Boolean(editable);\n const enableEllipsis = Boolean(ellipsis);\n const copyConfig = typeof copyable === \"object\" ? copyable : EMPTY_COPY_CONFIG;\n const editConfig = typeof editable === \"object\" ? editable : EMPTY_EDIT_CONFIG;\n const ellipsisConfig = typeof ellipsis === \"object\" ? ellipsis : EMPTY_ELLIPSIS_CONFIG;\n const triggerType = editConfig.triggerType ?? [\"icon\"];\n const placement = actions?.placement ?? \"end\";\n const [editing, setEditing] = useControlledState(false, editConfig.editing);\n const [expanded, setExpanded] = useControlledState(\n ellipsisConfig.defaultExpanded ?? false,\n ellipsisConfig.expanded,\n );\n const [copied, setCopied] = useState(false);\n const [copyLoading, setCopyLoading] = useState(false);\n const [ellipsisWidth, setEllipsisWidth] = useState(0);\n const [isJsEllipsis, setIsJsEllipsis] = useState(false);\n const [isNativeEllipsis, setIsNativeEllipsis] = useState(false);\n const previousEditingRef = useRef(editing);\n const rows = Math.max(1, Math.floor(ellipsisConfig.rows ?? 1));\n const mergedEnableEllipsis =\n enableEllipsis && (!expanded || ellipsisConfig.expandable === \"collapsible\");\n const needMeasureEllipsis =\n mergedEnableEllipsis &&\n (ellipsisConfig.suffix !== undefined ||\n Boolean(ellipsisConfig.onEllipsis) ||\n Boolean(ellipsisConfig.expandable) ||\n enableEdit ||\n enableCopy);\n const cssEllipsis = mergedEnableEllipsis && !needMeasureEllipsis;\n const tooltipProps = getEllipsisTooltipProps(ellipsisConfig.tooltip, editConfig.text, children);\n const { title: ellipsisTooltipTitle, ...ellipsisTooltipRest } = tooltipProps;\n const hasEllipsisTooltip = ellipsisTooltipTitle !== undefined && ellipsisTooltipTitle !== false;\n const isMergedEllipsis = mergedEnableEllipsis\n ? cssEllipsis\n ? hasEllipsisTooltip && isNativeEllipsis\n : isJsEllipsis\n : false;\n const measureKey = useMemo(\n () => ({\n code,\n copied,\n copyIcon: copyConfig.icon,\n copyLoading,\n deleted,\n editIcon: editConfig.icon,\n enableCopy,\n enableEdit,\n expanded,\n italic,\n keyboard,\n mark,\n placement,\n strong,\n style,\n suffix: ellipsisConfig.suffix,\n symbol: ellipsisConfig.symbol,\n underline,\n }),\n [\n code,\n copied,\n copyConfig.icon,\n copyLoading,\n deleted,\n editConfig.icon,\n ellipsisConfig.suffix,\n ellipsisConfig.symbol,\n enableCopy,\n enableEdit,\n expanded,\n italic,\n keyboard,\n mark,\n placement,\n strong,\n style,\n underline,\n ],\n );\n\n useEffect(\n () => () => {\n if (copyTimerRef.current) clearTimeout(copyTimerRef.current);\n },\n [],\n );\n\n useLayoutEffect(() => {\n if (!editing && previousEditingRef.current) editButtonRef.current?.focus();\n previousEditingRef.current = editing;\n }, [editing]);\n\n useLayoutEffect(() => {\n const element = typographyRef.current;\n if (!cssEllipsis || !hasEllipsisTooltip || !element) {\n setIsNativeEllipsis(false);\n return;\n }\n setIsNativeEllipsis(isElementEllipsized(element, rows));\n }, [children, cssEllipsis, ellipsisWidth, hasEllipsisTooltip, rows, style]);\n\n const triggerEditing = useEvent((nextEditing: boolean) => {\n if (nextEditing) editConfig.onStart?.();\n setEditing(nextEditing);\n });\n\n const handleEditSave = useEvent((value: string) => {\n editConfig.onChange?.(value);\n setEditing(false);\n });\n\n const handleEditCancel = useEvent(() => {\n editConfig.onCancel?.();\n setEditing(false);\n });\n\n const handleCopy = useEvent(async (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (disabled || copyLoading) return;\n\n setCopyLoading(true);\n try {\n const configuredText =\n typeof copyConfig.text === \"function\" ? await copyConfig.text() : copyConfig.text;\n await copyText(configuredText ?? getNodeText(children), copyConfig.format);\n setCopied(true);\n if (copyTimerRef.current) clearTimeout(copyTimerRef.current);\n copyTimerRef.current = setTimeout(() => setCopied(false), 3000);\n copyConfig.onCopy?.(event);\n } finally {\n setCopyLoading(false);\n }\n });\n\n const handleJsEllipsis = useEvent((nextEllipsis: boolean) => {\n setIsJsEllipsis((previous) => {\n if (previous !== nextEllipsis) ellipsisConfig.onEllipsis?.(nextEllipsis);\n return nextEllipsis;\n });\n });\n\n if (enableEdit && editing) {\n const editableValue =\n editConfig.text ??\n (typeof children === \"string\" || typeof children === \"number\" ? String(children) : \"\");\n return (\n <EditableTypography\n ariaLabel={ariaLabel}\n className={cn(\n type && type !== \"button\" ? `hj-typography-${type}` : undefined,\n type && type !== \"button\" ? typeClass[type] : undefined,\n disabled && \"hj-typography-disabled cursor-not-allowed opacity-45\",\n rootClassName,\n className,\n )}\n component={component}\n config={editConfig}\n disabled={disabled}\n style={style}\n value={editableValue}\n onCancel={handleEditCancel}\n onSave={handleEditSave}\n />\n );\n }\n\n const renderExpand = (canEllipsis: boolean) => {\n if (!canEllipsis || !ellipsisConfig.expandable) return null;\n const nextExpanded = !expanded;\n const defaultSymbol = expanded ? \"Collapse\" : \"Expand\";\n const symbol =\n typeof ellipsisConfig.symbol === \"function\"\n ? ellipsisConfig.symbol(expanded)\n : (ellipsisConfig.symbol ?? defaultSymbol);\n\n return (\n <button\n aria-expanded={expanded}\n aria-label={defaultSymbol}\n className={cn(\n \"hj-typography-action border-0 bg-transparent p-0 text-[var(--hj-color-brand)] hover:text-[var(--hj-color-brand-hover)]\",\n expanded ? \"hj-typography-collapse\" : \"hj-typography-expand\",\n )}\n disabled={disabled}\n key=\"expand\"\n type=\"button\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n setExpanded(nextExpanded);\n ellipsisConfig.onExpand?.(event, { expanded: nextExpanded });\n }}\n >\n {symbol}\n </button>\n );\n };\n\n const renderEdit = () => {\n if (!enableEdit || !triggerType.includes(\"icon\")) return null;\n const editTitle =\n editConfig.tooltip === false\n ? undefined\n : editConfig.tooltip === true || editConfig.tooltip === undefined\n ? \"Edit\"\n : editConfig.tooltip;\n\n return (\n <Tooltip key=\"edit\" title={editTitle}>\n <button\n aria-label={typeof editTitle === \"string\" ? editTitle : \"Edit\"}\n className=\"hj-typography-action hj-typography-edit inline-flex border-0 bg-transparent p-0 text-current opacity-70 hover:text-[var(--hj-color-brand)] hover:opacity-100\"\n disabled={disabled}\n ref={editButtonRef}\n tabIndex={editConfig.tabIndex}\n type=\"button\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n triggerEditing(true);\n }}\n >\n {editConfig.icon ?? (\n <span aria-hidden=\"true\" className=\"text-[15px] leading-none\">\n {\"\\u270e\"}\n </span>\n )}\n </button>\n </Tooltip>\n );\n };\n\n const renderCopy = () => {\n if (!enableCopy) return null;\n const icons = toConfigList(copyConfig.icon);\n const tooltips = toConfigList(copyConfig.tooltips);\n const defaultTitle = copied ? \"Copied\" : \"Copy\";\n const copyTitle = getConfigNode(tooltips[copied ? 1 : 0], defaultTitle);\n const defaultIcon = copied ? (\n <Icon aria-hidden=\"true\" name=\"check\" size={14} />\n ) : copyLoading ? (\n <Icon aria-hidden=\"true\" className=\"animate-spin\" name=\"refresh\" size={14} />\n ) : (\n <Icon aria-hidden=\"true\" name=\"copy\" size={14} />\n );\n\n return (\n <Tooltip key=\"copy\" title={copyTitle}>\n <button\n aria-label={typeof copyTitle === \"string\" ? copyTitle : defaultTitle}\n className={cn(\n \"hj-typography-action hj-typography-copy inline-flex border-0 bg-transparent p-0 text-current opacity-70 hover:text-[var(--hj-color-brand)] hover:opacity-100\",\n copied && \"hj-typography-copy-success text-[var(--hj-color-success)] opacity-100\",\n copyLoading && \"hj-typography-copy-loading\",\n )}\n disabled={disabled || copyLoading}\n tabIndex={copyConfig.tabIndex}\n type=\"button\"\n onClick={handleCopy}\n >\n {getConfigNode(icons[copied ? 1 : 0], defaultIcon, true)}\n </button>\n </Tooltip>\n );\n };\n\n const renderOperations = (canEllipsis: boolean) => {\n const operations = [renderExpand(canEllipsis), renderEdit(), renderCopy()];\n if (operations.every((operation) => operation == null)) return null;\n\n return (\n <span\n className={cn(\n \"hj-typography-actions inline-flex items-center gap-1 align-baseline\",\n placement === \"start\" ? \"hj-typography-actions-start mr-1\" : \"ml-1\",\n )}\n >\n {operations}\n </span>\n );\n };\n\n const renderContent = (nodes: readonly ReactNode[], canEllipsis: boolean) => {\n const textContent = decorateContent(\n { code, delete: deleted, italic, keyboard, mark, strong, underline },\n <>\n {nodes}\n {canEllipsis && !expanded ? <span aria-hidden=\"true\">{ELLIPSIS_TEXT}</span> : null}\n {ellipsisConfig.suffix}\n </>,\n );\n const operations = renderOperations(canEllipsis);\n\n return (\n <>\n {placement === \"start\" ? operations : null}\n {textContent}\n {placement === \"end\" ? operations : null}\n </>\n );\n };\n\n const cssEllipsisStyle: CSSProperties | undefined = cssEllipsis\n ? rows > 1\n ? { ...lineClampStyle, WebkitLineClamp: rows }\n : {\n display: component === \"span\" || component === \"a\" ? \"inline-block\" : undefined,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined;\n const fullText = editConfig.text ?? getNodeText(children);\n const rootProps = {\n ...props,\n \"aria-disabled\": disabled || undefined,\n \"aria-label\": ariaLabel ?? (needMeasureEllipsis && isMergedEllipsis ? fullText : undefined),\n className: cn(\n \"hj-typography\",\n type && type !== \"button\" ? `hj-typography-${type}` : undefined,\n type && type !== \"button\" ? typeClass[type] : undefined,\n disabled && \"hj-typography-disabled cursor-not-allowed opacity-45\",\n enableEllipsis && \"hj-typography-ellipsis\",\n cssEllipsis && rows === 1 && \"hj-typography-ellipsis-single-line\",\n cssEllipsis && rows > 1 && \"hj-typography-ellipsis-multiple-line\",\n expanded && \"hj-typography-ellipsis-expanded\",\n triggerType.includes(\"text\") && enableEdit && !disabled && \"cursor-pointer\",\n rootClassName,\n className,\n ),\n onClick: (event: MouseEvent<HTMLElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && enableEdit && !disabled && triggerType.includes(\"text\")) {\n event.preventDefault();\n triggerEditing(true);\n }\n },\n style: { ...cssEllipsisStyle, ...style },\n ...(component === \"button\" ? { disabled, type: type === \"button\" ? \"button\" : undefined } : {}),\n };\n\n return (\n <ResizeObserver\n disabled={!mergedEnableEllipsis}\n onResize={({ offsetWidth }) => setEllipsisWidth(offsetWidth)}\n >\n {(resizeRef) => {\n const typographyNode = createElement(\n component,\n { ...rootProps, ref: composeRef(resizeRef, typographyRef) },\n <EllipsisMeasure\n enable={needMeasureEllipsis}\n expanded={expanded}\n measureKey={measureKey}\n rows={rows}\n text={children}\n width={ellipsisWidth}\n onEllipsis={handleJsEllipsis}\n renderContent={renderContent}\n />,\n );\n\n return hasEllipsisTooltip ? (\n <Tooltip\n {...ellipsisTooltipRest}\n title={isMergedEllipsis ? ellipsisTooltipTitle : undefined}\n >\n {typographyNode}\n </Tooltip>\n ) : (\n typographyNode\n );\n }}\n </ResizeObserver>\n );\n}\n\nexport function Title({ as, className, level = 1, variant, ...props }: TitleProps) {\n const component = as ?? (variant ? \"h2\" : (`h${level}` as const));\n return (\n <TypographyBase\n {...props}\n className={cn(\n \"hj-typography-title\",\n variant ? titleClass[variant] : titleLevelClass[level],\n className,\n )}\n component={component}\n />\n );\n}\n\nexport function Text({ as, className, variant, ...props }: TextProps) {\n const component = as ?? (variant ? \"p\" : \"span\");\n return (\n <TypographyBase\n {...props}\n className={cn(\"hj-typography-text\", textClass[variant ?? \"body\"], className)}\n component={component}\n />\n );\n}\n\nexport function Paragraph({ as = \"p\", className, ...props }: ParagraphProps) {\n return (\n <TypographyBase\n {...props}\n className={cn(\"hj-typography-paragraph\", className)}\n component={as}\n />\n );\n}\n\nexport function Link({ className, ...props }: LinkProps) {\n return (\n <TypographyBase\n {...(props as BaseTypographyProps)}\n className={cn(\n \"hj-typography-link text-[var(--hj-color-brand)] transition hover:underline\",\n className,\n )}\n component=\"a\"\n />\n );\n}\n\nfunction TypographyRoot({\n children,\n className,\n component = \"article\",\n rootClassName,\n ...props\n}: TypographyProps) {\n return createElement(\n component,\n { ...props, className: cn(\"hj-typography\", rootClassName, className) },\n children,\n );\n}\n\nexport const Typography = Object.assign(TypographyRoot, {\n Link,\n Paragraph,\n Text,\n Title,\n});\n",
|
|
24
|
+
"import RcTooltip from \"@rc-component/tooltip\";\nimport type { TooltipRef as RcTooltipRef } from \"@rc-component/tooltip\";\nimport type { TooltipProps as RcTooltipProps } from \"@rc-component/tooltip/es/Tooltip\";\nimport { useControlledState } from \"@rc-component/util\";\nimport type { CSSProperties, ReactElement, ReactNode } from \"react\";\nimport { Fragment, cloneElement, forwardRef, isValidElement, useMemo } from \"react\";\nimport { isMotionDisabled, useConfig } from \"../ConfigProvider\";\nimport { cn } from \"../utils/cn\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\n\nexport type TooltipPlacement =\n | \"topLeft\"\n | \"top\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottom\"\n | \"bottomRight\"\n | \"leftTop\"\n | \"left\"\n | \"leftBottom\"\n | \"rightTop\"\n | \"right\"\n | \"rightBottom\";\nexport type TooltipTrigger = \"hover\" | \"focus\" | \"click\" | \"contextMenu\";\n\nexport interface TooltipArrowOptions {\n readonly pointAtCenter?: boolean;\n}\n\nexport interface TooltipAdjustOverflow {\n readonly adjustX?: 0 | 1;\n readonly adjustY?: 0 | 1;\n}\n\nexport type TooltipRef = RcTooltipRef;\n\ntype TooltipSlot = \"root\" | \"trigger\" | \"popup\" | \"arrow\" | \"content\";\n\nexport interface TooltipProps {\n readonly afterOpenChange?: (open: boolean) => void;\n readonly afterVisibleChange?: (open: boolean) => void;\n readonly align?: RcTooltipProps[\"align\"];\n readonly arrow?: boolean | TooltipArrowOptions;\n readonly autoAdjustOverflow?: boolean | TooltipAdjustOverflow;\n readonly builtinPlacements?: RcTooltipProps[\"builtinPlacements\"];\n readonly children: ReactNode;\n readonly className?: string;\n readonly classNames?: SlotClassNames<TooltipSlot>;\n readonly color?: string;\n readonly defaultOpen?: boolean;\n readonly defaultVisible?: boolean;\n readonly disabled?: boolean;\n readonly destroyOnHidden?: boolean;\n readonly destroyTooltipOnHide?: boolean | { readonly keepParent?: boolean };\n readonly forceRender?: boolean;\n readonly fresh?: boolean;\n readonly getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n readonly getTooltipContainer?: (triggerNode: HTMLElement) => HTMLElement;\n readonly id?: string;\n readonly maxWidth?: number | string;\n readonly motion?: RcTooltipProps[\"motion\"];\n readonly mouseEnterDelay?: number;\n readonly mouseLeaveDelay?: number;\n readonly open?: boolean;\n readonly openClassName?: string;\n readonly overlay?: ReactNode | (() => ReactNode);\n readonly overlayClassName?: string;\n readonly overlayInnerStyle?: CSSProperties;\n readonly overlayStyle?: CSSProperties;\n readonly placement?: TooltipPlacement;\n readonly rootClassName?: string;\n readonly style?: CSSProperties;\n readonly styles?: SlotStyles<TooltipSlot>;\n readonly title?: ReactNode | (() => ReactNode);\n readonly trigger?: TooltipTrigger | readonly TooltipTrigger[];\n readonly unique?: RcTooltipProps[\"unique\"];\n readonly variant?: \"dark\" | \"light\";\n readonly visible?: boolean;\n readonly zIndex?: number;\n readonly onOpenChange?: (open: boolean) => void;\n readonly onPopupAlign?: RcTooltipProps[\"onPopupAlign\"];\n readonly onVisibleChange?: (open: boolean) => void;\n}\n\nfunction getTooltipChild(children: ReactNode, className?: string): ReactElement {\n if (isValidElement<{ className?: string }>(children) && children.type !== Fragment) {\n if (!className) return children;\n return cloneElement(children, { className: cn(children.props.className, className) });\n }\n return <span className={className}>{children}</span>;\n}\n\nfunction getTooltipPlacements(\n pointAtCenter: boolean,\n autoAdjustOverflow: TooltipProps[\"autoAdjustOverflow\"],\n): NonNullable<RcTooltipProps[\"builtinPlacements\"]> {\n const overflow =\n autoAdjustOverflow === false\n ? { adjustX: 0 as const, adjustY: 0 as const }\n : {\n adjustX:\n typeof autoAdjustOverflow === \"object\"\n ? (autoAdjustOverflow.adjustX ?? 1)\n : (1 as const),\n adjustY:\n typeof autoAdjustOverflow === \"object\"\n ? (autoAdjustOverflow.adjustY ?? 1)\n : (1 as const),\n };\n const cornerOffset = 12;\n\n return {\n top: { points: [\"bc\", \"tc\"], offset: [0, -8], overflow },\n bottom: { points: [\"tc\", \"bc\"], offset: [0, 8], overflow },\n left: { points: [\"cr\", \"cl\"], offset: [-8, 0], overflow },\n right: { points: [\"cl\", \"cr\"], offset: [8, 0], overflow },\n topLeft: pointAtCenter\n ? { points: [\"bl\", \"tc\"], offset: [-cornerOffset, -8], overflow, autoArrow: false }\n : { points: [\"bl\", \"tl\"], offset: [0, -8], overflow, autoArrow: false },\n topRight: pointAtCenter\n ? { points: [\"br\", \"tc\"], offset: [cornerOffset, -8], overflow, autoArrow: false }\n : { points: [\"br\", \"tr\"], offset: [0, -8], overflow, autoArrow: false },\n bottomLeft: pointAtCenter\n ? { points: [\"tl\", \"bc\"], offset: [-cornerOffset, 8], overflow, autoArrow: false }\n : { points: [\"tl\", \"bl\"], offset: [0, 8], overflow, autoArrow: false },\n bottomRight: pointAtCenter\n ? { points: [\"tr\", \"bc\"], offset: [cornerOffset, 8], overflow, autoArrow: false }\n : { points: [\"tr\", \"br\"], offset: [0, 8], overflow, autoArrow: false },\n leftTop: pointAtCenter\n ? { points: [\"tr\", \"cl\"], offset: [-8, -cornerOffset], overflow, autoArrow: false }\n : { points: [\"tr\", \"tl\"], offset: [-8, 0], overflow, autoArrow: false },\n leftBottom: pointAtCenter\n ? { points: [\"br\", \"cl\"], offset: [-8, cornerOffset], overflow, autoArrow: false }\n : { points: [\"br\", \"bl\"], offset: [-8, 0], overflow, autoArrow: false },\n rightTop: pointAtCenter\n ? { points: [\"tl\", \"cr\"], offset: [8, -cornerOffset], overflow, autoArrow: false }\n : { points: [\"tl\", \"tr\"], offset: [8, 0], overflow, autoArrow: false },\n rightBottom: pointAtCenter\n ? { points: [\"bl\", \"cr\"], offset: [8, cornerOffset], overflow, autoArrow: false }\n : { points: [\"bl\", \"br\"], offset: [8, 0], overflow, autoArrow: false },\n };\n}\n\nexport const Tooltip = forwardRef<TooltipRef, TooltipProps>(function Tooltip(\n {\n afterOpenChange,\n afterVisibleChange,\n align,\n arrow,\n autoAdjustOverflow = true,\n builtinPlacements,\n children,\n className = \"\",\n classNames,\n color,\n defaultOpen,\n defaultVisible,\n disabled,\n destroyOnHidden,\n destroyTooltipOnHide,\n forceRender,\n fresh,\n getPopupContainer,\n getTooltipContainer,\n id,\n maxWidth,\n motion,\n mouseEnterDelay = 0.1,\n mouseLeaveDelay = 0.1,\n onOpenChange,\n onPopupAlign,\n onVisibleChange,\n open,\n openClassName,\n overlay,\n overlayClassName,\n overlayInnerStyle,\n overlayStyle,\n placement,\n rootClassName,\n style,\n styles,\n title,\n trigger,\n unique,\n variant,\n visible,\n zIndex,\n },\n ref,\n) {\n const config = useConfig();\n const motionDisabled = isMotionDisabled(config.motion);\n const mergedArrow = arrow ?? config.components.Tooltip?.arrow ?? true;\n const mergedDisabled = disabled || config.disabled || config.components.Tooltip?.disabled;\n const mergedPlacement = placement ?? config.components.Tooltip?.placement ?? \"top\";\n const mergedTrigger = trigger ?? config.components.Tooltip?.trigger ?? \"hover\";\n const mergedVariant = variant ?? config.components.Tooltip?.variant ?? \"dark\";\n const mergedTitle = title ?? overlay;\n const [mergedOpen, setMergedOpen] = useControlledState(\n defaultOpen ?? defaultVisible ?? false,\n open ?? visible,\n );\n const noTitle = !mergedTitle && mergedTitle !== 0;\n const popupVisible = mergedDisabled || noTitle ? false : mergedOpen;\n const pointAtCenter = typeof mergedArrow === \"object\" && mergedArrow.pointAtCenter === true;\n const placements = useMemo(\n () => builtinPlacements ?? getTooltipPlacements(pointAtCenter, autoAdjustOverflow),\n [autoAdjustOverflow, builtinPlacements, pointAtCenter],\n );\n const triggerNode = getTooltipChild(\n children,\n cn(slotClass(classNames, \"trigger\"), popupVisible && openClassName),\n );\n const popupStyle = slotStyle(\n styles,\n \"root\",\n slotStyle(styles, \"popup\", {\n ...(maxWidth == null ? undefined : { maxWidth, whiteSpace: \"normal\" }),\n ...(color ? { \"--hj-tooltip-color\": color, backgroundColor: color } : undefined),\n ...overlayStyle,\n ...style,\n }),\n );\n const popupClassName = cn(\n \"hj-tooltip-root\",\n `hj-tooltip-${mergedVariant}`,\n pointAtCenter && \"hj-tooltip-arrow-center\",\n className,\n overlayClassName,\n rootClassName,\n classNames?.root,\n classNames?.popup,\n );\n const rcTrigger: TooltipTrigger | TooltipTrigger[] =\n typeof mergedTrigger === \"string\" ? mergedTrigger : [...mergedTrigger];\n\n return (\n <RcTooltip\n afterVisibleChange={(nextOpen) => {\n afterOpenChange?.(nextOpen);\n afterVisibleChange?.(nextOpen);\n }}\n align={align}\n builtinPlacements={placements}\n classNames={{\n root: popupClassName,\n arrow: slotClass(classNames, \"arrow\", \"hj-tooltip-arrow-inner\"),\n container: slotClass(classNames, \"content\", \"hj-tooltip-container-inner\"),\n }}\n destroyOnHidden={\n destroyOnHidden ?? (typeof destroyTooltipOnHide === \"object\" ? true : destroyTooltipOnHide)\n }\n forceRender={forceRender}\n fresh={fresh}\n getTooltipContainer={\n getPopupContainer ??\n getTooltipContainer ??\n (config.getPopupContainer ? () => config.getPopupContainer?.() ?? document.body : undefined)\n }\n id={id}\n mouseEnterDelay={mouseEnterDelay}\n mouseLeaveDelay={mouseLeaveDelay}\n motion={motionDisabled ? undefined : (motion ?? { motionName: \"hj-zoom\" })}\n onPopupAlign={onPopupAlign}\n overlay={mergedTitle}\n placement={mergedPlacement}\n prefixCls=\"hj-tooltip\"\n ref={ref}\n showArrow={typeof mergedArrow === \"object\" ? true : mergedArrow}\n styles={{\n root: popupStyle,\n arrow: slotStyle(styles, \"arrow\"),\n container: slotStyle(styles, \"content\", overlayInnerStyle),\n }}\n trigger={rcTrigger}\n unique={unique}\n visible={popupVisible}\n zIndex={zIndex}\n onVisibleChange={(nextOpen) => {\n if (mergedDisabled || noTitle) return;\n setMergedOpen(nextOpen);\n onOpenChange?.(nextOpen);\n onVisibleChange?.(nextOpen);\n }}\n >\n {triggerNode}\n </RcTooltip>\n );\n});\n\nTooltip.displayName = \"Tooltip\";\n",
|
|
25
|
+
"import type { ReactNode } from \"react\";\nimport { Text, Title } from \"./Typography\";\n\ninterface SectionHeaderProps {\n readonly action?: ReactNode;\n readonly className?: string;\n readonly meta?: ReactNode;\n readonly middle?: ReactNode;\n readonly onAction?: () => void;\n readonly title: ReactNode;\n}\n\nexport function SectionHeader({\n action,\n className = \"\",\n meta,\n middle,\n onAction,\n title,\n}: SectionHeaderProps) {\n return (\n <div className={`flex items-center justify-between gap-3 ${className}`}>\n <div className=\"flex min-w-0 items-baseline gap-2\">\n <Title className=\"shrink-0\" variant=\"section\">\n {title}\n </Title>\n {meta ? (\n <Text as=\"span\" className=\"truncate font-semibold text-[#a5adb8]\" variant=\"muted\">\n {meta}\n </Text>\n ) : null}\n </div>\n {middle ? <div className=\"min-w-0 flex-1\">{middle}</div> : null}\n {action ? (\n <Text\n as={onAction ? \"button\" : \"span\"}\n className=\"shrink-0\"\n onClick={onAction}\n type={onAction ? \"button\" : undefined}\n variant=\"action\"\n >\n {action}\n </Text>\n ) : null}\n </div>\n );\n}\n",
|
|
26
|
+
"import RcSegmented from \"@rc-component/segmented\";\nimport type {\n SegmentedLabeledOption as RcSegmentedLabeledOption,\n SegmentedProps as RcSegmentedProps,\n SegmentedRawOption,\n SegmentedValue,\n} from \"@rc-component/segmented\";\nimport type { CSSProperties, ReactNode, RefAttributes } from \"react\";\nimport { forwardRef, useId, useMemo } from \"react\";\nimport { useConfig } from \"../ConfigProvider\";\nimport { cn } from \"../utils/cn\";\nimport { Tooltip } from \"./Tooltip\";\nimport type { TooltipProps } from \"./Tooltip\";\n\nexport type { SegmentedValue } from \"@rc-component/segmented\";\n\nexport type SegmentedSize = \"small\" | \"medium\" | \"middle\" | \"large\" | \"xs\" | \"sm\" | \"md\" | \"lg\";\nexport type SegmentedSemanticSlot = \"root\" | \"item\" | \"icon\" | \"label\";\nexport type SegmentedClassNames<ValueType = SegmentedValue> =\n | Partial<Record<SegmentedSemanticSlot, string>>\n | ((info: { props: SegmentedProps<ValueType> }) => Partial<\n Record<SegmentedSemanticSlot, string>\n >);\nexport type SegmentedStyles<ValueType = SegmentedValue> =\n | Partial<Record<SegmentedSemanticSlot, CSSProperties>>\n | ((info: { props: SegmentedProps<ValueType> }) => Partial<\n Record<SegmentedSemanticSlot, CSSProperties>\n >);\n\nexport interface SegmentedLabeledOption<ValueType = SegmentedValue>\n extends Omit<RcSegmentedLabeledOption<ValueType>, \"label\"> {\n readonly icon?: ReactNode;\n readonly label?: ReactNode;\n readonly tooltip?: string | Omit<TooltipProps, \"children\">;\n}\n\nexport type SegmentedOption<ValueType = SegmentedRawOption> =\n | ValueType\n | SegmentedLabeledOption<ValueType>;\n\nexport interface SegmentedLegacyItem<ValueType = SegmentedValue> {\n readonly disabled?: boolean;\n readonly icon?: ReactNode;\n readonly id: ValueType;\n readonly label: ReactNode;\n readonly title?: string;\n}\n\nexport interface SegmentedProps<ValueType = SegmentedValue>\n extends Omit<\n RcSegmentedProps<ValueType>,\n \"classNames\" | \"disabled\" | \"itemRender\" | \"options\" | \"prefixCls\" | \"size\" | \"styles\"\n > {\n readonly block?: boolean;\n readonly classNames?: SegmentedClassNames<ValueType>;\n readonly disabled?: boolean;\n readonly items?: readonly SegmentedLegacyItem<ValueType>[];\n readonly options?: readonly SegmentedOption<ValueType>[];\n readonly orientation?: \"horizontal\" | \"vertical\";\n readonly rootClassName?: string;\n readonly shape?: \"default\" | \"round\";\n readonly size?: SegmentedSize;\n readonly styles?: SegmentedStyles<ValueType>;\n}\n\nfunction isLabeledOption<ValueType>(\n option: SegmentedOption<ValueType>,\n): option is SegmentedLabeledOption<ValueType> {\n return typeof option === \"object\" && option !== null;\n}\n\nfunction normalizeSize(size: SegmentedSize | undefined, fallback: \"sm\" | \"md\" | \"lg\") {\n if (size === \"small\" || size === \"sm\") return \"sm\";\n if (size === \"large\" || size === \"lg\") return \"lg\";\n if (size === \"xs\") return \"xs\";\n if (size === \"medium\" || size === \"middle\" || size === \"md\") return \"md\";\n return fallback;\n}\n\nfunction resolveSemantic<ValueType, Value>(\n value: Value | ((info: { props: SegmentedProps<ValueType> }) => Value) | undefined,\n props: SegmentedProps<ValueType>,\n): Value | undefined {\n return typeof value === \"function\"\n ? (value as (info: { props: SegmentedProps<ValueType> }) => Value)({ props })\n : value;\n}\n\nconst InternalSegmented = forwardRef<HTMLDivElement, SegmentedProps>((props, ref) => {\n const {\n block = false,\n className,\n classNames,\n disabled,\n items,\n name,\n options,\n orientation,\n rootClassName,\n shape = \"default\",\n size,\n style,\n styles,\n vertical,\n ...restProps\n } = props;\n const config = useConfig();\n const generatedName = useId();\n const mergedDisabled = disabled ?? config.components.Segmented?.disabled ?? config.disabled;\n const mergedSize = normalizeSize(size ?? config.components.Segmented?.size, config.size);\n const mergedVertical = orientation ? orientation === \"vertical\" : vertical;\n const sourceOptions = useMemo(\n () => options ?? items?.map(({ id, ...item }) => ({ ...item, value: id })) ?? [],\n [items, options],\n );\n const semanticProps: SegmentedProps = {\n ...props,\n disabled: mergedDisabled,\n options: sourceOptions,\n shape,\n size,\n vertical: mergedVertical,\n };\n const mergedClassNames = resolveSemantic(classNames, semanticProps) ?? {};\n const mergedStyles = resolveSemantic(styles, semanticProps) ?? {};\n const rcOptions = useMemo(\n () =>\n sourceOptions.map((option) => {\n if (!isLabeledOption(option)) return option;\n const { icon, label, tooltip: _tooltip, ...optionProps } = option;\n return {\n ...optionProps,\n label: (\n <>\n {icon ? (\n <span\n className={cn(\"hj-segmented-item-icon\", mergedClassNames.icon)}\n style={mergedStyles.icon}\n >\n {icon}\n </span>\n ) : null}\n {label != null ? <span>{label}</span> : null}\n </>\n ),\n };\n }),\n [mergedClassNames.icon, mergedStyles.icon, sourceOptions],\n );\n\n return (\n <RcSegmented\n {...restProps}\n ref={ref}\n className={cn(\n \"hj-segmented-root\",\n `hj-segmented-${mergedSize}`,\n block && \"hj-segmented-block\",\n shape === \"round\" && \"hj-segmented-shape-round\",\n rootClassName,\n mergedClassNames.root,\n className,\n )}\n classNames={{ item: mergedClassNames.item, label: mergedClassNames.label }}\n disabled={mergedDisabled}\n itemRender={(node, { item }) => {\n const sourceOption = sourceOptions.find(\n (option) => isLabeledOption(option) && option.value === item.value,\n );\n const tooltip =\n sourceOption && isLabeledOption(sourceOption) ? sourceOption.tooltip : undefined;\n if (!tooltip) return node;\n return typeof tooltip === \"string\" ? (\n <Tooltip title={tooltip}>{node}</Tooltip>\n ) : (\n <Tooltip {...tooltip}>{node}</Tooltip>\n );\n }}\n motionName=\"thumb-motion\"\n name={name ?? generatedName}\n options={rcOptions}\n prefixCls=\"hj-segmented\"\n style={{ ...style, ...mergedStyles.root }}\n styles={{ item: mergedStyles.item, label: mergedStyles.label }}\n vertical={mergedVertical}\n />\n );\n});\n\nexport const Segmented = InternalSegmented as (<ValueType>(\n props: SegmentedProps<ValueType> & RefAttributes<HTMLDivElement>,\n) => ReturnType<typeof InternalSegmented>) & { displayName?: string };\n\nSegmented.displayName = \"Segmented\";\n",
|
|
27
|
+
"import type { ReactNode } from \"react\";\nimport { useConfig } from \"../ConfigProvider\";\nimport { cn } from \"../utils/cn\";\nimport { Segmented } from \"./Segmented\";\nimport type {\n SegmentedLabeledOption,\n SegmentedProps,\n SegmentedSize,\n SegmentedValue,\n} from \"./Segmented\";\n\nexport type SegmentedTabSize = SegmentedSize;\nexport type SegmentedTabAppearance = \"boxed\" | \"glow-pill\" | \"plain\" | \"segmented\";\n\n/**\n * @deprecated Use `SegmentedTabAppearance`. This alias only selects a legacy\n * Segmented visual and does not provide Tabs behavior.\n */\nexport type SegmentedTabsType = \"line\" | \"boxed\" | \"segmented\" | \"glow-pill\";\n\n/**\n * @deprecated SegmentedTabs does not render a Tabs indicator. This type is\n * retained only for the legacy `indicator` visual adapter.\n */\nexport type SegmentedTabIndicator = \"ink\" | \"none\";\n\nexport interface SegmentedTabItem<T extends SegmentedValue>\n extends Omit<SegmentedLabeledOption<T>, \"label\" | \"value\"> {\n readonly id: T;\n readonly label: ReactNode;\n}\n\nexport interface SegmentedTabsProps<T extends SegmentedValue = SegmentedValue>\n extends Omit<SegmentedProps<T>, \"items\" | \"options\" | \"shape\" | \"size\"> {\n /** 996-owned visual treatment over the Segmented selection control. */\n readonly appearance?: SegmentedTabAppearance;\n\n /**\n * @deprecated SegmentedTabs does not expose Tabs animation contracts.\n * `false` only disables the legacy rc-segmented thumb transition class.\n */\n readonly animated?: boolean;\n\n /** @deprecated Use the native Segmented `block` prop. */\n readonly fullWidth?: boolean;\n\n /**\n * @deprecated SegmentedTabs does not render a Tabs indicator. `none` only\n * suppresses the rc-segmented thumb for the plain legacy appearance.\n */\n readonly indicator?: SegmentedTabIndicator;\n readonly items: readonly SegmentedTabItem<T>[];\n readonly size?: SegmentedTabSize;\n\n /**\n * @deprecated Use `appearance`. This prop is a visual compatibility adapter\n * only and does not provide Tabs type or pane behavior.\n */\n readonly type?: SegmentedTabsType;\n}\n\nconst legacyTypeAppearance: Record<SegmentedTabsType, SegmentedTabAppearance> = {\n boxed: \"boxed\",\n \"glow-pill\": \"glow-pill\",\n line: \"plain\",\n segmented: \"segmented\",\n};\n\nconst appearanceClass: Record<SegmentedTabAppearance, SegmentedTabsType> = {\n boxed: \"boxed\",\n \"glow-pill\": \"glow-pill\",\n plain: \"line\",\n segmented: \"segmented\",\n};\n\nexport function SegmentedTabs<T extends SegmentedValue>(props: SegmentedTabsProps<T>) {\n const {\n animated,\n appearance,\n block,\n disabled,\n fullWidth,\n indicator,\n items,\n size,\n type,\n ...segmentedProps\n } = props;\n const config = useConfig();\n const mergedSize = size ?? config.components.SegmentedTabs?.size ?? \"sm\";\n const mergedDisabled = disabled ?? config.components.SegmentedTabs?.disabled ?? config.disabled;\n const mergedAppearance = appearance ?? (type ? legacyTypeAppearance[type] : \"boxed\");\n const visualClass = appearanceClass[mergedAppearance];\n const hideLegacyThumb = mergedAppearance === \"plain\" && indicator === \"none\";\n\n return (\n <Segmented<T>\n {...segmentedProps}\n block={block ?? fullWidth}\n className={cn(\n \"hj-segmented-tabs\",\n `hj-segmented-tabs-${visualClass}`,\n animated === false && \"hj-segmented-tabs-no-motion\",\n hideLegacyThumb && \"hj-segmented-tabs-no-indicator\",\n segmentedProps.className,\n )}\n disabled={mergedDisabled}\n options={items.map(({ id, ...item }) => ({ ...item, value: id }))}\n shape={mergedAppearance === \"segmented\" ? \"round\" : \"default\"}\n size={mergedSize}\n />\n );\n}\n",
|
|
28
|
+
"import RcSelect from \"@rc-component/select\";\nimport type { SelectProps as RcSelectProps } from \"@rc-component/select\";\nimport type { ReactNode } from \"react\";\nimport { useConfig } from \"../ConfigProvider\";\nimport { cn } from \"../utils/cn\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\nimport { Icon } from \"./Icon\";\nimport { normalizeInputSize } from \"./Input\";\nimport type { InputProps, InputSize, InputStatus, InputVariant } from \"./Input\";\nimport { useMergedFormItemStatus } from \"./form/statusContext\";\n\nexport interface SelectInputOption {\n readonly disabled?: boolean;\n readonly label: ReactNode;\n readonly suffix?: ReactNode;\n readonly value: string;\n}\n\ntype SelectInputSlot = \"root\" | \"input\" | \"popup\" | \"option\" | \"suffix\";\n\nexport interface SelectInputProps\n extends Omit<InputProps, \"classNames\" | \"onChange\" | \"styles\" | \"suffix\" | \"value\"> {\n readonly activeFirstOption?: boolean;\n readonly activeValue?: string;\n readonly classNames?: SlotClassNames<SelectInputSlot>;\n readonly defaultValue?: string;\n readonly defaultPopupOpen?: boolean;\n readonly displayValue?: string;\n readonly onChange?: (value: string, option?: SelectInputOption) => void;\n readonly onPopupOpenChange?: (open: boolean) => void;\n readonly options: readonly SelectInputOption[];\n readonly popupMatchInputWidth?: boolean;\n readonly popupOffset?: number;\n readonly popupOpen?: boolean;\n readonly placeholder?: string;\n readonly size?: InputSize;\n readonly status?: InputStatus;\n readonly styles?: SlotStyles<SelectInputSlot>;\n readonly suffixIcon?: ReactNode;\n readonly value?: string;\n readonly variant?: InputVariant;\n}\n\nexport function SelectInput({\n activeFirstOption = false,\n activeValue,\n allowClear,\n autoFocus,\n className = \"\",\n classNames,\n defaultPopupOpen = false,\n defaultValue,\n disabled,\n displayValue,\n id,\n onBlur,\n onChange,\n onClick,\n onFocus,\n onKeyDown,\n onPopupOpenChange,\n options,\n placeholder,\n popupMatchInputWidth = true,\n popupOffset,\n popupOpen,\n prefix,\n size,\n status,\n style,\n styles,\n suffixIcon,\n tabIndex,\n title,\n value,\n variant,\n}: SelectInputProps) {\n const config = useConfig();\n const mergedStatus = useMergedFormItemStatus(status);\n const mergedSize = normalizeInputSize(size ?? config.components.SelectInput?.size, config.size);\n const mergedPopupOffset = popupOffset ?? config.components.SelectInput?.popupOffset ?? 8;\n const mergedDisabled = disabled ?? config.components.SelectInput?.disabled ?? config.disabled;\n const rcOptions = options.map((option) => ({ ...option }));\n\n return (\n <RcSelect<string, SelectInputOption>\n allowClear={allowClear}\n autoFocus={autoFocus}\n className={cn(\n \"hj-select-input-root\",\n `hj-select-input-${mergedSize}`,\n mergedStatus && `hj-select-input-status-${mergedStatus}`,\n variant && `hj-select-input-variant-${variant}`,\n slotClass(classNames, \"root\"),\n className,\n )}\n classNames={{ input: slotClass(classNames, \"input\") }}\n defaultActiveFirstOption={activeFirstOption}\n defaultOpen={defaultPopupOpen}\n defaultValue={defaultValue}\n disabled={mergedDisabled}\n getPopupContainer={\n config.getPopupContainer ? () => config.getPopupContainer?.() ?? document.body : undefined\n }\n id={id}\n labelRender={displayValue === undefined ? undefined : () => displayValue}\n open={popupOpen}\n optionRender={(option) => (\n <span\n className={cn(\n \"hj-select-input-option-content\",\n activeValue === option.value && \"hj-select-input-option-active\",\n )}\n >\n <span className=\"hj-select-input-option-label\">{option.label}</span>\n {option.data.suffix ? (\n <span className=\"hj-select-input-option-suffix\">{option.data.suffix}</span>\n ) : null}\n </span>\n )}\n options={rcOptions}\n placeholder={placeholder}\n popupAlign={{ offset: [0, mergedPopupOffset] }}\n popupClassName={slotClass(classNames, \"popup\", \"hj-select-input-popup\")}\n popupMatchSelectWidth={popupMatchInputWidth}\n popupStyle={slotStyle(styles, \"popup\")}\n prefix={prefix}\n prefixCls=\"hj-select-input\"\n style={slotStyle(styles, \"root\", style)}\n suffix={() => (\n <span\n className={slotClass(classNames, \"suffix\", \"hj-select-input-suffix\")}\n style={slotStyle(styles, \"suffix\")}\n >\n {suffixIcon ?? <Icon name=\"chevron-down\" size={16} strokeWidth={2} />}\n </span>\n )}\n tabIndex={tabIndex}\n title={title}\n value={value}\n onBlur={onBlur as RcSelectProps<string, SelectInputOption>[\"onBlur\"]}\n onChange={(nextValue, option) => onChange?.(nextValue, option as SelectInputOption)}\n onClick={onClick as RcSelectProps<string, SelectInputOption>[\"onClick\"]}\n onFocus={onFocus as RcSelectProps<string, SelectInputOption>[\"onFocus\"]}\n onKeyDown={onKeyDown as RcSelectProps<string, SelectInputOption>[\"onKeyDown\"]}\n onPopupVisibleChange={onPopupOpenChange}\n />\n );\n}\n",
|
|
29
|
+
"import RcInput, { TextArea as RcTextArea } from \"@rc-component/input\";\nimport type {\n InputProps as RcInputProps,\n InputRef as RcInputRef,\n TextAreaProps as RcTextAreaProps,\n TextAreaRef as RcTextAreaRef,\n} from \"@rc-component/input\";\nimport { composeRef, raf, triggerFocus, useControlledState } from \"@rc-component/util\";\nimport type { InputFocusOptions } from \"@rc-component/util\";\nimport type {\n CSSProperties,\n ChangeEvent,\n CompositionEventHandler,\n FocusEvent,\n FormEvent,\n ForwardedRef,\n HTMLAttributes,\n InputHTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n ReactNode,\n RefAttributes,\n} from \"react\";\nimport {\n Fragment,\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { useConfig } from \"../ConfigProvider\";\nimport { cn } from \"../utils/cn\";\nimport type { SlotClassNames, SlotStyles } from \"../utils/slots\";\nimport { slotClass, slotStyle } from \"../utils/slots\";\nimport { Icon } from \"./Icon\";\nimport { useMergedFormItemStatus } from \"./form/statusContext\";\nimport type { FormControlStatus, FormItemStatus } from \"./form/statusContext\";\n\nexport type { InputFocusOptions };\nexport type InputRef = RcInputRef;\nexport type InputStatus = FormControlStatus;\nexport type AntdInputSize = \"small\" | \"medium\" | \"middle\" | \"large\";\nexport type InputSize = AntdInputSize | \"sm\" | \"md\" | \"lg\";\nexport type AntdInputVariant = \"outlined\" | \"borderless\" | \"filled\" | \"underlined\";\nexport type InputVariant = AntdInputVariant | \"default\" | \"active\";\nexport type InputVisualSize = \"sm\" | \"md\" | \"lg\";\n\ntype InputSlot =\n | \"group\"\n | \"root\"\n | \"wrapper\"\n | \"input\"\n | \"prefix\"\n | \"suffix\"\n | \"clear\"\n | \"count\"\n | \"addonBefore\"\n | \"addonAfter\";\n\nexport interface InputProps extends Omit<RcInputProps, \"classNames\" | \"prefixCls\" | \"styles\"> {\n /** @deprecated Use variant instead. */\n readonly bordered?: boolean;\n readonly classNames?: SlotClassNames<InputSlot>;\n readonly rootClassName?: string;\n readonly size?: InputSize;\n readonly status?: InputStatus;\n readonly styles?: SlotStyles<InputSlot>;\n readonly variant?: InputVariant;\n}\n\nconst statusClass: Record<FormItemStatus, string> = {\n \"\": \"border-[var(--hj-input-border)] focus-within:border-[var(--hj-input-border-active)] focus:border-[var(--hj-input-border-active)]\",\n error:\n \"border-[var(--hj-color-danger)] focus-within:border-[var(--hj-color-danger)] focus:border-[var(--hj-color-danger)]\",\n warning:\n \"border-[var(--hj-color-warning)] focus-within:border-[var(--hj-color-warning)] focus:border-[var(--hj-color-warning)]\",\n success:\n \"border-[var(--hj-color-success)] focus-within:border-[var(--hj-color-success)] focus:border-[var(--hj-color-success)]\",\n validating:\n \"border-[var(--hj-input-border)] focus-within:border-[var(--hj-input-border-active)] focus:border-[var(--hj-input-border-active)]\",\n};\n\nconst sizeClass: Record<InputVisualSize, string> = {\n sm: \"h-[var(--hj-input-height-sm)] px-[var(--hj-input-padding-x)] text-[length:var(--hj-input-font-size)] leading-[var(--hj-input-line-height)]\",\n md: \"h-[var(--hj-input-height-md)] px-[var(--hj-input-padding-x)] text-[length:var(--hj-input-font-size)] leading-[var(--hj-input-line-height)]\",\n lg: \"h-[var(--hj-input-height-lg)] px-[var(--hj-input-padding-x)] text-[length:var(--hj-input-font-size)] leading-[var(--hj-input-line-height)]\",\n};\n\nconst nativeSizeClass: Record<InputVisualSize, string> = {\n sm: \"hj-input-small\",\n md: \"hj-input-medium\",\n lg: \"hj-input-large\",\n};\n\nconst textAreaSizeClass: Record<InputVisualSize, string> = {\n sm: \"min-h-[var(--hj-input-height-sm)] px-[var(--hj-input-padding-x)] py-1.5\",\n md: \"min-h-[calc(var(--hj-input-height-md)*2)] px-[var(--hj-input-padding-x)] py-2\",\n lg: \"min-h-[calc(var(--hj-input-height-lg)*2)] px-[var(--hj-input-padding-x)] py-2.5\",\n};\n\nconst otpCellSizeClass: Record<InputVisualSize, string> = {\n sm: \"w-[var(--hj-input-height-sm)] px-0 text-center\",\n md: \"w-[var(--hj-input-height-md)] px-0 text-center\",\n lg: \"w-[var(--hj-input-height-lg)] px-0 text-center\",\n};\n\nexport function normalizeInputSize(\n size: InputSize | undefined,\n fallback: InputVisualSize = \"md\",\n): InputVisualSize {\n if (size === \"small\" || size === \"sm\") return \"sm\";\n if (size === \"large\" || size === \"lg\") return \"lg\";\n if (size === \"medium\" || size === \"middle\" || size === \"md\") return \"md\";\n return fallback;\n}\n\nconst variantClassName: Record<InputVariant, string> = {\n active: \"border-[var(--hj-input-border-active)] bg-[var(--hj-input-bg-active)]\",\n borderless: \"border-transparent bg-transparent\",\n default: \"\",\n filled: \"border-transparent bg-[var(--hj-input-bg-active)]\",\n outlined: \"\",\n underlined: \"rounded-none border-x-0 border-t-0 bg-transparent px-0\",\n};\n\nconst inputBaseClass =\n \"min-w-0 rounded-[var(--hj-input-radius)] border bg-[var(--hj-input-bg)] text-[var(--hj-input-fg)] outline-none transition placeholder:text-[var(--hj-input-placeholder)] hover:bg-[var(--hj-input-bg-active)] disabled:cursor-not-allowed disabled:opacity-50\";\nconst affixInputClass =\n \"h-full min-w-0 flex-1 border-0 bg-transparent p-0 font-[inherit] text-[var(--hj-input-fg)] outline-none placeholder:text-[var(--hj-input-placeholder)] disabled:cursor-not-allowed\";\nconst affixWrapperClass =\n \"flex min-w-0 items-center gap-[var(--hj-input-gap)] rounded-[var(--hj-input-radius)] border bg-[var(--hj-input-bg)] transition hover:bg-[var(--hj-input-bg-active)]\";\nconst textAreaBaseClass =\n \"w-full resize-y rounded-[var(--hj-input-radius)] border bg-[var(--hj-input-bg)] text-[var(--hj-input-fg)] outline-none transition placeholder:text-[var(--hj-input-placeholder)] hover:bg-[var(--hj-input-bg-active)] disabled:cursor-not-allowed disabled:opacity-50\";\n\nconst InputGroupSizeContext = createContext<InputSize | undefined>(undefined);\n\nfunction getMergedVariant(\n variant: InputVariant | undefined,\n bordered: boolean | undefined,\n): InputVariant {\n if (variant) return variant;\n return bordered === false ? \"borderless\" : \"outlined\";\n}\n\nfunction renderClearIcon() {\n return (\n <>\n <Icon name=\"close\" size={14} />\n <span className=\"sr-only\">清空</span>\n </>\n );\n}\n\nfunction mergeAllowClear(allowClear: RcInputProps[\"allowClear\"]): RcInputProps[\"allowClear\"] {\n if (!allowClear) return allowClear;\n if (typeof allowClear === \"object\") {\n return {\n ...allowClear,\n clearIcon: allowClear.clearIcon || renderClearIcon(),\n };\n }\n return { clearIcon: renderClearIcon() };\n}\n\nfunction InputInner(props: InputProps, ref: ForwardedRef<InputRef>) {\n const {\n addonAfter,\n addonBefore,\n allowClear,\n bordered,\n className,\n classNames,\n count,\n disabled,\n rootClassName,\n showCount,\n size,\n status,\n style,\n styles,\n variant,\n ...restProps\n } = props;\n const config = useConfig();\n const groupSize = useContext(InputGroupSizeContext);\n const mergedStatus = useMergedFormItemStatus(status);\n const mergedSize = normalizeInputSize(\n size ?? groupSize ?? config.components.Input?.size,\n config.size,\n );\n const mergedDisabled = disabled ?? config.components.Input?.disabled ?? config.disabled;\n const mergedVariant = getMergedVariant(variant, bordered);\n const mergedAllowClear = mergeAllowClear(allowClear);\n const hasAffix = Boolean(\n restProps.prefix || restProps.suffix || mergedAllowClear || showCount || count?.show,\n );\n const hasAddon = addonBefore != null || addonAfter != null;\n const variantClass = cn(\n mergedStatus && `hj-input-status-${mergedStatus}`,\n `hj-input-variant-${mergedVariant}`,\n mergedVariant === \"outlined\" && \"hj-input-variant-default\",\n statusClass[mergedStatus],\n variantClassName[mergedVariant],\n );\n const addonBeforeNode =\n addonBefore == null ? null : (\n <span\n className={slotClass(\n classNames,\n \"addonBefore\",\n \"hj-input-addon-before\",\n \"flex shrink-0 items-center border border-r-0 border-[var(--hj-input-border)] bg-[var(--hj-input-addon-bg)] text-[var(--hj-input-addon-fg)]\",\n sizeClass[mergedSize],\n )}\n style={slotStyle(styles, \"addonBefore\")}\n >\n {addonBefore}\n </span>\n );\n const addonAfterNode =\n addonAfter == null ? null : (\n <span\n className={slotClass(\n classNames,\n \"addonAfter\",\n \"hj-input-addon-after\",\n \"flex shrink-0 items-center border border-l-0 border-[var(--hj-input-border)] bg-[var(--hj-input-addon-bg)] text-[var(--hj-input-addon-fg)]\",\n sizeClass[mergedSize],\n )}\n style={slotStyle(styles, \"addonAfter\")}\n >\n {addonAfter}\n </span>\n );\n\n return (\n <RcInput\n {...restProps}\n addonAfter={addonAfterNode}\n addonBefore={addonBeforeNode}\n allowClear={mergedAllowClear}\n className={slotClass(\n classNames,\n \"root\",\n \"hj-input-root\",\n `hj-input-${mergedSize}`,\n nativeSizeClass[mergedSize],\n mergedStatus && `hj-input-status-${mergedStatus}`,\n `hj-input-variant-${mergedVariant}`,\n mergedVariant === \"outlined\" && \"hj-input-variant-default\",\n rootClassName,\n className,\n )}\n classNames={{\n affixWrapper: cn(\n affixWrapperClass,\n sizeClass[mergedSize],\n `hj-input-affix-wrapper-${mergedSize}`,\n ),\n clear: slotClass(\n classNames,\n \"clear\",\n \"shrink-0 text-[var(--hj-input-clear)] transition hover:text-white [&.hj-input-clear-icon-hidden]:invisible\",\n ),\n count: slotClass(classNames, \"count\", \"shrink-0 text-[var(--hj-input-clear)]\"),\n groupWrapper: slotClass(\n classNames,\n \"group\",\n \"inline-flex min-w-0 overflow-hidden rounded-[var(--hj-input-radius)]\",\n `hj-input-group-wrapper-${mergedSize}`,\n mergedStatus && `hj-input-group-wrapper-status-${mergedStatus}`,\n `hj-input-group-wrapper-variant-${mergedVariant}`,\n ),\n input: slotClass(\n classNames,\n \"input\",\n hasAffix ? affixInputClass : inputBaseClass,\n !hasAffix && sizeClass[mergedSize],\n `hj-input-${mergedSize}`,\n nativeSizeClass[mergedSize],\n hasAddon && !hasAffix && \"min-w-0 flex-1 rounded-none\",\n ),\n prefix: slotClass(classNames, \"prefix\", \"shrink-0 text-[var(--hj-input-icon)]\"),\n suffix: slotClass(classNames, \"suffix\", \"shrink-0 text-[var(--hj-input-icon)]\"),\n variant: variantClass,\n wrapper: slotClass(classNames, \"wrapper\", \"inline-flex min-w-0 flex-1\"),\n }}\n count={count}\n disabled={mergedDisabled}\n prefixCls=\"hj-input\"\n ref={ref}\n showCount={showCount}\n style={{\n ...style,\n ...styles?.root,\n ...(hasAddon ? styles?.group : undefined),\n }}\n styles={{\n affixWrapper: slotStyle(styles, \"root\"),\n clear: slotStyle(styles, \"clear\"),\n count: slotStyle(styles, \"count\"),\n input: slotStyle(styles, \"input\"),\n prefix: slotStyle(styles, \"prefix\"),\n suffix: slotStyle(styles, \"suffix\"),\n }}\n />\n );\n}\n\nconst InternalInput = forwardRef(InputInner);\nInternalInput.displayName = \"Input\";\n\nexport interface GroupProps extends HTMLAttributes<HTMLSpanElement> {\n readonly compact?: boolean;\n readonly rootClassName?: string;\n readonly size?: InputSize;\n}\n\nconst InputGroup = forwardRef<HTMLSpanElement, GroupProps>(function InputGroup(\n { children, className, compact = false, rootClassName, size, ...props },\n ref,\n) {\n const config = useConfig();\n const mergedSize = normalizeInputSize(size, config.size);\n\n return (\n <InputGroupSizeContext.Provider value={size}>\n <span\n {...props}\n className={cn(\n \"hj-input-group\",\n `hj-input-group-${mergedSize}`,\n nativeSizeClass[mergedSize],\n \"inline-flex min-w-0 items-stretch\",\n compact && \"hj-input-group-compact gap-0\",\n rootClassName,\n className,\n )}\n ref={ref}\n >\n {children}\n </span>\n </InputGroupSizeContext.Provider>\n );\n});\n\ntype SearchSlot = InputSlot | \"button\";\n\nexport interface SearchProps extends Omit<InputProps, \"classNames\" | \"styles\" | \"type\"> {\n readonly classNames?: SlotClassNames<SearchSlot>;\n readonly enterButton?: ReactNode;\n readonly loading?: boolean;\n readonly searchIcon?: ReactNode;\n readonly styles?: SlotStyles<SearchSlot>;\n readonly onSearch?: (\n value: string,\n event?:\n | ChangeEvent<HTMLInputElement>\n | MouseEvent<HTMLElement>\n | KeyboardEvent<HTMLInputElement>,\n info?: { readonly source?: \"clear\" | \"input\" },\n ) => void;\n}\n\ninterface SearchButtonElementProps {\n readonly \"aria-busy\"?: boolean;\n readonly className?: string;\n readonly disabled?: boolean;\n readonly style?: CSSProperties;\n readonly onClick?: (event: MouseEvent<HTMLElement>) => void;\n readonly onMouseDown?: (event: MouseEvent<HTMLElement>) => void;\n}\n\nconst InputSearch = forwardRef<InputRef, SearchProps>(function InputSearch(props, ref) {\n const {\n addonAfter,\n className,\n classNames,\n disabled,\n enterButton = false,\n loading = false,\n onChange,\n onCompositionEnd,\n onCompositionStart,\n onPressEnter,\n onSearch,\n searchIcon,\n styles,\n ...inputProps\n } = props;\n const config = useConfig();\n const inputRef = useRef<InputRef>(null);\n const composingRef = useRef(false);\n const mergedDisabled = disabled ?? config.components.Input?.disabled ?? config.disabled;\n\n const triggerSearch = (event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLInputElement>) => {\n if (mergedDisabled || loading) return;\n onSearch?.(inputRef.current?.input?.value ?? \"\", event, { source: \"input\" });\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLElement>) => {\n if (document.activeElement === inputRef.current?.input) event.preventDefault();\n };\n\n const defaultButtonContent = loading ? (\n <Icon className=\"animate-spin\" name=\"refresh\" size={16} />\n ) : (\n (searchIcon ?? <Icon name=\"search\" size={16} />)\n );\n const buttonClassName = slotClass(\n classNames,\n \"button\",\n \"hj-input-search-button\",\n \"inline-flex h-full min-w-8 items-center justify-center gap-1 border-0 bg-transparent px-2 text-[var(--hj-button-default-fg)] transition hover:bg-[var(--hj-button-default-bg-hover)] disabled:cursor-not-allowed disabled:opacity-50\",\n enterButton !== false && \"bg-[var(--hj-color-brand)] text-[var(--hj-button-primary-fg)]\",\n );\n\n let searchButton: ReactNode;\n if (isValidElement<SearchButtonElementProps>(enterButton) && enterButton.type !== Fragment) {\n searchButton = cloneElement(enterButton, {\n \"aria-busy\": loading || undefined,\n className: cn(buttonClassName, enterButton.props.className),\n disabled: mergedDisabled || loading || enterButton.props.disabled,\n onClick: (event) => {\n enterButton.props.onClick?.(event);\n if (!event.defaultPrevented) triggerSearch(event);\n },\n onMouseDown: (event) => {\n enterButton.props.onMouseDown?.(event);\n if (!event.defaultPrevented) handleMouseDown(event);\n },\n style: { ...slotStyle(styles, \"button\"), ...enterButton.props.style },\n });\n } else {\n searchButton = (\n <button\n aria-busy={loading || undefined}\n aria-label={typeof enterButton === \"string\" ? undefined : \"搜索\"}\n className={buttonClassName}\n disabled={mergedDisabled || loading}\n onClick={triggerSearch}\n onMouseDown={handleMouseDown}\n style={slotStyle(styles, \"button\")}\n type=\"button\"\n >\n {typeof enterButton === \"boolean\" || enterButton == null\n ? defaultButtonContent\n : enterButton}\n </button>\n );\n }\n\n const mergedAddonAfter = (\n <span className=\"inline-flex h-full items-stretch\">\n {searchButton}\n {addonAfter == null ? null : <span className=\"inline-flex items-center\">{addonAfter}</span>}\n </span>\n );\n\n return (\n <InternalInput\n {...inputProps}\n addonAfter={mergedAddonAfter}\n className={cn(\n \"hj-input-search\",\n enterButton !== false && \"hj-input-search-with-button\",\n className,\n )}\n classNames={classNames}\n disabled={mergedDisabled}\n onChange={(event) => {\n if (event.type === \"click\") {\n onSearch?.(event.currentTarget.value, event, { source: \"clear\" });\n }\n onChange?.(event);\n }}\n onCompositionEnd={\n ((event) => {\n composingRef.current = false;\n onCompositionEnd?.(event);\n }) satisfies CompositionEventHandler<HTMLInputElement>\n }\n onCompositionStart={\n ((event) => {\n composingRef.current = true;\n onCompositionStart?.(event);\n }) satisfies CompositionEventHandler<HTMLInputElement>\n }\n onPressEnter={(event) => {\n if (composingRef.current || loading) return;\n onPressEnter?.(event);\n triggerSearch(event);\n }}\n ref={composeRef(inputRef, ref)}\n styles={styles}\n type=\"search\"\n />\n );\n});\n\nexport interface PasswordVisibilityToggle {\n readonly tabIndex?: number;\n readonly visible?: boolean;\n readonly onVisibleChange?: (visible: boolean) => void;\n}\n\nexport interface PasswordProps extends InputProps {\n readonly action?: \"click\" | \"hover\";\n readonly iconRender?: (visible: boolean) => ReactNode;\n readonly visibilityToggle?: boolean | PasswordVisibilityToggle;\n}\n\nfunction defaultPasswordIcon(visible: boolean) {\n return (\n <span className=\"relative inline-flex\">\n <Icon name=\"eye\" size={16} />\n {visible ? null : (\n <span\n aria-hidden=\"true\"\n className=\"absolute left-0 top-1/2 h-px w-full -rotate-45 bg-current\"\n />\n )}\n </span>\n );\n}\n\nconst InputPassword = forwardRef<InputRef, PasswordProps>(function InputPassword(props, ref) {\n const {\n action = \"click\",\n className,\n disabled,\n iconRender = defaultPasswordIcon,\n suffix,\n type: _type,\n visibilityToggle = true,\n ...inputProps\n } = props;\n const config = useConfig();\n const mergedDisabled = disabled ?? config.components.Input?.disabled ?? config.disabled;\n const visibilityOptions = typeof visibilityToggle === \"object\" ? visibilityToggle : undefined;\n const [visible, setVisible] = useControlledState(false, visibilityOptions?.visible);\n\n const changeVisibility = (nextVisible: boolean) => {\n if (mergedDisabled || visibilityToggle === false) return;\n setVisible(nextVisible);\n visibilityOptions?.onVisibleChange?.(nextVisible);\n };\n\n const toggleVisibility = () => changeVisibility(!visible);\n\n const visibilityIcon =\n visibilityToggle === false ? null : (\n <button\n aria-label={visible ? \"隐藏密码\" : \"显示密码\"}\n aria-pressed={visible}\n className=\"hj-input-password-icon inline-flex shrink-0 items-center justify-center border-0 bg-transparent p-0 text-[var(--hj-input-icon)]\"\n disabled={mergedDisabled}\n onBlur={action === \"hover\" ? () => changeVisibility(false) : undefined}\n onClick={action === \"click\" ? toggleVisibility : undefined}\n onFocus={action === \"hover\" ? () => changeVisibility(true) : undefined}\n onMouseDown={(event) => event.preventDefault()}\n onMouseEnter={action === \"hover\" ? () => changeVisibility(true) : undefined}\n onMouseLeave={action === \"hover\" ? () => changeVisibility(false) : undefined}\n tabIndex={mergedDisabled ? -1 : (visibilityOptions?.tabIndex ?? 0)}\n type=\"button\"\n >\n {iconRender(visible)}\n </button>\n );\n\n return (\n <InternalInput\n {...inputProps}\n className={cn(\"hj-input-password\", className)}\n disabled={mergedDisabled}\n ref={ref}\n suffix={\n visibilityIcon || suffix ? (\n <span className=\"inline-flex items-center gap-[var(--hj-input-gap)]\">\n {visibilityIcon}\n {suffix}\n </span>\n ) : undefined\n }\n type={visible ? \"text\" : \"password\"}\n />\n );\n});\n\ntype TextAreaSlot = \"root\" | \"textarea\" | \"clear\" | \"count\";\n\nexport interface TextAreaProps\n extends Omit<RcTextAreaProps, \"classNames\" | \"prefixCls\" | \"styles\" | \"suffix\"> {\n /** @deprecated Use variant instead. */\n readonly bordered?: boolean;\n readonly classNames?: SlotClassNames<TextAreaSlot>;\n readonly rootClassName?: string;\n readonly size?: InputSize;\n readonly status?: InputStatus;\n readonly styles?: SlotStyles<TextAreaSlot>;\n readonly variant?: InputVariant;\n}\n\nexport interface TextAreaRef {\n readonly nativeElement: HTMLElement | null;\n readonly resizableTextArea?: RcTextAreaRef[\"resizableTextArea\"];\n readonly blur: () => void;\n readonly focus: (options?: InputFocusOptions) => void;\n}\n\nconst InputTextArea = forwardRef<TextAreaRef, TextAreaProps>(function InputTextArea(props, ref) {\n const {\n allowClear,\n bordered,\n className,\n classNames,\n count,\n disabled,\n rootClassName,\n showCount,\n size,\n status,\n style,\n styles,\n variant,\n ...textAreaProps\n } = props;\n const config = useConfig();\n const groupSize = useContext(InputGroupSizeContext);\n const mergedStatus = useMergedFormItemStatus(status);\n const mergedSize = normalizeInputSize(\n size ?? groupSize ?? config.components.Input?.size,\n config.size,\n );\n const mergedDisabled = disabled ?? config.components.Input?.disabled ?? config.disabled;\n const mergedVariant = getMergedVariant(variant, bordered);\n const mergedAllowClear = mergeAllowClear(allowClear);\n const hasAffix = Boolean(mergedAllowClear || showCount || count?.show);\n const innerRef = useRef<RcTextAreaRef>(null);\n\n useImperativeHandle(ref, () => ({\n blur: () => innerRef.current?.blur(),\n focus: (options) => {\n triggerFocus(innerRef.current?.resizableTextArea?.textArea, options);\n },\n nativeElement: innerRef.current?.nativeElement ?? null,\n resizableTextArea: innerRef.current?.resizableTextArea,\n }));\n\n return (\n <RcTextArea\n {...textAreaProps}\n allowClear={mergedAllowClear}\n className={slotClass(\n classNames,\n \"root\",\n \"hj-input-textarea-root\",\n `hj-input-${mergedSize}`,\n nativeSizeClass[mergedSize],\n mergedStatus && `hj-input-status-${mergedStatus}`,\n `hj-input-variant-${mergedVariant}`,\n mergedVariant === \"outlined\" && \"hj-input-variant-default\",\n rootClassName,\n className,\n )}\n classNames={{\n affixWrapper: cn(affixWrapperClass, \"items-start\", `hj-input-affix-wrapper-${mergedSize}`),\n clear: slotClass(\n classNames,\n \"clear\",\n \"shrink-0 text-[var(--hj-input-clear)] transition hover:text-white [&.hj-input-clear-icon-hidden]:invisible\",\n ),\n count: slotClass(classNames, \"count\", \"shrink-0 text-[var(--hj-input-clear)]\"),\n textarea: slotClass(\n classNames,\n \"textarea\",\n hasAffix\n ? \"w-full flex-1 resize-y border-0 bg-transparent text-[var(--hj-input-fg)] outline-none placeholder:text-[var(--hj-input-placeholder)]\"\n : textAreaBaseClass,\n textAreaSizeClass[mergedSize],\n ),\n variant: cn(\n mergedStatus && `hj-input-status-${mergedStatus}`,\n `hj-input-variant-${mergedVariant}`,\n statusClass[mergedStatus],\n variantClassName[mergedVariant],\n ),\n }}\n count={count}\n disabled={mergedDisabled}\n prefixCls=\"hj-input\"\n ref={innerRef}\n showCount={showCount}\n style={slotStyle(styles, \"root\", style)}\n styles={{\n affixWrapper: slotStyle(styles, \"root\"),\n clear: slotStyle(styles, \"clear\"),\n count: slotStyle(styles, \"count\"),\n textarea: slotStyle(styles, \"textarea\"),\n }}\n />\n );\n});\n\ntype OTPSlot = \"root\" | \"input\" | \"separator\";\n\nexport interface OTPProps\n extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"defaultValue\" | \"onChange\" | \"onFocus\" | \"onInput\"\n > {\n readonly autoComplete?: string;\n readonly classNames?: SlotClassNames<OTPSlot>;\n readonly defaultValue?: string;\n readonly disabled?: boolean;\n readonly formatter?: (value: string) => string;\n readonly inputMode?: InputHTMLAttributes<HTMLInputElement>[\"inputMode\"];\n readonly length?: number;\n readonly mask?: boolean | string;\n readonly rootClassName?: string;\n readonly separator?: ReactNode | ((index: number) => ReactNode);\n readonly size?: InputSize;\n readonly status?: InputStatus;\n readonly styles?: SlotStyles<OTPSlot>;\n readonly type?: InputHTMLAttributes<HTMLInputElement>[\"type\"];\n readonly value?: string;\n readonly variant?: InputVariant;\n readonly onChange?: (value: string) => void;\n readonly onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n readonly onInput?: (value: string[]) => void;\n}\n\nexport interface OTPRef {\n readonly nativeElement: HTMLDivElement;\n readonly blur: () => void;\n readonly focus: () => void;\n}\n\nfunction stringToCells(value: string | null | undefined) {\n return Array.from(value ?? \"\");\n}\n\nconst InputOTP = forwardRef<OTPRef, OTPProps>(function InputOTP(props, ref) {\n const {\n autoComplete,\n autoFocus,\n className,\n classNames,\n defaultValue,\n disabled,\n formatter,\n inputMode,\n length = 6,\n mask,\n onChange,\n onFocus,\n onInput,\n rootClassName,\n separator,\n size,\n status,\n style,\n styles,\n type,\n value,\n variant = \"outlined\",\n ...rootProps\n } = props;\n const config = useConfig();\n const mergedStatus = useMergedFormItemStatus(status);\n const mergedLength = Math.max(1, Math.floor(length));\n const mergedSize = normalizeInputSize(size ?? config.components.Input?.size, config.size);\n const mergedDisabled = disabled ?? config.components.Input?.disabled ?? config.disabled;\n const formatValue = (text: string) => (formatter ? formatter(text) : text);\n const [innerCells, setInnerCells] = useState(() =>\n stringToCells(formatValue(defaultValue ?? \"\")).slice(0, mergedLength),\n );\n const controlled = value !== undefined;\n const valueCells = controlled\n ? stringToCells(formatValue(value ?? \"\")).slice(0, mergedLength)\n : innerCells.slice(0, mergedLength);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRefs = useRef<Record<number, InputRef | null>>({});\n\n const focusCell = (index: number) => {\n if (index >= 0 && index < mergedLength) inputRefs.current[index]?.focus();\n };\n\n useImperativeHandle(\n ref,\n () => ({\n blur: () => {\n for (let index = 0; index < mergedLength; index += 1) {\n inputRefs.current[index]?.blur();\n }\n },\n focus: () => inputRefs.current[0]?.focus(),\n nativeElement: containerRef.current as HTMLDivElement,\n }),\n [mergedLength],\n );\n\n const patchValue = (index: number, text: string) => {\n let nextCells = [...valueCells];\n for (let fillIndex = 0; fillIndex < index; fillIndex += 1) {\n if (!nextCells[fillIndex]) nextCells[fillIndex] = \"\";\n }\n if (text.length <= 1) nextCells[index] = text;\n else nextCells = nextCells.slice(0, index).concat(stringToCells(text));\n nextCells = nextCells.slice(0, mergedLength);\n while (nextCells.length && !nextCells.at(-1)) nextCells.pop();\n\n const formatted = formatValue(nextCells.map((cell) => cell || \" \").join(\"\"));\n return stringToCells(formatted)\n .slice(0, mergedLength)\n .map((cell, cellIndex) =>\n cell === \" \" && !nextCells[cellIndex] ? nextCells[cellIndex] : cell,\n );\n };\n\n const commitCells = (nextCells: string[]) => {\n if (!controlled) setInnerCells(nextCells);\n onInput?.([...nextCells]);\n const nextValue = nextCells.join(\"\");\n const currentValue = valueCells.join(\"\");\n if (\n nextCells.length === mergedLength &&\n nextCells.every(Boolean) &&\n nextValue !== currentValue\n ) {\n onChange?.(nextValue);\n }\n };\n\n const syncSelection = (index: number) => {\n raf(() => {\n const input = inputRefs.current[index]?.input;\n if (input && document.activeElement === input) input.select();\n });\n };\n\n const handleInput = (index: number, event: FormEvent<HTMLInputElement>) => {\n const text = event.currentTarget.value;\n const nextCells = patchValue(index, text);\n const nextIndex = Math.min(index + stringToCells(text).length, mergedLength - 1);\n if (nextIndex !== index && nextCells[index] !== undefined) focusCell(nextIndex);\n commitCells(nextCells);\n };\n\n return (\n <div\n {...rootProps}\n aria-disabled={mergedDisabled || undefined}\n className={slotClass(\n classNames,\n \"root\",\n \"hj-input-otp hj-otp\",\n `hj-input-otp-${mergedSize}`,\n nativeSizeClass[mergedSize],\n mergedStatus && `hj-input-status-${mergedStatus}`,\n `hj-input-variant-${variant}`,\n \"inline-flex items-center gap-[var(--hj-input-gap)]\",\n mergedDisabled && \"hj-input-otp-disabled opacity-50\",\n rootClassName,\n className,\n )}\n ref={containerRef}\n role={rootProps.role ?? \"group\"}\n style={slotStyle(styles, \"root\", style)}\n >\n {Array.from({ length: mergedLength }, (_, index) => {\n const singleValue = valueCells[index] ?? \"\";\n const customMask = typeof mask === \"string\" && singleValue !== \"\";\n const separatorNode = typeof separator === \"function\" ? separator(index) : separator;\n\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: OTP cells are positional by API.\n <Fragment key={`otp-${index}`}>\n <span className=\"hj-input-otp-cell relative inline-flex shrink-0\">\n <InternalInput\n aria-label={`OTP Input ${index + 1}`}\n autoComplete={autoComplete}\n autoFocus={index === 0 && autoFocus}\n className={slotClass(\n classNames,\n \"input\",\n \"hj-input-otp-input\",\n otpCellSizeClass[mergedSize],\n customMask && \"text-transparent caret-[var(--hj-input-fg)]\",\n )}\n disabled={mergedDisabled}\n htmlSize={1}\n inputMode={inputMode}\n onFocus={(event) => {\n for (let previous = 0; previous < index; previous += 1) {\n if (!inputRefs.current[previous]?.input?.value) {\n focusCell(previous);\n break;\n }\n }\n onFocus?.(event);\n syncSelection(index);\n }}\n onInput={(event) => handleInput(index, event)}\n onKeyDown={(event) => {\n if (event.key === \"ArrowLeft\") focusCell(index - 1);\n else if (event.key === \"ArrowRight\" && singleValue) focusCell(index + 1);\n else if (event.key === \"Backspace\" && !singleValue) focusCell(index - 1);\n else if (event.key === \"z\" && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n }\n syncSelection(index);\n }}\n onMouseDown={() => syncSelection(index)}\n onMouseUp={() => syncSelection(index)}\n ref={(input) => {\n inputRefs.current[index] = input;\n }}\n size={mergedSize}\n status={mergedStatus}\n style={slotStyle(styles, \"input\")}\n type={mask === true ? \"password\" : (type ?? \"text\")}\n value={singleValue}\n variant={variant}\n />\n {customMask ? (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 inline-flex items-center justify-center text-[var(--hj-input-fg)]\"\n >\n {mask}\n </span>\n ) : null}\n </span>\n {index < mergedLength - 1 && separatorNode != null ? (\n <span\n className={slotClass(\n classNames,\n \"separator\",\n \"hj-input-otp-separator hj-otp-separator\",\n )}\n style={slotStyle(styles, \"separator\")}\n >\n {separatorNode}\n </span>\n ) : null}\n </Fragment>\n );\n })}\n </div>\n );\n});\n\ntype CompoundedInput = typeof InternalInput & {\n Group: typeof InputGroup;\n OTP: typeof InputOTP;\n Password: typeof InputPassword;\n Search: typeof InputSearch;\n TextArea: typeof InputTextArea;\n};\n\nexport const Input = InternalInput as CompoundedInput;\nInput.Group = InputGroup;\nInput.OTP = InputOTP;\nInput.Password = InputPassword;\nInput.Search = InputSearch;\nInput.TextArea = InputTextArea;\n\nexport type InputComponent = (props: InputProps & RefAttributes<InputRef>) => ReactElement | null;\n",
|
|
30
|
+
"import type { ReactNode } from \"react\";\nimport { createContext, useContext } from \"react\";\n\nexport type FormItemStatus = \"\" | \"error\" | \"warning\" | \"success\" | \"validating\";\nexport type FormControlStatus = FormItemStatus | \"default\";\n\nexport interface FormItemStatusContextValue {\n readonly errors?: ReactNode[];\n readonly isFormItemInput?: boolean;\n readonly status?: FormItemStatus;\n readonly warnings?: ReactNode[];\n}\n\nexport interface FormItemUseStatusResult {\n readonly errors: ReactNode[];\n readonly status?: FormItemStatus;\n readonly warnings: ReactNode[];\n}\n\nconst EMPTY_STATUS_NODES: ReactNode[] = [];\n\nexport const FormItemInputContext = createContext<FormItemStatusContextValue>({});\nFormItemInputContext.displayName = \"FormItemInputContext\";\n\nexport function getMergedFormItemStatus(\n contextStatus: FormItemStatus | undefined,\n customStatus: FormControlStatus | undefined,\n): FormItemStatus {\n const nativeCustomStatus = customStatus === \"default\" ? \"\" : customStatus;\n return nativeCustomStatus || contextStatus || \"\";\n}\n\nexport function useMergedFormItemStatus(customStatus?: FormControlStatus): FormItemStatus {\n const { status: contextStatus } = useContext(FormItemInputContext);\n return getMergedFormItemStatus(contextStatus, customStatus);\n}\n\nexport function useFormItemStatus(): FormItemUseStatusResult {\n const {\n errors = EMPTY_STATUS_NODES,\n status,\n warnings = EMPTY_STATUS_NODES,\n } = useContext(FormItemInputContext);\n return { errors, status, warnings };\n}\n",
|
|
31
|
+
"import type { ReactNode } from \"react\";\nimport { Text, Title } from \"./Typography\";\n\ninterface StatCardProps {\n readonly accent?: ReactNode;\n readonly className?: string;\n readonly label: ReactNode;\n readonly meta?: ReactNode;\n readonly value: ReactNode;\n}\n\nexport function StatCard({ accent, className = \"\", label, meta, value }: StatCardProps) {\n return (\n <div className={`rounded-[4px] border border-[#24303a] bg-[#151f29] p-3 ${className}`}>\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <Text as=\"div\" className=\"truncate\" variant=\"muted\">\n {label}\n </Text>\n <Title as=\"p\" className=\"mt-1 text-2xl\" variant=\"page\">\n {value}\n </Title>\n </div>\n {accent ? <div className=\"shrink-0 text-[#d6a84a]\">{accent}</div> : null}\n </div>\n {meta ? (\n <Text as=\"div\" className=\"mt-2 truncate\" variant=\"muted\">\n {meta}\n </Text>\n ) : null}\n </div>\n );\n}\n",
|
|
32
|
+
"import type { ReactNode } from \"react\";\nimport { ProgressBar } from \"./ProgressBar\";\n\ninterface StatusItemProps {\n readonly className?: string;\n readonly icon?: ReactNode;\n readonly label: string;\n readonly max?: number;\n readonly orientation?: \"column\" | \"row\";\n readonly progress?: number;\n readonly value: string;\n}\n\nexport function StatusItem({\n className = \"\",\n icon,\n label,\n max = 100,\n orientation,\n progress,\n value,\n}: StatusItemProps) {\n if (icon === undefined && orientation === undefined && progress === undefined) {\n return (\n <div\n className={`flex items-center justify-between gap-3 rounded-[4px] border border-[#24303a] bg-[#111923] px-3 py-2 ${className}`}\n >\n <dt className=\"text-[#6f7985]\">{label}</dt>\n <dd className=\"font-mono text-white\">{value}</dd>\n </div>\n );\n }\n\n const layoutClass = orientation === \"column\" ? \"flex-col text-center\" : \"items-center\";\n return (\n <div className={`flex gap-3 rounded-[4px] bg-[#151f29] p-3 ${layoutClass} ${className}`}>\n {icon ? <div className=\"shrink-0\">{icon}</div> : null}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"truncate text-sm text-[#f2f4f6]\">{label}</span>\n <span className=\"shrink-0 text-xs text-[#a5adb8]\">{value}</span>\n </div>\n {progress === undefined ? null : (\n <ProgressBar className=\"mt-2\" max={max} value={progress} />\n )}\n </div>\n </div>\n );\n}\n",
|
|
33
|
+
"import type { ReactNode } from \"react\";\n\ntype TagTone = \"amber\" | \"slate\" | \"green\" | \"red\";\n\nconst toneClass: Record<TagTone, string> = {\n amber: \"border-[#6f5529] bg-[#2a2115] text-[#d6a84a]\",\n slate: \"border-[#3b4652] bg-[#161d24] text-[#aab0b8]\",\n green: \"border-[#3f6f36] bg-[#172a19] text-[#69c04a]\",\n red: \"border-[#ff8f86]/50 bg-[#3a2426] text-[#ff8f86]\",\n};\n\nexport function TagPill({\n children,\n tone = \"slate\",\n}: {\n readonly children: ReactNode;\n readonly tone?: TagTone;\n}) {\n return (\n <span\n className={`inline-flex h-5 items-center rounded-[3px] border px-1.5 text-[11px] ${toneClass[tone]}`}\n >\n {children}\n </span>\n );\n}\n",
|
|
34
|
+
"import { composeRefs, useControllableValue, useLatest, warning } from \"@996-design/996-utils\";\nimport ResizeObserver from \"@rc-component/resize-observer\";\nimport { raf, useEvent } from \"@rc-component/util\";\nimport type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { useConfig } from \"../ConfigProvider\";\nimport type { TargetContainer } from \"../ConfigProvider\";\nimport { cn } from \"../utils/cn\";\nimport { getFixedBottom, getFixedContainerOffset, getFixedTop, getTargetRect } from \"./affix/utils\";\n\nconst TRIGGER_EVENTS = [\n \"resize\",\n \"scroll\",\n \"touchstart\",\n \"touchmove\",\n \"touchend\",\n \"pageshow\",\n \"load\",\n] as const;\n\nconst AFFIX_STATUS_NONE = 0;\nconst AFFIX_STATUS_PREPARE = 1;\n\ntype AffixStatus = typeof AFFIX_STATUS_NONE | typeof AFFIX_STATUS_PREPARE;\n\nfunction getDefaultTarget() {\n return typeof window === \"undefined\" ? null : window;\n}\n\nfunction throttleByAnimationFrame<Args extends unknown[]>(callback: (...args: Args) => void) {\n let requestId: number | null = null;\n\n const throttled = (...args: Args) => {\n if (requestId !== null) return;\n requestId = raf(() => {\n requestId = null;\n callback(...args);\n });\n };\n\n throttled.cancel = () => {\n if (requestId !== null) {\n raf.cancel(requestId);\n }\n requestId = null;\n };\n\n return throttled;\n}\n\nfunction normalizeTarget(target: TargetContainer | null | undefined): Window | HTMLElement | null {\n if (typeof window !== \"undefined\" && target === window) {\n return window;\n }\n if (typeof HTMLElement !== \"undefined\" && target instanceof HTMLElement) {\n return target;\n }\n if (typeof ShadowRoot !== \"undefined\" && target instanceof ShadowRoot) {\n return target.host instanceof HTMLElement ? target.host : null;\n }\n return null;\n}\n\nexport interface AffixProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\" | \"onChange\"> {\n readonly children: ReactNode;\n readonly offsetBottom?: number;\n readonly offsetTop?: number;\n readonly prefixCls?: string;\n readonly rootClassName?: string;\n readonly target?: () => Window | HTMLElement | null;\n readonly onChange?: (affixed?: boolean) => void;\n /** Test hook called after an update request has been measured. */\n readonly onTestUpdate?: () => void;\n /** @internal AntD-compatible test hook. */\n readonly onTestUpdatePosition?: () => void;\n}\n\nexport interface AffixRef {\n readonly nativeElement: HTMLDivElement;\n readonly updatePosition: ReturnType<typeof throttleByAnimationFrame>;\n}\n\nexport const Affix = forwardRef<AffixRef, AffixProps>(function Affix(\n {\n children,\n className = \"\",\n offsetBottom,\n offsetTop,\n onChange,\n onTestUpdate,\n onTestUpdatePosition,\n prefixCls,\n rootClassName,\n style,\n target,\n ...props\n },\n ref,\n) {\n const config = useConfig();\n const componentConfig = config.components.Affix as\n | { readonly className?: string; readonly style?: CSSProperties }\n | undefined;\n const affixPrefixCls = config.getPrefixCls(\"affix\", prefixCls);\n\n const [affixStyle, setAffixStyle] = useState<CSSProperties>();\n const [placeholderStyle, setPlaceholderStyle] = useState<CSSProperties>();\n const statusRef = useRef<AffixStatus>(AFFIX_STATUS_NONE);\n const lastAffixRef = useRef(false);\n const affixStyleRef = useRef<CSSProperties | undefined>(undefined);\n const prevTargetRef = useRef<Window | HTMLElement | null>(null);\n const prevListenerRef = useRef<EventListener | null>(null);\n const placeholderRef = useRef<HTMLDivElement>(null);\n const fixedRef = useRef<HTMLDivElement>(null);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n affixStyleRef.current = affixStyle;\n\n const targetFunc: () => Window | HTMLElement | null =\n target ??\n (config.getTargetContainer\n ? () => normalizeTarget(config.getTargetContainer?.() ?? null)\n : getDefaultTarget);\n const internalOffsetTop = offsetBottom === undefined && offsetTop === undefined ? 0 : offsetTop;\n\n const commitMeasure = useEvent(\n (nextAffixStyle?: CSSProperties, nextPlaceholderStyle?: CSSProperties) => {\n const nextAffix = Boolean(nextAffixStyle);\n if (lastAffixRef.current !== nextAffix) {\n lastAffixRef.current = nextAffix;\n onChange?.(nextAffix);\n }\n affixStyleRef.current = nextAffixStyle;\n setAffixStyle(nextAffixStyle);\n setPlaceholderStyle(nextPlaceholderStyle);\n },\n );\n\n const measure = useEvent(() => {\n if (\n statusRef.current !== AFFIX_STATUS_PREPARE ||\n !fixedRef.current ||\n !placeholderRef.current\n ) {\n return;\n }\n\n const targetNode = targetFunc();\n const placeholderNode = placeholderRef.current;\n if (!targetNode) {\n statusRef.current = AFFIX_STATUS_NONE;\n commitMeasure();\n return;\n }\n\n const placeholderRect = getTargetRect(placeholderNode);\n if (\n placeholderRect.top === 0 &&\n placeholderRect.left === 0 &&\n placeholderRect.width === 0 &&\n placeholderRect.height === 0\n ) {\n return;\n }\n\n const targetRect = getTargetRect(targetNode);\n const fixedTop = getFixedTop(placeholderRect, targetRect, internalOffsetTop);\n const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom);\n const containerOffset = getFixedContainerOffset(fixedRef.current);\n let nextAffixStyle: CSSProperties | undefined;\n\n if (fixedTop !== undefined) {\n nextAffixStyle = {\n position: \"fixed\",\n top: fixedTop - containerOffset.top,\n width: placeholderRect.width,\n height: placeholderRect.height,\n };\n } else if (fixedBottom !== undefined) {\n nextAffixStyle = {\n position: \"fixed\",\n bottom: fixedBottom - containerOffset.bottom,\n width: placeholderRect.width,\n height: placeholderRect.height,\n };\n }\n\n statusRef.current = AFFIX_STATUS_NONE;\n commitMeasure(\n nextAffixStyle,\n nextAffixStyle ? { width: placeholderRect.width, height: placeholderRect.height } : undefined,\n );\n });\n\n const prepareMeasure = useEvent(() => {\n statusRef.current = AFFIX_STATUS_PREPARE;\n measure();\n onTestUpdate?.();\n onTestUpdatePosition?.();\n });\n\n const updatePositionRef = useRef<ReturnType<typeof throttleByAnimationFrame> | null>(null);\n if (!updatePositionRef.current) {\n updatePositionRef.current = throttleByAnimationFrame(prepareMeasure);\n }\n const updatePosition = updatePositionRef.current;\n\n const lazyMeasure = useEvent(() => {\n const currentAffixStyle = affixStyleRef.current;\n const targetNode = targetFunc();\n const placeholderNode = placeholderRef.current;\n const fixedNode = fixedRef.current;\n\n if (currentAffixStyle && targetNode && placeholderNode && fixedNode) {\n const targetRect = getTargetRect(targetNode);\n const placeholderRect = getTargetRect(placeholderNode);\n const fixedTop = getFixedTop(placeholderRect, targetRect, internalOffsetTop);\n const fixedBottom = getFixedBottom(placeholderRect, targetRect, offsetBottom);\n const containerOffset = getFixedContainerOffset(fixedNode);\n\n if (\n (fixedTop !== undefined && currentAffixStyle.top === fixedTop - containerOffset.top) ||\n (fixedBottom !== undefined &&\n currentAffixStyle.bottom === fixedBottom - containerOffset.bottom)\n ) {\n return;\n }\n }\n\n prepareMeasure();\n });\n\n const lazyUpdatePositionRef = useRef<ReturnType<typeof throttleByAnimationFrame> | null>(null);\n if (!lazyUpdatePositionRef.current) {\n lazyUpdatePositionRef.current = throttleByAnimationFrame(lazyMeasure);\n }\n const lazyUpdatePosition = lazyUpdatePositionRef.current;\n\n const removeTargetListeners = useEvent(\n (listenerTarget: Window | HTMLElement | null, listener: EventListener | null) => {\n if (!listenerTarget || !listener) return;\n for (const eventName of TRIGGER_EVENTS) {\n listenerTarget.removeEventListener(eventName, listener);\n }\n },\n );\n\n const addListeners = useEvent(() => {\n const listenerTarget = targetFunc();\n if (!listenerTarget) return;\n\n removeTargetListeners(prevTargetRef.current, prevListenerRef.current);\n const listener = lazyUpdatePosition as EventListener;\n for (const eventName of TRIGGER_EVENTS) {\n listenerTarget.addEventListener(eventName, listener);\n }\n prevTargetRef.current = listenerTarget;\n prevListenerRef.current = listener;\n });\n\n const removeListeners = useEvent(() => {\n removeTargetListeners(targetFunc(), lazyUpdatePosition as EventListener);\n removeTargetListeners(prevTargetRef.current, prevListenerRef.current);\n prevTargetRef.current = null;\n prevListenerRef.current = null;\n updatePosition.cancel();\n lazyUpdatePosition.cancel();\n });\n\n useImperativeHandle(\n ref,\n () => ({\n nativeElement: placeholderRef.current as HTMLDivElement,\n updatePosition,\n }),\n [updatePosition],\n );\n\n useEffect(() => {\n timerRef.current = setTimeout(addListeners);\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n removeListeners();\n };\n }, [addListeners, removeListeners]);\n\n // Listener ownership must be refreshed when the target factory resolves differently.\n // biome-ignore lint/correctness/useExhaustiveDependencies: target factories are intentional effect triggers.\n useEffect(() => {\n addListeners();\n return removeListeners;\n }, [addListeners, config.getTargetContainer, removeListeners, target]);\n\n // A changed offset or target requires an immediate re-measure even before the next scroll event.\n // biome-ignore lint/correctness/useExhaustiveDependencies: measurement inputs are intentional effect triggers.\n useEffect(() => {\n updatePosition();\n }, [config.getTargetContainer, offsetBottom, offsetTop, target, updatePosition]);\n\n return (\n <ResizeObserver onResize={updatePosition}>\n <div\n {...props}\n className={cn(className, componentConfig?.className)}\n ref={placeholderRef}\n style={{ ...componentConfig?.style, ...style }}\n >\n {affixStyle ? <div aria-hidden=\"true\" style={placeholderStyle} /> : null}\n <div\n className={cn(\n affixStyle && \"hj-affix\",\n affixStyle && affixPrefixCls !== \"hj-affix\" && affixPrefixCls,\n affixStyle && rootClassName,\n )}\n ref={fixedRef}\n style={affixStyle}\n >\n <ResizeObserver onResize={updatePosition}>{children}</ResizeObserver>\n </div>\n </div>\n </ResizeObserver>\n );\n});\n\nAffix.displayName = \"Affix\";\n\nexport interface BorderBeamProps extends HTMLAttributes<HTMLDivElement> {\n readonly children?: ReactNode;\n readonly duration?: number;\n}\n\nexport function BorderBeam({\n children,\n className = \"\",\n duration = 2600,\n style,\n ...props\n}: BorderBeamProps) {\n return (\n <div\n className={cn(\n \"relative overflow-hidden rounded-[var(--hj-radius-md)] border border-[var(--hj-color-web-border)]\",\n className,\n )}\n style={{ \"--hj-border-beam-duration\": `${duration}ms`, ...style } as CSSProperties}\n {...props}\n >\n <span className=\"pointer-events-none absolute inset-0 rounded-[inherit] bg-[conic-gradient(from_0deg,transparent_0deg,var(--hj-color-brand)_80deg,transparent_120deg)] opacity-60 [animation:hj-border-beam_var(--hj-border-beam-duration)_linear_infinite]\" />\n <span className=\"relative z-[1] block rounded-[inherit] bg-[var(--hj-color-web-surface)]\">\n {children}\n </span>\n </div>\n );\n}\n\nexport const Util = {\n composeRefs,\n useControllableValue,\n useLatest,\n warning,\n};\n",
|
|
35
|
+
"export type AffixTarget = HTMLElement | Window;\n\nexport interface FixedContainerOffset {\n readonly bottom: number;\n readonly top: number;\n}\n\nexport function getTargetRect(target: AffixTarget): DOMRect {\n if (typeof window !== \"undefined\" && target === window) {\n return { top: 0, bottom: window.innerHeight } as DOMRect;\n }\n return (target as HTMLElement).getBoundingClientRect();\n}\n\nexport function getFixedTop(placeholderRect: DOMRect, targetRect: DOMRect, offsetTop?: number) {\n if (\n offsetTop !== undefined &&\n Math.round(targetRect.top) > Math.round(placeholderRect.top) - offsetTop\n ) {\n return offsetTop + targetRect.top;\n }\n return undefined;\n}\n\nexport function getFixedBottom(\n placeholderRect: DOMRect,\n targetRect: DOMRect,\n offsetBottom?: number,\n) {\n if (\n offsetBottom !== undefined &&\n Math.round(targetRect.bottom) < Math.round(placeholderRect.bottom) + offsetBottom\n ) {\n return offsetBottom + window.innerHeight - targetRect.bottom;\n }\n return undefined;\n}\n\nfunction createsFixedContainingBlock(element: HTMLElement) {\n const view = element.ownerDocument.defaultView;\n if (!view) return false;\n return view.getComputedStyle(element).transform !== \"none\";\n}\n\n/** A transformed ancestor makes `position: fixed` relative to that ancestor instead of the viewport. */\nexport function getFixedContainerOffset(element: HTMLElement): FixedContainerOffset {\n const view = element.ownerDocument.defaultView;\n if (!view) return { top: 0, bottom: 0 };\n\n let parent = element.parentElement;\n while (parent) {\n if (createsFixedContainingBlock(parent)) {\n const rect = parent.getBoundingClientRect();\n return {\n top: rect.top,\n bottom: view.innerHeight - rect.bottom,\n };\n }\n parent = parent.parentElement;\n }\n\n return { top: 0, bottom: 0 };\n}\n",
|
|
36
|
+
"export const themeToken = {\n color: {\n brand: \"var(--hj-color-brand)\",\n brandHover: \"var(--hj-color-brand-hover)\",\n brandActive: \"var(--hj-color-brand-active)\",\n brandWeak: \"var(--hj-color-brand-weak)\",\n success: \"var(--hj-color-success)\",\n warning: \"var(--hj-color-warning)\",\n info: \"var(--hj-color-info)\",\n danger: \"var(--hj-color-danger)\",\n dangerSoft: \"var(--hj-color-danger-soft)\",\n purchase: \"var(--hj-color-purchase)\",\n webPage: \"var(--hj-color-web-page)\",\n webBg: \"var(--hj-color-web-bg)\",\n webSurface: \"var(--hj-color-web-surface)\",\n webControl: \"var(--hj-color-web-control)\",\n webSurfaceRaised: \"var(--hj-color-web-surface-raised)\",\n webSurfaceActive: \"var(--hj-color-web-surface-active)\",\n webBorder: \"var(--hj-color-web-border)\",\n webBorderStrong: \"var(--hj-color-web-border-strong)\",\n webForeground: \"var(--hj-color-web-foreground)\",\n webForeground80: \"var(--hj-color-web-foreground-80)\",\n webMuted: \"var(--hj-color-web-muted)\",\n webSubtle: \"var(--hj-color-web-subtle)\",\n webDisabled: \"var(--hj-color-web-disabled)\",\n adminBrand: \"var(--hj-color-admin-brand)\",\n adminBrandHover: \"var(--hj-color-admin-brand-hover)\",\n adminBg: \"var(--hj-color-admin-bg)\",\n adminSurface: \"var(--hj-color-admin-surface)\",\n adminSurfaceMuted: \"var(--hj-color-admin-surface-muted)\",\n adminBorder: \"var(--hj-color-admin-border)\",\n adminBorderStrong: \"var(--hj-color-admin-border-strong)\",\n adminForeground: \"var(--hj-color-admin-foreground)\",\n adminMuted: \"var(--hj-color-admin-muted)\",\n },\n radius: {\n xs: \"var(--hj-radius-xs)\",\n sm: \"var(--hj-radius-sm)\",\n md: \"var(--hj-radius-md)\",\n lg: \"var(--hj-radius-lg)\",\n },\n button: {\n fontFamily: \"var(--hj-button-font-family)\",\n fontWeight: \"var(--hj-button-font-weight)\",\n lightFontFamily: \"var(--hj-button-light-font-family)\",\n lightFontWeight: \"var(--hj-button-light-font-weight)\",\n heightXs: \"var(--hj-button-xs-height)\",\n heightSm: \"var(--hj-button-sm-height)\",\n heightMd: \"var(--hj-button-md-height)\",\n heightLg: \"var(--hj-button-lg-height)\",\n minWidthXs: \"var(--hj-button-xs-min-width)\",\n minWidthSm: \"var(--hj-button-sm-min-width)\",\n minWidthMd: \"var(--hj-button-md-min-width)\",\n minWidthLg: \"var(--hj-button-lg-min-width)\",\n lineHeightXs: \"var(--hj-button-xs-line-height)\",\n lineHeightSm: \"var(--hj-button-sm-line-height)\",\n lineHeightMd: \"var(--hj-button-md-line-height)\",\n lineHeightLg: \"var(--hj-button-lg-line-height)\",\n primaryBg: \"var(--hj-button-primary-bg)\",\n primaryBgHover: \"var(--hj-button-primary-bg-hover)\",\n primaryBgActive: \"var(--hj-button-primary-bg-active)\",\n defaultBg: \"var(--hj-button-default-bg)\",\n defaultBgHover: \"var(--hj-button-default-bg-hover)\",\n defaultBgActive: \"var(--hj-button-default-bg-active)\",\n lightBg: \"var(--hj-button-light-bg)\",\n lightBgHover: \"var(--hj-button-light-bg-hover)\",\n lightBgActive: \"var(--hj-button-light-bg-active)\",\n lightBorder: \"var(--hj-button-light-border)\",\n lightBorderHover: \"var(--hj-button-light-border-hover)\",\n lightForeground: \"var(--hj-button-light-fg)\",\n translucentBg: \"var(--hj-button-translucent-bg)\",\n translucentBgHover: \"var(--hj-button-translucent-bg-hover)\",\n translucentBgActive: \"var(--hj-button-translucent-bg-active)\",\n toggleBg: \"var(--hj-button-toggle-bg)\",\n toggleBgHover: \"var(--hj-button-toggle-bg-hover)\",\n toggleBgActive: \"var(--hj-button-toggle-bg-active)\",\n textForeground: \"var(--hj-button-text-fg)\",\n textDefaultForeground: \"var(--hj-button-text-default-fg)\",\n groupSeparator: \"var(--hj-button-group-separator)\",\n },\n iconButton: {\n defaultBorder: \"var(--hj-icon-button-default-border)\",\n defaultBackground: \"var(--hj-icon-button-default-bg)\",\n defaultForeground: \"var(--hj-icon-button-default-fg)\",\n defaultBorderHover: \"var(--hj-icon-button-default-border-hover)\",\n defaultForegroundHover: \"var(--hj-icon-button-default-fg-hover)\",\n primaryBorder: \"var(--hj-icon-button-primary-border)\",\n primaryBackground: \"var(--hj-icon-button-primary-bg)\",\n primaryBackgroundHover: \"var(--hj-icon-button-primary-bg-hover)\",\n primaryForeground: \"var(--hj-icon-button-primary-fg)\",\n ghostBorder: \"var(--hj-icon-button-ghost-border)\",\n ghostBackground: \"var(--hj-icon-button-ghost-bg)\",\n ghostForeground: \"var(--hj-icon-button-ghost-fg)\",\n ghostForegroundHover: \"var(--hj-icon-button-ghost-fg-hover)\",\n selectedBorder: \"var(--hj-icon-button-selected-border)\",\n selectedBackground: \"var(--hj-icon-button-selected-bg)\",\n selectedForeground: \"var(--hj-icon-button-selected-fg)\",\n },\n input: {\n heightSm: \"var(--hj-input-height-sm)\",\n heightMd: \"var(--hj-input-height-md)\",\n heightLg: \"var(--hj-input-height-lg)\",\n paddingX: \"var(--hj-input-padding-x)\",\n gap: \"var(--hj-input-gap)\",\n fontSize: \"var(--hj-input-font-size)\",\n lineHeight: \"var(--hj-input-line-height)\",\n radius: \"var(--hj-input-radius)\",\n background: \"var(--hj-input-bg)\",\n backgroundActive: \"var(--hj-input-bg-active)\",\n border: \"var(--hj-input-border)\",\n borderActive: \"var(--hj-input-border-active)\",\n foreground: \"var(--hj-input-fg)\",\n placeholder: \"var(--hj-input-placeholder)\",\n icon: \"var(--hj-input-icon)\",\n clear: \"var(--hj-input-clear)\",\n addon: \"var(--hj-input-addon)\",\n addonBackground: \"var(--hj-input-addon-bg)\",\n addonForeground: \"var(--hj-input-addon-fg)\",\n },\n checkbox: {\n size: \"var(--hj-checkbox-size)\",\n borderWidth: \"var(--hj-checkbox-border-width)\",\n border: \"var(--hj-checkbox-border)\",\n borderHover: \"var(--hj-checkbox-border-hover)\",\n background: \"var(--hj-checkbox-bg)\",\n backgroundChecked: \"var(--hj-checkbox-bg-checked)\",\n icon: \"var(--hj-checkbox-icon)\",\n label: \"var(--hj-checkbox-label)\",\n labelActive: \"var(--hj-checkbox-label-active)\",\n },\n switch: {\n width: \"var(--hj-switch-width)\",\n height: \"var(--hj-switch-height)\",\n padding: \"var(--hj-switch-padding)\",\n thumbSize: \"var(--hj-switch-thumb-size)\",\n background: \"var(--hj-switch-bg)\",\n backgroundChecked: \"var(--hj-switch-bg-checked)\",\n thumbBackground: \"var(--hj-switch-thumb-bg)\",\n },\n skeleton: {\n background: \"var(--hj-skeleton-bg)\",\n highlight: \"var(--hj-skeleton-highlight)\",\n gap: \"var(--hj-skeleton-gap)\",\n rowHeight: \"var(--hj-skeleton-row-height)\",\n rowGap: \"var(--hj-skeleton-row-gap)\",\n titleHeight: \"var(--hj-skeleton-title-height)\",\n titleMargin: \"var(--hj-skeleton-title-margin)\",\n radius: \"var(--hj-skeleton-radius)\",\n radiusSquare: \"var(--hj-skeleton-radius-square)\",\n sizeSm: \"var(--hj-skeleton-size-sm)\",\n sizeMd: \"var(--hj-skeleton-size-md)\",\n sizeLg: \"var(--hj-skeleton-size-lg)\",\n },\n tooltip: {\n radius: \"var(--hj-tooltip-radius)\",\n height: \"var(--hj-tooltip-height)\",\n minWidth: \"var(--hj-tooltip-min-width)\",\n paddingX: \"var(--hj-tooltip-padding-x)\",\n arrowSize: \"var(--hj-tooltip-arrow-size)\",\n gap: \"var(--hj-tooltip-gap)\",\n lightBg: \"var(--hj-tooltip-light-bg)\",\n lightFg: \"var(--hj-tooltip-light-fg)\",\n darkBg: \"var(--hj-tooltip-dark-bg)\",\n darkFg: \"var(--hj-tooltip-dark-fg)\",\n shadow: \"var(--hj-tooltip-shadow)\",\n },\n message: {\n height: \"var(--hj-message-height)\",\n radius: \"var(--hj-message-radius)\",\n paddingX: \"var(--hj-message-padding-x)\",\n gap: \"var(--hj-message-gap)\",\n background: \"var(--hj-message-bg)\",\n foreground: \"var(--hj-message-fg)\",\n lightBackground: \"var(--hj-message-light-bg)\",\n lightForeground: \"var(--hj-message-light-fg)\",\n actionForeground: \"var(--hj-message-action-fg)\",\n closeForeground: \"var(--hj-message-close-fg)\",\n closeForegroundHover: \"var(--hj-message-close-fg-hover)\",\n iconSize: \"var(--hj-message-icon-size)\",\n success: \"var(--hj-message-success)\",\n warning: \"var(--hj-message-warning)\",\n error: \"var(--hj-message-error)\",\n info: \"var(--hj-message-info)\",\n shadow: \"var(--hj-message-shadow)\",\n },\n modal: {\n background: \"var(--hj-modal-bg)\",\n foreground: \"var(--hj-modal-fg)\",\n bodyForeground: \"var(--hj-modal-body-fg)\",\n paddingX: \"var(--hj-modal-padding-x)\",\n paddingY: \"var(--hj-modal-padding-y)\",\n headerHeight: \"var(--hj-modal-header-height)\",\n wrapPaddingY: \"var(--hj-modal-wrap-padding-y)\",\n closeSize: \"var(--hj-modal-close-size)\",\n closeInset: \"var(--hj-modal-close-inset)\",\n maskBackground: \"var(--hj-modal-mask-bg)\",\n radius: \"var(--hj-modal-radius)\",\n shadow: \"var(--hj-modal-shadow)\",\n },\n menu: {\n background: \"var(--hj-menu-bg)\",\n border: \"var(--hj-menu-border)\",\n shadow: \"var(--hj-menu-shadow)\",\n itemBackground: \"var(--hj-menu-item-bg)\",\n itemBackgroundHover: \"var(--hj-menu-item-bg-hover)\",\n itemBackgroundActive: \"var(--hj-menu-item-bg-active)\",\n itemForeground: \"var(--hj-menu-item-fg)\",\n itemForegroundActive: \"var(--hj-menu-item-fg-active)\",\n itemMuted: \"var(--hj-menu-item-muted)\",\n avatarBackground: \"var(--hj-menu-avatar-bg)\",\n avatarForeground: \"var(--hj-menu-avatar-fg)\",\n divider: \"var(--hj-menu-divider)\",\n },\n tabs: {\n lineForeground: \"var(--hj-tabs-line-fg)\",\n lineForegroundHover: \"var(--hj-tabs-line-fg-hover)\",\n lineForegroundActive: \"var(--hj-tabs-line-fg-active)\",\n lineInk: \"var(--hj-tabs-line-ink)\",\n cardBackground: \"var(--hj-tabs-card-bg)\",\n cardBackgroundHover: \"var(--hj-tabs-card-bg-hover)\",\n cardBackgroundActive: \"var(--hj-tabs-card-bg-active)\",\n cardForeground: \"var(--hj-tabs-card-fg)\",\n cardForegroundActive: \"var(--hj-tabs-card-fg-active)\",\n boxedBackground: \"var(--hj-tabs-boxed-bg)\",\n boxedBorder: \"var(--hj-tabs-boxed-border)\",\n boxedItemBorder: \"var(--hj-tabs-boxed-item-border)\",\n boxedForeground: \"var(--hj-tabs-boxed-fg)\",\n boxedForegroundHover: \"var(--hj-tabs-boxed-fg-hover)\",\n boxedForegroundActive: \"var(--hj-tabs-boxed-fg-active)\",\n boxedIndicatorBackground: \"var(--hj-tabs-boxed-indicator-bg)\",\n boxedIndicatorBorder: \"var(--hj-tabs-boxed-indicator-border)\",\n boxedIndicatorShadow: \"var(--hj-tabs-boxed-indicator-shadow)\",\n },\n shadow: {\n sm: \"var(--hj-shadow-sm)\",\n md: \"var(--hj-shadow-md)\",\n lg: \"var(--hj-shadow-lg)\",\n },\n spacing: {\n xs: \"var(--hj-spacing-xs)\",\n sm: \"var(--hj-spacing-sm)\",\n md: \"var(--hj-spacing-md)\",\n lg: \"var(--hj-spacing-lg)\",\n xl: \"var(--hj-spacing-xl)\",\n },\n zIndex: {\n dropdown: \"var(--hj-z-dropdown)\",\n sticky: \"var(--hj-z-sticky)\",\n modal: \"var(--hj-z-modal)\",\n toast: \"var(--hj-z-toast)\",\n },\n motion: {\n durationFast: \"var(--hj-motion-duration-fast)\",\n durationNormal: \"var(--hj-motion-duration-normal)\",\n durationSlow: \"var(--hj-motion-duration-slow)\",\n easeIn: \"var(--hj-motion-ease-in)\",\n easeOut: \"var(--hj-motion-ease-out)\",\n easeInOut: \"var(--hj-motion-ease-in-out)\",\n easeOutCirc: \"var(--hj-motion-ease-out-circ)\",\n easeInOutCirc: \"var(--hj-motion-ease-in-out-circ)\",\n deadline: \"var(--hj-motion-deadline)\",\n },\n} as const;\n\nexport type ThemeToken = typeof themeToken;\nexport type CssVarName = `--hj-${string}`;\n\nexport function cssVar(name: CssVarName, fallback?: string) {\n return fallback ? `var(${name}, ${fallback})` : `var(${name})`;\n}\n"
|
|
37
|
+
],
|
|
38
|
+
"mappings": "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",
|
|
39
|
+
"debugId": "518FAAD2754E7FA764756E2164756E21",
|
|
40
|
+
"names": []
|
|
41
|
+
}
|