@kingsoft-ai/design 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1338 -1035
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +7352 -6503
- package/dist/index.mjs.map +1 -1
- package/dist/types/DesignThemeProvider.d.ts +27 -5
- package/dist/types/card/Card.d.ts +34 -0
- package/dist/types/card/Card.style.d.ts +46 -0
- package/dist/types/card/index.d.ts +2 -0
- package/dist/types/card/tokens.d.ts +3 -0
- package/dist/types/floatButton/FloatButton.d.ts +57 -0
- package/dist/types/floatButton/FloatButton.style.d.ts +74 -0
- package/dist/types/floatButton/__tests__/FloatButton.test.d.ts +4 -0
- package/dist/types/floatButton/index.d.ts +4 -0
- package/dist/types/floatButton/tokens.d.ts +3 -0
- package/dist/types/index.d.ts +5 -1
- package/dist/types/menu/SubMenuPopover.d.ts +1 -1
- package/dist/types/modal/Modal.d.ts +57 -72
- package/dist/types/modal/Modal.style.d.ts +10 -96
- package/dist/types/modal/__tests__/Modal.test.d.ts +1 -0
- package/dist/types/modal/index.d.ts +1 -3
- package/dist/types/tooltip/Tooltip.d.ts +84 -0
- package/dist/types/tooltip/Tooltip.style.d.ts +24 -0
- package/dist/types/tooltip/index.d.ts +2 -0
- package/dist/types/tooltip/tokens.d.ts +11 -0
- package/dist/types/transfer/Transfer.d.ts +117 -0
- package/dist/types/transfer/Transfer.style.d.ts +95 -0
- package/dist/types/transfer/index.d.ts +2 -0
- package/dist/types/transfer/tokens.d.ts +3 -0
- package/dist/types/types/component-tokens.types.d.ts +197 -0
- package/dist/types/types/index.d.ts +6 -0
- package/dist/types/types/theme-utils.d.ts +7 -0
- package/package.json +10 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/react@19.2.0/node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/.pnpm/react@19.2.0/node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/.pnpm/react@19.2.0/node_modules/react/jsx-runtime.js","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/useId.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/chain.mjs","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/mergeProps.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/focusWithoutScrolling.mjs","../../../node_modules/.pnpm/@react-stately+utils@3.10.8_react@19.2.0/node_modules/@react-stately/utils/dist/useControlledState.mjs","../src/button/Button.style.ts","../src/button/Button.tsx","../src/button/IconButton.style.ts","../src/button/IconButton.tsx","../../../node_modules/.pnpm/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Enum.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Utility.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Parser.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Serializer.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Middleware.js","../../../node_modules/.pnpm/@emotion+memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","../../../node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../../../node_modules/.pnpm/@emotion+hash@0.9.2/node_modules/@emotion/hash/dist/emotion-hash.esm.js","../../../node_modules/.pnpm/@emotion+unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../node_modules/.pnpm/@emotion+serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../../../node_modules/.pnpm/@emotion+use-insertion-effect-with-fallbacks@1.2.0_react@19.2.0/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@19.2.2_react@19.2.0/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@19.2.2_react@19.2.0/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js","../../../node_modules/.pnpm/react@19.2.0/node_modules/react/cjs/react-compiler-runtime.production.js","../../../node_modules/.pnpm/react@19.2.0/node_modules/react/cjs/react-compiler-runtime.development.js","../../../node_modules/.pnpm/react@19.2.0/node_modules/react/compiler-runtime.js","../src/checkbox/Checkbox.style.ts","../src/checkbox/Checkbox.tsx","../../icons/dist/index.mjs","../src/checkbox/CheckboxButton.style.ts","../src/checkbox/CheckboxButton.tsx","../src/collapse/Collapse.style.ts","../src/collapse/Collapse.tsx","../src/collapse/CollapseItem.tsx","../src/input/Input.style.ts","../src/input/Input.tsx","../src/menu/Menu.style.ts","../src/menu/Menu.tsx","../src/menu/SubMenuPopover.tsx","../src/menu/MenuItem.tsx","../src/menu/MenuGroup.tsx","../src/menu/SubMenuItem.tsx","../src/link/Link.style.ts","../src/link/Link.tsx","../src/modal/Modal.style.ts","../src/modal/Modal.tsx","../src/numberInput/NumberInput.style.ts","../src/numberInput/NumberInput.tsx","../src/radio/Radio.style.ts","../src/radio/Radio.tsx","../src/skeleton/Skeleton.style.ts","../src/skeleton/Skeleton.tsx","../src/stepper/Stepper.style.ts","../src/stepper/Stepper.tsx","../src/stepper/Step.tsx","../src/progress/Progress.style.ts","../src/progress/Progress.tsx","../../../node_modules/.pnpm/@react-stately+form@3.2.2_react@19.2.0/node_modules/@react-stately/form/dist/useFormValidationState.mjs","../../../node_modules/.pnpm/@react-stately+list@3.13.1_react@19.2.0/node_modules/@react-stately/list/dist/ListCollection.mjs","../../../node_modules/.pnpm/@react-stately+selection@3.20.6_react@19.2.0/node_modules/@react-stately/selection/dist/Selection.mjs","../../../node_modules/.pnpm/@react-stately+selection@3.20.6_react@19.2.0/node_modules/@react-stately/selection/dist/useMultipleSelectionState.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/Item.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/Section.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/CollectionBuilder.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/useCollection.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/getChildNodes.mjs","../../../node_modules/.pnpm/@react-stately+selection@3.20.6_react@19.2.0/node_modules/@react-stately/selection/dist/SelectionManager.mjs","../../../node_modules/.pnpm/@react-stately+list@3.13.1_react@19.2.0/node_modules/@react-stately/list/dist/useListState.mjs","../../../node_modules/.pnpm/@react-stately+overlays@3.6.20_react@19.2.0/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.mjs","../../../node_modules/.pnpm/@react-stately+select@3.8.0_react@19.2.0/node_modules/@react-stately/select/dist/useSelectState.mjs","../src/tag/Tag.style.ts","../src/tag/Tag.tsx","../src/select/Select.style.ts","../src/select/Popover.tsx","../src/select/ListBox.tsx","../src/select/Select.tsx","../src/table/Table.style.ts","../src/table/Table.tsx","../../../node_modules/.pnpm/@react-stately+toggle@3.9.2_react@19.2.0/node_modules/@react-stately/toggle/dist/useToggleState.mjs","../src/switch/Switch.style.ts","../src/switch/Switch.tsx","../src/upload/Upload.style.ts","../src/upload/Upload.tsx","../src/button/tokens.ts","../src/checkbox/tokens.ts","../src/radio/tokens.ts","../src/switch/tokens.ts","../src/input/tokens.ts","../src/select/tokens.ts","../src/numberInput/tokens.ts","../src/collapse/tokens.ts","../src/tag/tokens.ts","../src/skeleton/tokens.ts","../src/stepper/tokens.ts","../src/menu/tokens.ts","../src/link/tokens.ts","../src/modal/tokens.ts","../src/theme.ts","../src/DesignThemeProvider.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useValueEffect as $1dbecbe27a04f9af$export$14d238f342723f25} from \"./useValueEffect.mjs\";\nimport {useState as $eKkEp$useState, useRef as $eKkEp$useRef, useEffect as $eKkEp$useEffect, useCallback as $eKkEp$useCallback} from \"react\";\nimport {useSSRSafeId as $eKkEp$useSSRSafeId} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet $bdb11010cef70236$var$canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\nlet $bdb11010cef70236$export$d41a04c74483c6ef = new Map();\n// This allows us to clean up the idsUpdaterMap when the id is no longer used.\n// Map is a strong reference, so unused ids wouldn't be cleaned up otherwise.\n// This can happen in suspended components where mount/unmount is not called.\nlet $bdb11010cef70236$var$registry;\nif (typeof FinalizationRegistry !== 'undefined') $bdb11010cef70236$var$registry = new FinalizationRegistry((heldValue)=>{\n $bdb11010cef70236$export$d41a04c74483c6ef.delete(heldValue);\n});\nfunction $bdb11010cef70236$export$f680877a34711e37(defaultId) {\n let [value, setValue] = (0, $eKkEp$useState)(defaultId);\n let nextId = (0, $eKkEp$useRef)(null);\n let res = (0, $eKkEp$useSSRSafeId)(value);\n let cleanupRef = (0, $eKkEp$useRef)(null);\n if ($bdb11010cef70236$var$registry) $bdb11010cef70236$var$registry.register(cleanupRef, res);\n if ($bdb11010cef70236$var$canUseDOM) {\n const cacheIdRef = $bdb11010cef70236$export$d41a04c74483c6ef.get(res);\n if (cacheIdRef && !cacheIdRef.includes(nextId)) cacheIdRef.push(nextId);\n else $bdb11010cef70236$export$d41a04c74483c6ef.set(res, [\n nextId\n ]);\n }\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n let r = res;\n return ()=>{\n // In Suspense, the cleanup function may be not called\n // when it is though, also remove it from the finalization registry.\n if ($bdb11010cef70236$var$registry) $bdb11010cef70236$var$registry.unregister(cleanupRef);\n $bdb11010cef70236$export$d41a04c74483c6ef.delete(r);\n };\n }, [\n res\n ]);\n // This cannot cause an infinite loop because the ref is always cleaned up.\n // eslint-disable-next-line\n (0, $eKkEp$useEffect)(()=>{\n let newId = nextId.current;\n if (newId) setValue(newId);\n return ()=>{\n if (newId) nextId.current = null;\n };\n });\n return res;\n}\nfunction $bdb11010cef70236$export$cd8c9cb68f842629(idA, idB) {\n if (idA === idB) return idA;\n let setIdsA = $bdb11010cef70236$export$d41a04c74483c6ef.get(idA);\n if (setIdsA) {\n setIdsA.forEach((ref)=>ref.current = idB);\n return idB;\n }\n let setIdsB = $bdb11010cef70236$export$d41a04c74483c6ef.get(idB);\n if (setIdsB) {\n setIdsB.forEach((ref)=>ref.current = idA);\n return idA;\n }\n return idB;\n}\nfunction $bdb11010cef70236$export$b4cc09c592e8fdb8(depArray = []) {\n let id = $bdb11010cef70236$export$f680877a34711e37();\n let [resolvedId, setResolvedId] = (0, $1dbecbe27a04f9af$export$14d238f342723f25)(id);\n let updateId = (0, $eKkEp$useCallback)(()=>{\n setResolvedId(function*() {\n yield id;\n yield document.getElementById(id) ? id : undefined;\n });\n }, [\n id,\n setResolvedId\n ]);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(updateId, [\n id,\n updateId,\n ...depArray\n ]);\n return resolvedId;\n}\n\n\nexport {$bdb11010cef70236$export$d41a04c74483c6ef as idsUpdaterMap, $bdb11010cef70236$export$f680877a34711e37 as useId, $bdb11010cef70236$export$cd8c9cb68f842629 as mergeIds, $bdb11010cef70236$export$b4cc09c592e8fdb8 as useSlotId};\n//# sourceMappingURL=useId.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ /**\n * Calls all functions in the order they were chained with the same arguments.\n */ function $ff5963eb1fccf552$export$e08e3b67e392101e(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks)if (typeof callback === 'function') callback(...args);\n };\n}\n\n\nexport {$ff5963eb1fccf552$export$e08e3b67e392101e as chain};\n//# sourceMappingURL=chain.module.js.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import {chain as $ff5963eb1fccf552$export$e08e3b67e392101e} from \"./chain.mjs\";\nimport {mergeIds as $bdb11010cef70236$export$cd8c9cb68f842629} from \"./useId.mjs\";\nimport $7jXr9$clsx from \"clsx\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $3ef42575df84b30b$export$9d1611c77c2fe928(...args) {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result = {\n ...args[0]\n };\n for(let i = 1; i < args.length; i++){\n let props = args[i];\n for(let key in props){\n let a = result[key];\n let b = props[key];\n // Chain events\n if (typeof a === 'function' && typeof b === 'function' && // This is a lot faster than a regex.\n key[0] === 'o' && key[1] === 'n' && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) result[key] = (0, $ff5963eb1fccf552$export$e08e3b67e392101e)(a, b);\n else if ((key === 'className' || key === 'UNSAFE_className') && typeof a === 'string' && typeof b === 'string') result[key] = (0, $7jXr9$clsx)(a, b);\n else if (key === 'id' && a && b) result.id = (0, $bdb11010cef70236$export$cd8c9cb68f842629)(a, b);\n else result[key] = b !== undefined ? b : a;\n }\n }\n return result;\n}\n\n\nexport {$3ef42575df84b30b$export$9d1611c77c2fe928 as mergeProps};\n//# sourceMappingURL=mergeProps.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $7215afc6de606d6b$export$de79e2c695e052f3(element) {\n if ($7215afc6de606d6b$var$supportsPreventScroll()) element.focus({\n preventScroll: true\n });\n else {\n let scrollableElements = $7215afc6de606d6b$var$getScrollableElements(element);\n element.focus();\n $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements);\n }\n}\nlet $7215afc6de606d6b$var$supportsPreventScrollCached = null;\nfunction $7215afc6de606d6b$var$supportsPreventScroll() {\n if ($7215afc6de606d6b$var$supportsPreventScrollCached == null) {\n $7215afc6de606d6b$var$supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll () {\n $7215afc6de606d6b$var$supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch {\n // Ignore\n }\n }\n return $7215afc6de606d6b$var$supportsPreventScrollCached;\n}\nfunction $7215afc6de606d6b$var$getScrollableElements(element) {\n let parent = element.parentNode;\n let scrollableElements = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n while(parent instanceof HTMLElement && parent !== rootScrollingElement){\n if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n parent = parent.parentNode;\n }\n if (rootScrollingElement instanceof HTMLElement) scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n return scrollableElements;\n}\nfunction $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements) {\n for (let { element: element, scrollTop: scrollTop, scrollLeft: scrollLeft } of scrollableElements){\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n\n\nexport {$7215afc6de606d6b$export$de79e2c695e052f3 as focusWithoutScrolling};\n//# sourceMappingURL=focusWithoutScrolling.module.js.map\n","import {useState as $3whtM$useState, useRef as $3whtM$useRef, useEffect as $3whtM$useEffect, useCallback as $3whtM$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $458b0a5536c1a7cf$export$40bfa8c7b0832715(value, defaultValue, onChange) {\n let [stateValue, setStateValue] = (0, $3whtM$useState)(value || defaultValue);\n let isControlledRef = (0, $3whtM$useRef)(value !== undefined);\n let isControlled = value !== undefined;\n (0, $3whtM$useEffect)(()=>{\n let wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled && process.env.NODE_ENV !== 'production') console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);\n isControlledRef.current = isControlled;\n }, [\n isControlled\n ]);\n let currentValue = isControlled ? value : stateValue;\n let setValue = (0, $3whtM$useCallback)((value, ...args)=>{\n let onChangeCaller = (value, ...onChangeArgs)=>{\n if (onChange) {\n if (!Object.is(currentValue, value)) onChange(value, ...onChangeArgs);\n }\n if (!isControlled) // If uncontrolled, mutate the currentValue local variable so that\n // calling setState multiple times with the same value only emits onChange once.\n // We do not use a ref for this because we specifically _do_ want the value to\n // reset every render, and assigning to a ref in render breaks aborted suspended renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n currentValue = value;\n };\n if (typeof value === 'function') {\n if (process.env.NODE_ENV !== 'production') console.warn('We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320');\n // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates\n // when someone using useControlledState calls setControlledState(myFunc)\n // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc\n // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning\n // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same\n let updateFunction = (oldValue, ...functionArgs)=>{\n let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);\n onChangeCaller(interceptedValue, ...args);\n if (!isControlled) return interceptedValue;\n return oldValue;\n };\n setStateValue(updateFunction);\n } else {\n if (!isControlled) setStateValue(value);\n onChangeCaller(value, ...args);\n }\n }, [\n isControlled,\n currentValue,\n onChange\n ]);\n return [\n currentValue,\n setValue\n ];\n}\n\n\nexport {$458b0a5536c1a7cf$export$40bfa8c7b0832715 as useControlledState};\n//# sourceMappingURL=useControlledState.module.js.map\n","/**\n * Button 按钮样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const buttonVariants = ['primary', 'secondary', 'text', 'danger', 'gradient'] as const\nexport const buttonSizes = ['sm', 'md', 'lg'] as const\n\nexport type ButtonVariant = (typeof buttonVariants)[number]\nexport type ButtonSize = (typeof buttonSizes)[number]\n\n// ============================================================================\n// 变体样式生成器\n// ============================================================================\n\ntype ButtonState = 'default' | 'hover' | 'active'\ntype PartialStateToken = { default: string } & Partial<Record<'hover' | 'active', string>>\ntype WithOptionalShadow = { shadow: { default: string; hover?: string } }\n\n/**\n * 获取按钮变体样式\n * 优先使用 Tier 3 组件层 Token\n */\nconst getVariantStyles = (variant: ButtonVariant, theme: AppTheme) => {\n const variantToken = theme.components.button[variant]\n const hasShadow = 'shadow' in variantToken\n \n // 渐变按钮使用特殊的渐变样式逻辑\n if (variant === 'gradient') {\n const gradientToken = variantToken as typeof theme.components.button.gradient\n const defaultShadow = gradientToken.shadow.default\n const hoverShadow = gradientToken.shadow.hover\n \n return css`\n position: relative;\n color: ${gradientToken.text.default};\n border-color: transparent; /* 渐变无边框,保留 1px 以保持高度一致 */\n box-shadow: ${defaultShadow};\n \n /* 默认渐变背景 */\n background: linear-gradient(\n 90deg, \n ${gradientToken.background.gradientFrom} 0%, \n ${gradientToken.background.gradientTo} 100%\n );\n background-origin: border-box;\n \n /* 使用伪元素创建反向渐变层 */\n &::before {\n content: '';\n position: absolute;\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n border-radius: inherit;\n background: linear-gradient(\n 90deg, \n ${gradientToken.background.gradientTo} 0%, \n ${gradientToken.background.gradientFrom} 100%\n );\n opacity: 0;\n transition: opacity 0.6s ease;\n z-index: 0;\n }\n \n /* 确保内容在渐变层上方 */\n & > * {\n position: relative;\n z-index: 1;\n }\n\n /* Hover 状态 - 显示反向渐变层 */\n &:hover:not(:disabled):not([data-loading='true'])::before {\n opacity: 1;\n }\n \n &:hover:not(:disabled):not([data-loading='true']) {\n box-shadow: ${hoverShadow};\n }\n\n /* Active/Pressed 状态(点击态) */\n &:active:not(:disabled):not([data-loading='true']),\n &[data-pressed='true']:not(:disabled):not([data-loading='true']) {\n box-shadow: none;\n transform: translateY(1px);\n }\n `\n }\n \n // 常规变体样式\n // 获取指定状态值(带默认回退)\n const getStateValue = (obj: PartialStateToken, state: ButtonState) => obj[state] ?? obj.default\n\n // 获取边框颜色\n const getBorderColor = (state: ButtonState) => {\n return getStateValue(variantToken.border as PartialStateToken, state)\n }\n\n // 获取背景颜色\n const getBackground = (state: ButtonState) => {\n return getStateValue(variantToken.background as PartialStateToken, state)\n }\n\n // 阴影(某些变体无阴影)\n const defaultShadow = hasShadow ? (variantToken as WithOptionalShadow).shadow.default : 'none'\n const hoverShadow = hasShadow ? ((variantToken as WithOptionalShadow).shadow.hover ?? 'none') : 'none'\n\n return css`\n background: ${variantToken.background.default};\n color: ${variantToken.text.default};\n border-color: ${variantToken.border.default};\n box-shadow: ${defaultShadow};\n\n /* Hover 状态 */\n &:hover:not(:disabled):not([data-loading='true']) {\n background: ${getBackground('hover')};\n border-color: ${getBorderColor('hover')};\n box-shadow: ${hoverShadow};\n }\n\n /* Active/Pressed 状态(点击态) */\n &:active:not(:disabled):not([data-loading='true']),\n &[data-pressed='true']:not(:disabled):not([data-loading='true']) {\n background: ${getBackground('active')};\n border-color: ${getBorderColor('active')};\n box-shadow: none;\n transform: translateY(1px);\n }\n `\n}\n\n/**\n * 获取按钮尺寸样式\n * 使用 Tier 3 组件层尺寸 Token\n */\nconst getSizeStyles = (size: ButtonSize, theme: AppTheme) => {\n const sizeToken = theme.components.button.size[size]\n\n return css`\n height: ${sizeToken.height};\n font-size: ${sizeToken.fontSize};\n padding-inline: ${sizeToken.paddingInline};\n\n /* 图标尺寸 */\n svg {\n width: ${sizeToken.iconSize};\n height: ${sizeToken.iconSize};\n }\n `\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Button 根元素\n * \n * 特性:\n * - 基于三层 Token 设计\n * - 完整的交互状态(hover, active, focus, disabled)\n * - 支持加载状态\n * - 支持全宽模式\n */\nexport const ButtonRoot = styled.button<{\n variant: ButtonVariant\n size: ButtonSize\n fullWidth: boolean\n isPressed: boolean\n isDisabled: boolean\n isLoading: boolean\n}>`\n /* 基础样式 - 使用 Tier 3 组件层 Token */\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n \n /* 字体样式 */\n font-family: ${({ theme }) => theme?.global?.typography?.fontFamily || '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif'};\n font-weight: ${({ theme }) => theme?.components?.button?.fontWeight || 500};\n line-height: 1;\n white-space: nowrap;\n \n /* 边框样式 */\n border-width: 1px;\n border-style: solid;\n border-radius: ${({ theme }) => theme?.components?.button?.borderRadius || '6px'};\n \n /* 交互样式 */\n cursor: pointer;\n user-select: none;\n outline: none;\n \n /* 过渡动画 */\n transition: \n background ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'},\n border-color ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'},\n box-shadow ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'},\n transform ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'};\n\n /* 变体样式 */\n ${({ variant, theme }) => getVariantStyles(variant, theme)}\n\n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n /* 全宽模式 */\n ${({ fullWidth }) =>\n fullWidth &&\n css`\n width: 100%;\n `}\n\n /* Focus 可见状态 - 键盘导航时显示 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme?.components?.button?.primary?.background?.default || '#1677ff'};\n outline-offset: 2px;\n }\n\n /* 禁用状态 */\n &:disabled {\n cursor: not-allowed;\n opacity: ${({ theme }) => theme?.components?.button?.disabled?.opacity || 0.5};\n background: ${({ theme }) => theme?.components?.button?.disabled?.background?.default || '#f5f5f5'};\n color: ${({ theme }) => theme?.components?.button?.disabled?.text?.default || 'rgba(0, 0, 0, 0.25)'};\n border-color: transparent;\n box-shadow: none;\n }\n\n /* 加载状态 - 阻止交互 */\n &[data-loading='true'] {\n pointer-events: none;\n }\n\n /* 加载状态 - 使用伪元素实现 cursor: wait */\n &[data-loading='true']::after {\n content: '';\n position: absolute;\n inset: 0;\n cursor: wait;\n pointer-events: auto; /* 伪元素接收鼠标事件以显示 cursor */\n z-index: 10; /* 确保在所有内容之上 */\n }\n\n /* 添加旋转动画的关键帧 */\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n`\n\n/**\n * 按钮内容容器\n * \n * 用于布局图标和文本\n */\nexport const ButtonContent = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: ${({ theme }) => theme?.components?.button?.gap || '8px'};\n position: relative;\n`\n\n/**\n * 图标包装器\n * \n * 特性:\n * - 在加载状态下淡出\n * - 保持布局稳定\n */\nexport const IconWrapper = styled.span<{\n isLoading: boolean\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n \n transition: opacity ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'};\n \n ${({ isLoading }) =>\n isLoading &&\n css`\n opacity: 0;\n pointer-events: none;\n `}\n`\n\n/**\n * 按钮文本标签\n * \n * 特性:\n * - 在加载状态下淡出\n * - 保持文本居中\n */\nexport const Label = styled.span<{\n isLoading: boolean\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n \n transition: opacity ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'};\n \n ${({ isLoading }) =>\n isLoading &&\n css`\n opacity: 0.4;\n `}\n`\n","/**\n * Button 按钮组件\n * \n * 基于 react-aria 实现无障碍访问的按钮组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\">\n * 按钮文字\n * </Button>\n * ```\n */\n\nimport { forwardRef, useRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { useButton } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport { mergeProps } from '@react-aria/utils'\nimport {\n ButtonRoot,\n ButtonContent,\n IconWrapper,\n Label,\n buttonVariants,\n buttonSizes,\n type ButtonVariant,\n type ButtonSize,\n} from './Button.style'\n\n// 导出常量供外部使用\nexport const VARIANTS = buttonVariants\nexport const SIZES = buttonSizes\n\nexport type ButtonProps = Omit<AriaButtonProps, 'elementType'> & {\n /** 按钮类型:主按钮、次按钮、文本按钮、危险按钮 */\n variant?: ButtonVariant\n /** 按钮尺寸:小号(24px)、标准(32px)、大号(40px) */\n size?: ButtonSize\n /** 前置图标 */\n icon?: ReactNode\n /** 加载状态 */\n loading?: boolean\n /** 全宽按钮 */\n fullWidth?: boolean\n /** 是否禁用(统一 API,优先级高于 isDisabled) */\n disabled?: boolean\n /** 自定义类名 */\n className?: string\n /** 子元素 */\n children?: ReactNode\n}\n\n/**\n * Button 按钮组件\n * \n * 基于 Figma 设计规范实现的按钮组件,支持多种变体和尺寸\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n icon,\n loading = false,\n fullWidth = false,\n disabled,\n isDisabled,\n className,\n children,\n ...ariaProps\n },\n forwardedRef,\n ) => {\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef || innerRef\n\n // 按钮禁用状态:disabled 优先于 isDisabled,加载中也视为禁用\n const finalDisabled = (disabled ?? isDisabled) || loading\n\n // 使用 react-aria 的 useButton hook\n const { buttonProps, isPressed } = useButton(\n {\n ...ariaProps,\n isDisabled: finalDisabled,\n elementType: 'button',\n },\n innerRef,\n )\n\n return (\n <ButtonRoot\n {...mergeProps(buttonProps, {\n ref,\n className,\n })}\n variant={variant}\n size={size}\n fullWidth={fullWidth}\n isPressed={isPressed}\n isDisabled={finalDisabled}\n isLoading={loading}\n data-variant={variant}\n data-size={size}\n data-loading={loading ? 'true' : undefined}\n data-pressed={isPressed ? 'true' : undefined}\n >\n <ButtonContent>\n {/* 前置图标 */}\n {icon && (\n <IconWrapper isLoading={loading} aria-hidden=\"true\">\n {icon}\n </IconWrapper>\n )}\n\n {/* 按钮文本 */}\n <Label isLoading={loading}>{children}</Label>\n\n {/* 加载状态指示器 */}\n {loading && (\n <IconWrapper isLoading={false} aria-label=\"加载中\" role=\"status\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n animation: 'spin 0.8s linear infinite',\n }}\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"30 10\"\n />\n </svg>\n </IconWrapper>\n )}\n </ButtonContent>\n </ButtonRoot>\n )\n },\n)\n\nButton.displayName = 'Button'\n","/**\n * IconButton 图标按钮样式\n *\n * 依赖三层 Token 体系,并对尺寸/变体进行语义化封装\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\nexport const iconButtonAppearances = ['solid', 'outline', 'ghost'] as const\nexport const iconButtonTones = ['primary', 'neutral', 'danger'] as const\nexport const iconButtonSizes = ['sm', 'md', 'lg'] as const\n\nexport type IconButtonAppearance = (typeof iconButtonAppearances)[number]\nexport type IconButtonTone = (typeof iconButtonTones)[number]\nexport type IconButtonSize = (typeof iconButtonSizes)[number]\n\ntype InteractionState = 'default' | 'hover' | 'active'\n\nconst getVariantStyles = (appearance: IconButtonAppearance, tone: IconButtonTone, theme: AppTheme) => {\n const tokens = theme.components.iconButton.appearance[appearance][tone]\n\n const resolve = (state: InteractionState) => ({\n background: tokens.background[state],\n border: tokens.border[state] ?? tokens.border.hover ?? tokens.border.default,\n icon: tokens.icon[state] ?? tokens.icon.hover ?? tokens.icon.default,\n })\n\n const defaultState = resolve('default')\n const hoverState = resolve('hover')\n const activeState = resolve('active')\n\n const defaultShadow = tokens.shadow?.default ?? 'none'\n const hoverShadow = tokens.shadow?.hover ?? defaultShadow\n\n return css`\n background: ${defaultState.background};\n border-color: ${defaultState.border};\n color: ${defaultState.icon};\n box-shadow: ${defaultShadow};\n\n &:hover:not(:disabled):not([data-loading='true']) {\n background: ${hoverState.background};\n border-color: ${hoverState.border};\n color: ${hoverState.icon};\n box-shadow: ${hoverShadow};\n }\n\n &:active:not(:disabled):not([data-loading='true']),\n &[data-pressed='true']:not(:disabled):not([data-loading='true']) {\n background: ${activeState.background};\n border-color: ${activeState.border};\n color: ${activeState.icon};\n box-shadow: none;\n transform: translateY(1px);\n }\n `\n}\n\nconst getSizeStyles = (size: IconButtonSize, theme: AppTheme) => {\n const sizeToken = theme.components.iconButton.size[size]\n\n return css`\n --icon-button-icon-size: ${sizeToken.iconSize};\n width: ${sizeToken.edge};\n height: ${sizeToken.edge};\n min-width: ${sizeToken.edge};\n min-height: ${sizeToken.edge};\n\n svg {\n width: var(--icon-button-icon-size);\n height: var(--icon-button-icon-size);\n }\n `\n}\n\nexport const IconButtonRoot = styled.button<{\n appearance: IconButtonAppearance\n tone: IconButtonTone\n size: IconButtonSize\n isPressed: boolean\n isDisabled: boolean\n isLoading: boolean\n}>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n border-radius: ${({ theme }) => theme.components.iconButton.borderRadius};\n padding: 0;\n cursor: pointer;\n user-select: none;\n line-height: 1;\n background: transparent;\n\n transition:\n background ${({ theme }) => theme.components.iconButton.transition},\n border-color ${({ theme }) => theme.components.iconButton.transition},\n color ${({ theme }) => theme.components.iconButton.transition},\n box-shadow ${({ theme }) => theme.components.iconButton.transition},\n transform ${({ theme }) => theme.components.iconButton.transition};\n\n ${({ appearance, tone, theme }) => getVariantStyles(appearance, tone, theme)}\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n &:focus-visible {\n outline: ${({ theme }) => theme.components.iconButton.focusRing.width} solid\n ${({ theme }) => theme.components.iconButton.focusRing.color};\n outline-offset: ${({ theme }) => theme.components.iconButton.focusRing.offset};\n }\n\n &:disabled {\n cursor: not-allowed;\n background: ${({ theme }) => theme.components.iconButton.disabled.background};\n border-color: ${({ theme }) => theme.components.iconButton.disabled.border};\n color: ${({ theme }) => theme.components.iconButton.disabled.icon};\n opacity: ${({ theme }) => theme.components.iconButton.disabled.opacity};\n }\n\n &[data-loading='true'] {\n pointer-events: none;\n }\n\n @keyframes icon-button-spin {\n to {\n transform: rotate(360deg);\n }\n }\n`\n\nexport const IconSlot = styled.span<{\n isHidden: boolean\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n transition: opacity ${({ theme }) => theme.components.iconButton.transition};\n pointer-events: none;\n\n ${({ isHidden }) =>\n isHidden &&\n css`\n opacity: 0;\n `}\n`\n\nexport const LoadingSpinner = styled.span`\n position: absolute;\n inset: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n pointer-events: none;\n\n svg {\n width: var(--icon-button-icon-size);\n height: var(--icon-button-icon-size);\n animation: icon-button-spin 0.8s linear infinite;\n }\n`\n\n","/**\n * IconButton 图标按钮组件\n *\n * 适用于仅展示图标的高频交互,支持多种外观与语义色彩\n */\n\nimport { forwardRef, useMemo, useRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { useButton, VisuallyHidden } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport { mergeProps } from '@react-aria/utils'\nimport {\n IconButtonRoot,\n IconSlot,\n LoadingSpinner,\n iconButtonAppearances,\n iconButtonTones,\n iconButtonSizes,\n type IconButtonAppearance,\n type IconButtonTone,\n type IconButtonSize,\n} from './IconButton.style'\n\nexport const ICON_BUTTON_APPEARANCES = iconButtonAppearances\nexport const ICON_BUTTON_TONES = iconButtonTones\nexport const ICON_BUTTON_SIZES = iconButtonSizes\n\nexport type IconButtonProps = Omit<AriaButtonProps, 'elementType' | 'children'> & {\n /** 图标按钮的视觉外观:实心、描边、幽灵 */\n appearance?: IconButtonAppearance\n /** 语义色彩:主题、自然、危险 */\n tone?: IconButtonTone\n /** 尺寸:24px / 32px / 40px */\n size?: IconButtonSize\n /** 需要展示的图标 */\n icon: ReactNode\n /** 提供屏幕阅读器可见文本(会以 VisuallyHidden 的形式注入) */\n label?: ReactNode\n /** 加载状态 */\n loading?: boolean\n /** 自定义加载状态的无障碍文本 */\n loadingLabel?: string\n /** 自定义类名 */\n className?: string\n}\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n appearance = 'solid',\n tone = 'primary',\n size = 'md',\n icon,\n label,\n loading = false,\n loadingLabel = '加载中',\n isDisabled,\n className,\n ...ariaProps\n },\n forwardedRef,\n ) => {\n const isDevEnvironment = useMemo(() => {\n if (typeof globalThis === 'undefined') {\n return true\n }\n const nodeEnv =\n (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env?.NODE_ENV\n return nodeEnv !== 'production'\n }, [])\n\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef || innerRef\n const disabled = isDisabled || loading\n\n if (isDevEnvironment) {\n const ariaLabel = (ariaProps as Record<string, unknown>)['aria-label']\n const ariaLabelledby = (ariaProps as Record<string, unknown>)['aria-labelledby']\n if (!label && !ariaLabel && !ariaLabelledby) {\n console.warn(\n 'IconButton 需要可感知的文本。请传入 label、aria-label 或 aria-labelledby。',\n )\n }\n }\n\n const { buttonProps, isPressed } = useButton(\n {\n ...ariaProps,\n isDisabled: disabled,\n elementType: 'button',\n },\n innerRef,\n )\n\n return (\n <IconButtonRoot\n {...mergeProps(buttonProps, {\n ref,\n className,\n })}\n appearance={appearance}\n tone={tone}\n size={size}\n isPressed={isPressed}\n isDisabled={Boolean(disabled)}\n isLoading={loading}\n data-appearance={appearance}\n data-tone={tone}\n data-size={size}\n data-loading={loading ? 'true' : undefined}\n data-pressed={isPressed ? 'true' : undefined}\n >\n <IconSlot isHidden={loading} aria-hidden=\"true\">\n {icon}\n </IconSlot>\n {loading && (\n <LoadingSpinner role=\"status\" aria-live=\"polite\" aria-label={loadingLabel}>\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"30 10\"\n />\n </svg>\n </LoadingSpinner>\n )}\n {label ? <VisuallyHidden>{label}</VisuallyHidden> : null}\n </IconButtonRoot>\n )\n },\n)\n\nIconButton.displayName = 'IconButton'\n\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import * as ReactJSXRuntime from 'react/jsx-runtime';\nimport { h as hasOwn, E as Emotion, c as createEmotionProps } from '../../dist/emotion-element-f0de968e.browser.esm.js';\nimport 'react';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar Fragment = ReactJSXRuntime.Fragment;\nvar jsx = function jsx(type, props, key) {\n if (!hasOwn.call(props, 'css')) {\n return ReactJSXRuntime.jsx(type, props, key);\n }\n\n return ReactJSXRuntime.jsx(Emotion, createEmotionProps(type, props), key);\n};\nvar jsxs = function jsxs(type, props, key) {\n if (!hasOwn.call(props, 'css')) {\n return ReactJSXRuntime.jsxs(type, props, key);\n }\n\n return ReactJSXRuntime.jsxs(Emotion, createEmotionProps(type, props), key);\n};\n\nexport { Fragment, jsx, jsxs };\n","/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","/**\n * Checkbox 组件样式\n * 基于 Emotion + Theme Token\n */\n\nimport { css } from '@emotion/react';\nimport type { Theme } from '@kingsoft-ai/theme';\n\n// Checkbox 容器样式\nexport const checkboxContainer = css`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n position: relative;\n \n input[type=\"checkbox\"] {\n position: absolute;\n opacity: 0;\n width: 1px;\n height: 1px;\n margin: 0;\n padding: 0;\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n white-space: nowrap;\n overflow: hidden;\n left: -9999px;\n -webkit-appearance: none;\n appearance: none;\n }\n \n &[data-disabled=\"true\"] {\n cursor: not-allowed;\n }\n`;\n\n// Checkbox 控件样式(实际的复选框)\nexport const checkboxControl = (theme: Theme) => css`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: ${theme.components.checkbox.control.size};\n height: ${theme.components.checkbox.control.size};\n border-radius: ${theme.components.checkbox.control.borderRadius};\n border: ${theme.components.checkbox.control.borderWidth} solid ${theme.components.checkbox.control.borderColor.default};\n background-color: ${theme.components.checkbox.control.background.default};\n transition: all ${theme.components.checkbox.transition};\n \n /* Hover 状态 */\n &[data-hover=\"true\"]:not([data-disabled=\"true\"]) {\n border-color: ${theme.components.checkbox.control.borderColor.hover};\n }\n \n /* Checked 状态 */\n &[data-checked=\"true\"]:not([data-disabled=\"true\"]) {\n background-color: ${theme.components.checkbox.control.background.checked};\n border-color: ${theme.components.checkbox.control.borderColor.checked};\n }\n \n /* Indeterminate 状态(半选) */\n &[data-indeterminate=\"true\"]:not([data-disabled=\"true\"]) {\n background-color: ${theme.components.checkbox.control.background.checked};\n border-color: ${theme.components.checkbox.control.borderColor.checked};\n }\n \n /* Disabled 未选中状态 */\n &[data-disabled=\"true\"]:not([data-checked=\"true\"]):not([data-indeterminate=\"true\"]) {\n background-color: ${theme.components.checkbox.control.background.disabled};\n border-color: ${theme.components.checkbox.control.borderColor.disabled};\n }\n \n /* Disabled 选中状态 */\n &[data-disabled=\"true\"][data-checked=\"true\"],\n &[data-disabled=\"true\"][data-indeterminate=\"true\"] {\n background-color: ${theme.components.checkbox.control.background.disabledChecked};\n border-color: ${theme.components.checkbox.control.borderColor.disabledChecked};\n }\n \n /* Focus 状态 */\n input:focus-visible + & {\n box-shadow: ${theme.components.checkbox.focusRing};\n }\n`;\n\n// Checkbox 图标样式\nexport const checkboxIcon = (theme: Theme) => css`\n color: ${theme.components.checkbox.control.icon.color};\n width: ${theme.components.checkbox.control.icon.size};\n height: ${theme.components.checkbox.control.icon.size};\n opacity: 0;\n transform: scale(0.8);\n transition: all ${theme.components.checkbox.transition};\n \n &[data-checked=\"true\"] {\n opacity: 1;\n transform: scale(1);\n }\n`;\n\n// Checkbox 标签文字样式\nexport const checkboxLabel = (theme: Theme) => css`\n margin-left: ${theme.components.checkbox.gap};\n font-size: ${theme.components.checkbox.text.label.fontSize};\n line-height: ${theme.components.checkbox.text.label.lineHeight};\n font-weight: ${theme.components.checkbox.text.label.fontWeight};\n color: ${theme.components.checkbox.text.label.color};\n transition: color ${theme.components.checkbox.transition};\n \n &[data-disabled=\"true\"] {\n color: ${theme.components.checkbox.text.label.disabled};\n }\n`;\n\n","/**\n * Checkbox 组件\n * 基于 Figma 设计稿 1:1 还原\n */\n\n/** @jsxImportSource @emotion/react */\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport { useTheme } from '@emotion/react';\nimport type { Theme } from '@kingsoft-ai/theme';\nimport {\n checkboxContainer,\n checkboxControl,\n checkboxIcon,\n checkboxLabel,\n} from './Checkbox.style';\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'onChange'> {\n /**\n * 是否选中\n */\n checked?: boolean;\n \n /**\n * 默认是否选中(非受控)\n */\n defaultChecked?: boolean;\n \n /**\n * 半选状态(用于全选场景)\n */\n indeterminate?: boolean;\n \n /**\n * 是否禁用\n */\n disabled?: boolean;\n \n /**\n * 标签文字\n */\n label?: React.ReactNode;\n \n /**\n * 值改变回调\n */\n onChange?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;\n \n /**\n * 自定义类名\n */\n className?: string;\n \n /**\n * 自定义样式\n */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// Checkbox 图标组件\n// ============================================================================\n\n/**\n * 勾选图标(✓)\n */\nconst CheckIcon: React.FC<{ checked: boolean }> = ({ checked }) => {\n const theme = useTheme() as Theme;\n \n return (\n <svg\n css={checkboxIcon(theme)}\n data-checked={checked}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3332 4.5L5.99984 11.8333L2.6665 8.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\n/**\n * 半选图标(—)\n */\nconst IndeterminateIcon: React.FC<{ checked: boolean }> = ({ checked }) => {\n const theme = useTheme() as Theme;\n \n return (\n <svg\n css={checkboxIcon(theme)}\n data-checked={checked}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.5 8H12.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n};\n\n// ============================================================================\n// Checkbox 组件\n// ============================================================================\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const {\n checked: controlledChecked,\n defaultChecked = false,\n indeterminate = false,\n disabled = false,\n label,\n onChange,\n className,\n style,\n ...inputProps\n } = props;\n\n const theme = useTheme() as Theme;\n const inputRef = useRef<HTMLInputElement>(null);\n const [hover, setHover] = useState(false);\n \n // 内部状态管理(非受控)\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n \n // 判断是否受控\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n\n // 合并 refs\n useEffect(() => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(inputRef.current);\n } else {\n ref.current = inputRef.current;\n }\n }\n }, [ref]);\n\n // 设置 indeterminate 属性(原生 HTML 属性只能通过 JS 设置)\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n // 处理点击\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n const newChecked = event.target.checked;\n \n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n \n onChange?.(newChecked, event);\n };\n\n return (\n <label\n css={checkboxContainer}\n data-disabled={disabled}\n className={className}\n style={style}\n onMouseEnter={() => !disabled && setHover(true)}\n onMouseLeave={() => !disabled && setHover(false)}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n {...inputProps}\n />\n \n <span\n css={checkboxControl(theme)}\n data-hover={hover}\n data-checked={checked && !indeterminate}\n data-indeterminate={indeterminate}\n data-disabled={disabled}\n >\n {indeterminate ? (\n <IndeterminateIcon checked={true} />\n ) : (\n <CheckIcon checked={checked} />\n )}\n </span>\n \n {label && (\n <span\n css={checkboxLabel(theme)}\n data-disabled={disabled}\n >\n {label}\n </span>\n )}\n </label>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n\n","import r1, { forwardRef as o } from \"react\";\nvar w = { exports: {} }, m = {};\n/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar F;\nfunction t1() {\n if (F) return m;\n F = 1;\n var t = Symbol.for(\"react.transitional.element\"), n = Symbol.for(\"react.fragment\");\n function C(f, d, c) {\n var p = null;\n if (c !== void 0 && (p = \"\" + c), d.key !== void 0 && (p = \"\" + d.key), \"key\" in d) {\n c = {};\n for (var h in d)\n h !== \"key\" && (c[h] = d[h]);\n } else c = d;\n return d = c.ref, {\n $$typeof: t,\n type: f,\n key: p,\n ref: d !== void 0 ? d : null,\n props: c\n };\n }\n return m.Fragment = n, m.jsx = C, m.jsxs = C, m;\n}\nvar x = {};\n/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar W;\nfunction n1() {\n return W || (W = 1, process.env.NODE_ENV !== \"production\" && function() {\n function t(e) {\n if (e == null) return null;\n if (typeof e == \"function\")\n return e.$$typeof === Q ? null : e.displayName || e.name || null;\n if (typeof e == \"string\") return e;\n switch (e) {\n case R:\n return \"Fragment\";\n case I:\n return \"Profiler\";\n case D:\n return \"StrictMode\";\n case G:\n return \"Suspense\";\n case z:\n return \"SuspenseList\";\n case X:\n return \"Activity\";\n }\n if (typeof e == \"object\")\n switch (typeof e.tag == \"number\" && console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ), e.$$typeof) {\n case U:\n return \"Portal\";\n case B:\n return e.displayName || \"Context\";\n case $:\n return (e._context.displayName || \"Context\") + \".Consumer\";\n case q:\n var l = e.render;\n return e = e.displayName, e || (e = l.displayName || l.name || \"\", e = e !== \"\" ? \"ForwardRef(\" + e + \")\" : \"ForwardRef\"), e;\n case J:\n return l = e.displayName || null, l !== null ? l : t(e.type) || \"Memo\";\n case O:\n l = e._payload, e = e._init;\n try {\n return t(e(l));\n } catch {\n }\n }\n return null;\n }\n function n(e) {\n return \"\" + e;\n }\n function C(e) {\n try {\n n(e);\n var l = !1;\n } catch {\n l = !0;\n }\n if (l) {\n l = console;\n var s = l.error, a = typeof Symbol == \"function\" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || \"Object\";\n return s.call(\n l,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n a\n ), n(e);\n }\n }\n function f(e) {\n if (e === R) return \"<>\";\n if (typeof e == \"object\" && e !== null && e.$$typeof === O)\n return \"<...>\";\n try {\n var l = t(e);\n return l ? \"<\" + l + \">\" : \"<...>\";\n } catch {\n return \"<...>\";\n }\n }\n function d() {\n var e = M.A;\n return e === null ? null : e.getOwner();\n }\n function c() {\n return Error(\"react-stack-top-frame\");\n }\n function p(e) {\n if (A.call(e, \"key\")) {\n var l = Object.getOwnPropertyDescriptor(e, \"key\").get;\n if (l && l.isReactWarning) return !1;\n }\n return e.key !== void 0;\n }\n function h(e, l) {\n function s() {\n S || (S = !0, console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n l\n ));\n }\n s.isReactWarning = !0, Object.defineProperty(e, \"key\", {\n get: s,\n configurable: !0\n });\n }\n function j() {\n var e = t(this.type);\n return V[e] || (V[e] = !0, console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n )), e = this.props.ref, e !== void 0 ? e : null;\n }\n function Y(e, l, s, a, k, E) {\n var u = s.ref;\n return e = {\n $$typeof: g,\n type: e,\n key: l,\n props: s,\n _owner: a\n }, (u !== void 0 ? u : null) !== null ? Object.defineProperty(e, \"ref\", {\n enumerable: !1,\n get: j\n }) : Object.defineProperty(e, \"ref\", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n }), Object.defineProperty(e, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n }), Object.defineProperty(e, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: k\n }), Object.defineProperty(e, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: E\n }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;\n }\n function b(e, l, s, a, k, E) {\n var u = l.children;\n if (u !== void 0)\n if (a)\n if (K(u)) {\n for (a = 0; a < u.length; a++)\n T(u[a]);\n Object.freeze && Object.freeze(u);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else T(u);\n if (A.call(l, \"key\")) {\n u = t(e);\n var L = Object.keys(l).filter(function(e1) {\n return e1 !== \"key\";\n });\n a = 0 < L.length ? \"{key: someKey, \" + L.join(\": ..., \") + \": ...}\" : \"{key: someKey}\", Z[u + a] || (L = 0 < L.length ? \"{\" + L.join(\": ..., \") + \": ...}\" : \"{}\", console.error(\n `A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />`,\n a,\n u,\n L,\n u\n ), Z[u + a] = !0);\n }\n if (u = null, s !== void 0 && (C(s), u = \"\" + s), p(l) && (C(l.key), u = \"\" + l.key), \"key\" in l) {\n s = {};\n for (var y in l)\n y !== \"key\" && (s[y] = l[y]);\n } else s = l;\n return u && h(\n s,\n typeof e == \"function\" ? e.displayName || e.name || \"Unknown\" : e\n ), Y(\n e,\n u,\n s,\n d(),\n k,\n E\n );\n }\n function T(e) {\n N(e) ? e._store && (e._store.validated = 1) : typeof e == \"object\" && e !== null && e.$$typeof === O && (e._payload.status === \"fulfilled\" ? N(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));\n }\n function N(e) {\n return typeof e == \"object\" && e !== null && e.$$typeof === g;\n }\n var v = r1, g = Symbol.for(\"react.transitional.element\"), U = Symbol.for(\"react.portal\"), R = Symbol.for(\"react.fragment\"), D = Symbol.for(\"react.strict_mode\"), I = Symbol.for(\"react.profiler\"), $ = Symbol.for(\"react.consumer\"), B = Symbol.for(\"react.context\"), q = Symbol.for(\"react.forward_ref\"), G = Symbol.for(\"react.suspense\"), z = Symbol.for(\"react.suspense_list\"), J = Symbol.for(\"react.memo\"), O = Symbol.for(\"react.lazy\"), X = Symbol.for(\"react.activity\"), Q = Symbol.for(\"react.client.reference\"), M = v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, A = Object.prototype.hasOwnProperty, K = Array.isArray, _ = console.createTask ? console.createTask : function() {\n return null;\n };\n v = {\n react_stack_bottom_frame: function(e) {\n return e();\n }\n };\n var S, V = {}, H = v.react_stack_bottom_frame.bind(\n v,\n c\n )(), P = _(f(c)), Z = {};\n x.Fragment = R, x.jsx = function(e, l, s) {\n var a = 1e4 > M.recentlyCreatedOwnerStacks++;\n return b(\n e,\n l,\n s,\n !1,\n a ? Error(\"react-stack-top-frame\") : H,\n a ? _(f(e)) : P\n );\n }, x.jsxs = function(e, l, s) {\n var a = 1e4 > M.recentlyCreatedOwnerStacks++;\n return b(\n e,\n l,\n s,\n !0,\n a ? Error(\"react-stack-top-frame\") : H,\n a ? _(f(e)) : P\n );\n };\n }()), x;\n}\nprocess.env.NODE_ENV === \"production\" ? w.exports = t1() : w.exports = n1();\nvar r = w.exports;\nconst i = o(\n ({\n children: t,\n size: n = 24,\n color: C = \"currentColor\",\n viewBox: f = \"0 0 24 24\",\n useFill: d = !1,\n strokeWidth: c = 1.5,\n ...p\n }, h) => {\n const j = {\n ref: h,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: n,\n height: n,\n viewBox: f,\n ...p\n };\n return d ? /* @__PURE__ */ r.jsx(\"svg\", { ...j, fill: C, children: t }) : /* @__PURE__ */ r.jsx(\n \"svg\",\n {\n ...j,\n fill: \"none\",\n stroke: C,\n strokeWidth: c,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: t\n }\n );\n }\n);\ni.displayName = \"IconBase\";\nconst l1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, viewBox: \"0 0 22 22\", useFill: !0, children: /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M0.31074 10.9704C0.310783 10.5562 0.646483 10.2205 1.06066 10.2205L10.2213 10.2218L10.222 1.06742C10.2223 0.653481 10.5579 0.317504 10.9719 0.317505C11.3858 0.317611 11.7215 0.653547 11.7218 1.06742L11.7211 10.2218L20.8824 10.2225C21.2965 10.2227 21.6324 10.5583 21.6324 10.9724C21.6323 11.3865 21.2965 11.7222 20.8824 11.7224L11.7211 11.7217L11.7218 20.8706C11.7218 21.2847 11.386 21.6204 10.9719 21.6205C10.5577 21.6205 10.222 21.2847 10.222 20.8706L10.2213 11.7217L1.06066 11.7203C0.646473 11.7202 0.310739 11.3845 0.31074 10.9704Z\",\n fill: \"currentColor\"\n }\n) }));\nl1.displayName = \"AddOutline\";\nconst o1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M5 12h14m0 0l-7-7m7 7l-7 7\" }) }));\no1.displayName = \"ArrowRightOutline\";\nconst i1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M19 12H5m0 0l7-7m-7 7l7 7\" }) }));\ni1.displayName = \"ArrowLeftOutline\";\nconst s1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, useFill: !0, children: [\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3.80273 8.19824C3.38873 8.19824 3.05273 7.86224 3.05273 7.44824V5.30124C3.06573 2.36324 5.44173 0.000244141 8.35473 0.000244141H8.37473C10.6307 0.000244141 12.6447 1.43324 13.3837 3.56724C13.5197 3.95824 13.3117 4.38524 12.9197 4.52124C12.5287 4.65824 12.1017 4.44924 11.9657 4.05724C11.4367 2.52824 9.99173 1.50024 8.37173 1.50024H8.35773C6.26573 1.50024 4.56173 3.19424 4.55273 5.28424V7.44824C4.55273 7.86224 4.21673 8.19824 3.80273 8.19824Z\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.542 8.12695C2.864 8.12695 1.5 9.49195 1.5 11.17V15.458C1.5 17.136 2.864 18.501 4.542 18.501H12.184C13.861 18.501 15.226 17.136 15.226 15.458V11.17C15.226 9.49195 13.861 8.12695 12.184 8.12695H4.542ZM12.184 20.001H4.542C2.037 20.001 0 17.963 0 15.458V11.17C0 8.66495 2.037 6.62695 4.542 6.62695H12.184C14.688 6.62695 16.726 8.66495 16.726 11.17V15.458C16.726 17.963 14.688 20.001 12.184 20.001Z\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.36328 15.1748C7.94928 15.1748 7.61328 14.8388 7.61328 14.4248V12.2028C7.61328 11.7888 7.94928 11.4528 8.36328 11.4528C8.77728 11.4528 9.11328 11.7888 9.11328 12.2028V14.4248C9.11328 14.8388 8.77728 15.1748 8.36328 15.1748Z\"\n }\n )\n] }));\ns1.displayName = \"UnlockOutline\";\nconst a1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, useFill: !0, children: [\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 1.5C5.313 1.5 1.5 5.313 1.5 10C1.5 14.687 5.313 18.5 10 18.5C14.687 18.5 18.5 14.687 18.5 10C18.5 5.313 14.687 1.5 10 1.5ZM10 20C4.486 20 0 15.514 0 10C0 4.486 4.486 0 10 0C15.514 0 20 4.486 20 10C20 15.514 15.514 20 10 20Z\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.55858 14.2207C8.36658 14.2207 8.17358 14.1477 8.02758 13.9997C7.73558 13.7057 7.73658 13.2317 8.02958 12.9397L10.9816 9.99968L8.02958 7.06068C7.73658 6.76868 7.73558 6.29368 8.02758 5.99968C8.31958 5.70468 8.79358 5.70668 9.08758 5.99768L12.5736 9.46868C12.7146 9.60968 12.7936 9.80068 12.7936 9.99968C12.7936 10.1997 12.7146 10.3907 12.5736 10.5317L9.08758 14.0017C8.94158 14.1477 8.74958 14.2207 8.55858 14.2207Z\"\n }\n )\n] }));\na1.displayName = \"ArrowRightCircleOutline\";\nconst u1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M9 6l6 6-6 6\" }) }));\nu1.displayName = \"ChevronRightOutline\";\nconst d1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M15 6l-6 6 6 6\" }) }));\nd1.displayName = \"ChevronLeftOutline\";\nconst c1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M6 9l6 6 6-6\" }) }));\nc1.displayName = \"ChevronDownOutline\";\nconst C1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M18 15l-6-6-6 6\" }) }));\nC1.displayName = \"ChevronUpOutline\";\nconst f1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M12 5v14m-7-7h14\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) }));\nf1.displayName = \"PlusOutline\";\nconst p1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, children: [\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M11 2H9C4 2 2 4 2 9v6c0 5 2 7 7 7h6c5 0 7-2 7-7v-2\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M16.04 3.02001L8.16 10.9C7.86 11.2 7.56 11.79 7.5 12.22L7.07 15.23C6.91 16.32 7.68 17.08 8.77 16.93L11.78 16.5C12.2 16.44 12.79 16.14 13.1 15.84L20.98 7.96001C22.34 6.60001 22.98 5.02001 20.98 3.02001C18.98 1.02001 17.4 1.66001 16.04 3.02001Z\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M14.91 4.1499C15.58 6.5399 17.45 8.4099 19.85 9.0899\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n )\n] }));\np1.displayName = \"EditSquareOutline\";\nconst h1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, children: [\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M13.26 3.6L5.05 12.29C4.74 12.62 4.44 13.27 4.38 13.72L4.01 16.96C3.88 18.13 4.72 18.93 5.88 18.73L9.1 18.18C9.55 18.1 10.18 17.77 10.49 17.43L18.7 8.74C20.12 7.24 20.76 5.53 18.55 3.44C16.35 1.37 14.68 2.1 13.26 3.6Z\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M11.89 5.05C12.32 7.81 14.56 9.92 17.34 10.2\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M3 22H21\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n )\n] }));\nh1.displayName = \"EditOutline\";\nconst L1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M21 5.98C17.67 5.65 14.32 5.48 10.98 5.48C9 5.48 7.02 5.58 5.04 5.78L3 5.98M8.5 4.97L8.72 3.66C8.88 2.71 9 2 10.69 2H13.31C15 2 15.13 2.75 15.28 3.67L15.5 4.97M18.85 9.14L18.2 19.21C18.09 20.78 18 22 15.21 22H8.79C6 22 5.91 20.78 5.8 19.21L5.15 9.14M10.33 16.5H13.66M9.5 12.5H14.5\" }) }));\nL1.displayName = \"DeleteOutline\";\nconst m1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, children: [\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M17 20.5H7C4 20.5 2 19 2 15.5V8.5C2 5 4 3.5 7 3.5H17C20 3.5 22 5 22 8.5V15.5C22 19 20 20.5 17 20.5Z\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M17 9L13.87 11.5C12.84 12.32 11.15 12.32 10.12 11.5L7 9\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\"\n }\n )\n] }));\nm1.displayName = \"MessageOutline\";\nconst x1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, children: [\n /* @__PURE__ */ r.jsx(\n \"circle\",\n {\n cx: \"11.7666\",\n cy: \"11.7666\",\n r: \"8.98856\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n d: \"M18.0183 18.4851L21.5423 22\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\"\n }\n )\n] }));\nx1.displayName = \"SearchOutline\";\nconst j1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, viewBox: \"0 0 22 22\", useFill: !0, children: [\n /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M7.5979 15.5596C7.1839 15.5596 6.8479 15.2236 6.8479 14.8096V11.0646C6.8479 10.6506 7.1839 10.3146 7.5979 10.3146C8.0119 10.3146 8.3479 10.6506 8.3479 11.0646V14.8096C8.3479 15.2236 8.0119 15.5596 7.5979 15.5596Z\", fill: \"currentColor\" }),\n /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M9.50862 13.6865H5.68762C5.27362 13.6865 4.93762 13.3505 4.93762 12.9365C4.93762 12.5225 5.27362 12.1865 5.68762 12.1865H9.50862C9.92262 12.1865 10.2586 12.5225 10.2586 12.9365C10.2586 13.3505 9.92262 13.6865 9.50862 13.6865Z\", fill: \"currentColor\" }),\n /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M14.116 11.9287H14.009C13.595 11.9287 13.259 11.5927 13.259 11.1787C13.259 10.7647 13.595 10.4287 14.009 10.4287H14.116C14.53 10.4287 14.866 10.7647 14.866 11.1787C14.866 11.5927 14.53 11.9287 14.116 11.9287Z\", fill: \"currentColor\" }),\n /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M15.9295 15.5029H15.8225C15.4085 15.5029 15.0725 15.1669 15.0725 14.7529C15.0725 14.3389 15.4085 14.0029 15.8225 14.0029H15.9295C16.3435 14.0029 16.6795 14.3389 16.6795 14.7529C16.6795 15.1669 16.3435 15.5029 15.9295 15.5029Z\", fill: \"currentColor\" }),\n /* @__PURE__ */ r.jsx(\"mask\", { id: \"mask0_6909_3794\", style: { maskType: \"luminance\" }, maskUnits: \"userSpaceOnUse\", x: \"6\", y: \"0\", width: \"7\", height: \"6\", children: /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M6.07166 0H12.1117V5.5879H6.07166V0Z\", fill: \"white\" }) }),\n /* @__PURE__ */ r.jsx(\"g\", { mask: \"url(#mask0_6909_3794)\", children: /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.3617 5.58788C10.9477 5.58788 10.6117 5.25188 10.6117 4.83788V4.16288C10.6087 3.43888 9.99466 2.84388 9.24366 2.84088H8.18966C7.02266 2.84088 6.07166 1.90288 6.07166 0.749878C6.07166 0.335878 6.40766 -0.00012207 6.82166 -0.00012207C7.23666 -0.00012207 7.57166 0.335878 7.57166 0.749878C7.57166 1.07588 7.84866 1.34088 8.18966 1.34088H9.24666C10.8197 1.34588 12.1047 2.60988 12.1117 4.15888V4.83788C12.1117 5.25188 11.7757 5.58788 11.3617 5.58788Z\", fill: \"currentColor\" }) }),\n /* @__PURE__ */ r.jsx(\"mask\", { id: \"mask1_6909_3794\", style: { maskType: \"luminance\" }, maskUnits: \"userSpaceOnUse\", x: \"0\", y: \"4\", width: \"22\", height: \"18\", children: /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M0 4.37329H21.4998V21.5H0V4.37329Z\", fill: \"white\" }) }),\n /* @__PURE__ */ r.jsx(\"g\", { mask: \"url(#mask1_6909_3794)\", children: /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.701 5.87304C9.225 5.87304 7.767 5.88604 6.335 5.91004C3.528 5.91004 1.5 7.88804 1.5 10.612V15.262C1.5 17.985 3.528 19.963 6.323 19.963C9.27 20.012 12.241 20.012 15.165 19.963H15.178C17.972 19.963 20 17.985 20 15.262V10.612C20 7.88804 17.972 5.91004 15.178 5.91004C13.674 5.88604 12.179 5.87304 10.701 5.87304ZM10.754 21.5C9.271 21.5 7.786 21.487 6.31 21.463C2.659 21.463 0 18.854 0 15.262V10.612C0 7.01904 2.659 4.41004 6.323 4.41004C9.192 4.36104 12.18 4.36104 15.19 4.41004C18.841 4.41004 21.5 7.01904 21.5 10.612V15.262C21.5 18.852 18.845 21.46 15.184 21.463C13.716 21.487 12.236 21.5 10.754 21.5Z\", fill: \"currentColor\" }) })\n] }));\nj1.displayName = \"GameOutline\";\nconst v1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, viewBox: \"0 0 12 12\", useFill: !0, children: /* @__PURE__ */ r.jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M9.41575 3.81219C9.53779 3.93423 9.53779 4.1321 9.41575 4.25414L4.90757 8.76231L2.58467 6.4468C2.46243 6.32496 2.46212 6.12709 2.58396 6.00486L2.93695 5.65074C3.05879 5.52851 3.25666 5.52819 3.37889 5.65004L3.46421 5.73508L4.90631 7.17259L8.62025 3.45864C8.74229 3.3366 8.94015 3.3366 9.06219 3.45864L9.41575 3.81219Z\", fill: \"currentColor\" }) }));\nv1.displayName = \"CheckOutline\";\nconst k1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M18 6L6 18M6 6l12 12\" }) }));\nk1.displayName = \"CloseOutline\";\nconst R1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, viewBox: \"0 0 20 19\", useFill: !0, children: /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.74992 1.5C9.65892 1.5 9.43492 1.525 9.31592 1.763L7.48992 5.414C7.20092 5.991 6.64392 6.392 5.99992 6.484L1.91192 7.073C1.64192 7.112 1.54992 7.312 1.52192 7.396C1.49692 7.477 1.45692 7.683 1.64292 7.861L4.59892 10.701C5.06992 11.154 5.28392 11.807 5.17192 12.446L4.47592 16.456C4.43292 16.707 4.58992 16.853 4.65992 16.903C4.73392 16.959 4.93192 17.07 5.17692 16.942L8.83192 15.047C9.40792 14.75 10.0939 14.75 10.6679 15.047L14.3219 16.941C14.5679 17.068 14.7659 16.957 14.8409 16.903C14.9109 16.853 15.0679 16.707 15.0249 16.456L14.3269 12.446C14.2149 11.807 14.4289 11.154 14.8999 10.701L17.8559 7.861C18.0429 7.683 18.0029 7.476 17.9769 7.396C17.9499 7.312 17.8579 7.112 17.5879 7.073L13.4999 6.484C12.8569 6.392 12.2999 5.991 12.0109 5.413L10.1829 1.763C10.0649 1.525 9.84092 1.5 9.74992 1.5ZM4.94692 18.5C4.53392 18.5 4.12392 18.37 3.77292 18.114C3.16692 17.67 2.86992 16.937 2.99892 16.199L3.69492 12.189C3.72092 12.04 3.66992 11.889 3.55992 11.783L0.603916 8.943C0.0599161 8.422 -0.135084 7.652 0.0949161 6.937C0.326916 6.214 0.940916 5.697 1.69792 5.589L5.78592 5C5.94392 4.978 6.07992 4.881 6.14792 4.743L7.97492 1.091C8.31192 0.418 8.99192 0 9.74992 0C10.5079 0 11.1879 0.418 11.5249 1.091L13.3529 4.742C13.4219 4.881 13.5569 4.978 13.7139 5L17.8019 5.589C18.5589 5.697 19.1729 6.214 19.4049 6.937C19.6349 7.652 19.4389 8.422 18.8949 8.943L15.9389 11.783C15.8289 11.889 15.7789 12.04 15.8049 12.188L16.5019 16.199C16.6299 16.938 16.3329 17.671 15.7259 18.114C15.1109 18.565 14.3099 18.626 13.6309 18.272L9.97792 16.379C9.83492 16.305 9.66392 16.305 9.52092 16.379L5.86792 18.273C5.57592 18.425 5.26092 18.5 4.94692 18.5Z\",\n fill: \"currentColor\"\n }\n) }));\nR1.displayName = \"StartOutline\";\nconst O1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, viewBox: \"0 0 20 19\", useFill: !0, children: [\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.5 11.979V14.024C1.5 14.73 1.774 15.393 2.273 15.892C2.772 16.391 3.436 16.666 4.141 16.666H15.857C17.313 16.666 18.499 15.482 18.5 14.026V11.978C17.214 11.645 16.261 10.474 16.26 9.085C16.26 7.696 17.213 6.525 18.499 6.191L18.5 4.146C18.501 2.688 17.318 1.501 15.861 1.5H4.144C2.687 1.5 1.501 2.685 1.5 4.142V6.259C1.986 6.375 2.437 6.614 2.812 6.964C3.381 7.495 3.709 8.215 3.737 8.993C3.74 10.459 2.787 11.643 1.5 11.979ZM15.857 18.166H4.142C3.035 18.166 1.995 17.736 1.212 16.953C0.43 16.17 0 15.13 0 14.024V11.324C0 10.91 0.336 10.574 0.75 10.574C1.574 10.573 2.24 9.905 2.239 9.085C2.225 8.667 2.065 8.319 1.789 8.061C1.514 7.803 1.158 7.662 0.776 7.683C0.569 7.685 0.375 7.614 0.229 7.473C0.083 7.332 0 7.136 0 6.933V4.143C0.001 1.858 1.86 0 4.144 0H15.856C18.146 0.001 20.002 1.863 20 4.147V6.846C20 7.26 19.664 7.596 19.25 7.596C18.429 7.596 17.76 8.264 17.76 9.084C17.761 9.906 18.429 10.574 19.25 10.574C19.664 10.574 20 10.91 20 11.324V14.024C19.999 16.308 18.14 18.166 15.857 18.166Z\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.10395 8.38103L8.61295 8.87703C8.88895 9.14803 9.01395 9.53403 8.94795 9.91103L8.82795 10.609L9.45695 10.278C9.79595 10.097 10.203 10.098 10.545 10.28L11.17 10.608L11.05 9.90903C10.987 9.52603 11.113 9.14303 11.386 8.87703L11.8949 8.38103L11.1899 8.27903C10.812 8.22403 10.484 7.98603 10.3149 7.64103L9.99995 7.00403L9.68495 7.64203C9.51595 7.98603 9.18795 8.22403 8.80795 8.27903L8.10395 8.38103ZM11.6179 12.387C11.432 12.387 11.246 12.342 11.074 12.251L9.99995 11.688L8.92495 12.252C8.52895 12.459 8.05795 12.426 7.69795 12.164C7.33695 11.901 7.15995 11.465 7.23495 11.025L7.43995 9.82903L6.57095 8.98203C6.25195 8.67103 6.13795 8.21403 6.27495 7.79003C6.41295 7.36503 6.77295 7.06003 7.21395 6.99603L8.41795 6.82003L8.95495 5.73103C9.15195 5.33103 9.55195 5.08203 9.99995 5.08203C10.446 5.08203 10.847 5.33103 11.044 5.73203L11.582 6.82003L12.784 6.99603C13.226 7.06003 13.5869 7.36503 13.7239 7.79003C13.8609 8.21403 13.748 8.67103 13.4279 8.98303L12.558 9.83003L12.7639 11.025C12.8389 11.466 12.661 11.903 12.299 12.165C12.095 12.312 11.8569 12.387 11.6179 12.387Z\"\n }\n )\n] }));\nO1.displayName = \"TicketOutline\";\nconst M1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, viewBox: \"0 0 20 20\", useFill: !0, children: [\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 1.5C5.313 1.5 1.5 5.313 1.5 10C1.5 14.687 5.313 18.5 10 18.5C14.687 18.5 18.5 14.687 18.5 10C18.5 5.313 14.687 1.5 10 1.5ZM10 20C4.486 20 0 15.514 0 10C0 4.486 4.486 0 10 0C15.514 0 20 4.486 20 10C20 15.514 15.514 20 10 20Z\",\n fill: \"currentColor\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.9482 11.0137C13.3952 11.0137 12.9432 10.5667 12.9432 10.0137C12.9432 9.46067 13.3862 9.01367 13.9382 9.01367H13.9482C14.5012 9.01367 14.9482 9.46067 14.9482 10.0137C14.9482 10.5667 14.5012 11.0137 13.9482 11.0137Z\",\n fill: \"currentColor\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.93845 11.0137C9.38545 11.0137 8.93445 10.5667 8.93445 10.0137C8.93445 9.46067 9.37645 9.01367 9.92945 9.01367H9.93845C10.4914 9.01367 10.9384 9.46067 10.9384 10.0137C10.9384 10.5667 10.4914 11.0137 9.93845 11.0137Z\",\n fill: \"currentColor\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.92968 11.0137C5.37668 11.0137 4.92468 10.5667 4.92468 10.0137C4.92468 9.46067 5.36768 9.01367 5.92068 9.01367H5.92968C6.48268 9.01367 6.92968 9.46067 6.92968 10.0137C6.92968 10.5667 6.48268 11.0137 5.92968 11.0137Z\",\n fill: \"currentColor\"\n }\n )\n] }));\nM1.displayName = \"MoreCircleOutline\";\nconst _1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, ...t, children: [\n /* @__PURE__ */ r.jsx(\"path\", { d: \"M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z\" }),\n /* @__PURE__ */ r.jsx(\"circle\", { cx: \"15.5\", cy: \"12\", r: \"1\" }),\n /* @__PURE__ */ r.jsx(\"circle\", { cx: \"11.5\", cy: \"12\", r: \"1\" }),\n /* @__PURE__ */ r.jsx(\"circle\", { cx: \"7.5\", cy: \"12\", r: \"1\" })\n] }));\n_1.displayName = \"MoreSquareOutline\";\nconst E1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, viewBox: \"0 0 19 19\", useFill: !0, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M12.2871 7.28027C11.9093 7.28115 11.596 7.00252 11.543 6.63965L11.5352 6.5293L11.5488 0.749023C11.5498 0.33481 11.8866 -0.000957489 12.3008 0C12.6771 0.00109291 12.9883 0.279963 13.041 0.641602L13.0488 0.751953L13.0371 5.77832L18.0635 5.76758C18.4777 5.76662 18.8145 6.10141 18.8154 6.51562C18.8163 6.89214 18.5392 7.20439 18.1777 7.25879L18.0674 7.26758L12.2871 7.28027ZM6.51465 18.8164C6.1383 18.8153 5.82712 18.5364 5.77441 18.1748L5.7666 18.0645L5.77832 13.0371L0.751953 13.0488C0.375542 13.0497 0.0633717 12.7734 0.00878906 12.4121L0 12.3008C-0.000797272 11.9243 0.276207 11.612 0.637695 11.5576L0.748047 11.5488L6.52832 11.5361C6.90611 11.5353 7.2194 11.8139 7.27246 12.1768L7.28027 12.2871L7.2666 18.0674C7.26564 18.4816 6.92886 18.8174 6.51465 18.8164Z\" }) }));\nE1.displayName = \"ShrinkOutline\";\nconst y1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M21 9V3h-6M3 15v6h6M21 3l-7 7M10 14l-7 7\" }) }));\ny1.displayName = \"ExpandOutline\";\nconst w1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, viewBox: \"0 0 20 20\", useFill: !0, children: /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.773 9.59876C6.791 9.61476 6.808 9.62976 6.825 9.64776C7.904 10.7538 8.499 12.2188 8.499 13.7738V17.7578L10.735 16.5398C10.911 16.4438 11.02 16.2558 11.02 16.0488V13.7618C11.02 12.2128 11.609 10.7528 12.678 9.65276L17.515 4.50776C17.828 4.17476 18 3.73776 18 3.27676V2.34076C18 1.87676 17.634 1.49976 17.186 1.49976H2.315C1.866 1.49976 1.5 1.87676 1.5 2.34076V3.27676C1.5 3.73776 1.672 4.17476 1.985 4.50676L6.773 9.59876ZM8.146 19.5008C7.944 19.5008 7.744 19.4468 7.562 19.3388C7.21 19.1288 6.999 18.7578 6.999 18.3458V13.7738C6.999 12.6388 6.576 11.5698 5.805 10.7508C5.782 10.7318 5.759 10.7108 5.739 10.6888L0.893 5.53576C0.317 4.92376 0 4.12076 0 3.27676V2.34076C0 1.04976 1.039 -0.000244141 2.315 -0.000244141H17.186C18.461 -0.000244141 19.5 1.04976 19.5 2.34076V3.27676C19.5 4.11976 19.183 4.92176 18.609 5.53476L13.762 10.6888C12.959 11.5168 12.52 12.6058 12.52 13.7618V16.0488C12.52 16.8048 12.111 17.4968 11.453 17.8568L8.692 19.3608C8.52 19.4538 8.333 19.5008 8.146 19.5008Z\",\n fill: \"currentColor\"\n }\n) }));\nw1.displayName = \"FunnelOutline\";\nconst b1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M2 12H22\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) }));\nb1.displayName = \"MinusOutline\";\nconst T1 = o((t, n) => /* @__PURE__ */ r.jsxs(i, { ref: n, useFill: !0, ...t, children: [\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.25 12a.75.75 0 0 1 .75-.75h14a.75.75 0 0 1 0 1.5H5a.75.75 0 0 1-.75-.75Z\"\n }\n ),\n /* @__PURE__ */ r.jsx(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.47 4.47a.75.75 0 0 1 1.06 0l7 7a.75.75 0 0 1 0 1.06l-7 7a.75.75 0 1 1-1.06-1.06L18.94 12l-6.47-6.47a.75.75 0 0 1 0-1.06Z\"\n }\n )\n] }));\nT1.displayName = \"ArrowRightBold\";\nconst N1 = o((t, n) => /* @__PURE__ */ r.jsx(i, { ref: n, ...t, children: /* @__PURE__ */ r.jsx(\"path\", { d: \"M5 12h7m5 0h2m-2 0l-7-7m7 7l-7 7\" }) }));\nN1.displayName = \"ArrowRightBroken\";\nexport {\n l1 as AddOutline,\n i1 as ArrowLeftOutline,\n T1 as ArrowRightBold,\n N1 as ArrowRightBroken,\n a1 as ArrowRightCircleOutline,\n o1 as ArrowRightOutline,\n v1 as CheckOutline,\n c1 as ChevronDownOutline,\n d1 as ChevronLeftOutline,\n u1 as ChevronRightOutline,\n C1 as ChevronUpOutline,\n k1 as CloseOutline,\n L1 as DeleteOutline,\n h1 as EditOutline,\n p1 as EditSquareOutline,\n y1 as ExpandOutline,\n w1 as FunnelOutline,\n j1 as GameOutline,\n i as IconBase,\n m1 as MessageOutline,\n b1 as MinusOutline,\n M1 as MoreCircleOutline,\n _1 as MoreSquareOutline,\n f1 as PlusOutline,\n x1 as SearchOutline,\n E1 as ShrinkOutline,\n R1 as StartOutline,\n O1 as TicketOutline,\n s1 as UnlockOutline\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * CheckboxButton 组件样式\n * 基于 Emotion + Theme Token\n * \n * 设计规范:\n * - 按钮样式的 checkbox\n * - 右下角勾选标记\n * - 完整的交互状态\n */\n\nimport { css } from '@emotion/react';\nimport type { Theme } from '@kingsoft-ai/theme';\n\nexport type CheckboxButtonSize = 'sm' | 'md' | 'lg';\n\ninterface CheckboxButtonSizeConfig {\n paddingX: number;\n paddingY: number;\n gap: number;\n minHeight: number;\n fontSize: number;\n lineHeight: number;\n checkmarkSize: number;\n checkmarkIcon: number;\n}\n\nexport const checkboxButtonSizeTokens: Record<CheckboxButtonSize, CheckboxButtonSizeConfig> = {\n sm: {\n paddingX: 12,\n paddingY: 5,\n gap: 8,\n minHeight: 28,\n fontSize: 12,\n lineHeight: 18,\n checkmarkSize: 10,\n checkmarkIcon: 7,\n },\n md: {\n paddingX: 16,\n paddingY: 7,\n gap: 10,\n minHeight: 32,\n fontSize: 12,\n lineHeight: 18,\n checkmarkSize: 12,\n checkmarkIcon: 8,\n },\n lg: {\n paddingX: 20,\n paddingY: 9,\n gap: 12,\n minHeight: 38,\n fontSize: 14,\n lineHeight: 20,\n checkmarkSize: 14,\n checkmarkIcon: 9,\n },\n};\n\n// ============================================================================\n// CheckboxButton 容器样式\n// ============================================================================\n\nexport const checkboxButtonContainer = css`\n display: inline-flex;\n cursor: pointer;\n user-select: none;\n position: relative;\n \n /* 隐藏原生 checkbox */\n input[type=\"checkbox\"] {\n position: absolute;\n opacity: 0;\n width: 1px;\n height: 1px;\n margin: 0;\n padding: 0;\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n white-space: nowrap;\n overflow: hidden;\n left: -9999px;\n -webkit-appearance: none;\n appearance: none;\n }\n \n &[data-disabled=\"true\"] {\n cursor: not-allowed;\n }\n`;\n\n// ============================================================================\n// CheckboxButton 包装器样式(按钮外观)\n// ============================================================================\n\nexport const checkboxButtonWrapper = (theme: Theme, size: CheckboxButtonSize = 'md') => {\n const sizeToken = checkboxButtonSizeTokens[size];\n \n return css`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n \n /* 尺寸与间距 - 按照设计稿 */\n padding: ${sizeToken.paddingY}px ${sizeToken.paddingX}px;\n gap: ${sizeToken.gap}px;\n min-height: ${sizeToken.minHeight}px;\n \n /* 字体样式 */\n font-family: ${theme.global.typography.fontFamily};\n font-size: ${sizeToken.fontSize}px;\n line-height: ${sizeToken.lineHeight}px;\n font-weight: 400;\n white-space: nowrap;\n \n /* 边框与圆角 */\n border: 1px solid ${theme.global.colors.neutral[200]}; /* #e1e1e1 - b4 组件描边 */\n border-radius: 4px;\n \n /* 默认状态 - 未选中 */\n background-color: ${theme.global.colors.common.white};\n color: rgba(10, 24, 51, 0.7); /* f4 正文文字色 */\n \n /* 过渡动画 */\n transition: \n background-color 0.2s ease,\n border-color 0.2s ease,\n color 0.2s ease;\n \n /* Hover 状态 - 未选中 */\n &[data-hover=\"true\"]:not([data-checked=\"true\"]):not([data-disabled=\"true\"]) {\n border-color: ${theme.global.colors.blue[500]}; /* #2c6fe7 - b5 主按钮色 */\n color: ${theme.global.colors.blue[500]};\n }\n \n /* Checked 状态 - 已选中 */\n &[data-checked=\"true\"]:not([data-disabled=\"true\"]) {\n background-color: ${theme.global.colors.blue[100]}; /* #d4e9fd - b1 选中背景面 */\n border-color: ${theme.global.colors.blue[500]}; /* #2c6fe7 - b5 主按钮色 */\n color: ${theme.global.colors.blue[500]};\n }\n \n /* Disabled 未选中状态 */\n &[data-disabled=\"true\"]:not([data-checked=\"true\"]) {\n background-color: ${theme.global.colors.neutral[100]}; /* #f0f0f0 - b5 禁用背景色 */\n border-color: ${theme.global.colors.neutral[200]}; /* #e1e1e1 */\n color: rgba(10, 24, 51, 0.3); /* f8 禁用文字色 */\n }\n \n /* Disabled 选中状态 */\n &[data-disabled=\"true\"][data-checked=\"true\"] {\n background-color: ${theme.global.colors.neutral[100]}; /* #f0f0f0 - b5 禁用背景色 */\n border-color: ${theme.global.colors.neutral[400]}; /* #c2c5cc - b6 选中边框色 */\n color: rgba(10, 24, 51, 0.3); /* f8 禁用文字色 */\n }\n \n /* Focus 状态 - 键盘导航 */\n input:focus-visible + & {\n outline: 2px solid ${theme.global.colors.blue[500]};\n outline-offset: 2px;\n }\n `;\n};\n\n// ============================================================================\n// CheckboxButton 勾选标记样式(右下角)\n// ============================================================================\n\nexport const checkboxButtonCheckmark = (theme: Theme, size: CheckboxButtonSize = 'md') => {\n const { checkmarkSize, checkmarkIcon } = checkboxButtonSizeTokens[size];\n \n return css`\n position: absolute;\n bottom: 0;\n right: 0;\n \n display: flex;\n align-items: flex-end;\n justify-content: flex-end;\n \n /* 勾选标记的背景三角形区域 */\n width: ${checkmarkSize}px;\n height: ${checkmarkSize}px;\n overflow: hidden;\n \n /* 过渡动画 */\n transition: background-color 0.2s ease;\n \n /* 背景三角形 */\n &::before {\n content: '';\n position: absolute;\n bottom: 0;\n right: 0;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 0 ${checkmarkSize}px ${checkmarkSize}px;\n border-color: transparent transparent ${theme.global.colors.blue[500]} transparent;\n transition: border-color 0.2s ease;\n }\n \n /* 禁用状态的背景 */\n &[data-disabled=\"true\"]::before {\n border-color: transparent transparent ${theme.global.colors.neutral[400]} transparent;\n }\n \n /* 图标样式 */\n svg {\n position: relative;\n color: ${theme.global.colors.common.white};\n width: ${checkmarkIcon}px;\n height: ${checkmarkIcon}px;\n margin: 0;\n z-index: 1;\n }\n \n /* 禁用状态的图标 */\n &[data-disabled=\"true\"] svg {\n color: ${theme.global.colors.neutral[100]}; /* #f0f2f4 */\n }\n `;\n};\n\n","/**\n * CheckboxButton 组件 - 按钮风格的 Checkbox\n * \n * 特性:\n * - 按钮样式的 checkbox 外观\n * - 右下角显示勾选标记\n * - 支持受控/非受控模式\n */\n\n/** @jsxImportSource @emotion/react */\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport { useTheme } from '@emotion/react';\nimport type { Theme } from '@kingsoft-ai/theme';\nimport { CheckOutline } from '@kingsoft-ai/icons';\nimport {\n checkboxButtonContainer,\n checkboxButtonWrapper,\n checkboxButtonCheckmark,\n checkboxButtonSizeTokens,\n} from './CheckboxButton.style';\nimport type { CheckboxButtonSize } from './CheckboxButton.style';\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface CheckboxButtonProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'onChange' | 'indeterminate'> {\n /**\n * 是否选中\n */\n checked?: boolean;\n \n /**\n * 默认是否选中(非受控)\n */\n defaultChecked?: boolean;\n \n /**\n * 是否禁用\n */\n disabled?: boolean;\n \n /**\n * 标签文字(必填)\n */\n label: React.ReactNode;\n \n /**\n * 值改变回调\n */\n onChange?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;\n \n /**\n * 尺寸\n */\n size?: CheckboxButtonSize;\n \n /**\n * 自定义类名\n */\n className?: string;\n \n /**\n * 自定义样式\n */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// CheckboxButton 组件\n// ============================================================================\n\n/**\n * CheckboxButton - 按钮风格的复选框组件\n * \n * 按照设计稿,呈现为按钮样式,右下角带勾选标记\n */\nexport const CheckboxButton = forwardRef<HTMLInputElement, CheckboxButtonProps>(\n (props, ref) => {\n const {\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n label,\n size = 'md',\n onChange,\n className,\n style,\n ...inputProps\n } = props;\n\n const theme = useTheme() as Theme;\n const inputRef = useRef<HTMLInputElement>(null);\n const [hover, setHover] = useState(false);\n \n // 内部状态管理(非受控)\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n \n // 判断是否受控\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n\n // 合并 refs\n useEffect(() => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(inputRef.current);\n } else {\n ref.current = inputRef.current;\n }\n }\n }, [ref]);\n\n // 处理点击\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n const newChecked = event.target.checked;\n \n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n \n onChange?.(newChecked, event);\n };\n\n const sizeToken = checkboxButtonSizeTokens[size];\n \n return (\n <label\n css={checkboxButtonContainer}\n data-disabled={disabled}\n className={className}\n style={style}\n onMouseEnter={() => !disabled && setHover(true)}\n onMouseLeave={() => !disabled && setHover(false)}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n {...inputProps}\n />\n \n <span\n css={checkboxButtonWrapper(theme, size)}\n data-hover={hover}\n data-checked={checked}\n data-disabled={disabled}\n data-size={size}\n >\n {/* 标签文字 */}\n {label}\n \n {/* 右下角勾选标记 */}\n {checked && (\n <span\n css={checkboxButtonCheckmark(theme, size)}\n data-disabled={disabled}\n data-size={size}\n >\n <CheckOutline size={sizeToken.checkmarkIcon} />\n </span>\n )}\n </span>\n </label>\n );\n }\n);\n\nCheckboxButton.displayName = 'CheckboxButton';\n\nexport default CheckboxButton;\n\n","/**\n * Collapse 折叠面板样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css, keyframes } from '@emotion/react'\n\n// ============================================================================\n// 动画定义\n// ============================================================================\n\n/**\n * 折叠内容展开动画\n */\nconst slideDown = keyframes`\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`\n\n/**\n * 折叠内容收起动画\n */\nconst slideUp = keyframes`\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-8px);\n }\n`\n\n/**\n * 箭头旋转动画(展开)\n */\nexport const rotateArrowDown = keyframes`\n from {\n transform: rotate(-90deg);\n }\n to {\n transform: rotate(0deg);\n }\n`\n\n/**\n * 箭头旋转动画(收起)\n */\nexport const rotateArrowUp = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(-90deg);\n }\n`\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Collapse 根容器\n * \n * 特性:\n * - 完整的边框和圆角\n * - 使用 Tier 3 组件层 Token\n */\nexport const CollapseRoot = styled.div`\n width: 100%;\n border: 1px solid ${({ theme }) => theme.components.collapse.border.default};\n border-radius: ${({ theme }) => theme.components.collapse.borderRadius};\n background: ${({ theme }) => theme.components.collapse.background.default};\n overflow: hidden;\n`\n\n/**\n * CollapseItem 容器\n * \n * 特性:\n * - 包含标题栏和内容区\n * - 底部边框作为分隔线\n */\nexport const CollapseItemWrapper = styled.div<{\n isLast?: boolean\n}>`\n border-bottom: ${({ isLast, theme }) =>\n isLast ? 'none' : `1px solid ${theme.components.collapse.divider}`};\n`\n\n/**\n * 折叠面板标题栏\n * \n * 特性:\n * - 可点击区域\n * - hover 状态背景色变化\n * - 支持键盘导航\n * - 完整的无障碍支持\n */\nexport const CollapseHeader = styled.div<{\n isExpanded: boolean\n isDisabled?: boolean\n}>`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.components.collapse.gap};\n padding: ${({ theme }) => theme.components.collapse.padding.header};\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n user-select: none;\n transition: background ${({ theme }) => theme.components.collapse.transition};\n \n /* Hover 状态 */\n ${({ isDisabled, theme }) =>\n !isDisabled &&\n css`\n &:hover {\n background: ${theme.components.collapse.background.hover};\n }\n `}\n\n /* Focus 可见状态 - 键盘导航时显示 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.components.collapse.arrow.default};\n outline-offset: -2px;\n }\n \n /* 禁用状态 */\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n opacity: 0.5;\n `}\n`\n\n/**\n * 箭头图标容器\n * \n * 特性:\n * - 平滑的旋转动画\n * - 展开时旋转 90 度(从右箭头变为下箭头)\n */\nexport const ArrowWrapper = styled.div<{\n isExpanded: boolean\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: ${({ theme }) => theme.components.collapse.arrowSize};\n height: ${({ theme }) => theme.components.collapse.arrowSize};\n color: ${({ theme }) => theme.components.collapse.arrow.default};\n transition: transform ${({ theme }) => theme.components.collapse.transition};\n transform: rotate(${({ isExpanded }) => (isExpanded ? '0deg' : '-90deg')});\n \n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n/**\n * 标题内容区\n * \n * 特性:\n * - 弹性布局,支持多行换行\n * - 可容纳自定义内容\n */\nexport const TitleWrapper = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.components.collapse.gap};\n min-width: 0; /* 允许内容收缩 */\n`\n\n/**\n * 标题文本\n * \n * 特性:\n * - 使用 Tier 3 文字颜色 Token\n * - 支持多行文本\n */\nexport const TitleText = styled.p`\n margin: 0;\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 14px;\n line-height: 22px;\n color: ${({ theme }) => theme.components.collapse.text.title};\n white-space: pre-wrap;\n word-break: break-word;\n`\n\n/**\n * 右侧后缀内容区\n * \n * 特性:\n * - 固定在右侧\n * - 支持图标、按钮等自定义内容\n */\nexport const SuffixWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n`\n\n/**\n * 折叠内容外层容器\n * \n * 特性:\n * - 控制高度和 overflow\n * - 平滑的高度过渡动画\n */\nexport const CollapseContentWrapper = styled.div<{\n isExpanded: boolean\n contentHeight: number\n}>`\n max-height: ${({ isExpanded, contentHeight }) =>\n isExpanded ? `${contentHeight}px` : '0px'};\n overflow: hidden;\n transition: max-height ${({ theme }) => theme.components.collapse.transition};\n`\n\n/**\n * 折叠内容内层容器\n * \n * 特性:\n * - 实际内容区域\n * - 内边距\n * - 淡入淡出动画\n */\nexport const CollapseContentInner = styled.div<{\n isExpanded: boolean\n}>`\n padding: ${({ theme }) => theme.components.collapse.padding.content};\n border-top: 1px solid ${({ theme }) => theme.components.collapse.divider};\n \n ${({ isExpanded }) =>\n isExpanded\n ? css`\n animation: ${slideDown} 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n `\n : css`\n animation: ${slideUp} 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n `}\n`\n\n/**\n * 折叠内容文本区域\n * \n * 特性:\n * - 使用 Tier 3 文字颜色 Token\n * - 支持富文本内容\n */\nexport const ContentText = styled.div`\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 12px;\n line-height: 22px;\n color: ${({ theme }) => theme.components.collapse.text.default};\n \n p {\n margin: 0 0 12px 0;\n \n &:last-child {\n margin-bottom: 0;\n }\n }\n`\n\n","/**\n * Collapse 折叠面板组件\n * \n * 可以折叠/展开的内容区域\n * 支持手风琴模式(同时只能展开一个)和普通模式(可同时展开多个)\n * \n * @example\n * ```tsx\n * // 非受控模式\n * <Collapse defaultActiveKey={['1']}>\n * <CollapseItem itemKey=\"1\" title=\"标题1\">内容1</CollapseItem>\n * <CollapseItem itemKey=\"2\" title=\"标题2\">内容2</CollapseItem>\n * </Collapse>\n * \n * // 受控模式 + 手风琴\n * <Collapse\n * activeKey={activeKey}\n * onChange={setActiveKey}\n * accordion\n * >\n * <CollapseItem itemKey=\"1\" title=\"标题1\">内容1</CollapseItem>\n * <CollapseItem itemKey=\"2\" title=\"标题2\">内容2</CollapseItem>\n * </Collapse>\n * ```\n */\n\nimport { useState, Children, cloneElement, isValidElement, forwardRef } from 'react'\nimport type { ReactElement, ReactNode } from 'react'\nimport { CollapseRoot } from './Collapse.style'\nimport type { CollapseItemProps } from './CollapseItem'\n\nexport interface CollapseProps {\n /** 当前激活的面板(受控) */\n activeKey?: string | number | (string | number)[]\n /** 默认激活的面板(非受控) */\n defaultActiveKey?: string | number | (string | number)[]\n /** 手风琴模式,每次只能展开一个面板 */\n accordion?: boolean\n /** 展开/收起回调 */\n onChange?: (activeKey: string | number | (string | number)[]) => void\n /** 子元素(CollapseItem) */\n children?: ReactNode\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * Collapse 折叠面板\n * \n * 特性:\n * - 支持受控和非受控模式\n * - 支持手风琴模式(accordion)\n * - 平滑的展开/收起动画\n * - 完整的键盘导航和无障碍支持\n */\nexport const Collapse = forwardRef<HTMLDivElement, CollapseProps>(\n (\n {\n activeKey: activeKeyProp,\n defaultActiveKey = [],\n accordion = false,\n onChange,\n children,\n className,\n },\n ref,\n ) => {\n // 内部状态(非受控模式)\n const [internalActiveKey, setInternalActiveKey] = useState<\n string | number | (string | number)[]\n >(defaultActiveKey)\n\n // 判断是否为受控模式\n const isControlled = activeKeyProp !== undefined\n const activeKey = isControlled ? activeKeyProp : internalActiveKey\n\n // 将 activeKey 统一转换为数组形式处理\n const activeKeys = Array.isArray(activeKey) ? activeKey : [activeKey]\n\n /**\n * 处理面板展开/收起\n */\n const handleChange = (itemKey: string | number, expanded: boolean) => {\n let newActiveKey: string | number | (string | number)[]\n\n if (accordion) {\n // 手风琴模式:只能展开一个\n newActiveKey = expanded ? itemKey : ''\n } else {\n // 普通模式:可以展开多个\n const currentKeys = Array.isArray(activeKey) ? [...activeKey] : activeKey ? [activeKey] : []\n \n if (expanded) {\n // 添加到激活列表\n newActiveKey = [...currentKeys, itemKey]\n } else {\n // 从激活列表移除\n newActiveKey = currentKeys.filter((key) => key !== itemKey)\n }\n }\n\n // 更新状态\n if (!isControlled) {\n setInternalActiveKey(newActiveKey)\n }\n\n // 触发回调\n onChange?.(newActiveKey)\n }\n\n /**\n * 渲染子元素\n */\n const renderChildren = () => {\n const items = Children.toArray(children).filter(isValidElement) as ReactElement<CollapseItemProps>[]\n const itemCount = items.length\n\n return items.map((child, index) => {\n const itemKey = child.props.itemKey\n const expanded = activeKeys.includes(itemKey)\n const last = index === itemCount - 1\n\n return cloneElement(child, {\n ...child.props,\n expanded,\n last,\n onChange: handleChange,\n })\n })\n }\n\n return (\n <CollapseRoot ref={ref} className={className} role=\"region\">\n {renderChildren()}\n </CollapseRoot>\n )\n },\n)\n\nCollapse.displayName = 'Collapse'\n\n\n\n\n\n","/**\n * CollapseItem 折叠面板项组件\n * \n * 单个可折叠的面板项,支持自定义标题、内容和后缀\n * \n * @example\n * ```tsx\n * <CollapseItem\n * title=\"折叠面板\"\n * suffix={<Tag>Red</Tag>}\n * >\n * 这是折叠面板的内容\n * </CollapseItem>\n * ```\n */\n\nimport { useRef, useEffect, useState, forwardRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { ChevronDownOutline } from '@kingsoft-ai/icons'\nimport {\n CollapseItemWrapper,\n CollapseHeader,\n ArrowWrapper,\n TitleWrapper,\n TitleText,\n SuffixWrapper,\n CollapseContentWrapper,\n CollapseContentInner,\n ContentText,\n} from './Collapse.style'\n\nexport interface CollapseItemProps {\n /** 面板唯一标识 */\n itemKey: string | number\n /** 标题内容(可以是字符串或自定义 ReactNode) */\n title?: ReactNode\n /** 面板内容 */\n children?: ReactNode\n /** 右侧后缀内容(如标签、图标等) */\n suffix?: ReactNode\n /** 是否展开(受控) */\n expanded?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 是否是最后一项(控制底部边框) */\n last?: boolean\n /** 展开/收起回调 */\n onChange?: (itemKey: string | number, expanded: boolean) => void\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * CollapseItem 折叠面板项\n * \n * 特性:\n * - 平滑的展开/收起动画\n * - 支持自定义标题和后缀\n * - 完整的键盘导航支持\n * - 自适应内容高度\n */\nexport const CollapseItem = forwardRef<HTMLDivElement, CollapseItemProps>(\n (\n {\n itemKey,\n title,\n children,\n suffix,\n expanded = false,\n disabled = false,\n last = false,\n onChange,\n className,\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null)\n const [contentHeight, setContentHeight] = useState(0)\n\n // 计算内容高度\n useEffect(() => {\n if (contentRef.current) {\n // 使用 scrollHeight 获取实际内容高度\n setContentHeight(contentRef.current.scrollHeight)\n }\n }, [children, expanded])\n\n // 处理点击\n const handleToggle = () => {\n if (disabled) return\n onChange?.(itemKey, !expanded)\n }\n\n // 处理键盘事件\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (disabled) return\n\n // 空格或回车键切换展开状态\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault()\n handleToggle()\n }\n }\n\n return (\n <CollapseItemWrapper ref={ref} isLast={last} className={className}>\n {/* 标题栏 */}\n <CollapseHeader\n isExpanded={expanded}\n isDisabled={disabled}\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={expanded}\n aria-disabled={disabled}\n aria-controls={`collapse-content-${itemKey}`}\n >\n {/* 箭头图标 */}\n <ArrowWrapper isExpanded={expanded} aria-hidden=\"true\">\n <ChevronDownOutline />\n </ArrowWrapper>\n\n {/* 标题内容 */}\n <TitleWrapper>\n {typeof title === 'string' ? <TitleText>{title}</TitleText> : title}\n </TitleWrapper>\n\n {/* 右侧后缀 */}\n {suffix && <SuffixWrapper>{suffix}</SuffixWrapper>}\n </CollapseHeader>\n\n {/* 折叠内容 */}\n <CollapseContentWrapper\n isExpanded={expanded}\n contentHeight={contentHeight}\n id={`collapse-content-${itemKey}`}\n role=\"region\"\n aria-labelledby={`collapse-header-${itemKey}`}\n >\n <CollapseContentInner ref={contentRef} isExpanded={expanded}>\n {typeof children === 'string' ? (\n <ContentText>{children}</ContentText>\n ) : (\n children\n )}\n </CollapseContentInner>\n </CollapseContentWrapper>\n </CollapseItemWrapper>\n )\n },\n)\n\nCollapseItem.displayName = 'CollapseItem'\n\n\n\n\n\n","/**\n * Input 输入框样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const inputSizes = ['sm', 'md', 'lg'] as const\nexport type InputSize = (typeof inputSizes)[number]\n\n// ============================================================================\n// 样式辅助函数\n// ============================================================================\n\n/**\n * 获取边框颜色(根据状态优先级)\n */\nconst getBorderColor = (\n isFocused: boolean,\n isError: boolean,\n isDisabled: boolean,\n isHovered: boolean,\n theme: AppTheme\n) => {\n if (isDisabled) return theme.components.input.border.disabled\n if (isError) return theme.components.input.border.error\n if (isFocused) return theme.components.input.border.focus\n if (isHovered) return theme.components.input.border.hover\n return theme.components.input.border.default\n}\n\n/**\n * 获取输入框尺寸样式\n */\nconst getSizeStyles = (size: InputSize, theme: AppTheme) => {\n const sizeToken = theme.components.input.size[size]\n\n return css`\n height: ${sizeToken.height};\n font-size: ${sizeToken.fontSize};\n padding-inline: ${sizeToken.paddingInline};\n\n /* 图标尺寸 */\n svg {\n width: ${sizeToken.iconSize};\n height: ${sizeToken.iconSize};\n flex-shrink: 0;\n }\n `\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Input 根容器\n * \n * 特性:\n * - 处理边框颜色状态切换\n * - 支持全宽模式\n * - 基于三层 Token 设计\n */\nexport const InputRoot = styled.div<{\n size: InputSize\n fullWidth: boolean\n isFocused: boolean\n isError: boolean\n isDisabled: boolean\n isHovered: boolean\n}>`\n /* 基础样式 */\n position: relative;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : '200px')};\n min-width: 200px; /* 防止内容动态变化导致宽度闪烁 */\n\n /* 边框样式 */\n border: 1px solid;\n border-color: ${({ isFocused, isError, isDisabled, isHovered, theme }) =>\n getBorderColor(isFocused, isError, isDisabled, isHovered, theme)};\n border-radius: ${({ theme }) => theme.components.input.borderRadius};\n\n /* 背景色 */\n background: ${({ isDisabled, theme }) =>\n isDisabled\n ? theme.components.input.background.disabled\n : theme.components.input.background.default};\n\n /* 过渡动画 */\n transition: border-color ${({ theme }) => theme.components.input.transition},\n background ${({ theme }) => theme.components.input.transition};\n\n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n /* 禁用状态 */\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n cursor: not-allowed;\n opacity: 0.6;\n `}\n\n /* 全宽模式 */\n ${({ fullWidth }) =>\n fullWidth &&\n css`\n width: 100%;\n `}\n`\n\n/**\n * 输入框内部包装器\n * \n * 用于布局前缀图标、输入框、后缀图标、清除按钮和计数器\n */\nexport const InputWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.components.input.gap};\n width: 100%;\n height: 100%;\n`\n\n/**\n * 原生 input 元素\n * \n * 特性:\n * - 无边框、背景透明(由容器处理)\n * - 支持错误状态文字颜色\n * - 占位符样式\n */\nexport const StyledInput = styled.input<{\n isError: boolean\n isDisabled: boolean\n}>`\n /* 重置默认样式 */\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n padding: 0;\n margin: 0;\n\n /* 字体样式 */\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: inherit;\n line-height: 1.5;\n color: ${({ isError, isDisabled, theme }) => {\n if (isDisabled) return theme.components.input.text.disabled\n if (isError) return theme.components.input.text.error\n return theme.components.input.text.default\n }};\n\n /* 占位符样式 */\n &::placeholder {\n color: ${({ theme }) => theme.components.input.text.placeholder};\n opacity: 1;\n }\n\n /* 禁用状态 */\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n cursor: not-allowed;\n user-select: none;\n `}\n\n /* 移除默认的 focus 样式 */\n &:focus {\n outline: none;\n }\n\n /* 移除数字输入框的箭头(Chrome, Safari, Edge, Opera) */\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n /* 移除数字输入框的箭头(Firefox) */\n &[type='number'] {\n -moz-appearance: textfield;\n }\n`\n\n/**\n * 图标包装器(前缀/后缀图标)\n * \n * 特性:\n * - 灵活的尺寸适配\n * - 颜色自动继承或根据状态调整\n */\nexport const IconWrapper = styled.span<{\n isError: boolean\n isDisabled: boolean\n position: 'prefix' | 'suffix'\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 0;\n\n /* 颜色继承或根据状态调整 */\n color: ${({ isError, isDisabled, theme }) => {\n if (isDisabled) return theme.components.input.text.disabled\n if (isError) return theme.components.input.text.error\n return theme.components.input.text.default\n }};\n\n /* 确保图标大小一致 */\n svg {\n display: block;\n }\n`\n\n/**\n * 清除按钮\n * \n * 特性:\n * - 仅在有内容且未禁用时显示\n * - hover 时有反馈效果\n * - 无障碍友好\n */\nexport const ClearButton = styled.button<{\n isError: boolean\n}>`\n /* 重置按钮样式 */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n padding: 0;\n margin: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n outline: none;\n line-height: 0;\n\n /* 颜色 */\n color: ${({ isError, theme }) =>\n isError\n ? theme.components.input.text.error\n : theme.components.input.text.counter};\n\n /* 过渡动画 */\n transition: opacity ${({ theme }) => theme.components.input.transition},\n color ${({ theme }) => theme.components.input.transition};\n\n /* hover 状态 */\n &:hover {\n opacity: 0.7;\n }\n\n /* active 状态 */\n &:active {\n opacity: 0.5;\n }\n\n /* focus 可见状态 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.components.input.border.focus};\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n /* 图标尺寸 */\n svg {\n width: 16px;\n height: 16px;\n display: block;\n }\n`\n\n/**\n * 字符计数器\n * \n * 显示格式:当前字数/最大字数\n */\nexport const Counter = styled.span<{\n isError: boolean\n isDisabled: boolean\n}>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: inherit;\n line-height: 1.5;\n white-space: nowrap;\n user-select: none;\n\n /* 颜色 */\n color: ${({ isError, isDisabled, theme }) => {\n if (isDisabled) return theme.components.input.text.disabled\n if (isError) return theme.components.input.text.error\n return theme.components.input.text.counter\n }};\n`\n\n","/**\n * Input 输入框组件\n * \n * 基于 react-aria 实现无障碍访问的输入框组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * <Input\n * size=\"md\"\n * placeholder=\"请输入内容\"\n * clearable\n * showCounter\n * maxLength={100}\n * />\n * ```\n */\n\nimport { forwardRef, useRef, useState, type ReactNode, type ChangeEvent, type FocusEvent } from 'react'\nimport {\n InputRoot,\n InputWrapper,\n StyledInput,\n IconWrapper,\n ClearButton,\n Counter,\n inputSizes,\n type InputSize,\n} from './Input.style'\n\n// 导出常量供外部使用\nexport const SIZES = inputSizes\n\nexport type InputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'prefix'\n> & {\n /** 输入框尺寸:小号(24px)、标准(32px)、大号(40px) */\n size?: InputSize\n /** 前缀图标 */\n prefix?: ReactNode\n /** 后缀图标 */\n suffix?: ReactNode\n /** 是否显示清除按钮(有值时显示) */\n clearable?: boolean\n /** 错误状态 */\n error?: boolean\n /** 错误提示信息 */\n errorMessage?: ReactNode\n /** 是否显示字符计数器 */\n showCounter?: boolean\n /** 全宽输入框 */\n fullWidth?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 输入框标签 */\n label?: ReactNode\n /** 输入框描述 */\n description?: ReactNode\n}\n\n/**\n * 清除图标 SVG\n */\nconst CloseIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n/**\n * Input 输入框组件\n * \n * 基于 Figma 设计规范实现的输入框组件,支持多种尺寸和状态\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'md',\n prefix,\n suffix,\n clearable = false,\n error = false,\n errorMessage,\n showCounter = false,\n fullWidth = false,\n disabled,\n className,\n type = 'text',\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n maxLength,\n label,\n description,\n id,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n ...restProps\n },\n forwardedRef\n ) => {\n const innerRef = useRef<HTMLInputElement>(null)\n const ref = (forwardedRef || innerRef) as React.RefObject<HTMLInputElement>\n \n // 生成唯一 ID(只在组件初始化时生成一次)\n const generatedId = useRef(`input-${Math.random().toString(36).slice(2, 9)}`)\n\n // 内部状态管理(用于 UI 反馈)\n const [isFocused, setIsFocused] = useState(false)\n const [isHovered, setIsHovered] = useState(false)\n const [internalValue, setInternalValue] = useState(defaultValue || '')\n\n // 获取当前值(受控或非受控)\n const isControlled = value !== undefined\n const currentValue = isControlled ? String(value) : String(internalValue)\n\n // 处理输入变化\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n }\n\n // 处理焦点事件\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n // 清除按钮点击处理\n const handleClear = () => {\n if (disabled || !ref.current) return\n\n // 创建合成事件以触发 onChange\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call(ref.current, '')\n\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, 'target', {\n writable: false,\n value: ref.current,\n })\n \n if (!isControlled) {\n setInternalValue('')\n }\n onChange?.(event as unknown as ChangeEvent<HTMLInputElement>)\n\n // 聚焦回输入框\n ref.current.focus()\n }\n\n // 计算字符数\n const currentLength = currentValue.length\n const showClearButton = clearable && currentLength > 0 && !disabled\n\n // 使用提供的 ID 或生成的唯一 ID\n const inputId = id || generatedId.current\n const descriptionId = description ? `${inputId}-description` : undefined\n const errorId = errorMessage && error ? `${inputId}-error` : undefined\n \n const describedBy = [ariaDescribedBy, descriptionId, errorId]\n .filter(Boolean)\n .join(' ') || undefined\n\n return (\n <div>\n {/* Label 如果提供 */}\n {label && (\n <label htmlFor={inputId} style={{ display: 'block', marginBottom: 4 }}>\n {label}\n </label>\n )}\n\n <InputRoot\n size={size}\n fullWidth={fullWidth}\n isFocused={isFocused}\n isError={error}\n isDisabled={!!disabled}\n isHovered={isHovered}\n className={className}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n <InputWrapper>\n {/* 前缀图标 */}\n {prefix && (\n <IconWrapper\n isError={error}\n isDisabled={!!disabled}\n position=\"prefix\"\n aria-hidden=\"true\"\n >\n {prefix}\n </IconWrapper>\n )}\n\n {/* 输入框 */}\n <StyledInput\n {...restProps}\n ref={ref}\n id={inputId}\n type={type}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n maxLength={maxLength}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-describedby={describedBy}\n aria-invalid={error}\n isError={error}\n isDisabled={!!disabled}\n />\n\n {/* 清除按钮 */}\n {showClearButton && (\n <ClearButton\n type=\"button\"\n onClick={handleClear}\n aria-label=\"清除内容\"\n isError={error}\n tabIndex={-1}\n >\n <CloseIcon />\n </ClearButton>\n )}\n\n {/* 后缀图标 */}\n {suffix && (\n <IconWrapper\n isError={error}\n isDisabled={!!disabled}\n position=\"suffix\"\n aria-hidden=\"true\"\n >\n {suffix}\n </IconWrapper>\n )}\n\n {/* 字符计数器 */}\n {showCounter && maxLength !== undefined && (\n <Counter\n isError={error}\n isDisabled={!!disabled}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {currentLength}/{maxLength}\n </Counter>\n )}\n </InputWrapper>\n </InputRoot>\n\n {/* Description 如果提供 */}\n {description && (\n <div id={descriptionId} style={{ marginTop: 4, fontSize: 12 }}>\n {description}\n </div>\n )}\n\n {/* Error Message 如果提供 */}\n {errorMessage && error && (\n <div\n id={errorId}\n role=\"alert\"\n style={{ marginTop: 4, fontSize: 12, color: 'inherit' }}\n >\n {errorMessage}\n </div>\n )}\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\n\n","/**\n * Menu 菜单样式\n * \n * 基于三层 Token 体系的侧边栏导航菜单组件样式\n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface MenuStyleProps {\n collapsed?: boolean\n}\n\nexport interface MenuItemStyleProps {\n active?: boolean\n disabled?: boolean\n isSubItem?: boolean\n collapsed?: boolean\n}\n\n// ============================================================================\n// Menu 容器样式\n// ============================================================================\n\n/**\n * Menu 根容器\n * \n * 特性:\n * - 支持展开/折叠状态\n * - 固定宽度\n * - 滚动区域\n */\nexport const MenuContainer = styled.div<MenuStyleProps>`\n display: flex;\n flex-direction: column;\n width: ${({ collapsed, theme }) => \n collapsed ? theme.components.menu.container.width.collapsed : theme.components.menu.container.width.expanded};\n height: 100%;\n background: ${({ theme }) => theme.components.menu.container.background};\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n\n /* 滚动条样式 */\n &::-webkit-scrollbar {\n width: ${({ theme }) => theme.components.menu.scrollbar.width};\n }\n\n &::-webkit-scrollbar-track {\n background: ${({ theme }) => theme.components.menu.scrollbar.trackColor};\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.components.menu.scrollbar.thumbColor};\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n`\n\n/**\n * Menu 内容滚动区域\n */\nexport const MenuContent = styled.div`\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: ${({ theme }) => theme.components.menu.container.padding};\n padding-top: 0;\n\n /* 滚动条样式 */\n &::-webkit-scrollbar {\n width: ${({ theme }) => theme.components.menu.scrollbar.width};\n }\n\n &::-webkit-scrollbar-track {\n background: ${({ theme }) => theme.components.menu.scrollbar.trackColor};\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.components.menu.scrollbar.thumbColor};\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n`\n\n// ============================================================================\n// MenuItem 样式\n// ============================================================================\n\n/**\n * MenuItem 容器\n * \n * 支持:\n * - 激活状态\n * - 禁用状态\n * - 子菜单缩进\n */\nexport const MenuItemContainer = styled.button<MenuItemStyleProps>`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n height: ${({ theme }) => theme.components.menu.item.height};\n padding-inline: ${({ theme, isSubItem }) => \n isSubItem ? theme.components.menu.subItem.paddingLeft : theme.components.menu.item.paddingInline};\n gap: ${({ theme }) => theme.components.menu.item.gap};\n border: none;\n border-radius: ${({ theme }) => theme.components.menu.item.borderRadius};\n position: relative;\n overflow: hidden;\n background: ${({ theme, active, isSubItem, collapsed }) =>\n collapsed\n ? 'transparent'\n : active\n ? 'transparent'\n : isSubItem\n ? theme.components.menu.subItem.background.default\n : theme.components.menu.item.background.default};\n color: ${({ theme, active, collapsed }) =>\n collapsed && active\n ? theme.semantic.colors.brand.primaryActive\n : active\n ? theme.components.menu.item.text.active\n : theme.components.menu.item.text.default};\n font-size: ${({ theme }) => theme.components.menu.item.fontSize};\n font-weight: ${({ theme }) => theme.components.menu.item.fontWeight};\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n text-align: left;\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n transition: ${({ theme }) => theme.components.menu.item.transition};\n user-select: none;\n outline: none;\n\n &::before {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: ${({ theme, isSubItem }) =>\n isSubItem\n ? theme.components.menu.subItem.background.active\n : theme.components.menu.item.background.active};\n transform-origin: left center;\n transform: ${({ active, collapsed }) => (collapsed ? 'scaleX(0)' : active ? 'scaleX(1)' : 'scaleX(0)')};\n opacity: ${({ active, collapsed }) => (collapsed ? 0 : active ? 1 : 0)};\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease;\n z-index: 0;\n }\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: ${({ theme, isSubItem }) =>\n isSubItem\n ? theme.components.menu.subItem.background.hover\n : theme.components.menu.item.background.hover};\n transform: translateX(-100%);\n opacity: 0;\n transition: transform 0.3s ease, opacity 0.2s ease;\n z-index: 0;\n }\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n /* Hover 状态 */\n &:hover:not(:disabled) {\n background: ${({ theme, active, isSubItem, collapsed }) =>\n collapsed\n ? 'transparent'\n : active\n ? 'transparent'\n : isSubItem\n ? theme.components.menu.subItem.background.hover\n : theme.components.menu.item.background.hover};\n color: ${({ theme, active, collapsed }) =>\n collapsed\n ? theme.semantic.colors.brand.primaryActive\n : active\n ? theme.components.menu.item.text.active\n : theme.components.menu.item.text.hover};\n }\n\n &:hover:not(:disabled)::after {\n transform: ${({ collapsed, active }) =>\n !collapsed && !active ? 'translateX(0)' : 'translateX(-100%)'};\n opacity: ${({ collapsed, active }) => (!collapsed && !active ? 1 : 0)};\n }\n\n /* 禁用状态 */\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Focus 状态 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: -2px;\n }\n`\n\n/**\n * MenuItem 图标容器\n */\nexport const MenuItemIcon = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: ${({ theme }) => theme.components.menu.item.iconSize};\n height: ${({ theme }) => theme.components.menu.item.iconSize};\n\n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n/**\n * MenuItem 文字标签\n */\nexport const MenuItemLabel = styled.span<{ collapsed?: boolean }>`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n opacity: ${({ collapsed }) => (collapsed ? 0 : 1)};\n transition: opacity 0.2s ease;\n`\n\n/**\n * MenuItem 箭头图标\n */\nexport const MenuItemArrow = styled.span<{ collapsed?: boolean; expanded?: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 14px;\n height: 14px;\n opacity: ${({ collapsed }) => (collapsed ? 0 : 1)};\n transition: transform 0.2s ease, opacity 0.2s ease;\n transform: ${({ expanded }) => (expanded ? 'rotate(90deg)' : 'rotate(0deg)')};\n\n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n// ============================================================================\n// MenuGroup 样式\n// ============================================================================\n\n/**\n * MenuGroup 容器\n */\nexport const MenuGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.menu.group.gap};\n margin-top: ${({ theme }) => theme.components.menu.group.marginTop};\n\n &:first-of-type {\n margin-top: 0;\n }\n`\n\n/**\n * MenuGroup 标题\n */\nexport const MenuGroupTitle = styled.div<{ collapsed?: boolean }>`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.components.menu.groupTitle.height};\n padding-inline: ${({ theme }) => theme.components.menu.groupTitle.paddingInline};\n margin-bottom: ${({ theme }) => theme.components.menu.groupTitle.marginBottom};\n font-size: ${({ theme }) => theme.components.menu.groupTitle.fontSize};\n font-weight: ${({ theme }) => theme.components.menu.groupTitle.fontWeight};\n color: ${({ theme }) => theme.components.menu.groupTitle.color};\n opacity: ${({ collapsed }) => (collapsed ? 0 : 1)};\n transition: opacity 0.2s ease;\n overflow: hidden;\n\n /* 分割线 */\n &::after {\n content: '';\n flex: 1;\n height: 1px;\n background: ${({ theme }) => theme.semantic.colors.border.primary};\n margin-left: 8px;\n opacity: ${({ collapsed }) => (collapsed ? 0 : 1)};\n }\n`\n\n/**\n * MenuGroup 项目容器\n */\nexport const MenuGroupItems = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.menu.group.gap};\n`\n\n// ============================================================================\n// SubMenuPopover 悬浮层样式\n// ============================================================================\n\n/**\n * SubMenuPopover 容器\n * \n * 折叠状态下的二级菜单悬浮层\n */\nexport const SubMenuPopoverContainer = styled.div`\n position: fixed;\n z-index: 9999;\n min-width: 200px;\n background: ${({ theme }) => theme.components.menu.popover.background};\n border: ${({ theme }) => theme.components.menu.popover.border};\n border-radius: ${({ theme }) => theme.components.menu.popover.borderRadius};\n box-shadow: ${({ theme }) => theme.components.menu.popover.boxShadow};\n padding: ${({ theme }) => theme.components.menu.popover.padding};\n animation: slideIn 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translateX(-8px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n`\n\n/**\n * SubMenuPopover 内容区域\n */\nexport const SubMenuPopoverContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.menu.group.gap};\n`\n\n/**\n * SubMenuPopover 菜单项容器\n * \n * 悬浮层中的菜单项样式\n */\nexport const SubMenuPopoverItem = styled.button<{ active?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n height: ${({ theme }) => theme.components.menu.item.height};\n padding-inline: ${({ theme }) => theme.components.menu.item.paddingInline};\n gap: ${({ theme }) => theme.components.menu.item.gap};\n border: none;\n border-radius: ${({ theme }) => theme.components.menu.item.borderRadius};\n background: ${({ theme, active }) =>\n active\n ? theme.components.menu.popover.item.background.active\n : theme.components.menu.popover.item.background.default};\n color: ${({ theme, active }) =>\n active\n ? theme.components.menu.popover.item.text.active\n : theme.components.menu.popover.item.text.default};\n font-size: ${({ theme }) => theme.components.menu.item.fontSize};\n font-weight: ${({ theme }) => theme.components.menu.item.fontWeight};\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n text-align: left;\n cursor: pointer;\n transition: ${({ theme }) => theme.components.menu.item.transition};\n user-select: none;\n outline: none;\n white-space: nowrap;\n\n &:hover {\n background: ${({ theme, active }) =>\n active\n ? theme.components.menu.popover.item.background.active\n : theme.components.menu.popover.item.background.hover};\n color: ${({ theme, active }) =>\n active\n ? theme.components.menu.popover.item.text.active\n : theme.components.menu.popover.item.text.hover};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: -2px;\n }\n`\n\n","/**\n * Menu 侧边栏菜单组件\n * \n * 基于 Figma 设计稿的导航菜单组件\n * 支持展开/折叠、分组、子菜单等功能\n */\n\nimport { forwardRef, type ReactNode } from 'react'\nimport { MenuContainer, MenuContent } from './Menu.style'\n\nexport interface MenuProps {\n /** 菜单是否折叠 */\n collapsed?: boolean\n /** 子元素(自定义内容、MenuGroup、MenuItem等) */\n children: ReactNode\n /** 自定义类名 */\n className?: string\n /** 自定义样式 */\n style?: React.CSSProperties\n}\n\n/**\n * Menu 侧边栏菜单组件\n * \n * 主容器组件,用于包裹所有菜单相关子组件\n * \n * @example\n * ```tsx\n * <Menu collapsed={false}>\n * <div style={{ padding: 24 }}>自定义头部</div>\n *\n * <MenuGroup title=\"主要功能\">\n * <MenuItem icon={<HomeIcon />} label=\"首页\" active />\n * <MenuItem icon={<UserIcon />} label=\"用户\" />\n * </MenuGroup>\n * \n * <div style={{ padding: 24 }}>自定义底部</div>\n * </Menu>\n * ```\n */\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ collapsed = false, children, className, style }, ref) => {\n return (\n <MenuContainer\n ref={ref}\n collapsed={collapsed}\n className={className}\n style={style}\n role=\"navigation\"\n aria-label=\"主导航\"\n >\n <MenuContent role=\"menu\">{children}</MenuContent>\n </MenuContainer>\n )\n },\n)\n\nMenu.displayName = 'Menu'\n\n","/**\n * SubMenuPopover 子菜单悬浮层组件\n * \n * 用于在折叠状态下显示二级菜单\n */\n\nimport { type ReactNode, useEffect, useRef, useState } from 'react'\n// @ts-ignore - react-dom type issue\nimport { createPortal } from 'react-dom'\nimport { SubMenuPopoverContainer, SubMenuPopoverContent } from './Menu.style'\n\nexport interface SubMenuPopoverProps {\n /** 是否显示 */\n visible: boolean\n /** 触发元素的引用 */\n anchorRef: React.RefObject<HTMLElement>\n /** 子菜单内容 */\n children: ReactNode\n /** 关闭回调 */\n onClose?: () => void\n /** 鼠标移入事件 */\n onMouseEnter?: () => void\n /** 鼠标移出事件 */\n onMouseLeave?: () => void\n}\n\n/**\n * SubMenuPopover 子菜单悬浮层组件\n * \n * 在折叠状态下,鼠标悬浮一级菜单时展示二级菜单\n */\nexport const SubMenuPopover = ({\n visible,\n anchorRef,\n children,\n onClose,\n onMouseEnter,\n onMouseLeave,\n}: SubMenuPopoverProps) => {\n const popoverRef = useRef<HTMLDivElement>(null)\n const [position, setPosition] = useState({ top: 0, left: 0 })\n\n // 计算弹出层位置\n useEffect(() => {\n if (!visible || !anchorRef.current) return\n\n const updatePosition = () => {\n if (!anchorRef.current) return\n\n const rect = anchorRef.current.getBoundingClientRect()\n const gap = 4 // 与触发元素的间距\n\n setPosition({\n top: rect.top,\n left: rect.right + gap,\n })\n }\n\n updatePosition()\n\n // 监听滚动和窗口大小变化\n window.addEventListener('scroll', updatePosition, true)\n window.addEventListener('resize', updatePosition)\n\n return () => {\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n }\n }, [visible, anchorRef])\n\n // 处理点击外部关闭\n useEffect(() => {\n if (!visible) return\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(e.target as Node) &&\n anchorRef.current &&\n !anchorRef.current.contains(e.target as Node)\n ) {\n onClose?.()\n }\n }\n\n // 延迟添加监听器,避免立即触发\n const timer = setTimeout(() => {\n document.addEventListener('mousedown', handleClickOutside)\n }, 100)\n\n return () => {\n clearTimeout(timer)\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [visible, onClose, anchorRef])\n\n if (!visible) return null\n\n return createPortal(\n <SubMenuPopoverContainer\n ref={popoverRef}\n style={{\n top: position.top,\n left: position.left,\n }}\n role=\"menu\"\n aria-label=\"子菜单\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <SubMenuPopoverContent>{children}</SubMenuPopoverContent>\n </SubMenuPopoverContainer>,\n document.body,\n )\n}\n\nSubMenuPopover.displayName = 'SubMenuPopover'\n\n","/**\n * MenuItem 菜单项组件\n * \n * 基于 react-aria 实现无障碍访问的菜单项\n * 支持图标、文字、箭头指示器、悬浮子菜单\n */\n\nimport { forwardRef, type ReactNode, useRef, useState } from 'react'\nimport {\n MenuItemContainer,\n MenuItemIcon,\n MenuItemLabel,\n MenuItemArrow,\n} from './Menu.style'\nimport { SubMenuPopover } from './SubMenuPopover'\n\nexport interface MenuItemProps {\n /** 唯一标识符 */\n id?: string\n /** 菜单项图标 */\n icon?: ReactNode\n /** 菜单项文字 */\n label: string\n /** 是否激活/选中 */\n active?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 是否为子菜单项 */\n isSubItem?: boolean\n /** 是否显示箭头(用于可展开项) */\n showArrow?: boolean\n /** 箭头是否展开 */\n arrowExpanded?: boolean\n /** 菜单是否折叠 */\n collapsed?: boolean\n /** 子菜单内容(折叠状态下悬浮显示) */\n subMenu?: ReactNode\n /** 点击事件 */\n onClick?: () => void\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * MenuItem 菜单项组件\n * \n * 用于侧边栏导航的单个菜单项\n * 支持激活状态、禁用状态、子菜单缩进、折叠时的悬浮子菜单\n */\nexport const MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(\n (\n {\n id,\n icon,\n label,\n active = false,\n disabled = false,\n isSubItem = false,\n showArrow = false,\n arrowExpanded = false,\n collapsed = false,\n subMenu,\n onClick,\n className,\n },\n ref,\n ) => {\n const itemRef = useRef<HTMLButtonElement>(null)\n const [showPopover, setShowPopover] = useState(false)\n const hoverTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n\n // 清除所有定时器\n const clearTimers = () => {\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current)\n hoverTimerRef.current = undefined\n }\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current)\n closeTimerRef.current = undefined\n }\n }\n\n // 处理鼠标进入\n const handleMouseEnter = () => {\n clearTimers()\n \n if (collapsed && subMenu) {\n if (showPopover) return\n\n // 延迟显示,避免误触\n hoverTimerRef.current = setTimeout(() => {\n setShowPopover(true)\n }, 200)\n }\n }\n\n // 处理鼠标离开\n const handleMouseLeave = () => {\n clearTimers()\n \n // 延迟隐藏,让用户有时间移动到悬浮层\n closeTimerRef.current = setTimeout(() => {\n setShowPopover(false)\n }, 100)\n }\n\n return (\n <>\n <MenuItemContainer\n ref={(node) => {\n // 合并 refs\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n if (node) {\n itemRef.current = node\n }\n }}\n id={id}\n active={active}\n disabled={disabled}\n isSubItem={isSubItem}\n onClick={onClick}\n collapsed={collapsed}\n className={className}\n role=\"menuitem\"\n aria-disabled={disabled}\n aria-current={active ? 'page' : undefined}\n aria-haspopup={collapsed && subMenu ? 'menu' : undefined}\n type=\"button\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {/* 图标 */}\n {icon && <MenuItemIcon aria-hidden=\"true\">{icon}</MenuItemIcon>}\n\n {/* 文字标签 */}\n <MenuItemLabel collapsed={collapsed}>{label}</MenuItemLabel>\n\n {/* 箭头指示器 */}\n {showArrow && !collapsed && (\n <MenuItemArrow collapsed={collapsed} expanded={arrowExpanded} aria-hidden=\"true\">\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.25 3.5L8.75 7L5.25 10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </MenuItemArrow>\n )}\n </MenuItemContainer>\n\n {/* 折叠状态下的悬浮子菜单 */}\n {collapsed && subMenu && (\n <SubMenuPopover\n visible={showPopover}\n anchorRef={itemRef as React.RefObject<HTMLElement>}\n onClose={() => setShowPopover(false)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {subMenu}\n </SubMenuPopover>\n )}\n </>\n )\n },\n)\n\nMenuItem.displayName = 'MenuItem'\n\n","/**\n * MenuGroup 菜单分组组件\n * \n * 用于对菜单项进行分组,并显示分组标题\n */\n\nimport { type ReactNode } from 'react'\nimport {\n MenuGroupContainer,\n MenuGroupTitle,\n MenuGroupItems,\n} from './Menu.style'\n\nexport interface MenuGroupProps {\n /** 分组标题 */\n title?: string\n /** 子元素(菜单项) */\n children: ReactNode\n /** 菜单是否折叠 */\n collapsed?: boolean\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * MenuGroup 菜单分组组件\n * \n * 用于将相关的菜单项组织在一起\n * 可选的分组标题和分割线\n */\nexport const MenuGroup = ({\n title,\n children,\n collapsed = false,\n className,\n}: MenuGroupProps) => {\n return (\n <MenuGroupContainer className={className} role=\"group\" aria-label={title}>\n {/* 分组标题 */}\n {title && (\n <MenuGroupTitle collapsed={collapsed} aria-hidden={collapsed}>\n {title}\n </MenuGroupTitle>\n )}\n\n {/* 菜单项列表 */}\n <MenuGroupItems>{children}</MenuGroupItems>\n </MenuGroupContainer>\n )\n}\n\nMenuGroup.displayName = 'MenuGroup'\n\n","/**\n * SubMenuItem 子菜单项组件\n * \n * 用于在悬浮层中展示的子菜单项\n */\n\nimport { SubMenuPopoverItem } from './Menu.style'\n\nexport interface SubMenuItemProps {\n /** 唯一标识符 */\n id?: string\n /** 菜单项文字 */\n label: string\n /** 是否激活/选中 */\n active?: boolean\n /** 点击事件 */\n onClick?: () => void\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * SubMenuItem 子菜单项组件\n * \n * 用于悬浮层中的子菜单项\n */\nexport const SubMenuItem = ({\n id,\n label,\n active = false,\n onClick,\n className,\n}: SubMenuItemProps) => {\n return (\n <SubMenuPopoverItem\n id={id}\n active={active}\n onClick={onClick}\n className={className}\n role=\"menuitem\"\n aria-current={active ? 'page' : undefined}\n type=\"button\"\n >\n {label}\n </SubMenuPopoverItem>\n )\n}\n\nSubMenuItem.displayName = 'SubMenuItem'\n\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport type { AppTheme } from '@kingsoft-ai/theme';\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport type LinkVariant = 'primary' | 'neutral';\nexport type LinkSize = 'sm' | 'md' | 'lg';\n\n// ============================================================================\n// 样式生成器\n// ============================================================================\n\nconst getVariantStyles = (variant: LinkVariant, theme: AppTheme) => {\n const token = theme.components.link.variant[variant];\n\n return css`\n color: ${token.text.default};\n text-decoration: ${token.decoration.default};\n\n &:hover:not([aria-disabled='true']) {\n color: ${token.text.hover};\n text-decoration: ${token.decoration.hover};\n }\n\n &:active:not([aria-disabled='true']) {\n color: ${token.text.active};\n }\n\n &[aria-disabled='true'] {\n color: ${token.text.disabled};\n cursor: not-allowed;\n }\n `;\n};\n\nconst getSizeStyles = (size: LinkSize, theme: AppTheme) => {\n const token = theme.components.link.size[size];\n return css`\n font-size: ${token.fontSize};\n `;\n};\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\nexport const LinkRoot = styled.a<{\n variant: LinkVariant;\n size: LinkSize;\n}>`\n /* 基础样式 */\n position: relative;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n background: transparent;\n outline: none;\n border: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n \n /* 字体样式 */\n font-family: ${({ theme }) => theme?.global?.typography?.fontFamily || 'inherit'};\n line-height: 1.5; /* 保持与文本一致的行高 */\n\n /* 过渡动画 */\n transition: color ${({ theme }) => theme?.components?.link?.transition || '0.2s ease'};\n\n /* 变体样式 */\n ${({ variant, theme }) => getVariantStyles(variant, theme)}\n\n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n /* Focus 可见状态 */\n &:focus-visible {\n border-radius: ${({ theme }) => theme?.components?.link?.borderRadius || '4px'};\n outline: 2px solid ${({ theme }) => theme?.components?.link?.focusRing?.color || '#1677ff'};\n outline-offset: ${({ theme }) => theme?.components?.link?.focusRing?.offset || '2px'};\n }\n`;\n\n","import { forwardRef, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { useLink } from 'react-aria';\nimport { mergeProps } from '@react-aria/utils';\nimport { LinkRoot, type LinkVariant, type LinkSize } from './Link.style';\n\n// Helper to extract props type from useLink\ntype UseLinkProps = Parameters<typeof useLink>[0];\n\nexport type LinkProps = UseLinkProps & {\n /** 链接变体:primary (主色), neutral (中性色) */\n variant?: LinkVariant;\n /** 链接尺寸:sm (12px), md (14px), lg (16px) */\n size?: LinkSize;\n /** 是否禁用(统一 API,优先级高于 isDisabled) */\n disabled?: boolean;\n /** 自定义类名 */\n className?: string;\n /** 子元素 */\n children?: ReactNode;\n};\n\n/**\n * Link 文字链接组件\n *\n * 用于页面内的跳转或操作,支持多种状态和尺寸。\n * 基于 react-aria useLink 实现无障碍访问。\n */\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n disabled,\n className,\n children,\n isDisabled,\n ...props\n },\n forwardedRef\n ) => {\n const innerRef = useRef<HTMLAnchorElement>(null);\n const ref = forwardedRef || innerRef;\n\n // disabled 优先于 isDisabled\n const finalDisabled = disabled ?? isDisabled;\n\n const { linkProps } = useLink(\n {\n ...props,\n isDisabled: finalDisabled,\n elementType: 'a',\n },\n innerRef\n );\n\n return (\n <LinkRoot\n ref={ref}\n as=\"a\"\n className={className}\n variant={variant}\n size={size}\n {...mergeProps(linkProps, { ariaDisabled: finalDisabled })}\n >\n {children}\n </LinkRoot>\n );\n }\n);\n\nLink.displayName = 'Link';\n","/**\n * Modal 弹窗样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 特性:\n * - 优雅的入场/退场动画\n * - 响应式尺寸支持\n * - 无障碍访问友好\n * - 支持暗色主题\n */\n\nimport styled from '@emotion/styled'\nimport { css, keyframes } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const modalSizes = ['sm', 'md', 'lg', 'xl', 'fullscreen'] as const\nexport type ModalSize = (typeof modalSizes)[number]\n\n// ============================================================================\n// 动画关键帧\n// ============================================================================\n\nconst fadeIn = keyframes`\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n`\n\nconst fadeOut = keyframes`\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n`\n\nconst scaleIn = keyframes`\n from {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n`\n\nconst scaleOut = keyframes`\n from {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n to {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.95);\n }\n`\n\nconst slideInFromBottom = keyframes`\n from {\n opacity: 0;\n transform: translate(-50%, calc(-50% + 24px));\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%);\n }\n`\n\nconst slideOutToBottom = keyframes`\n from {\n opacity: 1;\n transform: translate(-50%, -50%);\n }\n to {\n opacity: 0;\n transform: translate(-50%, calc(-50% + 24px));\n }\n`\n\n// ============================================================================\n// 辅助函数\n// ============================================================================\n\n/**\n * 获取尺寸样式\n */\nconst getSizeStyles = (size: ModalSize, theme: AppTheme, isFullscreen: boolean) => {\n const sizeToken = theme.components.modal.size[size]\n\n if (isFullscreen) {\n return css`\n width: 100vw;\n max-width: 100vw;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n top: 0;\n left: 0;\n transform: none;\n `\n }\n\n return css`\n width: ${sizeToken.width};\n max-width: ${sizeToken.maxWidth};\n `\n}\n\n/**\n * 获取动画样式\n */\nconst getAnimationStyles = (\n isOpen: boolean,\n isClosing: boolean,\n animationType: 'scale' | 'slide' | 'fade',\n theme: AppTheme\n) => {\n const { duration, easing } = theme.components.modal.animation\n\n const animations = {\n scale: {\n enter: scaleIn,\n exit: scaleOut,\n },\n slide: {\n enter: slideInFromBottom,\n exit: slideOutToBottom,\n },\n fade: {\n enter: fadeIn,\n exit: fadeOut,\n },\n }\n\n const animation = animations[animationType]\n\n if (isClosing) {\n return css`\n animation: ${animation.exit} ${duration} ${easing} forwards;\n `\n }\n\n if (isOpen) {\n return css`\n animation: ${animation.enter} ${duration} ${easing} forwards;\n `\n }\n\n return ''\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Modal 遮罩层\n * \n * 特性:\n * - 毛玻璃效果\n * - 点击关闭支持\n * - 优雅的淡入淡出动画\n */\nexport const ModalOverlay = styled.div<{\n isOpen: boolean\n isClosing: boolean\n}>`\n /* 定位 */\n position: fixed;\n inset: 0;\n z-index: ${({ theme }) => theme.components.modal.zIndex.overlay};\n\n /* 遮罩背景 */\n background: ${({ theme }) => theme.components.modal.overlay.background};\n backdrop-filter: ${({ theme }) => theme.components.modal.overlay.backdropFilter};\n -webkit-backdrop-filter: ${({ theme }) => theme.components.modal.overlay.backdropFilter};\n\n /* 动画 */\n animation: ${({ isClosing, theme }) =>\n isClosing\n ? css`${fadeOut} ${theme.components.modal.animation.duration} ease forwards`\n : css`${fadeIn} ${theme.components.modal.animation.duration} ease forwards`};\n\n /* 隐藏状态 */\n ${({ isOpen, isClosing }) =>\n !isOpen &&\n !isClosing &&\n css`\n display: none;\n `}\n`\n\n/**\n * Modal 容器(用于 Portal 和定位)\n */\nexport const ModalPortalContainer = styled.div<{\n isOpen: boolean\n}>`\n /* 确保 Portal 容器不影响布局 */\n position: fixed;\n top: 0;\n left: 0;\n z-index: ${({ theme }) => theme.components.modal.zIndex.overlay};\n\n /* 隐藏状态 */\n ${({ isOpen }) =>\n !isOpen &&\n css`\n pointer-events: none;\n `}\n`\n\n/**\n * Modal 主容器\n * \n * 特性:\n * - 居中定位\n * - 响应式宽度\n * - 弹性动画效果\n */\nexport const ModalContainer = styled.div<{\n size: ModalSize\n isOpen: boolean\n isClosing: boolean\n isFullscreen: boolean\n animationType: 'scale' | 'slide' | 'fade'\n centered: boolean\n}>`\n /* 定位 */\n position: fixed;\n ${({ isFullscreen, centered }) =>\n isFullscreen\n ? css`\n top: 0;\n left: 0;\n transform: none;\n `\n : centered\n ? css`\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n `\n : css`\n top: 100px;\n left: 50%;\n transform: translateX(-50%);\n `}\n z-index: ${({ theme }) => theme.components.modal.zIndex.container};\n\n /* 尺寸 */\n ${({ size, theme, isFullscreen }) => getSizeStyles(size, theme, isFullscreen)}\n max-height: ${({ theme, isFullscreen }) =>\n isFullscreen ? '100vh' : theme.components.modal.container.maxHeight};\n\n /* 外观 */\n background: ${({ theme }) => theme.components.modal.container.background};\n border-radius: ${({ theme, isFullscreen }) =>\n isFullscreen ? '0' : theme.components.modal.container.borderRadius};\n box-shadow: ${({ theme }) => theme.components.modal.container.boxShadow};\n border: ${({ theme }) => theme.components.modal.container.border};\n\n /* 布局 */\n display: flex;\n flex-direction: column;\n overflow: hidden;\n\n /* 动画 */\n ${({ isOpen, isClosing, animationType, theme }) =>\n getAnimationStyles(isOpen, isClosing, animationType, theme)}\n\n /* 隐藏状态 */\n ${({ isOpen, isClosing }) =>\n !isOpen &&\n !isClosing &&\n css`\n display: none;\n `}\n\n /* Focus 样式 */\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: 2px;\n }\n`\n\n/**\n * Modal 头部\n * \n * 包含标题、描述和关闭按钮\n */\nexport const ModalHeader = styled.header<{\n size: ModalSize\n hasDescription: boolean\n}>`\n /* 布局 */\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: ${({ theme }) => theme.components.modal.header.gap};\n flex-shrink: 0;\n\n /* 间距 */\n padding: ${({ size, theme }) => theme.components.modal.size[size].headerPadding};\n min-height: ${({ theme }) => theme.components.modal.header.minHeight};\n\n /* 边框 */\n border-bottom: ${({ theme }) => theme.components.modal.header.borderBottom};\n\n /* 背景 */\n background: ${({ theme }) => theme.components.modal.header.background};\n`\n\n/**\n * 标题容器\n */\nexport const ModalTitleWrapper = styled.div`\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n`\n\n/**\n * Modal 标题\n */\nexport const ModalTitle = styled.h2<{\n size: ModalSize\n}>`\n /* 重置 */\n margin: 0;\n padding: 0;\n\n /* 排版 */\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: ${({ size, theme }) => theme.components.modal.size[size].titleFontSize};\n font-weight: ${({ theme }) => theme.components.modal.title.fontWeight};\n line-height: ${({ theme }) => theme.components.modal.title.lineHeight};\n color: ${({ theme }) => theme.components.modal.title.color};\n\n /* 文本处理 */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\n/**\n * Modal 描述\n */\nexport const ModalDescription = styled.p`\n /* 重置 */\n margin: 0;\n padding: 0;\n margin-top: ${({ theme }) => theme.components.modal.description.marginTop};\n\n /* 排版 */\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: ${({ theme }) => theme.components.modal.description.fontSize};\n line-height: ${({ theme }) => theme.components.modal.description.lineHeight};\n color: ${({ theme }) => theme.components.modal.description.color};\n`\n\n/**\n * Modal 关闭按钮\n */\nexport const ModalCloseButton = styled.button`\n /* 重置 */\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n outline: none;\n\n /* 尺寸 */\n width: ${({ theme }) => theme.components.modal.closeButton.size};\n height: ${({ theme }) => theme.components.modal.closeButton.size};\n flex-shrink: 0;\n\n /* 布局 */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n /* 外观 */\n border-radius: ${({ theme }) => theme.components.modal.closeButton.borderRadius};\n color: ${({ theme }) => theme.components.modal.closeButton.color};\n\n /* 过渡 */\n transition: ${({ theme }) => theme.components.modal.transition};\n\n /* 图标尺寸 */\n svg {\n width: ${({ theme }) => theme.components.modal.closeButton.iconSize};\n height: ${({ theme }) => theme.components.modal.closeButton.iconSize};\n display: block;\n }\n\n /* hover 状态 */\n &:hover {\n color: ${({ theme }) => theme.components.modal.closeButton.hoverColor};\n background: ${({ theme }) => theme.components.modal.closeButton.hoverBackground};\n }\n\n /* active 状态 */\n &:active {\n opacity: 0.8;\n }\n\n /* focus 可见状态 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: 2px;\n }\n`\n\n/**\n * Modal 内容区域\n */\nexport const ModalContent = styled.div<{\n size: ModalSize\n hasHeader: boolean\n hasFooter: boolean\n}>`\n /* 布局 */\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n\n /* 间距 */\n padding: ${({ size, theme }) => theme.components.modal.size[size].padding};\n\n /* 排版 */\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: ${({ theme }) => theme.components.modal.content.fontSize};\n line-height: ${({ theme }) => theme.components.modal.content.lineHeight};\n color: ${({ theme }) => theme.components.modal.content.color};\n\n /* 滚动条样式 */\n &::-webkit-scrollbar {\n width: 6px;\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.semantic.colors.border.strong};\n border-radius: 3px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: ${({ theme }) => theme.semantic.colors.text.disabled};\n }\n`\n\n/**\n * Modal 底部\n */\nexport const ModalFooter = styled.footer<{\n size: ModalSize\n}>`\n /* 布局 */\n display: flex;\n align-items: center;\n justify-content: ${({ theme }) => theme.components.modal.footer.justifyContent};\n gap: ${({ theme }) => theme.components.modal.footer.gap};\n flex-shrink: 0;\n\n /* 间距 */\n padding: ${({ size, theme }) => theme.components.modal.size[size].footerPadding};\n min-height: ${({ theme }) => theme.components.modal.footer.minHeight};\n\n /* 边框 */\n border-top: ${({ theme }) => theme.components.modal.footer.borderTop};\n\n /* 背景 */\n background: ${({ theme }) => theme.components.modal.footer.background};\n`\n\n\n","/**\n * Modal 弹窗组件\n * \n * 基于 React Portal 实现的高性能弹窗组件\n * 支持无障碍访问、键盘操作、焦点管理\n * \n * @example\n * ```tsx\n * <Modal\n * open={isOpen}\n * onClose={() => setIsOpen(false)}\n * title=\"确认操作\"\n * size=\"md\"\n * >\n * <p>确定要执行此操作吗?</p>\n * </Modal>\n * ```\n */\n\nimport {\n forwardRef,\n useRef,\n useState,\n useEffect,\n useCallback,\n type ReactNode,\n type KeyboardEvent,\n type MouseEvent,\n} from 'react'\n// @ts-ignore - react-dom type issue\nimport { createPortal } from 'react-dom'\nimport {\n ModalOverlay,\n ModalPortalContainer,\n ModalContainer,\n ModalHeader,\n ModalTitleWrapper,\n ModalTitle,\n ModalDescription,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n modalSizes,\n type ModalSize,\n} from './Modal.style'\n\n// 导出常量供外部使用\nexport const SIZES = modalSizes\n\nexport interface ModalProps {\n /** 是否打开弹窗 */\n open: boolean\n /** 关闭弹窗回调 */\n onClose: () => void\n /** 弹窗标题 */\n title?: ReactNode\n /** 弹窗描述/副标题 */\n description?: ReactNode\n /** 弹窗内容 */\n children?: ReactNode\n /** 底部操作区域 */\n footer?: ReactNode\n /** 弹窗尺寸 */\n size?: ModalSize\n /** 是否全屏 */\n fullscreen?: boolean\n /** 是否垂直居中 */\n centered?: boolean\n /** 是否显示关闭按钮 */\n closable?: boolean\n /** 点击遮罩是否关闭 */\n maskClosable?: boolean\n /** 按 ESC 是否关闭 */\n keyboard?: boolean\n /** 是否显示遮罩 */\n mask?: boolean\n /** 关闭后是否销毁子元素 */\n destroyOnClose?: boolean\n /** 动画类型 */\n animationType?: 'scale' | 'slide' | 'fade'\n /** 挂载的 DOM 节点(默认为 document.body) */\n container?: HTMLElement | null\n /** 自定义类名 */\n className?: string\n /** 内容区域自定义类名 */\n contentClassName?: string\n /** 自定义 z-index */\n zIndex?: number\n /** 动画结束后的回调 */\n afterClose?: () => void\n /** 动画开始前的回调 */\n afterOpen?: () => void\n /** 自定义关闭图标 */\n closeIcon?: ReactNode\n /** 无障碍:描述 ID */\n 'aria-describedby'?: string\n /** 无障碍:标签 ID */\n 'aria-labelledby'?: string\n}\n\n/**\n * 默认关闭图标\n */\nconst CloseIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n/**\n * 获取可聚焦元素\n */\nconst getFocusableElements = (container: HTMLElement): HTMLElement[] => {\n const elements = container.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n return Array.from(elements).filter(\n (el) => !el.hasAttribute('disabled') && el.getAttribute('tabindex') !== '-1'\n )\n}\n\n/**\n * Modal 弹窗组件\n * \n * 高性能、无障碍、可定制的弹窗组件\n */\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n open,\n onClose,\n title,\n description,\n children,\n footer,\n size = 'md',\n fullscreen = false,\n centered = true,\n closable = true,\n maskClosable = true,\n keyboard = true,\n mask = true,\n destroyOnClose = false,\n animationType = 'scale',\n container,\n className,\n contentClassName,\n zIndex,\n afterClose,\n afterOpen,\n closeIcon,\n 'aria-describedby': ariaDescribedBy,\n 'aria-labelledby': ariaLabelledBy,\n },\n forwardedRef\n ) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const previousActiveElement = useRef<HTMLElement | null>(null)\n \n // 内部状态\n const [isRendered, setIsRendered] = useState(false)\n const [isClosing, setIsClosing] = useState(false)\n const [hasEverOpened, setHasEverOpened] = useState(false)\n\n // 生成唯一 ID\n const generatedId = useRef(`modal-${Math.random().toString(36).slice(2, 9)}`)\n const titleId = title ? `${generatedId.current}-title` : undefined\n const descriptionId = description ? `${generatedId.current}-description` : undefined\n\n // 获取实际的挂载容器\n const getContainer = useCallback(() => {\n if (container) return container\n if (typeof document !== 'undefined') return document.body\n return null\n }, [container])\n\n // 处理打开\n useEffect(() => {\n if (open) {\n setHasEverOpened(true)\n setIsRendered(true)\n setIsClosing(false)\n \n // 保存当前聚焦元素\n previousActiveElement.current = document.activeElement as HTMLElement\n\n // 禁止 body 滚动\n const originalOverflow = document.body.style.overflow\n const originalPaddingRight = document.body.style.paddingRight\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n \n document.body.style.overflow = 'hidden'\n if (scrollbarWidth > 0) {\n document.body.style.paddingRight = `${scrollbarWidth}px`\n }\n\n // 延迟聚焦到弹窗\n const timer = setTimeout(() => {\n const ref = forwardedRef as React.RefObject<HTMLDivElement> | null\n const modalElement = ref?.current || containerRef.current\n if (modalElement) {\n modalElement.focus()\n afterOpen?.()\n }\n }, 50)\n\n return () => {\n clearTimeout(timer)\n document.body.style.overflow = originalOverflow\n document.body.style.paddingRight = originalPaddingRight\n }\n }\n }, [open, forwardedRef, afterOpen])\n\n // 处理关闭动画\n const handleClose = useCallback(() => {\n if (isClosing) return\n \n setIsClosing(true)\n \n // 等待动画完成后处理\n const timer = setTimeout(() => {\n setIsRendered(false)\n setIsClosing(false)\n \n // 恢复之前的焦点\n if (previousActiveElement.current) {\n previousActiveElement.current.focus()\n }\n \n afterClose?.()\n onClose()\n }, 250) // 与动画时长一致\n\n return () => clearTimeout(timer)\n }, [isClosing, afterClose, onClose])\n\n // 处理键盘事件\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n // ESC 关闭\n if (keyboard && e.key === 'Escape') {\n e.preventDefault()\n e.stopPropagation()\n handleClose()\n return\n }\n\n // Tab 焦点陷阱\n if (e.key === 'Tab') {\n const ref = forwardedRef as React.RefObject<HTMLDivElement> | null\n const modalElement = ref?.current || containerRef.current\n if (!modalElement) return\n\n const focusableElements = getFocusableElements(modalElement)\n if (focusableElements.length === 0) return\n\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n\n if (e.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstElement) {\n e.preventDefault()\n lastElement.focus()\n }\n } else {\n // Tab\n if (document.activeElement === lastElement) {\n e.preventDefault()\n firstElement.focus()\n }\n }\n }\n },\n [keyboard, handleClose, forwardedRef]\n )\n\n // 处理遮罩点击\n const handleOverlayClick = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n if (maskClosable && e.target === e.currentTarget) {\n handleClose()\n }\n },\n [maskClosable, handleClose]\n )\n\n // 处理关闭按钮点击\n const handleCloseButtonClick = useCallback(() => {\n handleClose()\n }, [handleClose])\n\n // 销毁模式:关闭后不渲染\n if (destroyOnClose && !isRendered && !open) {\n return null\n }\n\n // 未曾打开过且不渲染\n if (!hasEverOpened && !open) {\n return null\n }\n\n const actualSize = fullscreen ? 'fullscreen' : size\n const mountContainer = getContainer()\n\n if (!mountContainer) return null\n\n const hasHeader = !!title || closable\n const hasFooter = !!footer\n\n const modalContent = (\n <ModalPortalContainer isOpen={open || isClosing}>\n {/* 遮罩层 */}\n {mask && (\n <ModalOverlay\n isOpen={open}\n isClosing={isClosing}\n onClick={handleOverlayClick}\n style={zIndex ? { zIndex } : undefined}\n />\n )}\n\n {/* 弹窗容器 */}\n <ModalContainer\n ref={forwardedRef || containerRef}\n size={actualSize}\n isOpen={open}\n isClosing={isClosing}\n isFullscreen={fullscreen}\n animationType={animationType}\n centered={centered}\n className={className}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ariaLabelledBy || titleId}\n aria-describedby={ariaDescribedBy || descriptionId}\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n style={zIndex ? { zIndex: zIndex + 1 } : undefined}\n >\n {/* 头部 */}\n {hasHeader && (\n <ModalHeader size={actualSize} hasDescription={!!description}>\n <ModalTitleWrapper>\n {title && (\n <ModalTitle id={titleId} size={actualSize}>\n {title}\n </ModalTitle>\n )}\n {description && (\n <ModalDescription id={descriptionId}>\n {description}\n </ModalDescription>\n )}\n </ModalTitleWrapper>\n\n {closable && (\n <ModalCloseButton\n type=\"button\"\n onClick={handleCloseButtonClick}\n aria-label=\"关闭弹窗\"\n >\n {closeIcon || <CloseIcon />}\n </ModalCloseButton>\n )}\n </ModalHeader>\n )}\n\n {/* 内容区域 */}\n <ModalContent\n size={actualSize}\n hasHeader={hasHeader}\n hasFooter={hasFooter}\n className={contentClassName}\n >\n {children}\n </ModalContent>\n\n {/* 底部 */}\n {hasFooter && <ModalFooter size={actualSize}>{footer}</ModalFooter>}\n </ModalContainer>\n </ModalPortalContainer>\n )\n\n return createPortal(modalContent, mountContainer)\n }\n)\n\nModal.displayName = 'Modal'\n\n// ============================================================================\n// 子组件导出(用于更灵活的组合)\n// ============================================================================\n\nexport {\n ModalHeader,\n ModalContent,\n ModalFooter,\n ModalTitle,\n ModalDescription,\n ModalCloseButton,\n}\n\n","import styled from '@emotion/styled'\n// 提取公共禁用样式函数\nconst getDisabledStyles = (theme: any) => ({\n cursor: 'not-allowed',\n backgroundColor: theme.components.numberfield?.background?.disabled ?? '#f5f5f5',\n color: theme.components.numberfield?.text?.disabled ?? '#9aa0a6',\n opacity: 0.6\n})\n\nexport const NumberRoot = styled.div`\n display: inline-flex;\n flex-direction: column;\n`\n\nexport const Label = styled.label`\n margin-bottom: 6px;\n font-size: 12px;\n`\n\n// 修改NumberGroup组件的类型定义,添加controls属性\n export const NumberGroup = styled.div<{ \n size?: 'md' | 'lg'; \n disabled?: boolean;\n controls?: 'buttons' | 'arrows' // 添加controls属性\n }>`\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n text-align: center;\n gap: ${({ theme }) => theme.components.numberfield?.control?.side?.gap ?? '8px'};\n padding: ${({ theme }) => theme.components.numberfield?.control?.side?.inset};\n border: 1px solid ${({ theme }) => theme.components.numberfield?.border?.default ?? '#d9d9d9'};\n border-radius: ${({ theme }) => theme.components.numberfield?.borderRadius ?? '4px'};\n color: ${({ theme }) => theme.components.numberfield?.text?.default ?? '#0A1833'};\n background: ${({ disabled, theme }) => disabled ? theme.components.numberfield?.background?.disabled : theme.components.numberfield?.background?.default};\n height: ${({ theme, size }) => \n size === 'md' \n ? theme.components.numberfield?.size?.md?.height ?? '24px' \n : theme.components.numberfield?.size?.lg?.height ?? '32px'};\n font-size: ${({ theme, size }) => \n size === 'md' \n ? theme.components.numberfield?.size?.md?.fontSize ?? '12px' \n : theme.components.numberfield?.size?.lg?.fontSize ?? '14px'};\n \n // 优化宽度设置逻辑:先判断控件类型,再根据size设置不同宽度\n width: ${({ controls, size, theme }) => {\n // 先判断是buttons还是arrows类型\n if (controls === 'arrows') {\n // 箭头类型根据size设置不同宽度\n return size === 'md' ? theme.components.numberfield?.control?.arrows?.widthsm : theme.components.numberfield?.control?.arrows?.widthLg;\n }\n // 按钮类型根据size设置不同宽度(默认)\n return size === 'md' ? theme.components.numberfield?.control?.side?.widthsm : theme.components.numberfield?.control?.side?.widthLg;\n }};\n \n // 状态样式\n &:disabled,\n &[data-disabled=\"true\"] {\n ${({ theme }) => getDisabledStyles(theme)}\n opacity: 0.8;\n // 强制所有子元素不响应事件\n * {\n pointer-events: none !important;\n }\n }\n &:not(:disabled):not([data-disabled=\"true\"]):hover {\n border-color: ${({ theme }) => theme.components.numberfield?.border?.hover};\n button:not(:disabled):not(:hover) {\n background: ${({ theme }) => theme.components.numberfield?.background.hover};\n color: ${({ theme }) => theme.components.numberfield?.text?.default};\n }\n }\n \n // 禁用状态保持原有边框颜色\n &:disabled,\n &[data-disabled=\"true\"] {\n border-color: ${({ theme }) => theme.components.numberfield?.border?.default ?? '#d9d9d9'} !important;\n }\n }\n `\n\n// NumberField 简化后的样式\nexport const NumberField = styled.input`\n text-align: center;\n border:none;\n outline: none;\n width: ${({ theme }) => theme.components.numberfield?.input?.width ?? '40px'};\n height: ${({ theme }) => theme.components.numberfield?.input?.height ?? '18px'};\n font-size: ${({ theme }) => theme.components.numberfield?.input?.fontSize ?? '12px'};\n font-weight: ${({ theme }) => theme.components.numberfield?.input?.fontWeight ?? 400};\n line-height: ${({ theme }) => theme.components.numberfield?.input?.lineHeight ?? '18px'};\n font-family: ${({ theme }) => theme.components.numberfield?.input?.fontFamily ?? 'sans-serif'};\n \n // 移除默认箭头\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n -moz-appearance: textfield;\n appearance: textfield;\n\n // 状态样式\n &:disabled,\n &[data-disabled=\"true\"] {\n ${({ theme }) => getDisabledStyles(theme)}\n }\n \n`\nexport const Description = styled.div`\n margin-top: 6px;\n font-size: 12px;\n color: ${({ theme }) => theme.components.numberfield?.text?.placeholder ?? '#6b6b6b'};\n`\n/** 竖直箭头控件(展示在输入右侧) */\nexport const ArrowGroup = styled.div`\n display: inline-flex;\n flex-direction: column; \n gap: 1px;\n`\n\n// 在文件末尾添加ArrowButton组件\nexport const ArrowButton = styled.button<{ direction: 'up' | 'down'; size?: 'md' | 'lg' ;disabled?: boolean}>`\n background: transparent;\n border: none;\n border-radius: ${({ direction }) => direction === 'up' ? '4px 4px 0 0' : '0 0 4px 4px'};\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ theme, size }) => {\n const heightValue = size === 'md' \n ? theme.components.numberfield?.control?.arrows?.buttonSizeSm \n : theme.components.numberfield?.control?.arrows?.buttonSizeLg;\n return `calc(${heightValue} * 2)`;\n}};\n height: ${({ theme, size }) => {\n const heightValue = size === 'md' \n ? theme.components.numberfield?.control?.arrows?.buttonSizeSm \n : theme.components.numberfield?.control?.arrows?.buttonSizeLg;\n return heightValue;\n}};\n color: ${({ theme }) => theme.components.numberfield?.border.default ?? '#0A1833'};\n cursor: pointer;\n // 使用主题中numberfield定义的transition参数\n transition: background-color ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'}, \n color ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'}, \n transform ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'};\n \n &:disabled,\n &[data-disabled=\"true\"] {\n ${({ theme }) => getDisabledStyles(theme)}\n transition: none; // 禁用状态不使用过渡\n }\n \n &:not(:disabled):hover:not([data-disabled=\"true\"]) {\n background-color: ${({ theme }) => theme.components.numberfield?.border?.default};\n color: ${({ theme }) => theme.components.numberfield?.border?.hover ?? '#1890ff'};\n }\n \n // 添加点击效果:点击变大一点再变回来\n &:not(:disabled):active:not([data-disabled=\"true\"]) {\n animation: clickScale ${({ theme }) => theme.components.numberfield?.transition?.replace('0.2s', '0.3s') || '0.3s ease'};\n }\n \n // 定义点击缩放动画\n @keyframes clickScale {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.1); }\n 100% { transform: scale(1); }\n }\n`\n\n// 在SideButton组件中添加hover状态以控制背景颜色\nexport const SideButton = styled.button<{ pos?: 'left' | 'right'; size?: 'md' | 'lg' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ theme, size }) =>\n size === 'md'\n ? theme.components.numberfield?.control?.side?.buttonSizeSm \n : theme.components.numberfield?.control?.side?.buttonSizeLg };\n height: ${({ theme, size }) =>\n size === 'md'\n ? theme.components.numberfield?.control?.side?.buttonSizeSm \n : theme.components.numberfield?.control?.side?.buttonSizeLg };\n background: transparent;\n color: ${({ theme }) => theme.components.numberfield?.border.default ?? '#d9d9d9'};\n border: none;\n cursor: pointer;\n border-radius: 6px; \n padding: 2px;\n // 使用主题中numberfield定义的transition参数\n transition: background-color ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'}, \n color ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'}, \n transform ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'};\n \n &:disabled,\n &[data-disabled=\"true\"] {\n ${({ theme }) => getDisabledStyles(theme)}\n transition: none; // 禁用状态不使用过渡\n }\n \n // 添加hover状态控制背景颜色和图标颜色\n &:not(:disabled):hover:not([data-disabled=\"true\"]) {\n background-color: ${({ theme }) => theme.components.numberfield?.border.default};\n color: ${({ theme }) => theme.components.numberfield?.border?.hover ?? '#1890ff'};\n }\n \n // 添加点击效果:点击变大一点再变回来\n &:not(:disabled):active:not([data-disabled=\"true\"]) {\n animation: clickScale ${({ theme }) => theme.components.numberfield?.transition?.replace('0.2s', '0.3s') || '0.3s ease'};\n }\n \n // 定义点击缩放动画\n @keyframes clickScale {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.1); }\n 100% { transform: scale(1); }\n }\n`","/**\n * 数字输入框组件\n * \n * 基于 react-aria 实现无障碍访问的数字输入框组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * <NumberInput\n * size=\"md\"\n * defaultValue={10}\n * min={0}\n * max={100}\n * step={1}\n * label=\"数量\"\n * description=\"请输入数量\"\n * controls=\"buttons\"\n * onValueChange={(v) => console.log(v)}\n * />\n * ```\n */\n\nimport {\n forwardRef,\n useRef,\n useState,\n useEffect,\n type ReactNode,\n type ChangeEvent,\n type KeyboardEvent,\n} from 'react'\nimport {\n\tNumberRoot,\n\tNumberGroup,\n\tNumberField,\n\tLabel,\n\tDescription,\n\tArrowGroup,\n\tSideButton,\n\tArrowButton\n} from './NumberInput.style'\nimport { PlusOutline, ChevronUpOutline, ChevronDownOutline, MinusOutline } from '@kingsoft-ai/icons'\nexport type NumberInputProps = {\n\t/** 初始数值(受控请使用 value) */\n\tdefaultValue?: number\n\t/** 受控数值 */\n\tvalue?: number\n\t/** 最小值 */\n\tmin?: number\n\t/** 最大值 */\n\tmax?: number\n\t/** 步长 */\n\tstep?: number\n\t/** 控件样式:'buttons' - 左右 加/减 按钮;'arrows' - 右侧竖直箭头 */\n\tcontrols?: 'buttons' | 'arrows'\n\t/** 大小:'md' | 'lg' */\n\tsize?: 'md' | 'lg'\n\t/** \n\t * 值变化回调(统一 API,推荐使用)\n\t * 等同于其他表单组件的 onChange,返回 number | undefined \n\t */\n\tonValueChange?: (value: number | undefined) => void\n\t/**\n\t * 值变化回调别名(统一 API)\n\t * 与 onValueChange 功能相同,提供与其他表单组件一致的 API 命名\n\t */\n\tonChangeValue?: (value: number | undefined) => void\n\t/** 标签文本 */\n\tlabel?: ReactNode\n\t/** 描述文本 */\n\tdescription?: ReactNode\n\t/** 是否显示错误状态 */\n\terror?: boolean\n\t/** 错误提示文本 */\n\terrorMessage?: ReactNode\n\t/** 是否禁用 */\n\tdisabled?: boolean\n\t/** 自定义类名 */\n\tclassName?: string\n\t/** 自定义 ID */\n\tid?: string\n\t/** 原生 input onChange 事件(用于表单库等场景) */\n\tonChange?: (e: ChangeEvent<HTMLInputElement>) => void\n}\n/** 加图标 */\nconst PlusIcon = PlusOutline\n/** 减图标 */\nconst MinusIcon = MinusOutline\n/** 上箭头图标 */\nconst UpIcon = ChevronUpOutline\n/** 下箭头图标 */\nconst DownIcon = ChevronDownOutline\n/** 数字输入框组件 */\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n\t(\n\t\t\t{\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep = 1,\n\t\t\tvalue,\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\tonValueChange,\n\t\t\tonChangeValue,\n\t\t\tdisabled,\n\t\t\tclassName,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\terror = false,\n\t\t\tid,\n\t\t\tcontrols = 'buttons',\n\t\t\tsize = 'md',\n\t\t\t...rest\n\t\t},\n\t\tforwardedRef,\n\t) => {\n\t\tconst innerRef = useRef<HTMLInputElement | null>(null)\n\t\t// 同步 forwardedRef 到内部 ref(支持 object ref 与回调 ref)\n\t\tuseEffect(() => {\n\t\t\tif (!forwardedRef) return\n\t\t\tif (typeof forwardedRef === 'function') {\n\t\t\t\tforwardedRef(innerRef.current)\n\t\t\t} else {\n\t\t\t\t;(forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = innerRef.current\n\t\t\t}\n\t\t}, [forwardedRef])\n\t\tconst isControlled = value !== undefined\n\t\tconst [internal, setInternal] = useState<number | undefined>(defaultValue)\n\t\tconst currentValue = isControlled ? value : internal\n\t\t// clamp 工具\n\t\tconst clamp = (v: number) => {\n\t\t\tlet next = v\n\t\t\tif (min !== undefined) next = Math.max(next, min)\n\t\t\tif (max !== undefined) next = Math.min(next, max)\n\t\t\treturn next\n\t\t}\n\t\t// 统一触发值变化回调\n\t\tconst triggerValueChange = (v: number | undefined) => {\n\t\t\tonValueChange?.(v)\n\t\t\tonChangeValue?.(v)\n\t\t}\n\n\t\tconst setValue = (v: number | undefined) => {\n\t\t\tif (!isControlled) setInternal(v)\n\t\t\t// 更新原生 input 的 value 并触发 input 事件,兼容外部监听\n\t\t\tif (innerRef.current) {\n\t\t\t\tconst nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set\n\t\t\t\tnativeSetter?.call(innerRef.current, v === undefined ? '' : String(v))\n\t\t\t\tconst ev = new Event('input', { bubbles: true })\n\t\t\t\tObject.defineProperty(ev, 'target', { writable: false, value: innerRef.current })\n\t\t\t\t// 触发原生 onChange 回调(如果有人依赖)\n\t\t\t\tonChange?.(ev as unknown as ChangeEvent<HTMLInputElement>)\n\t\t\t}\n\t\t\ttriggerValueChange(v)\n\t\t}\n\t\t// 修改handleInputChange函数\n\t\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\t const raw = e.target.value\n\t\t // 当输入为空时,使用min或0作为默认值,而不是undefined\n\t\t const parsed = raw === '' ? (min !== undefined ? min : 0) : Number(raw)\n\t\t const final = Number.isNaN(parsed) ? (min !== undefined ? min : 0) : clamp(parsed)\n\t\t if (!isControlled) setInternal(final)\n\t\t triggerValueChange(final)\n\t\t onChange?.(e)\n\t\t}\n\n\t\tconst increment = () => {\n\t\t\tconst base = currentValue ?? 0\n\t\t\tconst next = clamp(base + (step ?? 1))\n\t\t\tsetValue(next)\n\t\t}\n\n\t\tconst decrement = () => {\n\t\t\tconst base = currentValue ?? 0\n\t\t\tconst next = clamp(base - (step ?? 1))\n\t\t\tsetValue(next)\n\t\t}\n\t\tconst handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n\t\t\tif (e.key === 'ArrowUp') {\n\t\t\t\te.preventDefault()\n\t\t\t\tincrement()\n\t\t\t} else if (e.key === 'ArrowDown') {\n\t\t\t\te.preventDefault()\n\t\t\t\tdecrement()\n\t\t\t}\n\t\t}\n\n\t\tconst inputId = id || `number-${Math.random().toString(36).slice(2, 9)}`\n\n\t\tconst atMin = currentValue !== undefined && min !== undefined && currentValue <= min\n\t\tconst atMax = currentValue !== undefined && max !== undefined && currentValue >= max\n\n\t\treturn (\n\t\t\t<NumberRoot className={className}>\n\t\t\t\t{label && (\n\t\t\t\t\t<Label htmlFor={inputId} aria-hidden={false}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Label>\n\t\t\t\t)}\n\t\t\t\t<NumberGroup className={`controls-${controls} size-${size}`} size={size} disabled={disabled} controls={controls}>\n\t\t\t\t\t{controls === 'buttons' && (\n\t\t\t\t\t\t<SideButton\n\t\t\t\t\t\tclassName=\"btn-decrement\"\n\t\t\t\t\t\tpos=\"left\"\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={decrement}\n\t\t\t\t\t\tdisabled={disabled || atMin}\n\t\t\t\t\t>\n\t\t\t\t\t\t<MinusIcon size={size === 'lg' ? 12 : 8.571} />\n\t\t\t\t\t</SideButton>\n\t\t\t\t\t)}\n\t\t\t\t\t<NumberField\n\t\t\t\t\t\t{...(rest as any)}\n\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\tref={innerRef}\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tvalue={currentValue === undefined ? '' : String(currentValue)}\n\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-invalid={error}\n\t\t\t\t\t\taria-describedby={description ? `${inputId}-desc` : undefined}\n\t\t\t\t\t\tclassName={controls === 'buttons' ? 'with-side-controls' : undefined}\n\t\t\t\t\t\tdata-size={size}\n\t\t\t\t\t/>\n\t\t\t\t\t{controls === 'buttons' && (\n\t\t\t\t\t\t<SideButton\n\t\t\t\t\t\tclassName=\"btn-increment\"\n\t\t\t\t\t\tpos=\"right\"\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={increment}\n\t\t\t\t\t\tdisabled={disabled || atMax}\n\t\t\t\t\t>\n\t\t\t\t\t\t<PlusIcon size={size === 'lg' ? 12 : 8.571} />\n\t\t\t\t\t</SideButton>\n\t\t\t\t\t)}\n\t\t\t\t\t{controls === 'arrows' && (\n\t\t\t\t\t\t<ArrowGroup className=\"arrow-group\" >\n\t\t\t\t\t\t\t<ArrowButton\n\t\t\t direction=\"up\"\n\t\t\t type=\"button\"\n\t\t\t size={size}\n\t\t\t onClick={increment}\n\t\t\t disabled={disabled || atMax}\n\t\t\t className=\"arrow-up\"\n\t\t >\n\t\t\t <UpIcon />\n\t\t </ArrowButton>\n\t\t <ArrowButton\n\t\t\t direction=\"down\"\n\t\t\t type=\"button\"\n\t\t\t aria-label=\"减小\"\n\t\t\t title=\"减小\"\n\t\t\t size={size}\n\t\t\t onClick={decrement}\n\t\t\t disabled={disabled || atMin}\n\t\t\t className=\"arrow-down\"\n\t\t >\n\t\t\t <DownIcon />\n\t\t </ArrowButton>\n\t\t\t\t\t\t</ArrowGroup>\n\t\t\t\t\t)}\n\t\t\t\t</NumberGroup>\n\t\t\t\t{description && <Description id={`${inputId}-desc`}>{description}</Description>}\n\t\t\t</NumberRoot>\n\t\t)\n\t},\n)\nNumberInput.displayName = 'NumberInput'\nexport default NumberInput","import styled from '@emotion/styled'\n\nexport const RadioWrapper = styled('label', {\n shouldForwardProp: (prop) => prop !== 'disabled',\n})<{ disabled: boolean }>(({ theme, disabled }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.components.radio.gap,\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? theme.components.radio.disabled.opacity : 1,\n transition: `opacity ${theme.components.radio.transition}`,\n}))\n\nexport const RadioRoot = styled('span', {\n shouldForwardProp: (prop) => prop !== 'disabled',\n})<{ disabled?: boolean }>(({ theme, disabled }) => ({\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: theme.components.radio.control.size,\n height: theme.components.radio.control.size,\n borderRadius: theme.components.radio.control.borderRadius,\n borderWidth: theme.components.radio.control.borderWidth,\n borderStyle: 'solid',\n borderColor: disabled\n ? theme.components.radio.control.borderColor.disabled\n : theme.components.radio.control.borderColor.default,\n background: theme.components.radio.control.background,\n transition: `border-color ${theme.components.radio.transition}, box-shadow ${theme.components.radio.transition}, transform ${theme.components.radio.transition}`,\n flexShrink: 0,\n}))\n\nexport const RadioNative = styled('input')(({ theme }) => ({\n position: 'absolute',\n inset: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n opacity: 0,\n cursor: 'inherit',\n '&:focus-visible + span': {\n boxShadow: theme.components.radio.focusRing,\n },\n '&:hover:not(:disabled) + span': {\n borderColor: theme.components.radio.control.borderColor.hover,\n transform: 'translateY(-0.5px)',\n },\n '&:checked + span': {\n borderColor: theme.components.radio.control.borderColor.checked,\n },\n '&:checked + span::after': {\n transform: 'translate(-50%, -50%) scale(1)',\n opacity: 1,\n },\n '&:disabled + span': {\n borderColor: theme.components.radio.control.borderColor.disabled,\n },\n '&:disabled + span::after': {\n background: theme.components.radio.control.indicator.disabled,\n },\n}))\n\nexport const RadioIndicator = styled('span')(({ theme }) => ({\n position: 'relative',\n inset: 0,\n width: '100%',\n height: '100%',\n borderRadius: 'inherit',\n boxShadow: 'none',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: theme.components.radio.control.indicator.size,\n height: theme.components.radio.control.indicator.size,\n background: theme.components.radio.control.indicator.color,\n borderRadius: 'inherit',\n transform: 'translate(-50%, -50%) scale(0.35)',\n opacity: 0,\n transition: `transform ${theme.components.radio.transition}, opacity ${theme.components.radio.transition}`,\n },\n}))\n\nexport const RadioText = styled('span')({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.25rem',\n minWidth: 0,\n})\n\nexport const RadioLabel = styled('span', {\n shouldForwardProp: (prop) => prop !== 'disabled',\n})<{ disabled: boolean }>(({ theme, disabled }) => ({\n fontSize: theme.components.radio.text.label.fontSize,\n fontWeight: theme.components.radio.text.label.fontWeight,\n color: disabled ? theme.components.radio.text.label.disabled : theme.components.radio.text.label.color,\n lineHeight: 1.5,\n transition: `color ${theme.components.radio.transition}`,\n}))\n\nexport const RadioDescription = styled('span', {\n shouldForwardProp: (prop) => prop !== 'disabled',\n})<{ disabled: boolean }>(({ theme, disabled }) => ({\n margin: 0,\n color: disabled\n ? theme.components.radio.text.description.disabled\n : theme.components.radio.text.description.color,\n fontSize: theme.components.radio.text.description.fontSize,\n lineHeight: 1.4,\n transition: `color ${theme.components.radio.transition}`,\n}))\n\n","import { forwardRef } from 'react'\nimport type { InputHTMLAttributes, ReactNode } from 'react'\nimport {\n RadioDescription,\n RadioIndicator,\n RadioLabel,\n RadioNative,\n RadioRoot,\n RadioText,\n RadioWrapper,\n} from './Radio.style'\n\nexport type RadioProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & {\n label?: ReactNode\n description?: ReactNode\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n ({ label, description, className, ...inputProps }, ref) => {\n const isDisabled = Boolean(inputProps.disabled)\n\n return (\n <RadioWrapper disabled={isDisabled} className={className} data-disabled={isDisabled ? 'true' : undefined}>\n <RadioRoot disabled={isDisabled}>\n <RadioNative ref={ref} type=\"radio\" disabled={isDisabled} {...inputProps} />\n <RadioIndicator aria-hidden />\n </RadioRoot>\n {(label || description) && (\n <RadioText>\n {label ? <RadioLabel disabled={isDisabled}>{label}</RadioLabel> : null}\n {description ? <RadioDescription disabled={isDisabled}>{description}</RadioDescription> : null}\n </RadioText>\n )}\n </RadioWrapper>\n )\n },\n)\n\nRadio.displayName = 'Radio'\n\n","import styled from '@emotion/styled'\nimport { css, keyframes } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\nexport const skeletonVariants = ['rect', 'text', 'circle'] as const\nexport type SkeletonVariant = (typeof skeletonVariants)[number]\n\nexport const skeletonRadii = ['sm', 'md', 'lg', 'pill'] as const\nexport type SkeletonRadius = (typeof skeletonRadii)[number]\n\ntype SkeletonRootProps = {\n $variant: SkeletonVariant\n $animate: boolean\n $radius: SkeletonRadius\n $width?: string\n $height?: string\n}\n\ntype SkeletonLineProps = {\n $animate: boolean\n $isLast: boolean\n $customWidth?: string\n}\n\ntype SkeletonStackProps = {\n $width?: string\n}\n\nconst shimmerKeyframes = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n`\n\nconst shimmerMixin = ({ theme }: { theme: AppTheme }) => css`\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n ${theme.components.skeleton.background.highlight} 50%,\n transparent 100%\n );\n animation: ${shimmerKeyframes} ${theme.components.skeleton.animation.duration}\n ${theme.components.skeleton.animation.easing} infinite;\n transform: translateX(-100%);\n }\n\n @media (prefers-reduced-motion: reduce) {\n &::after {\n animation-duration: 0.01ms;\n animation-iteration-count: 1;\n transform: translateX(-50%);\n }\n }\n`\n\nexport const SkeletonRoot = styled.div<SkeletonRootProps>`\n position: relative;\n overflow: hidden;\n display: block;\n background: ${({ theme }) => theme.components.skeleton.background.base};\n border-radius: ${({ theme, $variant, $radius }) =>\n $variant === 'circle' ? theme.components.skeleton.radius.circle : theme.components.skeleton.radius[$radius]};\n width: ${({ $variant, $width, theme }) => {\n if ($variant === 'circle') {\n return $width ?? theme.components.skeleton.circle.size\n }\n\n return $width ?? '100%'\n }};\n height: ${({ $variant, $height, theme }) => {\n if ($variant === 'circle') {\n return $height ?? theme.components.skeleton.circle.size\n }\n\n if ($variant === 'text') {\n return $height ?? theme.components.skeleton.text.lineHeight\n }\n\n return $height ?? theme.components.skeleton.block.height\n }};\n\n ${({ $animate, theme }) =>\n $animate &&\n css`\n ${shimmerMixin({ theme })}\n `}\n`\n\nexport const SkeletonStack = styled.div<SkeletonStackProps>`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.skeleton.text.gap};\n width: ${({ $width }) => $width ?? '100%'};\n`\n\nexport const SkeletonLine = styled.span<SkeletonLineProps>`\n position: relative;\n overflow: hidden;\n display: block;\n background: ${({ theme }) => theme.components.skeleton.background.base};\n height: ${({ theme }) => theme.components.skeleton.text.lineHeight};\n border-radius: ${({ theme }) => theme.components.skeleton.radius.pill};\n width: ${({ $customWidth, $isLast, theme }) =>\n $customWidth ?? ($isLast ? theme.components.skeleton.text.lastLineWidth : '100%')};\n\n ${({ $animate, theme }) =>\n $animate &&\n css`\n ${shimmerMixin({ theme })}\n `}\n`\n\n","import { forwardRef } from 'react'\nimport type { HTMLAttributes, ReactNode } from 'react'\nimport {\n SkeletonRoot,\n SkeletonLine,\n SkeletonStack,\n skeletonVariants,\n skeletonRadii,\n type SkeletonVariant,\n type SkeletonRadius,\n} from './Skeleton.style'\n\nconst toCssSize = (value?: number | string) => {\n if (value === undefined) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n /** Skeleton 展示形态 */\n variant?: SkeletonVariant\n /** 自定义宽度,支持 number(px) 或 string */\n width?: number | string\n /** 自定义高度,支持 number(px) 或 string */\n height?: number | string\n /** 文本模式下的行数 */\n lines?: number\n /** 是否展示骨架动画 */\n animate?: boolean\n /** 方形/矩形骨架的圆角尺寸 */\n radius?: SkeletonRadius\n /** 加载完成后展示真实内容 */\n loaded?: boolean\n /** 加载完成后展示的真实内容 */\n children?: ReactNode\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = 'rect',\n width,\n height,\n lines = variant === 'text' ? 3 : 1,\n animate = true,\n radius = 'md',\n loaded = false,\n className,\n children,\n style,\n ...rest\n },\n ref,\n ) => {\n const resolvedWidth = toCssSize(width)\n const resolvedHeight = toCssSize(height)\n const lineCount = Math.max(1, lines)\n const shouldRenderStack = variant === 'text' && lineCount > 1\n\n if (loaded) {\n if (!children) {\n return null\n }\n\n return (\n <div ref={ref} className={className} style={style} {...rest}>\n {children}\n </div>\n )\n }\n\n const accessibilityProps = {\n role: 'status' as const,\n 'aria-live': 'polite' as const,\n 'aria-busy': true,\n }\n\n if (shouldRenderStack) {\n return (\n <SkeletonStack\n ref={ref}\n className={className}\n style={style}\n $width={resolvedWidth}\n data-variant=\"text\"\n {...accessibilityProps}\n {...rest}\n >\n {Array.from({ length: lineCount }).map((_, index) => (\n <SkeletonLine\n key={index}\n $animate={animate}\n $isLast={index === lineCount - 1}\n $customWidth={index === lineCount - 1 ? resolvedWidth : undefined}\n aria-hidden=\"true\"\n />\n ))}\n </SkeletonStack>\n )\n }\n\n return (\n <SkeletonRoot\n ref={ref}\n className={className}\n style={style}\n $variant={variant}\n $animate={animate}\n $radius={radius}\n $width={resolvedWidth}\n $height={resolvedHeight}\n data-variant={variant}\n {...accessibilityProps}\n {...rest}\n />\n )\n },\n)\n\nSkeleton.displayName = 'Skeleton'\n\nexport { skeletonVariants, skeletonRadii }\nexport type { SkeletonVariant, SkeletonRadius }\n\n","import styled from '@emotion/styled'\nimport { css, keyframes } from '@emotion/react'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type StepperOrientation = 'horizontal' | 'vertical'\nexport type StepperLabelPlacement = 'right' | 'bottom'\nexport type StepStatus = 'wait' | 'process' | 'finish' | 'error'\nexport type StepSize = 'md' | 'sm'\nexport type StepperVariant = 'default' | 'dot'\n\nconst dotPulse = keyframes`\n 0% {\n transform: scale(1);\n opacity: 0.6;\n }\n 50% {\n transform: scale(1.6);\n opacity: 0.3;\n }\n 100% {\n transform: scale(1);\n opacity: 0.6;\n }\n`\n\n// ============================================================================\n// Styled Components\n// ============================================================================\n\nexport const StepperRoot = styled.div<{\n orientation: StepperOrientation\n}>`\n display: flex;\n flex-direction: ${({ orientation }) => (orientation === 'vertical' ? 'column' : 'row')};\n width: 100%;\n \n ${({ orientation }) => orientation === 'horizontal' && css`\n align-items: flex-start;\n `}\n`\n\nexport const StepRoot = styled.div<{\n orientation: StepperOrientation\n labelPlacement: StepperLabelPlacement\n status: StepStatus\n isLast: boolean\n flexBasis?: string\n variant: StepperVariant\n}>`\n position: relative;\n display: flex;\n flex: ${({ isLast, orientation }) => (isLast || orientation === 'vertical' ? '0 0 auto' : '1')};\n flex-direction: ${({ orientation, labelPlacement }) => \n orientation === 'horizontal' && labelPlacement === 'bottom' ? 'column' : 'row'};\n align-items: ${({ orientation, labelPlacement }) => \n orientation === 'horizontal' && labelPlacement === 'bottom' ? 'center' : 'flex-start'};\n\n /* Gap between content elements */\n gap: ${({ theme }) => theme.components.stepper.gap};\n`\n\nexport const StepIconContainer = styled.div<{\n status: StepStatus\n size: StepSize\n variant: StepperVariant\n}>`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1; /* To stay above line */\n \n /* Size */\n width: ${({ theme, size, variant }) =>\n variant === 'dot'\n ? theme.components.stepper.dot.size[size]\n : theme.components.stepper.circle.size[size]};\n height: ${({ theme, size, variant }) =>\n variant === 'dot'\n ? theme.components.stepper.dot.size[size]\n : theme.components.stepper.circle.size[size]};\n\n border-radius: 50%;\n border: ${({ variant }) => (variant === 'dot' ? 'none' : '1px solid')};\n transition: all 0.2s ease;\n\n /* Colors based on Status */\n ${({ theme, status, variant }) => {\n const stepper = theme.components.stepper;\n const state = stepper.state[status];\n \n // Default styles (Wait)\n let borderColor = state.color;\n let bgColor = 'transparent';\n let color = state.color;\n\n if (variant === 'dot') {\n if (status === 'wait') {\n bgColor = stepper.line.color.default;\n } else {\n bgColor = state.color;\n }\n color = 'transparent';\n\n return css`\n background-color: ${bgColor};\n color: ${color};\n ${status === 'process'\n ? `\n &::after {\n content: '';\n position: absolute;\n inset: -4px;\n border-radius: 50%;\n background-color: ${stepper.dot.pulseColor};\n animation: ${dotPulse} 1.5s ease-in-out infinite;\n will-change: transform, opacity;\n z-index: -1;\n }\n `\n : ''}\n `;\n } else {\n if (status === 'process') {\n borderColor = state.color;\n bgColor = state.bg;\n color = theme.global.colors.common.white;\n } else if (status === 'finish') {\n borderColor = state.color;\n bgColor = state.bg; \n color = state.color;\n } else if (status === 'error') {\n borderColor = state.color;\n bgColor = state.bg;\n color = state.color;\n } else {\n // Wait\n color = state.color;\n }\n\n return css`\n border-color: ${borderColor};\n background-color: ${bgColor};\n color: ${color};\n ${status === 'process'\n ? `\n &::after {\n content: '';\n position: absolute;\n inset: -4px;\n border-radius: 50%;\n border: 2px solid ${state.color};\n opacity: 0.6;\n animation: ${dotPulse} 1.5s ease-in-out infinite;\n will-change: transform, opacity;\n z-index: -1;\n }\n `\n : ''}\n `;\n }\n }}\n\n /* Text style inside circle */\n font-size: ${({ theme, size }) => theme.components.stepper.circle.fontSize[size]};\n font-weight: 500;\n\n /* Icon size control */\n svg {\n width: ${({ theme, size }) => theme.components.stepper.circle.iconSize[size]};\n height: ${({ theme, size }) => theme.components.stepper.circle.iconSize[size]};\n flex-shrink: 0;\n }\n`\n\nexport const StepContent = styled.div<{\n orientation: StepperOrientation\n labelPlacement: StepperLabelPlacement\n}>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n \n ${({ orientation, labelPlacement }) => \n orientation === 'horizontal' && labelPlacement === 'bottom' && css`\n align-items: center;\n text-align: center;\n padding-top: 4px; /* Space between icon and text */\n `}\n\n ${({ orientation, labelPlacement }) => \n (orientation === 'vertical' || labelPlacement === 'right') && css`\n padding-left: 4px; /* Space between icon and text */\n /* Adjust for vertical alignment with icon center if needed */\n padding-top: 4px; \n `}\n`\n\nexport const StepTitle = styled.div<{\n status: StepStatus\n}>`\n font-size: ${({ theme }) => theme.components.stepper.text.title.fontSize};\n font-weight: ${({ theme }) => theme.components.stepper.text.title.fontWeight};\n line-height: 1.4;\n \n color: ${({ theme, status }) => {\n const titleColors = theme.components.stepper.text.title.color;\n switch (status) {\n case 'process': return titleColors.active;\n case 'finish': return titleColors.default; \n case 'error': return titleColors.error;\n case 'wait': return titleColors.waiting;\n default: return titleColors.default;\n }\n }};\n`\n\nexport const StepDescription = styled.div`\n font-size: ${({ theme }) => theme.components.stepper.text.description.fontSize};\n color: ${({ theme }) => theme.components.stepper.text.description.color};\n line-height: 1.4;\n margin-top: 2px;\n`\n\nexport const StepConnector = styled.div<{\n orientation: StepperOrientation\n labelPlacement: StepperLabelPlacement\n isFinished: boolean\n size: StepSize\n variant: StepperVariant\n}>`\n transition: background-color 0.2s ease;\n \n ${({ orientation, theme, isFinished, size, labelPlacement, variant }) => {\n const iconSizeToken =\n variant === 'dot'\n ? theme.components.stepper.dot.size[size]\n : theme.components.stepper.circle.size[size];\n const iconSizeVal = parseInt(iconSizeToken);\n const topPos = iconSizeVal / 2;\n\n if (orientation === 'horizontal') {\n // Horizontal Connector\n return css`\n flex: 1;\n height: 1px;\n background-color: ${isFinished ? theme.components.stepper.line.color.active : theme.components.stepper.line.color.default};\n margin: 0 ${theme.components.stepper.gap};\n margin-top: ${topPos}px;\n ${labelPlacement === 'bottom' ? 'align-self: flex-start;' : ''}\n `;\n } else {\n // Vertical Connector\n return css`\n width: 1px;\n min-height: 40px;\n flex: 1;\n background-color: ${isFinished ? theme.components.stepper.line.color.active : theme.components.stepper.line.color.default};\n margin-top: 4px;\n `;\n }\n }}\n`\n\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport type { ReactNode } from 'react'\nimport {\n StepperRoot,\n type StepperOrientation,\n type StepperLabelPlacement,\n type StepSize,\n type StepStatus,\n type StepperVariant,\n} from './Stepper.style'\nimport type { StepProps } from './Step'\n\nexport interface StepperProps {\n /** Current active step index (0-indexed) */\n active?: number\n /** Orientation of the stepper */\n orientation?: StepperOrientation\n /** Label placement (only for horizontal orientation) */\n labelPlacement?: StepperLabelPlacement\n /** Size of the stepper */\n size?: StepSize\n /** Visual variant */\n variant?: StepperVariant\n /** Children (Step components) */\n children: ReactNode\n className?: string\n /** Callback when step is clicked */\n onChange?: (index: number) => void\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>((props, ref) => {\n const {\n active = 0,\n orientation = 'horizontal',\n labelPlacement = 'right',\n size = 'md',\n variant = 'default',\n children,\n className,\n onChange,\n ...rest\n } = props\n\n const steps = Children.toArray(children).filter(isValidElement)\n\n return (\n <StepperRoot\n ref={ref}\n orientation={orientation}\n className={className}\n role=\"list\"\n aria-label=\"Progress\"\n {...rest}\n >\n {steps.map((step, index) => {\n const stepProps = step.props as StepProps\n \n // Determine status\n let status: StepStatus = 'wait'\n \n if (stepProps.status) {\n // If step has explicit status, use it (useful for error state or static steppers)\n status = stepProps.status\n } else {\n // Calculate status based on active index\n if (index < active) {\n status = 'finish'\n } else if (index === active) {\n status = 'process'\n } else {\n status = 'wait'\n }\n }\n\n return cloneElement(step, {\n index,\n last: index === steps.length - 1,\n orientation,\n labelPlacement: orientation === 'vertical' ? 'right' : labelPlacement, // Vertical always right (or maybe bottom doesn't make sense)\n size,\n status,\n variant,\n onClick: () => {\n if (onChange && !stepProps.disabled) {\n onChange(index)\n }\n stepProps.onClick?.()\n },\n } as StepProps)\n })}\n </StepperRoot>\n )\n})\n\nStepper.displayName = 'Stepper'\n\n","import { forwardRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { CheckOutline, CloseOutline } from '@kingsoft-ai/icons'\nimport {\n StepRoot,\n StepIconContainer,\n StepContent,\n StepTitle,\n StepDescription,\n StepConnector,\n type StepperOrientation,\n type StepperLabelPlacement,\n type StepStatus,\n type StepSize,\n type StepperVariant,\n} from './Stepper.style'\n\nexport interface StepProps {\n /** Title of the step */\n title?: ReactNode\n /** Description of the step */\n description?: ReactNode\n /** Icon of the step */\n icon?: ReactNode\n /** Status of the step, determined by Stepper if not provided */\n status?: StepStatus\n /** Disable the step */\n disabled?: boolean\n /** Click handler */\n onClick?: () => void\n className?: string\n \n // Internal props passed by Stepper\n index?: number\n orientation?: StepperOrientation\n labelPlacement?: StepperLabelPlacement\n size?: StepSize\n last?: boolean\n variant?: StepperVariant\n}\n\nexport const Step = forwardRef<HTMLDivElement, StepProps>((props, ref) => {\n const {\n title,\n description,\n icon,\n status = 'wait',\n index = 0,\n orientation = 'horizontal',\n labelPlacement = 'right',\n size = 'md',\n last = false,\n variant = 'default',\n className,\n onClick,\n ...rest\n } = props\n\n // Render icon based on status\n const renderIcon = () => {\n if (icon) return icon\n\n switch (status) {\n case 'finish':\n return <CheckOutline />\n case 'error':\n return <CloseOutline />\n default:\n // For process and wait, show number\n return <span>{index + 1}</span>\n }\n }\n\n const resolvedLabelPlacement =\n orientation === 'horizontal' && variant === 'dot' ? 'bottom' : labelPlacement\n\n const shouldRenderIcon = !(variant === 'dot' && !icon)\n const iconContent = shouldRenderIcon ? renderIcon() : null\n\n // Vertical line logic:\n // In vertical mode, the line connects from bottom of current icon to top of next icon.\n // It should be visible if not the last item.\n const showVerticalLine = orientation === 'vertical' && !last\n\n // Horizontal line logic:\n // In horizontal mode, the line connects current step to next step.\n const showHorizontalLine = orientation === 'horizontal' && !last\n\n return (\n <StepRoot\n ref={ref}\n className={className}\n orientation={orientation}\n labelPlacement={resolvedLabelPlacement}\n status={status}\n isLast={last}\n variant={variant}\n onClick={onClick}\n role=\"listitem\"\n aria-current={status === 'process' ? 'step' : undefined}\n {...rest}\n >\n {/* Vertical Mode: Icon column with line below */}\n {orientation === 'vertical' && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', flexShrink: 0, minHeight: last ? 'auto' : '80px' }}>\n <StepIconContainer status={status} size={size} variant={variant}>\n {iconContent}\n </StepIconContainer>\n {showVerticalLine && (\n <StepConnector\n orientation=\"vertical\"\n labelPlacement={resolvedLabelPlacement}\n isFinished={status === 'finish'}\n size={size}\n variant={variant}\n />\n )}\n </div>\n <StepContent orientation={orientation} labelPlacement={resolvedLabelPlacement}>\n <StepTitle status={status}>{title}</StepTitle>\n {description && <StepDescription>{description}</StepDescription>}\n </StepContent>\n </>\n )}\n\n {/* Horizontal Mode */}\n {orientation === 'horizontal' && (\n <>\n {/* Icon and horizontal line for bottom placement */}\n {resolvedLabelPlacement === 'bottom' ? (\n <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', width: '100%' }}>\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', flexShrink: 0 }}>\n <StepIconContainer status={status} size={size} variant={variant}>\n {iconContent}\n </StepIconContainer>\n <StepContent orientation={orientation} labelPlacement={resolvedLabelPlacement}>\n <StepTitle status={status}>{title}</StepTitle>\n {description && <StepDescription>{description}</StepDescription>}\n </StepContent>\n </div>\n {showHorizontalLine && (\n <StepConnector\n orientation=\"horizontal\"\n labelPlacement={resolvedLabelPlacement}\n isFinished={status === 'finish'}\n size={size}\n variant={variant}\n />\n )}\n </div>\n ) : (\n <>\n <StepIconContainer status={status} size={size} variant={variant}>\n {iconContent}\n </StepIconContainer>\n <StepContent orientation={orientation} labelPlacement={resolvedLabelPlacement}>\n <StepTitle status={status}>{title}</StepTitle>\n {description && <StepDescription>{description}</StepDescription>}\n </StepContent>\n {showHorizontalLine && (\n <StepConnector\n orientation=\"horizontal\"\n labelPlacement={resolvedLabelPlacement}\n isFinished={status === 'finish'}\n size={size}\n variant={variant}\n />\n )}\n </>\n )}\n </>\n )}\n </StepRoot>\n )\n})\n\nStep.displayName = 'Step'\n\n","/**\n * Progress 进度条样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const progressTypes = ['line', 'circle'] as const\nexport const progressSizes = ['sm', 'md', 'lg'] as const\nexport const progressStatuses = ['normal', 'error', 'warning', 'success'] as const\n\nexport type ProgressType = (typeof progressTypes)[number]\nexport type ProgressSize = (typeof progressSizes)[number]\nexport type ProgressStatus = (typeof progressStatuses)[number]\n\n// ============================================================================\n// 状态颜色映射\n// ============================================================================\n\nconst getStatusColor = (status: ProgressStatus, theme: AppTheme): string => {\n const colorMap = {\n normal: theme.semantic.colors.brand.primary, // 蓝色\n error: theme.semantic.colors.state.danger, // 红色\n warning: theme.semantic.colors.state.warning, // 橙色\n success: theme.semantic.colors.state.success, // 绿色\n }\n return colorMap[status]\n}\n\n// ============================================================================\n// 线型进度条样式\n// ============================================================================\n\n/**\n * 线型进度条容器\n */\nexport const LineProgressRoot = styled.div<{\n size: ProgressSize\n}>`\n display: flex;\n align-items: center;\n gap: 16px;\n width: 100%;\n`\n\n/**\n * 线型进度条轨道\n */\nexport const LineProgressTrack = styled.div<{\n size: ProgressSize\n}>`\n position: relative;\n flex: 1;\n background: ${({ theme }) => theme.semantic.colors.background.secondary};\n border-radius: 5px;\n overflow: hidden;\n \n ${({ size }) => {\n if (size === 'sm') {\n return css`\n height: 6px;\n `\n }\n // md 和 lg 都是 8px\n return css`\n height: 8px;\n `\n }}\n`\n\n/**\n * 线型进度条填充\n */\nexport const LineProgressBar = styled.div<{\n status: ProgressStatus\n percent: number\n}>`\n height: 100%;\n width: ${({ percent }) => percent}%;\n background: ${({ status, theme }) => getStatusColor(status, theme)};\n border-radius: 5px;\n transition: width 0.3s ease, background 0.3s ease;\n`\n\n/**\n * 进度百分比文字\n */\nexport const ProgressText = styled.span`\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 12px;\n line-height: 18px;\n color: ${({ theme }) => theme.semantic.colors.text.secondary};\n white-space: nowrap;\n flex-shrink: 0;\n`\n\n/**\n * 状态图标容器\n */\nexport const StatusIcon = styled.span<{\n status: ProgressStatus\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: ${({ status, theme }) => getStatusColor(status, theme)};\n \n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n/**\n * 线型进度条信息区域(百分比+图标)\n */\nexport const LineProgressInfo = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n flex-shrink: 0;\n`\n\n// ============================================================================\n// 环形进度条样式\n// ============================================================================\n\n/**\n * 环形进度条容器\n */\nexport const CircleProgressRoot = styled.div<{\n size: ProgressSize\n}>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n \n ${({ size }) => {\n if (size === 'sm') {\n return css`\n width: 24px;\n height: 24px;\n `\n }\n if (size === 'md') {\n return css`\n width: 80px;\n height: 80px;\n `\n }\n // lg\n return css`\n width: 160px;\n height: 160px;\n `\n }}\n`\n\n/**\n * 环形进度条 SVG\n */\nexport const CircleProgressSvg = styled.svg`\n transform: rotate(-90deg);\n width: 100%;\n height: 100%;\n`\n\n/**\n * 环形进度条轨道圆\n */\nexport const CircleProgressTrack = styled.circle`\n fill: none;\n stroke: ${({ theme }) => theme.semantic.colors.background.secondary};\n`\n\n/**\n * 环形进度条填充圆\n */\nexport const CircleProgressBar = styled.circle<{\n status: ProgressStatus\n}>`\n fill: none;\n stroke: ${({ status, theme }) => getStatusColor(status, theme)};\n stroke-linecap: round;\n transition: stroke-dashoffset 0.3s ease, stroke 0.3s ease;\n`\n\n/**\n * 环形进度条内容(百分比文字或图标)\n */\nexport const CircleProgressContent = styled.div<{\n size: ProgressSize\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n align-items: center;\n justify-content: center;\n \n ${({ size, theme }: { size: ProgressSize; theme: AppTheme }) => {\n if (size === 'sm') {\n return css`\n width: 16px;\n height: 16px;\n `\n }\n if (size === 'md') {\n return css`\n font-family: 'Barlow', ${theme.global.typography.fontFamily};\n font-size: 20px;\n font-weight: 500;\n line-height: 30px;\n color: ${theme.semantic.colors.text.secondary};\n `\n }\n // lg\n return css`\n font-family: 'Barlow', ${theme.global.typography.fontFamily};\n font-size: 36px;\n font-weight: 500;\n line-height: 54px;\n color: ${theme.semantic.colors.text.secondary};\n `\n }}\n`\n\n/**\n * 小号环形进度条的图标\n */\nexport const CircleProgressIcon = styled.span<{\n status: ProgressStatus\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: ${({ status, theme }) => getStatusColor(status, theme)};\n \n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n","/**\n * Progress 进度条组件\n * \n * 基于 react-aria 实现无障碍访问的进度条组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * // 线型进度条\n * <Progress value={60} />\n * \n * // 环形进度条\n * <Progress type=\"circle\" value={80} />\n * \n * // 带状态的进度条\n * <Progress value={100} status=\"success\" />\n * \n * // 不显示百分比\n * <Progress value={60} showPercent={false} />\n * ```\n */\n\nimport { forwardRef } from 'react'\nimport { useProgressBar } from 'react-aria'\nimport type { AriaProgressBarProps } from 'react-aria'\nimport {\n LineProgressRoot,\n LineProgressTrack,\n LineProgressBar,\n LineProgressInfo,\n ProgressText,\n StatusIcon,\n CircleProgressRoot,\n CircleProgressSvg,\n CircleProgressTrack,\n CircleProgressBar,\n CircleProgressContent,\n CircleProgressIcon,\n progressTypes,\n progressSizes,\n progressStatuses,\n type ProgressType,\n type ProgressSize,\n type ProgressStatus,\n} from './Progress.style'\n\n// 导出常量供外部使用\nexport const TYPES = progressTypes\nexport const SIZES = progressSizes\nexport const STATUSES = progressStatuses\n\nexport type ProgressProps = Omit<AriaProgressBarProps, 'value'> & {\n /** 进度条类型:线型、环形 */\n type?: ProgressType\n /** 进度条尺寸:小号、中号、大号 */\n size?: ProgressSize\n /** 进度状态:进行中、失败、警示、成功 */\n status?: ProgressStatus\n /** 当前进度值(0-100) */\n value?: number\n /** 是否显示百分比文字 */\n showPercent?: boolean\n /** 是否显示状态图标(仅线型进度条) */\n showIcon?: boolean\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * 成功图标\n */\nconst SuccessIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path\n d=\"M11.3333 5.5L6.75 10.0833L4.66667 8\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n/**\n * 失败图标\n */\nconst ErrorIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path\n d=\"M10 6L6 10M6 6L10 10\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n)\n\n/**\n * 警示图标\n */\nconst WarningIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path\n d=\"M8 4.66667V8.66667M8 11.3333H8.00667\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n/**\n * 根据状态获取对应图标\n */\nconst getStatusIcon = (status: ProgressStatus) => {\n switch (status) {\n case 'success':\n return <SuccessIcon />\n case 'error':\n return <ErrorIcon />\n case 'warning':\n return <WarningIcon />\n default:\n return null\n }\n}\n\n/**\n * Progress 进度条组件\n * \n * 基于 Figma 设计规范实现的进度条组件,支持线型和环形两种类型\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n type = 'line',\n size = 'md',\n status = 'normal',\n value = 0,\n showPercent = true,\n showIcon = true,\n className,\n ...ariaProps\n },\n ref,\n ) => {\n // 限制进度值在 0-100 之间\n const percent = Math.min(Math.max(value, 0), 100)\n \n // 使用 react-aria 的 useProgressBar hook\n const { progressBarProps, labelProps } = useProgressBar({\n ...ariaProps,\n value: percent,\n minValue: 0,\n maxValue: 100,\n })\n\n // 根据状态显示图标\n const shouldShowIcon = showIcon && status !== 'normal'\n const icon = shouldShowIcon ? getStatusIcon(status) : null\n\n // 线型进度条\n if (type === 'line') {\n return (\n <LineProgressRoot\n {...progressBarProps}\n ref={ref}\n size={size}\n className={className}\n role=\"progressbar\"\n aria-valuenow={percent}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <LineProgressTrack size={size}>\n <LineProgressBar status={status} percent={percent} />\n </LineProgressTrack>\n \n <LineProgressInfo>\n {showPercent && (\n <ProgressText {...labelProps}>\n {Math.round(percent)}%\n </ProgressText>\n )}\n \n {shouldShowIcon && icon && (\n <StatusIcon status={status}>\n {icon}\n </StatusIcon>\n )}\n </LineProgressInfo>\n </LineProgressRoot>\n )\n }\n\n // 环形进度条\n // 根据尺寸计算圆的参数\n const getSizeConfig = () => {\n switch (size) {\n case 'sm':\n return { circleSize: 24, strokeWidth: 3 }\n case 'md':\n return { circleSize: 80, strokeWidth: 6 }\n case 'lg':\n return { circleSize: 160, strokeWidth: 8 }\n default:\n return { circleSize: 80, strokeWidth: 6 }\n }\n }\n \n const { circleSize, strokeWidth } = getSizeConfig()\n const radius = (circleSize - strokeWidth) / 2\n const circumference = 2 * Math.PI * radius\n const strokeDashoffset = circumference - (percent / 100) * circumference\n \n // 是否显示百分比文字(小号显示图标,中号和大号显示百分比)\n const showPercentInCircle = size !== 'sm'\n\n return (\n <CircleProgressRoot\n {...progressBarProps}\n ref={ref}\n size={size}\n className={className}\n role=\"progressbar\"\n aria-valuenow={percent}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <CircleProgressSvg>\n {/* 轨道 */}\n <CircleProgressTrack\n cx={circleSize / 2}\n cy={circleSize / 2}\n r={radius}\n strokeWidth={strokeWidth}\n />\n \n {/* 进度条 */}\n <CircleProgressBar\n status={status}\n cx={circleSize / 2}\n cy={circleSize / 2}\n r={radius}\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n />\n </CircleProgressSvg>\n \n {/* 中心内容 */}\n <CircleProgressContent size={size}>\n {showPercentInCircle ? (\n // 中号和大号显示百分比文字\n showPercent && <span {...labelProps}>{Math.round(percent)}%</span>\n ) : (\n // 小号显示状态图标\n shouldShowIcon && icon && (\n <CircleProgressIcon status={status}>\n {icon}\n </CircleProgressIcon>\n )\n )}\n </CircleProgressContent>\n </CircleProgressRoot>\n )\n },\n)\n\nProgress.displayName = 'Progress'\n\n","import {createContext as $69F46$createContext, useMemo as $69F46$useMemo, useContext as $69F46$useContext, useState as $69F46$useState, useRef as $69F46$useRef, useEffect as $69F46$useEffect} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $e5be200c675c3b3a$export$aca958c65c314e6c = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n valid: true\n};\nconst $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE = {\n ...$e5be200c675c3b3a$export$aca958c65c314e6c,\n customError: true,\n valid: false\n};\nconst $e5be200c675c3b3a$export$dad6ae84456c676a = {\n isInvalid: false,\n validationDetails: $e5be200c675c3b3a$export$aca958c65c314e6c,\n validationErrors: []\n};\nconst $e5be200c675c3b3a$export$571b5131b7e65c11 = (0, $69F46$createContext)({});\nconst $e5be200c675c3b3a$export$a763b9476acd3eb = '__formValidationState' + Date.now();\nfunction $e5be200c675c3b3a$export$fc1a364ae1f3ff10(props) {\n // Private prop for parent components to pass state to children.\n if (props[$e5be200c675c3b3a$export$a763b9476acd3eb]) {\n let { realtimeValidation: realtimeValidation, displayValidation: displayValidation, updateValidation: updateValidation, resetValidation: resetValidation, commitValidation: commitValidation } = props[$e5be200c675c3b3a$export$a763b9476acd3eb];\n return {\n realtimeValidation: realtimeValidation,\n displayValidation: displayValidation,\n updateValidation: updateValidation,\n resetValidation: resetValidation,\n commitValidation: commitValidation\n };\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return $e5be200c675c3b3a$var$useFormValidationStateImpl(props);\n}\nfunction $e5be200c675c3b3a$var$useFormValidationStateImpl(props) {\n let { isInvalid: isInvalid, validationState: validationState, name: name, value: value, builtinValidation: builtinValidation, validate: validate, validationBehavior: validationBehavior = 'aria' } = props;\n // backward compatibility.\n if (validationState) isInvalid || (isInvalid = validationState === 'invalid');\n // If the isInvalid prop is controlled, update validation result in realtime.\n let controlledError = isInvalid !== undefined ? {\n isInvalid: isInvalid,\n validationErrors: [],\n validationDetails: $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE\n } : null;\n // Perform custom client side validation.\n let clientError = (0, $69F46$useMemo)(()=>{\n if (!validate || value == null) return null;\n let validateErrors = $e5be200c675c3b3a$var$runValidate(validate, value);\n return $e5be200c675c3b3a$var$getValidationResult(validateErrors);\n }, [\n validate,\n value\n ]);\n if (builtinValidation === null || builtinValidation === void 0 ? void 0 : builtinValidation.validationDetails.valid) builtinValidation = undefined;\n // Get relevant server errors from the form.\n let serverErrors = (0, $69F46$useContext)($e5be200c675c3b3a$export$571b5131b7e65c11);\n let serverErrorMessages = (0, $69F46$useMemo)(()=>{\n if (name) return Array.isArray(name) ? name.flatMap((name)=>$e5be200c675c3b3a$var$asArray(serverErrors[name])) : $e5be200c675c3b3a$var$asArray(serverErrors[name]);\n return [];\n }, [\n serverErrors,\n name\n ]);\n // Show server errors when the form gets a new value, and clear when the user changes the value.\n let [lastServerErrors, setLastServerErrors] = (0, $69F46$useState)(serverErrors);\n let [isServerErrorCleared, setServerErrorCleared] = (0, $69F46$useState)(false);\n if (serverErrors !== lastServerErrors) {\n setLastServerErrors(serverErrors);\n setServerErrorCleared(false);\n }\n let serverError = (0, $69F46$useMemo)(()=>$e5be200c675c3b3a$var$getValidationResult(isServerErrorCleared ? [] : serverErrorMessages), [\n isServerErrorCleared,\n serverErrorMessages\n ]);\n // Track the next validation state in a ref until commitValidation is called.\n let nextValidation = (0, $69F46$useRef)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let [currentValidity, setCurrentValidity] = (0, $69F46$useState)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let lastError = (0, $69F46$useRef)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let commitValidation = ()=>{\n if (!commitQueued) return;\n setCommitQueued(false);\n let error = clientError || builtinValidation || nextValidation.current;\n if (!$e5be200c675c3b3a$var$isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n };\n let [commitQueued, setCommitQueued] = (0, $69F46$useState)(false);\n (0, $69F46$useEffect)(commitValidation);\n // realtimeValidation is used to update the native input element's state based on custom validation logic.\n // displayValidation is the currently displayed validation state that the user sees (e.g. on input change/form submit).\n // With validationBehavior=\"aria\", all errors are displayed in realtime rather than on submit.\n let realtimeValidation = controlledError || serverError || clientError || builtinValidation || $e5be200c675c3b3a$export$dad6ae84456c676a;\n let displayValidation = validationBehavior === 'native' ? controlledError || serverError || currentValidity : controlledError || serverError || clientError || builtinValidation || currentValidity;\n return {\n realtimeValidation: realtimeValidation,\n displayValidation: displayValidation,\n updateValidation (value) {\n // If validationBehavior is 'aria', update in realtime. Otherwise, store in a ref until commit.\n if (validationBehavior === 'aria' && !$e5be200c675c3b3a$var$isEqualValidation(currentValidity, value)) setCurrentValidity(value);\n else nextValidation.current = value;\n },\n resetValidation () {\n // Update the currently displayed validation state to valid on form reset,\n // even if the native validity says it isn't. It'll show again on the next form submit.\n let error = $e5be200c675c3b3a$export$dad6ae84456c676a;\n if (!$e5be200c675c3b3a$var$isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n // Do not commit validation after the next render. This avoids a condition where\n // useSelect calls commitValidation inside an onReset handler.\n if (validationBehavior === 'native') setCommitQueued(false);\n setServerErrorCleared(true);\n },\n commitValidation () {\n // Commit validation state so the user sees it on blur/change/submit. Also clear any server errors.\n // Wait until after the next render to commit so that the latest value has been validated.\n if (validationBehavior === 'native') setCommitQueued(true);\n setServerErrorCleared(true);\n }\n };\n}\nfunction $e5be200c675c3b3a$var$asArray(v) {\n if (!v) return [];\n return Array.isArray(v) ? v : [\n v\n ];\n}\nfunction $e5be200c675c3b3a$var$runValidate(validate, value) {\n if (typeof validate === 'function') {\n let e = validate(value);\n if (e && typeof e !== 'boolean') return $e5be200c675c3b3a$var$asArray(e);\n }\n return [];\n}\nfunction $e5be200c675c3b3a$var$getValidationResult(errors) {\n return errors.length ? {\n isInvalid: true,\n validationErrors: errors,\n validationDetails: $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE\n } : null;\n}\nfunction $e5be200c675c3b3a$var$isEqualValidation(a, b) {\n if (a === b) return true;\n return !!a && !!b && a.isInvalid === b.isInvalid && a.validationErrors.length === b.validationErrors.length && a.validationErrors.every((a, i)=>a === b.validationErrors[i]) && Object.entries(a.validationDetails).every(([k, v])=>b.validationDetails[k] === v);\n}\nfunction $e5be200c675c3b3a$export$75ee7c75d68f5b0e(...results) {\n let errors = new Set();\n let isInvalid = false;\n let validationDetails = {\n ...$e5be200c675c3b3a$export$aca958c65c314e6c\n };\n for (let v of results){\n var _validationDetails, _key;\n for (let e of v.validationErrors)errors.add(e);\n // Only these properties apply for checkboxes.\n isInvalid || (isInvalid = v.isInvalid);\n for(let key in validationDetails)(_validationDetails = validationDetails)[_key = key] || (_validationDetails[_key] = v.validationDetails[key]);\n }\n validationDetails.valid = !isInvalid;\n return {\n isInvalid: isInvalid,\n validationErrors: [\n ...errors\n ],\n validationDetails: validationDetails\n };\n}\n\n\nexport {$e5be200c675c3b3a$export$aca958c65c314e6c as VALID_VALIDITY_STATE, $e5be200c675c3b3a$export$dad6ae84456c676a as DEFAULT_VALIDATION_RESULT, $e5be200c675c3b3a$export$571b5131b7e65c11 as FormValidationContext, $e5be200c675c3b3a$export$a763b9476acd3eb as privateValidationStateProp, $e5be200c675c3b3a$export$fc1a364ae1f3ff10 as useFormValidationState, $e5be200c675c3b3a$export$75ee7c75d68f5b0e as mergeValidation};\n//# sourceMappingURL=useFormValidationState.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ class $a02d57049d202695$export$d085fb9e920b5ca7 {\n *[Symbol.iterator]() {\n yield* this.iterable;\n }\n get size() {\n return this._size;\n }\n getKeys() {\n return this.keyMap.keys();\n }\n getKeyBefore(key) {\n let node = this.keyMap.get(key);\n var _node_prevKey;\n return node ? (_node_prevKey = node.prevKey) !== null && _node_prevKey !== void 0 ? _node_prevKey : null : null;\n }\n getKeyAfter(key) {\n let node = this.keyMap.get(key);\n var _node_nextKey;\n return node ? (_node_nextKey = node.nextKey) !== null && _node_nextKey !== void 0 ? _node_nextKey : null : null;\n }\n getFirstKey() {\n return this.firstKey;\n }\n getLastKey() {\n return this.lastKey;\n }\n getItem(key) {\n var _this_keyMap_get;\n return (_this_keyMap_get = this.keyMap.get(key)) !== null && _this_keyMap_get !== void 0 ? _this_keyMap_get : null;\n }\n at(idx) {\n const keys = [\n ...this.getKeys()\n ];\n return this.getItem(keys[idx]);\n }\n getChildren(key) {\n let node = this.keyMap.get(key);\n return (node === null || node === void 0 ? void 0 : node.childNodes) || [];\n }\n constructor(nodes){\n this.keyMap = new Map();\n this.firstKey = null;\n this.lastKey = null;\n this.iterable = nodes;\n let visit = (node)=>{\n this.keyMap.set(node.key, node);\n if (node.childNodes && node.type === 'section') for (let child of node.childNodes)visit(child);\n };\n for (let node of nodes)visit(node);\n let last = null;\n let index = 0;\n let size = 0;\n for (let [key, node] of this.keyMap){\n if (last) {\n last.nextKey = key;\n node.prevKey = last.key;\n } else {\n this.firstKey = key;\n node.prevKey = undefined;\n }\n if (node.type === 'item') node.index = index++;\n // Only count sections and items when determining size so that\n // loaders and separators in RAC/S2 don't influence the emptyState determination\n if (node.type === 'section' || node.type === 'item') size++;\n last = node;\n // Set nextKey as undefined since this might be the last node\n // If it isn't the last node, last.nextKey will properly set at start of new loop\n last.nextKey = undefined;\n }\n this._size = size;\n var _last_key;\n this.lastKey = (_last_key = last === null || last === void 0 ? void 0 : last.key) !== null && _last_key !== void 0 ? _last_key : null;\n }\n}\n\n\nexport {$a02d57049d202695$export$d085fb9e920b5ca7 as ListCollection};\n//# sourceMappingURL=ListCollection.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ class $e40ea825a81a3709$export$52baac22726c72bf extends Set {\n constructor(keys, anchorKey, currentKey){\n super(keys);\n if (keys instanceof $e40ea825a81a3709$export$52baac22726c72bf) {\n this.anchorKey = anchorKey !== null && anchorKey !== void 0 ? anchorKey : keys.anchorKey;\n this.currentKey = currentKey !== null && currentKey !== void 0 ? currentKey : keys.currentKey;\n } else {\n this.anchorKey = anchorKey !== null && anchorKey !== void 0 ? anchorKey : null;\n this.currentKey = currentKey !== null && currentKey !== void 0 ? currentKey : null;\n }\n }\n}\n\n\nexport {$e40ea825a81a3709$export$52baac22726c72bf as Selection};\n//# sourceMappingURL=Selection.module.js.map\n","import {Selection as $e40ea825a81a3709$export$52baac22726c72bf} from \"./Selection.mjs\";\nimport {useControlledState as $6tM1y$useControlledState} from \"@react-stately/utils\";\nimport {useRef as $6tM1y$useRef, useState as $6tM1y$useState, useMemo as $6tM1y$useMemo, useEffect as $6tM1y$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $7af3f5b51489e0b5$var$equalSets(setA, setB) {\n if (setA.size !== setB.size) return false;\n for (let item of setA){\n if (!setB.has(item)) return false;\n }\n return true;\n}\nfunction $7af3f5b51489e0b5$export$253fe78d46329472(props) {\n let { selectionMode: selectionMode = 'none', disallowEmptySelection: disallowEmptySelection = false, allowDuplicateSelectionEvents: allowDuplicateSelectionEvents, selectionBehavior: selectionBehaviorProp = 'toggle', disabledBehavior: disabledBehavior = 'all' } = props;\n // We want synchronous updates to `isFocused` and `focusedKey` after their setters are called.\n // But we also need to trigger a react re-render. So, we have both a ref (sync) and state (async).\n let isFocusedRef = (0, $6tM1y$useRef)(false);\n let [, setFocused] = (0, $6tM1y$useState)(false);\n let focusedKeyRef = (0, $6tM1y$useRef)(null);\n let childFocusStrategyRef = (0, $6tM1y$useRef)(null);\n let [, setFocusedKey] = (0, $6tM1y$useState)(null);\n let selectedKeysProp = (0, $6tM1y$useMemo)(()=>$7af3f5b51489e0b5$var$convertSelection(props.selectedKeys), [\n props.selectedKeys\n ]);\n let defaultSelectedKeys = (0, $6tM1y$useMemo)(()=>$7af3f5b51489e0b5$var$convertSelection(props.defaultSelectedKeys, new (0, $e40ea825a81a3709$export$52baac22726c72bf)()), [\n props.defaultSelectedKeys\n ]);\n let [selectedKeys, setSelectedKeys] = (0, $6tM1y$useControlledState)(selectedKeysProp, defaultSelectedKeys, props.onSelectionChange);\n let disabledKeysProp = (0, $6tM1y$useMemo)(()=>props.disabledKeys ? new Set(props.disabledKeys) : new Set(), [\n props.disabledKeys\n ]);\n let [selectionBehavior, setSelectionBehavior] = (0, $6tM1y$useState)(selectionBehaviorProp);\n // If the selectionBehavior prop is set to replace, but the current state is toggle (e.g. due to long press\n // to enter selection mode on touch), and the selection becomes empty, reset the selection behavior.\n if (selectionBehaviorProp === 'replace' && selectionBehavior === 'toggle' && typeof selectedKeys === 'object' && selectedKeys.size === 0) setSelectionBehavior('replace');\n // If the selectionBehavior prop changes, update the state as well.\n let lastSelectionBehavior = (0, $6tM1y$useRef)(selectionBehaviorProp);\n (0, $6tM1y$useEffect)(()=>{\n if (selectionBehaviorProp !== lastSelectionBehavior.current) {\n setSelectionBehavior(selectionBehaviorProp);\n lastSelectionBehavior.current = selectionBehaviorProp;\n }\n }, [\n selectionBehaviorProp\n ]);\n return {\n selectionMode: selectionMode,\n disallowEmptySelection: disallowEmptySelection,\n selectionBehavior: selectionBehavior,\n setSelectionBehavior: setSelectionBehavior,\n get isFocused () {\n return isFocusedRef.current;\n },\n setFocused (f) {\n isFocusedRef.current = f;\n setFocused(f);\n },\n get focusedKey () {\n return focusedKeyRef.current;\n },\n get childFocusStrategy () {\n return childFocusStrategyRef.current;\n },\n setFocusedKey (k, childFocusStrategy = 'first') {\n focusedKeyRef.current = k;\n childFocusStrategyRef.current = childFocusStrategy;\n setFocusedKey(k);\n },\n selectedKeys: selectedKeys,\n setSelectedKeys (keys) {\n if (allowDuplicateSelectionEvents || !$7af3f5b51489e0b5$var$equalSets(keys, selectedKeys)) setSelectedKeys(keys);\n },\n disabledKeys: disabledKeysProp,\n disabledBehavior: disabledBehavior\n };\n}\nfunction $7af3f5b51489e0b5$var$convertSelection(selection, defaultValue) {\n if (!selection) return defaultValue;\n return selection === 'all' ? 'all' : new (0, $e40ea825a81a3709$export$52baac22726c72bf)(selection);\n}\n\n\nexport {$7af3f5b51489e0b5$export$253fe78d46329472 as useMultipleSelectionState};\n//# sourceMappingURL=useMultipleSelectionState.module.js.map\n","import $6Fm0V$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $c1d7fb2ec91bae71$var$Item(props) {\n return null;\n}\n$c1d7fb2ec91bae71$var$Item.getCollectionNode = function* getCollectionNode(props, context) {\n let { childItems: childItems, title: title, children: children } = props;\n let rendered = props.title || props.children;\n let textValue = props.textValue || (typeof rendered === 'string' ? rendered : '') || props['aria-label'] || '';\n // suppressTextValueWarning is used in components like Tabs, which don't have type to select support.\n if (!textValue && !(context === null || context === void 0 ? void 0 : context.suppressTextValueWarning) && process.env.NODE_ENV !== 'production') console.warn('<Item> with non-plain text contents is unsupported by type to select for accessibility. Please add a `textValue` prop.');\n yield {\n type: 'item',\n props: props,\n rendered: rendered,\n textValue: textValue,\n 'aria-label': props['aria-label'],\n hasChildNodes: $c1d7fb2ec91bae71$var$hasChildItems(props),\n *childNodes () {\n if (childItems) for (let child of childItems)yield {\n type: 'item',\n value: child\n };\n else if (title) {\n let items = [];\n (0, $6Fm0V$react).Children.forEach(children, (child)=>{\n items.push({\n type: 'item',\n element: child\n });\n });\n yield* items;\n }\n }\n };\n};\nfunction $c1d7fb2ec91bae71$var$hasChildItems(props) {\n if (props.hasChildItems != null) return props.hasChildItems;\n if (props.childItems) return true;\n if (props.title && (0, $6Fm0V$react).Children.count(props.children) > 0) return true;\n return false;\n}\n// We don't want getCollectionNode to show up in the type definition\nlet $c1d7fb2ec91bae71$export$6d08773d2e66f8f2 = $c1d7fb2ec91bae71$var$Item;\n\n\nexport {$c1d7fb2ec91bae71$export$6d08773d2e66f8f2 as Item};\n//# sourceMappingURL=Item.module.js.map\n","import $gtysd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $9fc4852771d079eb$var$Section(props) {\n return null;\n}\n$9fc4852771d079eb$var$Section.getCollectionNode = function* getCollectionNode(props) {\n let { children: children, title: title, items: items } = props;\n yield {\n type: 'section',\n props: props,\n hasChildNodes: true,\n rendered: title,\n 'aria-label': props['aria-label'],\n *childNodes () {\n if (typeof children === 'function') {\n if (!items) throw new Error('props.children was a function but props.items is missing');\n for (let item of items)yield {\n type: 'item',\n value: item,\n renderer: children\n };\n } else {\n let items = [];\n (0, $gtysd$react).Children.forEach(children, (child)=>{\n items.push({\n type: 'item',\n element: child\n });\n });\n yield* items;\n }\n }\n };\n};\n// We don't want getCollectionNode to show up in the type definition\nlet $9fc4852771d079eb$export$6e2c8f0811a474ce = $9fc4852771d079eb$var$Section;\n\n\nexport {$9fc4852771d079eb$export$6e2c8f0811a474ce as Section};\n//# sourceMappingURL=Section.module.js.map\n","import $fzaAv$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nclass $eb2240fc39a57fa5$export$bf788dd355e3a401 {\n build(props, context) {\n this.context = context;\n return $eb2240fc39a57fa5$var$iterable(()=>this.iterateCollection(props));\n }\n *iterateCollection(props) {\n let { children: children, items: items } = props;\n if ((0, $fzaAv$react).isValidElement(children) && children.type === (0, $fzaAv$react).Fragment) yield* this.iterateCollection({\n children: children.props.children,\n items: items\n });\n else if (typeof children === 'function') {\n if (!items) throw new Error('props.children was a function but props.items is missing');\n let index = 0;\n for (let item of items){\n yield* this.getFullNode({\n value: item,\n index: index\n }, {\n renderer: children\n });\n index++;\n }\n } else {\n let items = [];\n (0, $fzaAv$react).Children.forEach(children, (child)=>{\n if (child) items.push(child);\n });\n let index = 0;\n for (let item of items){\n let nodes = this.getFullNode({\n element: item,\n index: index\n }, {});\n for (let node of nodes){\n index++;\n yield node;\n }\n }\n }\n }\n getKey(item, partialNode, state, parentKey) {\n if (item.key != null) return item.key;\n if (partialNode.type === 'cell' && partialNode.key != null) return `${parentKey}${partialNode.key}`;\n let v = partialNode.value;\n if (v != null) {\n var _v_key;\n let key = (_v_key = v.key) !== null && _v_key !== void 0 ? _v_key : v.id;\n if (key == null) throw new Error('No key found for item');\n return key;\n }\n return parentKey ? `${parentKey}.${partialNode.index}` : `$.${partialNode.index}`;\n }\n getChildState(state, partialNode) {\n return {\n renderer: partialNode.renderer || state.renderer\n };\n }\n *getFullNode(partialNode, state, parentKey, parentNode) {\n if ((0, $fzaAv$react).isValidElement(partialNode.element) && partialNode.element.type === (0, $fzaAv$react).Fragment) {\n let children = [];\n (0, $fzaAv$react).Children.forEach(partialNode.element.props.children, (child)=>{\n children.push(child);\n });\n var _partialNode_index;\n let index = (_partialNode_index = partialNode.index) !== null && _partialNode_index !== void 0 ? _partialNode_index : 0;\n for (const child of children)yield* this.getFullNode({\n element: child,\n index: index++\n }, state, parentKey, parentNode);\n return;\n }\n // If there's a value instead of an element on the node, and a parent renderer function is available,\n // use it to render an element for the value.\n let element = partialNode.element;\n if (!element && partialNode.value && state && state.renderer) {\n let cached = this.cache.get(partialNode.value);\n if (cached && (!cached.shouldInvalidate || !cached.shouldInvalidate(this.context))) {\n cached.index = partialNode.index;\n cached.parentKey = parentNode ? parentNode.key : null;\n yield cached;\n return;\n }\n element = state.renderer(partialNode.value);\n }\n // If there's an element with a getCollectionNode function on its type, then it's a supported component.\n // Call this function to get a partial node, and recursively build a full node from there.\n if ((0, $fzaAv$react).isValidElement(element)) {\n let type = element.type;\n if (typeof type !== 'function' && typeof type.getCollectionNode !== 'function') {\n let name = element.type;\n throw new Error(`Unknown element <${name}> in collection.`);\n }\n let childNodes = type.getCollectionNode(element.props, this.context);\n var _partialNode_index1;\n let index = (_partialNode_index1 = partialNode.index) !== null && _partialNode_index1 !== void 0 ? _partialNode_index1 : 0;\n let result = childNodes.next();\n while(!result.done && result.value){\n let childNode = result.value;\n partialNode.index = index;\n var _childNode_key;\n let nodeKey = (_childNode_key = childNode.key) !== null && _childNode_key !== void 0 ? _childNode_key : null;\n if (nodeKey == null) nodeKey = childNode.element ? null : this.getKey(element, partialNode, state, parentKey);\n let nodes = this.getFullNode({\n ...childNode,\n key: nodeKey,\n index: index,\n wrapper: $eb2240fc39a57fa5$var$compose(partialNode.wrapper, childNode.wrapper)\n }, this.getChildState(state, childNode), parentKey ? `${parentKey}${element.key}` : element.key, parentNode);\n let children = [\n ...nodes\n ];\n for (let node of children){\n var _childNode_value, _ref;\n // Cache the node based on its value\n node.value = (_ref = (_childNode_value = childNode.value) !== null && _childNode_value !== void 0 ? _childNode_value : partialNode.value) !== null && _ref !== void 0 ? _ref : null;\n if (node.value) this.cache.set(node.value, node);\n var _parentNode_type;\n // The partial node may have specified a type for the child in order to specify a constraint.\n // Verify that the full node that was built recursively matches this type.\n if (partialNode.type && node.type !== partialNode.type) throw new Error(`Unsupported type <${$eb2240fc39a57fa5$var$capitalize(node.type)}> in <${$eb2240fc39a57fa5$var$capitalize((_parentNode_type = parentNode === null || parentNode === void 0 ? void 0 : parentNode.type) !== null && _parentNode_type !== void 0 ? _parentNode_type : 'unknown parent type')}>. Only <${$eb2240fc39a57fa5$var$capitalize(partialNode.type)}> is supported.`);\n index++;\n yield node;\n }\n result = childNodes.next(children);\n }\n return;\n }\n // Ignore invalid elements\n if (partialNode.key == null || partialNode.type == null) return;\n // Create full node\n let builder = this;\n var _partialNode_value, _partialNode_textValue;\n let node = {\n type: partialNode.type,\n props: partialNode.props,\n key: partialNode.key,\n parentKey: parentNode ? parentNode.key : null,\n value: (_partialNode_value = partialNode.value) !== null && _partialNode_value !== void 0 ? _partialNode_value : null,\n level: parentNode ? parentNode.level + 1 : 0,\n index: partialNode.index,\n rendered: partialNode.rendered,\n textValue: (_partialNode_textValue = partialNode.textValue) !== null && _partialNode_textValue !== void 0 ? _partialNode_textValue : '',\n 'aria-label': partialNode['aria-label'],\n wrapper: partialNode.wrapper,\n shouldInvalidate: partialNode.shouldInvalidate,\n hasChildNodes: partialNode.hasChildNodes || false,\n childNodes: $eb2240fc39a57fa5$var$iterable(function*() {\n if (!partialNode.hasChildNodes || !partialNode.childNodes) return;\n let index = 0;\n for (let child of partialNode.childNodes()){\n // Ensure child keys are globally unique by prepending the parent node's key\n if (child.key != null) // TODO: Remove this line entirely and enforce that users always provide unique keys.\n // Currently this line will have issues when a parent has a key `a` and a child with key `bc`\n // but another parent has key `ab` and its child has a key `c`. The combined keys would result in both\n // children having a key of `abc`.\n child.key = `${node.key}${child.key}`;\n let nodes = builder.getFullNode({\n ...child,\n index: index\n }, builder.getChildState(state, child), node.key, node);\n for (let node of nodes){\n index++;\n yield node;\n }\n }\n })\n };\n yield node;\n }\n constructor(){\n this.cache = new WeakMap();\n }\n}\n// Wraps an iterator function as an iterable object, and caches the results.\nfunction $eb2240fc39a57fa5$var$iterable(iterator) {\n let cache = [];\n let iterable = null;\n return {\n *[Symbol.iterator] () {\n for (let item of cache)yield item;\n if (!iterable) iterable = iterator();\n for (let item of iterable){\n cache.push(item);\n yield item;\n }\n }\n };\n}\nfunction $eb2240fc39a57fa5$var$compose(outer, inner) {\n if (outer && inner) return (element)=>outer(inner(element));\n if (outer) return outer;\n if (inner) return inner;\n}\nfunction $eb2240fc39a57fa5$var$capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\n\nexport {$eb2240fc39a57fa5$export$bf788dd355e3a401 as CollectionBuilder};\n//# sourceMappingURL=CollectionBuilder.module.js.map\n","import {CollectionBuilder as $eb2240fc39a57fa5$export$bf788dd355e3a401} from \"./CollectionBuilder.mjs\";\nimport {useMemo as $lbNth$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $7613b1592d41b092$export$6cd28814d92fa9c9(props, factory, context) {\n let builder = (0, $lbNth$useMemo)(()=>new (0, $eb2240fc39a57fa5$export$bf788dd355e3a401)(), []);\n let { children: children, items: items, collection: collection } = props;\n let result = (0, $lbNth$useMemo)(()=>{\n if (collection) return collection;\n let nodes = builder.build({\n children: children,\n items: items\n }, context);\n return factory(nodes);\n }, [\n builder,\n children,\n items,\n collection,\n context,\n factory\n ]);\n return result;\n}\n\n\nexport {$7613b1592d41b092$export$6cd28814d92fa9c9 as useCollection};\n//# sourceMappingURL=useCollection.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c5a24bc478652b5f$export$1005530eda016c13(node, collection) {\n // New API: call collection.getChildren with the node key.\n if (typeof collection.getChildren === 'function') return collection.getChildren(node.key);\n // Old API: access childNodes directly.\n return node.childNodes;\n}\nfunction $c5a24bc478652b5f$export$fbdeaa6a76694f71(iterable) {\n return $c5a24bc478652b5f$export$5f3398f8733f90e2(iterable, 0);\n}\nfunction $c5a24bc478652b5f$export$5f3398f8733f90e2(iterable, index) {\n if (index < 0) return undefined;\n let i = 0;\n for (let item of iterable){\n if (i === index) return item;\n i++;\n }\n}\nfunction $c5a24bc478652b5f$export$7475b2c64539e4cf(iterable) {\n let lastItem = undefined;\n for (let value of iterable)lastItem = value;\n return lastItem;\n}\nfunction $c5a24bc478652b5f$export$8c434b3a7a4dad6(collection, a, b) {\n // If the two nodes have the same parent, compare their indices.\n if (a.parentKey === b.parentKey) return a.index - b.index;\n // Otherwise, collect all of the ancestors from each node, and find the first one that doesn't match starting from the root.\n // Include the base nodes in case we are comparing nodes of different levels so that we can compare the higher node to the lower level node's\n // ancestor of the same level\n let aAncestors = [\n ...$c5a24bc478652b5f$var$getAncestors(collection, a),\n a\n ];\n let bAncestors = [\n ...$c5a24bc478652b5f$var$getAncestors(collection, b),\n b\n ];\n let firstNonMatchingAncestor = aAncestors.slice(0, bAncestors.length).findIndex((a, i)=>a !== bAncestors[i]);\n if (firstNonMatchingAncestor !== -1) {\n // Compare the indices of two children within the common ancestor.\n a = aAncestors[firstNonMatchingAncestor];\n b = bAncestors[firstNonMatchingAncestor];\n return a.index - b.index;\n }\n // If there isn't a non matching ancestor, we might be in a case where one of the nodes is the ancestor of the other.\n if (aAncestors.findIndex((node)=>node === b) >= 0) return 1;\n else if (bAncestors.findIndex((node)=>node === a) >= 0) return -1;\n // 🤷\n return -1;\n}\nfunction $c5a24bc478652b5f$var$getAncestors(collection, node) {\n let parents = [];\n let currNode = node;\n while((currNode === null || currNode === void 0 ? void 0 : currNode.parentKey) != null){\n currNode = collection.getItem(currNode.parentKey);\n if (currNode) parents.unshift(currNode);\n }\n return parents;\n}\n\n\nexport {$c5a24bc478652b5f$export$1005530eda016c13 as getChildNodes, $c5a24bc478652b5f$export$fbdeaa6a76694f71 as getFirstItem, $c5a24bc478652b5f$export$5f3398f8733f90e2 as getNthItem, $c5a24bc478652b5f$export$7475b2c64539e4cf as getLastItem, $c5a24bc478652b5f$export$8c434b3a7a4dad6 as compareNodeOrder};\n//# sourceMappingURL=getChildNodes.module.js.map\n","import {Selection as $e40ea825a81a3709$export$52baac22726c72bf} from \"./Selection.mjs\";\nimport {compareNodeOrder as $jkhUT$compareNodeOrder, getFirstItem as $jkhUT$getFirstItem, getChildNodes as $jkhUT$getChildNodes} from \"@react-stately/collections\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nclass $d496c0a20b6e58ec$export$6c8a5aaad13c9852 {\n /**\n * The type of selection that is allowed in the collection.\n */ get selectionMode() {\n return this.state.selectionMode;\n }\n /**\n * Whether the collection allows empty selection.\n */ get disallowEmptySelection() {\n return this.state.disallowEmptySelection;\n }\n /**\n * The selection behavior for the collection.\n */ get selectionBehavior() {\n return this.state.selectionBehavior;\n }\n /**\n * Sets the selection behavior for the collection.\n */ setSelectionBehavior(selectionBehavior) {\n this.state.setSelectionBehavior(selectionBehavior);\n }\n /**\n * Whether the collection is currently focused.\n */ get isFocused() {\n return this.state.isFocused;\n }\n /**\n * Sets whether the collection is focused.\n */ setFocused(isFocused) {\n this.state.setFocused(isFocused);\n }\n /**\n * The current focused key in the collection.\n */ get focusedKey() {\n return this.state.focusedKey;\n }\n /** Whether the first or last child of the focused key should receive focus. */ get childFocusStrategy() {\n return this.state.childFocusStrategy;\n }\n /**\n * Sets the focused key.\n */ setFocusedKey(key, childFocusStrategy) {\n if (key == null || this.collection.getItem(key)) this.state.setFocusedKey(key, childFocusStrategy);\n }\n /**\n * The currently selected keys in the collection.\n */ get selectedKeys() {\n return this.state.selectedKeys === 'all' ? new Set(this.getSelectAllKeys()) : this.state.selectedKeys;\n }\n /**\n * The raw selection value for the collection.\n * Either 'all' for select all, or a set of keys.\n */ get rawSelection() {\n return this.state.selectedKeys;\n }\n /**\n * Returns whether a key is selected.\n */ isSelected(key) {\n if (this.state.selectionMode === 'none') return false;\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return false;\n return this.state.selectedKeys === 'all' ? this.canSelectItem(mappedKey) : this.state.selectedKeys.has(mappedKey);\n }\n /**\n * Whether the selection is empty.\n */ get isEmpty() {\n return this.state.selectedKeys !== 'all' && this.state.selectedKeys.size === 0;\n }\n /**\n * Whether all items in the collection are selected.\n */ get isSelectAll() {\n if (this.isEmpty) return false;\n if (this.state.selectedKeys === 'all') return true;\n if (this._isSelectAll != null) return this._isSelectAll;\n let allKeys = this.getSelectAllKeys();\n let selectedKeys = this.state.selectedKeys;\n this._isSelectAll = allKeys.every((k)=>selectedKeys.has(k));\n return this._isSelectAll;\n }\n get firstSelectedKey() {\n let first = null;\n for (let key of this.state.selectedKeys){\n let item = this.collection.getItem(key);\n if (!first || item && (0, $jkhUT$compareNodeOrder)(this.collection, item, first) < 0) first = item;\n }\n var _first_key;\n return (_first_key = first === null || first === void 0 ? void 0 : first.key) !== null && _first_key !== void 0 ? _first_key : null;\n }\n get lastSelectedKey() {\n let last = null;\n for (let key of this.state.selectedKeys){\n let item = this.collection.getItem(key);\n if (!last || item && (0, $jkhUT$compareNodeOrder)(this.collection, item, last) > 0) last = item;\n }\n var _last_key;\n return (_last_key = last === null || last === void 0 ? void 0 : last.key) !== null && _last_key !== void 0 ? _last_key : null;\n }\n get disabledKeys() {\n return this.state.disabledKeys;\n }\n get disabledBehavior() {\n return this.state.disabledBehavior;\n }\n /**\n * Extends the selection to the given key.\n */ extendSelection(toKey) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single') {\n this.replaceSelection(toKey);\n return;\n }\n let mappedToKey = this.getKey(toKey);\n if (mappedToKey == null) return;\n let selection;\n // Only select the one key if coming from a select all.\n if (this.state.selectedKeys === 'all') selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)([\n mappedToKey\n ], mappedToKey, mappedToKey);\n else {\n let selectedKeys = this.state.selectedKeys;\n var _selectedKeys_anchorKey;\n let anchorKey = (_selectedKeys_anchorKey = selectedKeys.anchorKey) !== null && _selectedKeys_anchorKey !== void 0 ? _selectedKeys_anchorKey : mappedToKey;\n selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)(selectedKeys, anchorKey, mappedToKey);\n var _selectedKeys_currentKey;\n for (let key of this.getKeyRange(anchorKey, (_selectedKeys_currentKey = selectedKeys.currentKey) !== null && _selectedKeys_currentKey !== void 0 ? _selectedKeys_currentKey : mappedToKey))selection.delete(key);\n for (let key of this.getKeyRange(mappedToKey, anchorKey))if (this.canSelectItem(key)) selection.add(key);\n }\n this.state.setSelectedKeys(selection);\n }\n getKeyRange(from, to) {\n let fromItem = this.collection.getItem(from);\n let toItem = this.collection.getItem(to);\n if (fromItem && toItem) {\n if ((0, $jkhUT$compareNodeOrder)(this.collection, fromItem, toItem) <= 0) return this.getKeyRangeInternal(from, to);\n return this.getKeyRangeInternal(to, from);\n }\n return [];\n }\n getKeyRangeInternal(from, to) {\n var _this_layoutDelegate;\n if ((_this_layoutDelegate = this.layoutDelegate) === null || _this_layoutDelegate === void 0 ? void 0 : _this_layoutDelegate.getKeyRange) return this.layoutDelegate.getKeyRange(from, to);\n let keys = [];\n let key = from;\n while(key != null){\n let item = this.collection.getItem(key);\n if (item && (item.type === 'item' || item.type === 'cell' && this.allowsCellSelection)) keys.push(key);\n if (key === to) return keys;\n key = this.collection.getKeyAfter(key);\n }\n return [];\n }\n getKey(key) {\n let item = this.collection.getItem(key);\n if (!item) // ¯\\_(ツ)_/¯\n return key;\n // If cell selection is allowed, just return the key.\n if (item.type === 'cell' && this.allowsCellSelection) return key;\n // Find a parent item to select\n while(item && item.type !== 'item' && item.parentKey != null)item = this.collection.getItem(item.parentKey);\n if (!item || item.type !== 'item') return null;\n return item.key;\n }\n /**\n * Toggles whether the given key is selected.\n */ toggleSelection(key) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single' && !this.isSelected(key)) {\n this.replaceSelection(key);\n return;\n }\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return;\n let keys = new (0, $e40ea825a81a3709$export$52baac22726c72bf)(this.state.selectedKeys === 'all' ? this.getSelectAllKeys() : this.state.selectedKeys);\n if (keys.has(mappedKey)) keys.delete(mappedKey);\n else if (this.canSelectItem(mappedKey)) {\n keys.add(mappedKey);\n keys.anchorKey = mappedKey;\n keys.currentKey = mappedKey;\n }\n if (this.disallowEmptySelection && keys.size === 0) return;\n this.state.setSelectedKeys(keys);\n }\n /**\n * Replaces the selection with only the given key.\n */ replaceSelection(key) {\n if (this.selectionMode === 'none') return;\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return;\n let selection = this.canSelectItem(mappedKey) ? new (0, $e40ea825a81a3709$export$52baac22726c72bf)([\n mappedKey\n ], mappedKey, mappedKey) : new (0, $e40ea825a81a3709$export$52baac22726c72bf)();\n this.state.setSelectedKeys(selection);\n }\n /**\n * Replaces the selection with the given keys.\n */ setSelectedKeys(keys) {\n if (this.selectionMode === 'none') return;\n let selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)();\n for (let key of keys){\n let mappedKey = this.getKey(key);\n if (mappedKey != null) {\n selection.add(mappedKey);\n if (this.selectionMode === 'single') break;\n }\n }\n this.state.setSelectedKeys(selection);\n }\n getSelectAllKeys() {\n let keys = [];\n let addKeys = (key)=>{\n while(key != null){\n if (this.canSelectItem(key)) {\n var _getFirstItem;\n let item = this.collection.getItem(key);\n if ((item === null || item === void 0 ? void 0 : item.type) === 'item') keys.push(key);\n var _getFirstItem_key;\n // Add child keys. If cell selection is allowed, then include item children too.\n if ((item === null || item === void 0 ? void 0 : item.hasChildNodes) && (this.allowsCellSelection || item.type !== 'item')) addKeys((_getFirstItem_key = (_getFirstItem = (0, $jkhUT$getFirstItem)((0, $jkhUT$getChildNodes)(item, this.collection))) === null || _getFirstItem === void 0 ? void 0 : _getFirstItem.key) !== null && _getFirstItem_key !== void 0 ? _getFirstItem_key : null);\n }\n key = this.collection.getKeyAfter(key);\n }\n };\n addKeys(this.collection.getFirstKey());\n return keys;\n }\n /**\n * Selects all items in the collection.\n */ selectAll() {\n if (!this.isSelectAll && this.selectionMode === 'multiple') this.state.setSelectedKeys('all');\n }\n /**\n * Removes all keys from the selection.\n */ clearSelection() {\n if (!this.disallowEmptySelection && (this.state.selectedKeys === 'all' || this.state.selectedKeys.size > 0)) this.state.setSelectedKeys(new (0, $e40ea825a81a3709$export$52baac22726c72bf)());\n }\n /**\n * Toggles between select all and an empty selection.\n */ toggleSelectAll() {\n if (this.isSelectAll) this.clearSelection();\n else this.selectAll();\n }\n select(key, e) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single') {\n if (this.isSelected(key) && !this.disallowEmptySelection) this.toggleSelection(key);\n else this.replaceSelection(key);\n } else if (this.selectionBehavior === 'toggle' || e && (e.pointerType === 'touch' || e.pointerType === 'virtual')) // if touch or virtual (VO) then we just want to toggle, otherwise it's impossible to multi select because they don't have modifier keys\n this.toggleSelection(key);\n else this.replaceSelection(key);\n }\n /**\n * Returns whether the current selection is equal to the given selection.\n */ isSelectionEqual(selection) {\n if (selection === this.state.selectedKeys) return true;\n // Check if the set of keys match.\n let selectedKeys = this.selectedKeys;\n if (selection.size !== selectedKeys.size) return false;\n for (let key of selection){\n if (!selectedKeys.has(key)) return false;\n }\n for (let key of selectedKeys){\n if (!selection.has(key)) return false;\n }\n return true;\n }\n canSelectItem(key) {\n var _item_props;\n if (this.state.selectionMode === 'none' || this.state.disabledKeys.has(key)) return false;\n let item = this.collection.getItem(key);\n if (!item || (item === null || item === void 0 ? void 0 : (_item_props = item.props) === null || _item_props === void 0 ? void 0 : _item_props.isDisabled) || item.type === 'cell' && !this.allowsCellSelection) return false;\n return true;\n }\n isDisabled(key) {\n var _this_collection_getItem_props, _this_collection_getItem;\n return this.state.disabledBehavior === 'all' && (this.state.disabledKeys.has(key) || !!((_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : (_this_collection_getItem_props = _this_collection_getItem.props) === null || _this_collection_getItem_props === void 0 ? void 0 : _this_collection_getItem_props.isDisabled));\n }\n isLink(key) {\n var _this_collection_getItem_props, _this_collection_getItem;\n return !!((_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : (_this_collection_getItem_props = _this_collection_getItem.props) === null || _this_collection_getItem_props === void 0 ? void 0 : _this_collection_getItem_props.href);\n }\n getItemProps(key) {\n var _this_collection_getItem;\n return (_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : _this_collection_getItem.props;\n }\n withCollection(collection) {\n return new $d496c0a20b6e58ec$export$6c8a5aaad13c9852(collection, this.state, {\n allowsCellSelection: this.allowsCellSelection,\n layoutDelegate: this.layoutDelegate || undefined\n });\n }\n constructor(collection, state, options){\n this.collection = collection;\n this.state = state;\n var _options_allowsCellSelection;\n this.allowsCellSelection = (_options_allowsCellSelection = options === null || options === void 0 ? void 0 : options.allowsCellSelection) !== null && _options_allowsCellSelection !== void 0 ? _options_allowsCellSelection : false;\n this._isSelectAll = null;\n this.layoutDelegate = (options === null || options === void 0 ? void 0 : options.layoutDelegate) || null;\n }\n}\n\n\nexport {$d496c0a20b6e58ec$export$6c8a5aaad13c9852 as SelectionManager};\n//# sourceMappingURL=SelectionManager.module.js.map\n","import {ListCollection as $a02d57049d202695$export$d085fb9e920b5ca7} from \"./ListCollection.mjs\";\nimport {useMultipleSelectionState as $d5vlZ$useMultipleSelectionState, SelectionManager as $d5vlZ$SelectionManager} from \"@react-stately/selection\";\nimport {useMemo as $d5vlZ$useMemo, useCallback as $d5vlZ$useCallback, useRef as $d5vlZ$useRef, useEffect as $d5vlZ$useEffect} from \"react\";\nimport {useCollection as $d5vlZ$useCollection} from \"@react-stately/collections\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nfunction $e72dd72e1c76a225$export$2f645645f7bca764(props) {\n let { filter: filter, layoutDelegate: layoutDelegate } = props;\n let selectionState = (0, $d5vlZ$useMultipleSelectionState)(props);\n let disabledKeys = (0, $d5vlZ$useMemo)(()=>props.disabledKeys ? new Set(props.disabledKeys) : new Set(), [\n props.disabledKeys\n ]);\n let factory = (0, $d5vlZ$useCallback)((nodes)=>filter ? new (0, $a02d57049d202695$export$d085fb9e920b5ca7)(filter(nodes)) : new (0, $a02d57049d202695$export$d085fb9e920b5ca7)(nodes), [\n filter\n ]);\n let context = (0, $d5vlZ$useMemo)(()=>({\n suppressTextValueWarning: props.suppressTextValueWarning\n }), [\n props.suppressTextValueWarning\n ]);\n let collection = (0, $d5vlZ$useCollection)(props, factory, context);\n let selectionManager = (0, $d5vlZ$useMemo)(()=>new (0, $d5vlZ$SelectionManager)(collection, selectionState, {\n layoutDelegate: layoutDelegate\n }), [\n collection,\n selectionState,\n layoutDelegate\n ]);\n $e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager);\n return {\n collection: collection,\n disabledKeys: disabledKeys,\n selectionManager: selectionManager\n };\n}\nfunction $e72dd72e1c76a225$export$ba9d38c0f1bf2b36(state, filterFn) {\n let collection = (0, $d5vlZ$useMemo)(()=>filterFn ? state.collection.filter(filterFn) : state.collection, [\n state.collection,\n filterFn\n ]);\n let selectionManager = state.selectionManager.withCollection(collection);\n $e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager);\n return {\n collection: collection,\n selectionManager: selectionManager,\n disabledKeys: state.disabledKeys\n };\n}\nfunction $e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager) {\n // Reset focused key if that item is deleted from the collection.\n const cachedCollection = (0, $d5vlZ$useRef)(null);\n (0, $d5vlZ$useEffect)(()=>{\n if (selectionManager.focusedKey != null && !collection.getItem(selectionManager.focusedKey) && cachedCollection.current) {\n const startItem = cachedCollection.current.getItem(selectionManager.focusedKey);\n const cachedItemNodes = [\n ...cachedCollection.current.getKeys()\n ].map((key)=>{\n const itemNode = cachedCollection.current.getItem(key);\n return (itemNode === null || itemNode === void 0 ? void 0 : itemNode.type) === 'item' ? itemNode : null;\n }).filter((node)=>node !== null);\n const itemNodes = [\n ...collection.getKeys()\n ].map((key)=>{\n const itemNode = collection.getItem(key);\n return (itemNode === null || itemNode === void 0 ? void 0 : itemNode.type) === 'item' ? itemNode : null;\n }).filter((node)=>node !== null);\n var _cachedItemNodes_length, _itemNodes_length;\n const diff = ((_cachedItemNodes_length = cachedItemNodes === null || cachedItemNodes === void 0 ? void 0 : cachedItemNodes.length) !== null && _cachedItemNodes_length !== void 0 ? _cachedItemNodes_length : 0) - ((_itemNodes_length = itemNodes === null || itemNodes === void 0 ? void 0 : itemNodes.length) !== null && _itemNodes_length !== void 0 ? _itemNodes_length : 0);\n var _startItem_index, _startItem_index1, _itemNodes_length1;\n let index = Math.min(diff > 1 ? Math.max(((_startItem_index = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index !== void 0 ? _startItem_index : 0) - diff + 1, 0) : (_startItem_index1 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index1 !== void 0 ? _startItem_index1 : 0, ((_itemNodes_length1 = itemNodes === null || itemNodes === void 0 ? void 0 : itemNodes.length) !== null && _itemNodes_length1 !== void 0 ? _itemNodes_length1 : 0) - 1);\n let newNode = null;\n let isReverseSearching = false;\n while(index >= 0){\n if (!selectionManager.isDisabled(itemNodes[index].key)) {\n newNode = itemNodes[index];\n break;\n }\n // Find next, not disabled item.\n if (index < itemNodes.length - 1 && !isReverseSearching) index++;\n else {\n isReverseSearching = true;\n var _startItem_index2, _startItem_index3;\n if (index > ((_startItem_index2 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index2 !== void 0 ? _startItem_index2 : 0)) index = (_startItem_index3 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index3 !== void 0 ? _startItem_index3 : 0;\n index--;\n }\n }\n selectionManager.setFocusedKey(newNode ? newNode.key : null);\n }\n cachedCollection.current = collection;\n }, [\n collection,\n selectionManager\n ]);\n}\n\n\nexport {$e72dd72e1c76a225$export$2f645645f7bca764 as useListState, $e72dd72e1c76a225$export$ba9d38c0f1bf2b36 as UNSTABLE_useFilteredListState};\n//# sourceMappingURL=useListState.module.js.map\n","import {useCallback as $hnMvi$useCallback} from \"react\";\nimport {useControlledState as $hnMvi$useControlledState} from \"@react-stately/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $fc909762b330b746$export$61c6a8c84e605fb6(props) {\n let [isOpen, setOpen] = (0, $hnMvi$useControlledState)(props.isOpen, props.defaultOpen || false, props.onOpenChange);\n const open = (0, $hnMvi$useCallback)(()=>{\n setOpen(true);\n }, [\n setOpen\n ]);\n const close = (0, $hnMvi$useCallback)(()=>{\n setOpen(false);\n }, [\n setOpen\n ]);\n const toggle = (0, $hnMvi$useCallback)(()=>{\n setOpen(!isOpen);\n }, [\n setOpen,\n isOpen\n ]);\n return {\n isOpen: isOpen,\n setOpen: setOpen,\n open: open,\n close: close,\n toggle: toggle\n };\n}\n\n\nexport {$fc909762b330b746$export$61c6a8c84e605fb6 as useOverlayTriggerState};\n//# sourceMappingURL=useOverlayTriggerState.module.js.map\n","import {useFormValidationState as $6FfNf$useFormValidationState} from \"@react-stately/form\";\nimport {useListState as $6FfNf$useListState} from \"@react-stately/list\";\nimport {useOverlayTriggerState as $6FfNf$useOverlayTriggerState} from \"@react-stately/overlays\";\nimport {useControlledState as $6FfNf$useControlledState} from \"@react-stately/utils\";\nimport {useState as $6FfNf$useState, useMemo as $6FfNf$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $2bc3a590c5373a4e$export$5159ec8b34d4ec12(props) {\n let { selectionMode: selectionMode = 'single' } = props;\n let triggerState = (0, $6FfNf$useOverlayTriggerState)(props);\n let [focusStrategy, setFocusStrategy] = (0, $6FfNf$useState)(null);\n let defaultValue = (0, $6FfNf$useMemo)(()=>{\n var _props_defaultSelectedKey;\n return props.defaultValue !== undefined ? props.defaultValue : selectionMode === 'single' ? (_props_defaultSelectedKey = props.defaultSelectedKey) !== null && _props_defaultSelectedKey !== void 0 ? _props_defaultSelectedKey : null : [];\n }, [\n props.defaultValue,\n props.defaultSelectedKey,\n selectionMode\n ]);\n let value = (0, $6FfNf$useMemo)(()=>{\n return props.value !== undefined ? props.value : selectionMode === 'single' ? props.selectedKey : undefined;\n }, [\n props.value,\n props.selectedKey,\n selectionMode\n ]);\n let [controlledValue, setControlledValue] = (0, $6FfNf$useControlledState)(value, defaultValue, props.onChange);\n // Only display the first selected item if in single selection mode but the value is an array.\n let displayValue = selectionMode === 'single' && Array.isArray(controlledValue) ? controlledValue[0] : controlledValue;\n let setValue = (value)=>{\n if (selectionMode === 'single') {\n var _props_onSelectionChange;\n var _value_;\n let key = Array.isArray(value) ? (_value_ = value[0]) !== null && _value_ !== void 0 ? _value_ : null : value;\n setControlledValue(key);\n if (key !== displayValue) (_props_onSelectionChange = props.onSelectionChange) === null || _props_onSelectionChange === void 0 ? void 0 : _props_onSelectionChange.call(props, key);\n } else {\n let keys = [];\n if (Array.isArray(value)) keys = value;\n else if (value != null) keys = [\n value\n ];\n setControlledValue(keys);\n }\n };\n let listState = (0, $6FfNf$useListState)({\n ...props,\n selectionMode: selectionMode,\n disallowEmptySelection: selectionMode === 'single',\n allowDuplicateSelectionEvents: true,\n selectedKeys: (0, $6FfNf$useMemo)(()=>$2bc3a590c5373a4e$var$convertValue(displayValue), [\n displayValue\n ]),\n onSelectionChange: (keys)=>{\n // impossible, but TS doesn't know that\n if (keys === 'all') return;\n if (selectionMode === 'single') {\n var _keys_values_next_value;\n let key = (_keys_values_next_value = keys.values().next().value) !== null && _keys_values_next_value !== void 0 ? _keys_values_next_value : null;\n setValue(key);\n triggerState.close();\n } else setValue([\n ...keys\n ]);\n validationState.commitValidation();\n }\n });\n let selectedKey = listState.selectionManager.firstSelectedKey;\n let selectedItems = (0, $6FfNf$useMemo)(()=>{\n return [\n ...listState.selectionManager.selectedKeys\n ].map((key)=>listState.collection.getItem(key)).filter((item)=>item != null);\n }, [\n listState.selectionManager.selectedKeys,\n listState.collection\n ]);\n let validationState = (0, $6FfNf$useFormValidationState)({\n ...props,\n value: Array.isArray(displayValue) && displayValue.length === 0 ? null : displayValue\n });\n let [isFocused, setFocused] = (0, $6FfNf$useState)(false);\n let [initialValue] = (0, $6FfNf$useState)(displayValue);\n var _selectedItems_, _props_defaultSelectedKey;\n return {\n ...validationState,\n ...listState,\n ...triggerState,\n value: displayValue,\n defaultValue: defaultValue !== null && defaultValue !== void 0 ? defaultValue : initialValue,\n setValue: setValue,\n selectedKey: selectedKey,\n setSelectedKey: setValue,\n selectedItem: (_selectedItems_ = selectedItems[0]) !== null && _selectedItems_ !== void 0 ? _selectedItems_ : null,\n selectedItems: selectedItems,\n defaultSelectedKey: (_props_defaultSelectedKey = props.defaultSelectedKey) !== null && _props_defaultSelectedKey !== void 0 ? _props_defaultSelectedKey : props.selectionMode === 'single' ? initialValue : null,\n focusStrategy: focusStrategy,\n open (focusStrategy = null) {\n // Don't open if the collection is empty.\n if (listState.collection.size !== 0) {\n setFocusStrategy(focusStrategy);\n triggerState.open();\n }\n },\n toggle (focusStrategy = null) {\n if (listState.collection.size !== 0) {\n setFocusStrategy(focusStrategy);\n triggerState.toggle();\n }\n },\n isFocused: isFocused,\n setFocused: setFocused\n };\n}\nfunction $2bc3a590c5373a4e$var$convertValue(value) {\n if (value === undefined) return undefined;\n if (value === null) return [];\n return Array.isArray(value) ? value : [\n value\n ];\n}\n\n\nexport {$2bc3a590c5373a4e$export$5159ec8b34d4ec12 as useSelectState};\n//# sourceMappingURL=useSelectState.module.js.map\n","/**\n * Tag 标签样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const tagVariants = ['default', 'checkable'] as const\nexport const tagSizes = ['sm', 'md', 'lg'] as const\nexport const tagColors = [\n 'default',\n 'red',\n 'orange', \n 'yellow',\n 'green',\n 'lavender',\n 'lilac',\n 'carmine',\n 'rose',\n 'mint',\n 'olive',\n 'blue'\n] as const\n\nexport type TagVariant = (typeof tagVariants)[number]\nexport type TagSize = (typeof tagSizes)[number]\nexport type TagColor = (typeof tagColors)[number]\n\n// ============================================================================\n// 变体样式生成器\n// ============================================================================\n\n/**\n * 获取 Tag 变体样式\n * 优先使用 Tier 3 组件层 Token\n */\nconst getVariantStyles = (\n variant: TagVariant,\n color: TagColor,\n bordered: boolean,\n checked: boolean,\n theme: AppTheme\n) => {\n // 获取颜色 Token\n const colorToken = theme.components.tag.colors[color]\n \n // 可选择标签样式\n if (variant === 'checkable') {\n if (checked) {\n return css`\n background: ${colorToken.background.checked};\n color: ${colorToken.text.checked};\n border-color: ${colorToken.border.checked};\n \n &:hover:not(:disabled) {\n background: ${colorToken.background.checkedHover};\n border-color: ${colorToken.border.checkedHover};\n }\n \n &:active:not(:disabled) {\n background: ${colorToken.background.checkedActive};\n border-color: ${colorToken.border.checkedActive};\n }\n `\n } else {\n return css`\n background: ${colorToken.background.default};\n color: ${colorToken.text.default};\n border-color: ${colorToken.border.default};\n cursor: pointer;\n \n &:hover:not(:disabled) {\n background: ${colorToken.background.hover};\n border-color: ${colorToken.border.hover};\n }\n \n &:active:not(:disabled) {\n background: ${colorToken.background.active};\n border-color: ${colorToken.border.active};\n }\n `\n }\n }\n \n // 默认标签样式\n if (bordered) {\n return css`\n background: ${colorToken.background.default};\n color: ${colorToken.text.default};\n border-color: ${colorToken.border.default};\n `\n } else {\n return css`\n background: ${colorToken.background.default};\n color: ${colorToken.text.default};\n border-color: transparent;\n `\n }\n}\n\n/**\n * 获取 Tag 尺寸样式\n * 使用 Tier 3 组件层尺寸 Token\n */\nconst getSizeStyles = (size: TagSize, theme: AppTheme) => {\n const sizeToken = theme.components.tag.size[size]\n\n return css`\n height: ${sizeToken.height};\n font-size: ${sizeToken.fontSize};\n line-height: ${sizeToken.lineHeight};\n padding-inline: ${sizeToken.paddingInline};\n gap: ${sizeToken.gap};\n\n /* 图标尺寸 */\n svg {\n width: ${sizeToken.iconSize};\n height: ${sizeToken.iconSize};\n }\n `\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Tag 根元素\n * \n * 特性:\n * - 基于三层 Token 设计\n * - 支持多种颜色和变体\n * - 完整的交互状态(hover, active, disabled)\n * - 支持边框和无边框模式\n */\nexport const TagRoot = styled.span<{\n variant: TagVariant\n size: TagSize\n color: TagColor\n bordered: boolean\n checked: boolean\n closable: boolean\n isDisabled: boolean\n}>`\n /* 基础样式 - 使用 Tier 3 组件层 Token */\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n \n /* 字体样式 */\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-weight: ${({ theme }) => theme.components.tag.fontWeight};\n white-space: nowrap;\n \n /* 边框样式 */\n border-width: 1px;\n border-style: solid;\n border-radius: ${({ theme }) => theme.components.tag.borderRadius};\n \n /* 交互样式 */\n user-select: none;\n outline: none;\n \n /* 过渡动画 */\n transition: \n background ${({ theme }) => theme.components.tag.transition},\n border-color ${({ theme }) => theme.components.tag.transition},\n color ${({ theme }) => theme.components.tag.transition},\n opacity ${({ theme }) => theme.components.tag.transition};\n\n /* 变体和颜色样式 */\n ${({ variant, color, bordered, checked, theme }) =>\n getVariantStyles(variant, color, bordered, checked, theme)}\n\n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n /* 可选择标签的 cursor */\n ${({ variant, checked }) =>\n variant === 'checkable' &&\n !checked &&\n css`\n cursor: pointer;\n `}\n\n /* 禁用状态 */\n &:disabled,\n &[data-disabled='true'] {\n cursor: not-allowed;\n opacity: ${({ theme }) => theme.components.tag.disabled.opacity};\n }\n\n /* Focus 可见状态 - 键盘导航时显示 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.components.tag.colors.default.border.checked};\n outline-offset: 2px;\n }\n`\n\n/**\n * Tag 内容容器\n * \n * 用于布局图标和文本\n */\nexport const TagContent = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: inherit;\n`\n\n/**\n * 图标包装器\n * \n * 特性:\n * - 保持布局稳定\n * - 支持前置图标\n */\nexport const IconWrapper = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: inherit;\n`\n\n/**\n * 关闭按钮\n * \n * 使用 span 而非 button,避免在 Select 等组件中嵌套 button 导致的 HTML 错误\n * \n * 特性:\n * - 独立的交互区域\n * - hover 时显示反馈\n */\nexport const CloseButton = styled.span<{\n size: TagSize\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n \n border: none;\n background: transparent;\n padding: 0;\n margin: 0;\n cursor: pointer;\n color: inherit;\n \n transition: opacity ${({ theme }) => theme.components.tag.transition};\n \n &:hover {\n opacity: 0.7;\n }\n \n &:active {\n opacity: 0.5;\n }\n \n /* 图标尺寸 */\n svg {\n width: ${({ size, theme }) => theme.components.tag.size[size].closeIconSize};\n height: ${({ size, theme }) => theme.components.tag.size[size].closeIconSize};\n }\n`\n\n/**\n * 添加按钮(New Tag)\n * \n * 专门用于添加新标签的按钮样式\n */\nexport const AddButton = styled.button<{\n size: TagSize\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n gap: ${({ size, theme }) => theme.components.tag.size[size].gap};\n \n height: ${({ size, theme }) => theme.components.tag.size[size].height};\n padding-inline: ${({ size, theme }) => theme.components.tag.size[size].paddingInline};\n \n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: ${({ size, theme }) => theme.components.tag.size[size].fontSize};\n line-height: ${({ size, theme }) => theme.components.tag.size[size].lineHeight};\n font-weight: ${({ theme }) => theme.components.tag.fontWeight};\n color: ${({ theme }) => theme.components.tag.colors.default.text.default};\n \n background: ${({ theme }) => theme.components.tag.colors.default.background.default};\n border: 1px solid ${({ theme }) => theme.components.tag.colors.default.border.default};\n border-radius: ${({ theme }) => theme.components.tag.borderRadius};\n \n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n \n transition: \n background ${({ theme }) => theme.components.tag.transition},\n border-color ${({ theme }) => theme.components.tag.transition};\n \n &:hover:not(:disabled) {\n background: ${({ theme }) => theme.components.tag.colors.default.background.hover};\n border-color: ${({ theme }) => theme.components.tag.colors.default.border.hover};\n }\n \n &:active:not(:disabled) {\n background: ${({ theme }) => theme.components.tag.colors.default.background.active};\n border-color: ${({ theme }) => theme.components.tag.colors.default.border.active};\n }\n \n &:disabled {\n cursor: not-allowed;\n opacity: ${({ theme }) => theme.components.tag.disabled.opacity};\n }\n \n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.components.tag.colors.default.border.checked};\n outline-offset: 2px;\n }\n \n svg {\n width: ${({ size, theme }) => theme.components.tag.size[size].iconSize};\n height: ${({ size, theme }) => theme.components.tag.size[size].iconSize};\n }\n`\n\n","/**\n * Tag 标签组件\n * \n * 基于 react-aria 实现无障碍访问的标签组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * // 基础用法\n * <Tag>标签</Tag>\n * \n * // 可关闭\n * <Tag closable onClose={() => console.log('closed')}>标签</Tag>\n * \n * // 带图标\n * <Tag icon={<IconOutline />}>标签</Tag>\n * \n * // 可选择\n * <Tag checkable checked onChange={(checked) => console.log(checked)}>标签</Tag>\n * \n * // 彩色标签\n * <Tag color=\"red\">红色</Tag>\n * <Tag color=\"blue\" bordered>蓝色带边框</Tag>\n * ```\n */\n\nimport { forwardRef, useRef, type ReactNode } from 'react'\nimport { useButton } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport { mergeProps } from '@react-aria/utils'\nimport { CloseOutline, PlusOutline } from '@kingsoft-ai/icons'\nimport {\n TagRoot,\n TagContent,\n IconWrapper,\n CloseButton,\n AddButton,\n type TagVariant,\n type TagSize,\n type TagColor,\n} from './Tag.style'\n\n// 导出类型供外部使用\nexport type { TagVariant, TagSize, TagColor }\n\nexport interface TagProps {\n /** 标签变体:默认 | 可选择 */\n variant?: TagVariant\n /** 标签尺寸:小号(18px) | 中号(24px) | 大号(32px) */\n size?: TagSize\n /** 标签颜色 */\n color?: TagColor\n /** 是否显示边框(仅彩色标签适用) */\n bordered?: boolean\n /** 是否可关闭 */\n closable?: boolean\n /** 是否可选择(checkable 变体) */\n checkable?: boolean\n /** 是否已选中(checkable 变体) */\n checked?: boolean\n /** 前置图标 */\n icon?: ReactNode\n /** 是否禁用 */\n disabled?: boolean\n /** 自定义类名 */\n className?: string\n /** 子元素 */\n children?: ReactNode\n /** 关闭回调 */\n onClose?: () => void\n /** 选中状态变化回调(checkable 变体) */\n onChange?: (checked: boolean) => void\n /** 点击回调 */\n onClick?: () => void\n}\n\n/**\n * Tag 标签组件\n * \n * 基于 Figma 设计规范实现的标签组件,支持多种变体、颜色和尺寸\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(\n (\n {\n variant = 'default',\n size = 'md',\n color = 'default',\n bordered = false,\n closable = false,\n checkable = false,\n checked = false,\n icon,\n disabled = false,\n className,\n children,\n onClose,\n onChange,\n onClick,\n },\n forwardedRef,\n ) => {\n // 确定实际使用的变体\n const actualVariant: TagVariant = checkable ? 'checkable' : variant\n const isChecked = checkable ? checked : false\n\n // 处理点击事件\n const handleClick = () => {\n if (disabled) return\n \n if (checkable && onChange) {\n onChange(!isChecked)\n }\n \n if (onClick) {\n onClick()\n }\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (disabled) return\n\n if (actualVariant === 'checkable' && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n handleClick()\n }\n }\n\n // 处理关闭事件\n const handleClose = (e: React.MouseEvent) => {\n e.stopPropagation() // 防止触发标签的点击事件\n if (onClose && !disabled) {\n onClose()\n }\n }\n\n return (\n <TagRoot\n ref={forwardedRef}\n variant={actualVariant}\n size={size}\n color={color}\n bordered={bordered}\n checked={isChecked}\n closable={closable}\n isDisabled={disabled}\n className={className}\n onClick={actualVariant === 'checkable' ? handleClick : onClick}\n onKeyDown={handleKeyDown}\n data-variant={actualVariant}\n data-size={size}\n data-color={color}\n data-checked={isChecked ? 'true' : undefined}\n data-disabled={disabled ? 'true' : undefined}\n tabIndex={actualVariant === 'checkable' && !disabled ? 0 : undefined}\n role={actualVariant === 'checkable' ? 'checkbox' : undefined}\n aria-checked={actualVariant === 'checkable' ? isChecked : undefined}\n aria-disabled={disabled}\n >\n <TagContent>\n {/* 前置图标 */}\n {icon && (\n <IconWrapper aria-hidden=\"true\">\n {icon}\n </IconWrapper>\n )}\n\n {/* 标签文本 */}\n {children}\n\n {/* 关闭按钮 */}\n {closable && (\n <CloseButton\n size={size}\n onClick={handleClose}\n aria-label=\"关闭\"\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n handleClose(e as any)\n }\n }}\n aria-disabled={disabled}\n >\n <CloseOutline />\n </CloseButton>\n )}\n </TagContent>\n </TagRoot>\n )\n },\n)\n\nTag.displayName = 'Tag'\n\n// ============================================================================\n// 复合组件:Tag.Add\n// ============================================================================\n\nexport interface TagAddProps extends Omit<AriaButtonProps, 'elementType'> {\n /** 标签尺寸 */\n size?: TagSize\n /** 自定义类名 */\n className?: string\n /** 子元素 */\n children?: ReactNode\n}\n\n/**\n * Tag.Add 添加标签按钮\n * \n * 用于添加新标签的按钮组件\n */\nexport const TagAdd = forwardRef<HTMLButtonElement, TagAddProps>(\n ({ size = 'md', className, children = 'New Tag', ...ariaProps }, forwardedRef) => {\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef || innerRef\n\n const { buttonProps } = useButton(\n {\n ...ariaProps,\n elementType: 'button',\n },\n innerRef,\n )\n\n return (\n <AddButton\n {...mergeProps(buttonProps, {\n ref,\n className,\n })}\n size={size}\n data-size={size}\n >\n <PlusOutline />\n {children}\n </AddButton>\n )\n },\n)\n\nTagAdd.displayName = 'Tag.Add'\n\n// 将 Add 作为 Tag 的静态属性\n;(Tag as any).Add = TagAdd\n\n","/**\n * Select 样式组件\n * \n * 基于三层 Token 体系\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\nexport const selectSizes = ['sm', 'md', 'lg'] as const\nexport type SelectSize = (typeof selectSizes)[number]\n\n// ============================================================================\n// 样式辅助函数\n// ============================================================================\n\nconst getBorderColor = (\n isFocused: boolean,\n isError: boolean,\n isDisabled: boolean,\n isHovered: boolean,\n theme: AppTheme\n) => {\n if (isDisabled) return theme.components.select.border.disabled\n if (isError) return theme.components.select.border.error\n if (isFocused) return theme.components.select.border.focus\n if (isHovered) return theme.components.select.border.hover\n return theme.components.select.border.default\n}\n\nconst getSizeStyles = (size: SelectSize, isMultiple: boolean, theme: AppTheme) => {\n const sizeToken = theme.components.select.size[size]\n\n return css`\n ${isMultiple ? `min-height: ${sizeToken.height};` : `height: ${sizeToken.height};`}\n font-size: ${sizeToken.fontSize};\n padding-inline: ${sizeToken.paddingInline};\n ${isMultiple ? 'padding-block: 4px;' : ''}\n\n svg {\n /* No global svg sizing here to avoid affecting Tag icons */\n }\n `\n}\n\n// ============================================================================\n// Select Trigger Styles\n// ============================================================================\n\nexport const SelectWrapper = styled.div<{ fullWidth?: boolean }>`\n display: ${({ fullWidth }) => (fullWidth ? 'flex' : 'inline-flex')};\n flex-direction: column;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : '200px')};\n min-width: 120px;\n position: relative;\n box-sizing: border-box;\n`\n\nexport const SelectTrigger = styled.button<{\n size: SelectSize\n fullWidth?: boolean\n isFocused?: boolean\n isError?: boolean\n isDisabled?: boolean\n isHovered?: boolean\n isOpen?: boolean\n isMultiple?: boolean\n}>`\n /* 基础重置 */\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n \n /* 样式 */\n border: 1px solid;\n border-color: ${({ isFocused, isError, isDisabled, isHovered, isOpen, theme }) =>\n getBorderColor(isFocused || !!isOpen, !!isError, !!isDisabled, !!isHovered, theme)};\n border-radius: ${({ theme }) => theme.components.select.borderRadius};\n \n background: ${({ isDisabled, theme }) =>\n isDisabled\n ? theme.components.select.background.disabled\n : theme.components.select.background.default};\n \n color: ${({ isDisabled, isError, theme }) => {\n if (isDisabled) return theme.components.select.text.disabled\n if (isError) return theme.components.select.text.error\n return theme.components.select.text.default\n }};\n\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n outline: none;\n \n transition: all ${({ theme }) => theme.components.select.transition};\n\n /* 尺寸 */\n ${({ size, isMultiple, theme }) => getSizeStyles(size, !!isMultiple, theme)}\n \n /* 禁用状态 */\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n opacity: 0.6;\n `}\n`\n\nexport const SelectValue = styled.span<{ isPlaceholder?: boolean }>`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n margin-right: 8px;\n color: ${({ isPlaceholder, theme }) => \n isPlaceholder ? theme.components.select.text.placeholder : 'inherit'};\n`\n\nexport const SelectIcon = styled.span<{ isOpen?: boolean; size?: SelectSize }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n align-self: center;\n flex-shrink: 0;\n transition: transform 0.2s ease;\n transform: ${({ isOpen }) => (isOpen ? 'rotate(180deg)' : 'rotate(0deg)')};\n color: inherit;\n opacity: 0.5;\n \n svg {\n width: ${({ size, theme }) => size ? theme.components.select.size[size].iconSize : '16px'};\n height: ${({ size, theme }) => size ? theme.components.select.size[size].iconSize : '16px'};\n }\n`\n\n// ============================================================================\n// Popover/ListBox Styles\n// ============================================================================\n\nexport const ListBoxPopup = styled.div`\n background: ${({ theme }) => theme.components.select.popover.background};\n border: ${({ theme }) => theme.components.select.popover.border};\n border-radius: ${({ theme }) => theme.components.select.popover.borderRadius};\n box-shadow: ${({ theme }) => theme.components.select.popover.boxShadow};\n padding: ${({ theme }) => theme.components.select.popover.padding};\n overflow: hidden;\n min-width: 100%;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n`\n\nexport const ListBoxContent = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n overflow-y: auto;\n outline: none;\n flex: 1;\n\n /* Scrollbar styling if needed */\n &::-webkit-scrollbar {\n width: 4px;\n }\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background: rgba(0,0,0,0.2);\n border-radius: 4px;\n }\n`\n\nexport const OptionItem = styled.li<{\n isSelected?: boolean\n isFocused?: boolean\n isDisabled?: boolean\n}>`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: ${({ theme }) => theme.components.select.option.height};\n padding-inline: ${({ theme }) => theme.components.select.option.paddingInline};\n margin-bottom: 2px;\n border-radius: ${({ theme }) => theme.components.select.option.borderRadius};\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n outline: none;\n user-select: none;\n font-size: ${({ theme }) => theme.components.select.option.fontSize};\n \n background: ${({ isSelected, isFocused, theme }) => {\n if (isSelected) return theme.components.select.option.background.selected\n if (isFocused) return theme.components.select.option.background.focused\n return theme.components.select.option.background.default\n }};\n \n color: ${({ isSelected, isDisabled, theme }) => {\n if (isDisabled) return theme.components.select.option.text.disabled\n if (isSelected) return theme.components.select.option.text.selected\n return theme.components.select.option.text.default\n }};\n\n &:hover {\n background: ${({ isSelected, isDisabled, theme }) => {\n if (isDisabled) return 'transparent'\n if (isSelected) return theme.components.select.option.background.selected\n return theme.components.select.option.background.hover\n }};\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n`\n\nexport const OptionText = styled.span`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const OptionIcon = styled.span`\n margin-left: 8px;\n display: flex;\n align-items: center;\n color: ${({ theme }) => theme.components.select.option.text.selected};\n font-size: 14px;\n`\n\nexport const LoadingWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px;\n color: ${({ theme }) => theme.components.select.text.placeholder};\n font-size: ${({ theme }) => theme.global.typography.fontSize.xs};\n`\n\nexport const EmptyState = styled.div`\n padding: 8px 12px;\n color: ${({ theme }) => theme.components.select.text.disabled};\n font-size: ${({ theme }) => theme.global.typography.fontSize.xs};\n text-align: center;\n`\n\n// ============================================================================\n// Multiple Select Styles\n// ============================================================================\n\nexport const TagsContainer = styled.div`\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n align-items: center;\n min-height: 22px;\n padding-right: 4px;\n`\n\nexport const CheckboxWrapper = styled.span`\n display: inline-flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n pointer-events: none;\n`\n\n","import { useRef, useLayoutEffect, useState, useEffect, type ReactNode, type RefObject } from 'react'\nimport { useOverlay, Overlay, useOverlayPosition, type AriaPopoverProps, FocusScope, DismissButton } from 'react-aria'\nimport { ListBoxPopup } from './Select.style'\n\ninterface PopoverProps extends Omit<AriaPopoverProps, 'popoverRef'> {\n children: ReactNode\n state: any\n triggerRef: RefObject<Element>\n className?: string\n}\n\nexport function Popover({ children, state, offset = 4, triggerRef, placement = 'bottom start', ...props }: PopoverProps) {\n const popoverRef = useRef<HTMLDivElement>(null)\n const [triggerWidth, setTriggerWidth] = useState<number | undefined>(undefined)\n \n // 使用 useLayoutEffect 确保在渲染前获取正确的宽度\n useLayoutEffect(() => {\n if (triggerRef.current) {\n setTriggerWidth(triggerRef.current.getBoundingClientRect().width)\n }\n }, [triggerRef, state.isOpen])\n\n const { overlayProps: overlayPropsFromUseOverlay } = useOverlay(\n {\n ...props,\n shouldCloseOnBlur: false, // 禁用默认的 blur 关闭,使用自定义逻辑\n isDismissable: true,\n onClose: state.close\n },\n popoverRef\n )\n\n const { overlayProps, placement: resolvedPlacement } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: popoverRef,\n placement,\n offset,\n isOpen: state.isOpen,\n onClose: state.close\n })\n\n // 全局事件监听:点击外部和焦点移出\n useEffect(() => {\n if (!state.isOpen) return\n\n const onInteractOutside = (event: Event) => {\n const target = event.target as Node\n const popover = popoverRef.current\n const trigger = triggerRef.current\n\n // 如果交互目标既不在弹窗内部也不是触发器,则关闭\n if (\n popover && \n !popover.contains(target) && \n trigger && \n !trigger.contains(target)\n ) {\n state.close()\n }\n }\n\n // mousedown 处理点击外部\n document.addEventListener('mousedown', onInteractOutside)\n // focusin 处理 Tab 键焦点移出 (focusin 支持冒泡,focus 不支持)\n document.addEventListener('focusin', onInteractOutside)\n\n return () => {\n document.removeEventListener('mousedown', onInteractOutside)\n document.removeEventListener('focusin', onInteractOutside)\n }\n }, [state.isOpen, state.close, triggerRef])\n\n return (\n <Overlay>\n <FocusScope restoreFocus>\n <ListBoxPopup\n {...overlayPropsFromUseOverlay}\n {...overlayProps}\n ref={popoverRef}\n data-placement={resolvedPlacement}\n style={{\n ...overlayProps.style,\n zIndex: 10000,\n width: triggerWidth ? `${triggerWidth}px` : 'auto',\n minWidth: triggerWidth ? `${triggerWidth}px` : '120px',\n }}\n >\n <DismissButton onDismiss={state.close} />\n {children}\n <DismissButton onDismiss={state.close} />\n </ListBoxPopup>\n </FocusScope>\n </Overlay>\n )\n}\n","import { useRef } from 'react'\nimport { useListBox, useOption, type AriaListBoxProps } from 'react-aria'\nimport { ListBoxContent, OptionItem, OptionText, OptionIcon, CheckboxWrapper } from './Select.style'\nimport { Checkbox } from '../checkbox'\nimport type { ListState } from '@react-stately/list'\nimport type { Node } from '@react-types/shared'\n\ninterface ListBoxProps extends Omit<AriaListBoxProps<unknown>, 'children'> {\n state: ListState<unknown>\n}\n\nexport function ListBox({ state, ...props }: ListBoxProps) {\n const ref = useRef<HTMLUListElement>(null)\n const { listBoxProps } = useListBox(props, state, ref)\n\n return (\n <ListBoxContent {...listBoxProps} ref={ref}>\n {[...state.collection].map((item) => (\n <Option key={item.key} item={item} state={state} />\n ))}\n </ListBoxContent>\n )\n}\n\ninterface OptionProps {\n item: Node<unknown>\n state: ListState<unknown>\n isMultiple?: boolean\n}\n\nfunction Option({ item, state, isMultiple }: OptionProps) {\n const ref = useRef<HTMLLIElement>(null)\n const { optionProps, isSelected, isFocused, isDisabled } = useOption(\n { key: item.key },\n state,\n ref\n )\n\n return (\n <OptionItem\n {...optionProps}\n ref={ref}\n isSelected={isSelected}\n isFocused={isFocused}\n isDisabled={isDisabled}\n >\n {isMultiple && (\n <CheckboxWrapper aria-hidden=\"true\" onClick={(e) => e.stopPropagation()}>\n <Checkbox checked={isSelected} disabled={isDisabled} tabIndex={-1} />\n </CheckboxWrapper>\n )}\n <OptionText>{item.rendered}</OptionText>\n {!isMultiple && isSelected && (\n <OptionIcon aria-hidden=\"true\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </OptionIcon>\n )}\n </OptionItem>\n )\n}\n\n// 多选模式 ListBox\ninterface MultiListBoxProps {\n state: ListState<unknown>\n}\n\nexport function MultiListBox({ state }: MultiListBoxProps) {\n const ref = useRef<HTMLUListElement>(null)\n const { listBoxProps } = useListBox(\n { selectionMode: 'multiple' },\n state,\n ref\n )\n\n return (\n <ListBoxContent {...listBoxProps} ref={ref}>\n {[...state.collection].map((item) => (\n <Option key={item.key} item={item} state={state} isMultiple />\n ))}\n </ListBoxContent>\n )\n}\n\n","import React, { forwardRef, useRef, useMemo, useState } from 'react'\nimport { useSelectState } from '@react-stately/select'\nimport { useListState } from '@react-stately/list'\nimport { useSelect, useButton, HiddenSelect, type AriaSelectProps } from 'react-aria'\nimport { Item, Section } from '@react-stately/collections'\nimport { focusWithoutScrolling } from '@react-aria/utils'\nimport type { PressEvent, Selection as SelectionType, Key } from '@react-types/shared'\n\n// Re-export Selection type for external use\nexport type { Selection } from '@react-types/shared'\nimport { ChevronDownOutline } from '@kingsoft-ai/icons'\nimport { Tag } from '../tag'\nimport { SelectTrigger, SelectValue, SelectIcon, LoadingWrapper, TagsContainer, SelectWrapper } from './Select.style'\nimport { Popover } from './Popover'\nimport { ListBox, MultiListBox } from './ListBox'\nimport type { SelectSize } from './Select.style'\n\nexport type SelectionMode = 'single' | 'multiple'\n\n/**\n * 选项类型定义\n * 推荐使用 options 属性传入选项数据\n */\nexport interface SelectOptionType {\n /** 选项值,作为唯一标识 */\n value: string | number\n /** 选项显示文本 */\n label: React.ReactNode\n /** 是否禁用该选项 */\n disabled?: boolean\n}\n\nexport interface SelectProps<T> extends Omit<AriaSelectProps<T>, 'errorMessage' | 'selectedKey' | 'defaultSelectedKey' | 'onSelectionChange' | 'selectionMode' | 'children' | 'isDisabled' | 'value' | 'defaultValue' | 'onChange'> {\n /** 选择模式:single 单选 | multiple 多选 */\n selectionMode?: SelectionMode\n /** 是否正在加载 */\n loading?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 尺寸 */\n size?: SelectSize\n /** 是否全宽 */\n fullWidth?: boolean\n /** 宽度 */\n width?: string | number\n /** 自定义类名 */\n className?: string\n /** 自定义样式 */\n style?: React.CSSProperties\n /** 占位符 */\n placeholder?: string\n /** 错误信息 */\n errorMessage?: React.ReactNode\n /** 多选时最大展示的 Tag 数量 */\n maxTagCount?: number\n /** 受控值(统一 API,单选时为 Key,多选时为 Iterable<Key>,优先级高于 selectedKey/selectedKeys) */\n value?: React.Key | null | Iterable<React.Key>\n /** 默认值(统一 API,单选时为 Key,多选时为 Iterable<Key>,优先级高于 defaultSelectedKey/defaultSelectedKeys) */\n defaultValue?: React.Key | Iterable<React.Key>\n /** 值变化回调(统一 API,优先级高于 onSelectionChange) */\n onChange?: (value: SelectionType) => void\n /** 单选时选中的 key(兼容旧 API) */\n selectedKey?: React.Key | null\n /** 单选时默认选中的 key(兼容旧 API) */\n defaultSelectedKey?: React.Key\n /** 多选时选中的 keys(兼容旧 API) */\n selectedKeys?: Iterable<React.Key>\n /** 多选时默认选中的 keys(兼容旧 API) */\n defaultSelectedKeys?: Iterable<React.Key>\n /** 选择变化回调(兼容旧 API,单选返回 key,多选返回 Set) */\n onSelectionChange?: (keys: SelectionType) => void\n /**\n * 选项数据(推荐使用)\n * \n * 提供 options 时会自动渲染选项列表,无需手动编写 <Select.Item>\n * \n * @example\n * ```tsx\n * <Select\n * options={[\n * { value: 'apple', label: '苹果' },\n * { value: 'banana', label: '香蕉' },\n * { value: 'orange', label: '橙子', disabled: true },\n * ]}\n * />\n * ```\n */\n options?: SelectOptionType[]\n /**\n * 子元素(手动编写选项时使用)\n * \n * 推荐使用 options 属性代替 children\n * \n * @example\n * ```tsx\n * <Select>\n * <Select.Item key=\"apple\">苹果</Select.Item>\n * <Select.Item key=\"banana\">香蕉</Select.Item>\n * </Select>\n * ```\n */\n children?: React.ReactNode\n}\n\n// 内部使用的 Select 组件\nconst SelectInner = forwardRef(function Select<T extends object>(\n props: SelectProps<T>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n selectionMode = 'single',\n loading,\n disabled,\n size = 'md',\n fullWidth = false,\n width,\n className,\n style,\n placeholder = '请选择',\n label,\n description,\n errorMessage,\n maxTagCount,\n // 新统一 API\n value,\n defaultValue,\n onChange,\n // 旧兼容 API\n selectedKey,\n defaultSelectedKey,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n options,\n children,\n } = props\n\n const isMultiple = selectionMode === 'multiple'\n\n // 统一处理受控值:value 优先于 selectedKey/selectedKeys\n const finalSelectedKey = isMultiple ? undefined : (value as React.Key | null | undefined) ?? selectedKey\n const finalSelectedKeys = isMultiple ? (value as Iterable<React.Key> | undefined) ?? selectedKeys : undefined\n \n // 统一处理默认值:defaultValue 优先于 defaultSelectedKey/defaultSelectedKeys\n const finalDefaultSelectedKey = isMultiple ? undefined : (defaultValue as React.Key | undefined) ?? defaultSelectedKey\n const finalDefaultSelectedKeys = isMultiple ? (defaultValue as Iterable<React.Key> | undefined) ?? defaultSelectedKeys : undefined\n\n // 统一处理回调:onChange 和 onSelectionChange 都会被调用\n const handleSelectionChange = (keys: SelectionType) => {\n onChange?.(keys)\n onSelectionChange?.(keys)\n }\n\n // 根据 options 或 children 生成内容\n const renderItems = useMemo(() => {\n if (options && options.length > 0) {\n return options.map((option) => (\n <Item key={option.value} textValue={typeof option.label === 'string' ? option.label : String(option.value)}>\n {option.label}\n </Item>\n ))\n }\n return children\n }, [options, children])\n\n // 合并 props,将 children 替换为实际渲染内容,并使用统一后的属性\n const mergedProps = {\n ...props,\n children: renderItems,\n selectedKey: finalSelectedKey,\n defaultSelectedKey: finalDefaultSelectedKey,\n onSelectionChange: handleSelectionChange,\n }\n\n const innerRef = useRef<HTMLButtonElement>(null)\n const triggerRef = (ref as React.RefObject<HTMLButtonElement>) || innerRef\n const lastPointerTypeRef = useRef<PressEvent['pointerType'] | null>(null)\n\n // 单选模式状态\n const singleState = useSelectState(mergedProps as any)\n \n // 多选模式状态\n const multiState = useListState({\n ...mergedProps,\n selectionMode: 'multiple',\n selectedKeys: finalSelectedKeys,\n defaultSelectedKeys: finalDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n } as any)\n \n // 多选时的打开状态需要单独管理\n const [multiOpen, setMultiOpen] = useState(false)\n const effectiveOpen = isMultiple ? multiOpen : singleState.isOpen\n\n // 获取选中项用于渲染 Tags\n const selectedItems = useMemo(() => {\n if (!isMultiple) return []\n const items: Array<{ key: Key; rendered: React.ReactNode }> = []\n const selectedKeySet = multiState.selectionManager.selectedKeys\n for (const item of multiState.collection) {\n if (selectedKeySet.has(item.key)) {\n items.push({ key: item.key, rendered: item.rendered })\n }\n }\n return items\n }, [isMultiple, multiState.selectionManager.selectedKeys, multiState.collection])\n\n // 计算要展示的 Tags\n const { visibleTags, overflowCount } = useMemo(() => {\n if (!isMultiple || selectedItems.length === 0) {\n return { visibleTags: [], overflowCount: 0 }\n }\n if (maxTagCount !== undefined && selectedItems.length > maxTagCount) {\n return {\n visibleTags: selectedItems.slice(0, maxTagCount),\n overflowCount: selectedItems.length - maxTagCount,\n }\n }\n return { visibleTags: selectedItems, overflowCount: 0 }\n }, [isMultiple, selectedItems, maxTagCount])\n\n // 单选模式的 hooks\n const {\n labelProps,\n triggerProps,\n valueProps,\n menuProps,\n descriptionProps,\n errorMessageProps\n } = useSelect(mergedProps as any, singleState, triggerRef)\n\n const handlePressStart = (event: PressEvent) => {\n lastPointerTypeRef.current = event.pointerType\n if (event.pointerType !== 'touch' && event.pointerType !== 'keyboard' && triggerRef.current) {\n focusWithoutScrolling(triggerRef.current)\n }\n }\n\n const handlePress = (event: PressEvent) => {\n const pointerType = event.pointerType || lastPointerTypeRef.current\n if (pointerType === 'keyboard') return\n\n if (isMultiple) {\n setMultiOpen(!multiOpen)\n } else {\n const focusStrategy = pointerType === 'mouse' || pointerType === 'pen' ? null : 'first'\n singleState.toggle(focusStrategy)\n }\n }\n\n const { buttonProps } = useButton(\n {\n ...triggerProps,\n onPressStart: handlePressStart,\n onPress: handlePress\n },\n triggerRef\n )\n\n // 移除 Tag\n const handleRemoveTag = (key: Key) => {\n const newKeys = new Set(multiState.selectionManager.selectedKeys)\n newKeys.delete(key)\n multiState.selectionManager.setSelectedKeys(newKeys)\n handleSelectionChange(newKeys)\n }\n\n // 渲染触发器内容\n const renderTriggerContent = () => {\n if (isMultiple) {\n if (selectedItems.length === 0) {\n return <SelectValue isPlaceholder>{placeholder}</SelectValue>\n }\n return (\n <TagsContainer>\n {visibleTags.map((item) => (\n <Tag\n key={item.key}\n size=\"sm\"\n closable\n onClose={() => handleRemoveTag(item.key)}\n >\n {item.rendered}\n </Tag>\n ))}\n {overflowCount > 0 && <Tag size=\"sm\">+{overflowCount}</Tag>}\n </TagsContainer>\n )\n }\n return (\n <SelectValue {...valueProps} isPlaceholder={!singleState.selectedItem}>\n {singleState.selectedItem ? singleState.selectedItem.rendered : placeholder}\n </SelectValue>\n )\n }\n\n const popoverState = isMultiple \n ? { isOpen: multiOpen, close: () => setMultiOpen(false) }\n : singleState\n\n return (\n <SelectWrapper\n fullWidth={fullWidth}\n className={className}\n style={{\n width: width,\n ...style\n }}\n >\n {label && (\n <label \n {...labelProps} \n style={{ \n fontSize: '12px', \n marginBottom: '4px', \n display: 'block',\n color: 'inherit'\n }}\n >\n {label}\n </label>\n )}\n \n {!isMultiple && (\n <HiddenSelect\n state={singleState}\n triggerRef={triggerRef}\n label={label}\n name={props.name}\n isDisabled={disabled}\n />\n )}\n\n <SelectTrigger\n {...buttonProps}\n ref={triggerRef}\n size={size}\n fullWidth={fullWidth}\n isOpen={effectiveOpen}\n isDisabled={disabled}\n isError={!!errorMessage}\n isMultiple={isMultiple}\n >\n {renderTriggerContent()}\n <SelectIcon isOpen={effectiveOpen} aria-hidden=\"true\" size={size}>\n <ChevronDownOutline width={12} height={12} />\n </SelectIcon>\n </SelectTrigger>\n\n {effectiveOpen && (\n <Popover state={popoverState} triggerRef={triggerRef} placement=\"bottom start\" offset={4}>\n {loading ? (\n <LoadingWrapper>\n <svg \n width=\"16\" \n height=\"16\" \n viewBox=\"0 0 16 16\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ animation: 'spin 1s linear infinite', marginRight: 8 }}\n >\n <style>{`@keyframes spin { 100% { transform: rotate(360deg); } }`}</style>\n <path d=\"M8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5C11.5899 14.5 14.5 11.5899 14.5 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\"/>\n </svg>\n 加载中...\n </LoadingWrapper>\n ) : isMultiple ? (\n <MultiListBox state={multiState} />\n ) : (\n <ListBox {...menuProps} state={singleState} />\n )}\n </Popover>\n )}\n \n {/* Description & Error Message */}\n {description && (\n <div {...descriptionProps} style={{ fontSize: '12px', marginTop: '4px', opacity: 0.6 }}>\n {description}\n </div>\n )}\n {errorMessage && (\n <div {...errorMessageProps} style={{ fontSize: '12px', marginTop: '4px', color: '#ff4d4f' }}>\n {errorMessage}\n </div>\n )}\n </SelectWrapper>\n )\n}) as <T extends object>(props: SelectProps<T> & { ref?: React.Ref<HTMLButtonElement> }) => React.ReactElement\n\n// 为 Select 组件添加静态属性类型\ninterface SelectComponent {\n <T extends object>(props: SelectProps<T> & { ref?: React.Ref<HTMLButtonElement> }): React.ReactElement\n /**\n * 选项组件\n * \n * @example\n * ```tsx\n * <Select>\n * <Select.Item key=\"apple\">苹果</Select.Item>\n * <Select.Item key=\"banana\">香蕉</Select.Item>\n * </Select>\n * ```\n */\n Item: typeof Item\n /**\n * 分组组件\n * \n * @example\n * ```tsx\n * <Select>\n * <Select.Section title=\"水果\">\n * <Select.Item key=\"apple\">苹果</Select.Item>\n * </Select.Section>\n * </Select>\n * ```\n */\n Section: typeof Section\n}\n\n/**\n * Select 选择器组件\n * \n * 基于 react-aria 实现的无障碍选择器\n * 支持单选和多选模式\n * \n * @example 使用 options(推荐)\n * ```tsx\n * <Select\n * options={[\n * { value: 'apple', label: '苹果' },\n * { value: 'banana', label: '香蕉' },\n * ]}\n * onSelectionChange={(key) => console.log(key)}\n * />\n * ```\n * \n * @example 使用 Select.Item\n * ```tsx\n * const { Item } = Select\n * \n * <Select>\n * <Item key=\"apple\">苹果</Item>\n * <Item key=\"banana\">香蕉</Item>\n * </Select>\n * ```\n */\nexport const Select = SelectInner as SelectComponent\n\n// 挂载静态属性\nSelect.Item = Item\nSelect.Section = Section\n","/**\n * Table 样式定义\n * \n * 基于 Figma 设计稿的表格样式实现\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const tableSizes = ['sm', 'md', 'lg'] as const\nexport type TableSize = (typeof tableSizes)[number]\n\nexport const tableVariants = ['default', 'bordered', 'striped'] as const\nexport type TableVariant = (typeof tableVariants)[number]\n\nconst tableBorderRadiusMap: Record<TableSize, number> = {\n sm: 4,\n md: 4,\n lg: 6,\n}\n\nconst getTableRadius = (size?: TableSize) => `${tableBorderRadiusMap[size ?? 'md']}px`\n\n// ============================================================================\n// 容器样式\n// ============================================================================\n\nexport const TableContainer = styled.div<{\n size?: TableSize\n fullWidth?: boolean\n scrollX?: number | string\n scrollY?: number | string\n showScrollbar?: boolean\n}>`\n width: ${props => props.fullWidth ? '100%' : 'auto'};\n overflow: auto;\n /* 移除边框,设计稿中表格没有外围边框 */\n scrollbar-width: ${props => props.showScrollbar ? 'thin' : 'none'};\n scrollbar-color: ${({ theme }) => (theme as AppTheme).semantic.colors.border.primary} transparent;\n border-top-left-radius: ${props => getTableRadius(props.size)};\n border-top-right-radius: ${props => getTableRadius(props.size)};\n \n &::-webkit-scrollbar {\n width: ${props => props.showScrollbar ? '8px' : '0px'};\n height: ${props => props.showScrollbar ? '8px' : '0px'};\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: ${({ theme }) => (theme as AppTheme).semantic.colors.border.primary};\n border-radius: 999px;\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n \n ${props => props.scrollX && css`\n max-width: ${typeof props.scrollX === 'number' ? `${props.scrollX}px` : props.scrollX};\n `}\n \n ${props => props.scrollY && css`\n max-height: ${typeof props.scrollY === 'number' ? `${props.scrollY}px` : props.scrollY};\n `}\n`\n\n// ============================================================================\n// Table 根元素\n// ============================================================================\n\nexport const StyledTable = styled.table<{\n size?: TableSize\n variant?: TableVariant\n scrollX?: number | string\n}>`\n width: 100%;\n ${props => props.scrollX && css`\n min-width: ${typeof props.scrollX === 'number' ? `${props.scrollX}px` : props.scrollX};\n `}\n border-collapse: separate;\n border-spacing: 0;\n /* 调整基础字体为 12px */\n font-family: ${({ theme }) => (theme as AppTheme).semantic.typography.component.fontSizeSm};\n background-color: ${({ theme }) => (theme as AppTheme).semantic.colors.background.surface};\n \n ${props => props.variant === 'bordered' && css`\n border: 1px solid ${(props.theme as AppTheme).semantic.colors.border.primary};\n border-radius: ${getTableRadius(props.size)} ${getTableRadius(props.size)} 0 0;\n `}\n\n ${props => props.variant === 'striped' && css`\n tbody tr:nth-of-type(even) {\n --row-bg: ${(props.theme as AppTheme).semantic.colors.background.surfaceSubtle};\n }\n `}\n`\n\n// ============================================================================\n// 表头样式\n// ============================================================================\n\nexport const TableHeader = styled.thead`\n background-color: ${({ theme }) => (theme as AppTheme).semantic.colors.background.surfaceSubtle};\n position: sticky;\n top: 0;\n z-index: 10;\n`\n\nexport const TableHeaderRow = styled.tr`\n border-bottom: 1px solid ${({ theme }) => (theme as AppTheme).semantic.colors.border.primary};\n`\n\nexport const TableHeaderCell = styled.th<{\n size?: TableSize\n sortable?: boolean\n fixed?: 'left' | 'right'\n align?: 'left' | 'center' | 'right'\n width?: number | string\n}>`\n padding: ${props => {\n switch (props.size) {\n case 'sm': return '8px 12px'\n case 'lg': return '16px 16px'\n case 'md':\n default: return '12px 16px'\n }\n }};\n text-align: ${props => props.align || 'left'};\n font-weight: 400; /* Regular font weight based on design (H9/H11) */\n font-size: 12px; /* Explicitly 12px based on design */\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.caption}; /* Use caption color for headers */\n white-space: nowrap;\n user-select: none;\n position: ${props => props.fixed ? 'sticky' : 'static'};\n background-color: ${({ theme }) => (theme as AppTheme).semantic.colors.background.surfaceSubtle};\n \n ${props => props.width && css`\n width: ${typeof props.width === 'number' ? `${props.width}px` : props.width};\n `}\n\n ${props => props.fixed === 'left' && css`\n left: 0;\n z-index: 11;\n /* 调整固定列阴影,使其更柔和 */\n box-shadow: 4px 0 8px -4px rgba(0, 0, 0, 0.1);\n `}\n\n ${props => props.fixed === 'right' && css`\n right: 0;\n z-index: 11;\n box-shadow: -4px 0 8px -4px rgba(0, 0, 0, 0.1);\n `}\n\n ${props => props.sortable && css`\n cursor: pointer;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${(props.theme as AppTheme).semantic.colors.background.surfaceStrong};\n }\n `}\n\n &:first-of-type {\n border-top-left-radius: ${props => getTableRadius(props.size)};\n }\n\n &:last-of-type {\n border-top-right-radius: ${props => getTableRadius(props.size)};\n }\n`\n\nexport const SortIndicator = styled.span<{ direction?: 'asc' | 'desc' | null }>`\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-left: 4px;\n line-height: 1;\n gap: 2px;\n\n svg {\n width: 12px;\n height: 12px;\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.disabled};\n transition: color 0.2s ease, opacity 0.2s ease;\n opacity: 0.4;\n }\n\n svg[data-active='true'] {\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.brand.primary};\n opacity: 1;\n }\n`\n\n// ============================================================================\n// 表体样式\n// ============================================================================\n\nexport const TableBody = styled.tbody``\n\nexport const TableRow = styled.tr<{\n selectable?: boolean\n selected?: boolean\n expandable?: boolean\n expanded?: boolean\n isSubRow?: boolean\n level?: number\n}>`\n /* 定义背景色变量,用于同步固定列的背景 */\n --row-bg: ${({ theme }) => (theme as AppTheme).semantic.colors.background.surface};\n\n ${props => props.isSubRow && css`\n --row-bg: ${(props.theme as AppTheme).semantic.colors.background.surfaceSubtle};\n `}\n\n ${props => props.selected && css`\n --row-bg: ${(props.theme as AppTheme).semantic.colors.brand.primarySubtle};\n `}\n\n background-color: var(--row-bg);\n transition: background-color 0.15s ease;\n\n /* 将边框移动到单元格上,确保在 separate 模式下显示且连续 */\n & > td {\n border-bottom: 1px solid ${({ theme }) => (theme as AppTheme).semantic.colors.border.primary};\n }\n\n &:last-of-type > td {\n border-bottom: none;\n }\n\n ${props => (props.selectable || props.expandable) && css`\n cursor: pointer;\n `}\n\n ${props => css`\n &:hover {\n --row-bg: ${props.selected\n ? ((props.theme as AppTheme).semantic.colors.brand.primarySubtle)\n : ((props.theme as AppTheme).semantic.colors.background.surfaceSubtle)};\n }\n\n &:active {\n --row-bg: ${props.selected\n ? ((props.theme as AppTheme).semantic.colors.brand.primarySubtle)\n : ((props.theme as AppTheme).semantic.colors.background.surfaceStrong)};\n }\n `}\n`\n\nexport const TableCell = styled.td<{\n size?: TableSize\n fixed?: 'left' | 'right'\n align?: 'left' | 'center' | 'right'\n width?: number | string\n level?: number\n}>`\n padding: ${props => {\n switch (props.size) {\n case 'sm': return '8px 12px'\n case 'lg': return '16px 16px'\n case 'md':\n default: return '12px 16px'\n }\n }};\n \n ${props => props.level && props.level > 0 && css`\n padding-left: ${16 + props.level * 24}px;\n `}\n \n text-align: ${props => props.align || 'left'};\n font-size: 12px; /* Explicitly 12px */\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.primary};\n position: ${props => props.fixed ? 'sticky' : 'static'};\n /* 使用变量确保固定列背景与行背景同步,且不透明 */\n background-color: ${props => props.fixed \n ? 'var(--row-bg, inherit)' \n : 'inherit'};\n transition: background-color 0.15s ease;\n \n ${props => props.width && css`\n width: ${typeof props.width === 'number' ? `${props.width}px` : props.width};\n `}\n\n ${props => props.fixed === 'left' && css`\n left: 0;\n z-index: 9;\n box-shadow: 4px 0 8px -4px rgba(0, 0, 0, 0.1);\n `}\n\n ${props => props.fixed === 'right' && css`\n right: 0;\n z-index: 9;\n box-shadow: -4px 0 8px -4px rgba(0, 0, 0, 0.1);\n `}\n`\n\n// ============================================================================\n// 辅助组件样式\n// ============================================================================\n\nexport const CheckboxCell = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n`\n\nexport const ExpandButton = styled.button<{ expanded?: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 0;\n margin-right: 8px;\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.tertiary};\n transition: transform 0.15s ease, color 0.15s ease;\n\n &:hover {\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.primary};\n }\n\n svg {\n width: 16px;\n height: 16px;\n transform: ${props => props.expanded ? 'rotate(90deg)' : 'none'};\n }\n`\n\nexport const EmptyState = styled.div`\n padding: 48px 24px;\n text-align: center;\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.tertiary};\n font-size: 12px;\n`\n\nexport const CellContent = styled.div<{\n ellipsis?: boolean\n wrapText?: boolean\n}>`\n ${props => props.ellipsis && css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `}\n\n ${props => props.wrapText && css`\n white-space: normal;\n word-break: break-word;\n `}\n`\n","import { forwardRef, useState, useCallback, useMemo, useEffect, useRef, type ReactNode } from 'react'\nimport { Checkbox } from '../checkbox'\nimport { Radio } from '../radio'\nimport { ChevronUpOutline, ChevronDownOutline, ChevronRightOutline } from '@kingsoft-ai/icons'\nimport {\n TableContainer,\n StyledTable,\n TableHeader,\n TableHeaderRow,\n TableHeaderCell,\n TableBody,\n TableRow,\n TableCell,\n CheckboxCell,\n ExpandButton,\n EmptyState,\n CellContent,\n SortIndicator,\n tableSizes,\n tableVariants,\n type TableSize,\n type TableVariant,\n} from './Table.style'\n\n// 导出类型供外部使用\nexport type { TableSize, TableVariant } from './Table.style'\n\n// 导出常量供外部使用\nexport const SIZES = tableSizes\nexport const VARIANTS = tableVariants\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface TableColumn<T = any> {\n /** 列唯一标识 */\n key: string\n /** 列标题 */\n title?: ReactNode\n /** 列宽度 */\n width?: number | string\n /** 对齐方式 */\n align?: 'left' | 'center' | 'right'\n /** 是否可排序 */\n sortable?: boolean\n /** 固定列 */\n fixed?: 'left' | 'right'\n /** 自定义渲染 */\n render?: (value: any, record: T, index: number) => ReactNode\n /** 是否省略文本 */\n ellipsis?: boolean\n}\n\nexport interface TableDataSource<T = any> {\n /** 唯一标识 */\n id: string | number\n /** 子数据(用于树形结构) */\n children?: TableDataSource<T>[]\n /** 其他数据字段 */\n [key: string]: any\n}\n\nexport interface TableProps<T extends Record<string, any> = Record<string, any>> {\n /** 列配置 */\n columns: TableColumn<T>[]\n /** 数据源 */\n dataSource: T[]\n /** 表格尺寸 */\n size?: TableSize\n /** 表格变体 */\n variant?: TableVariant\n /** 是否显示边框 */\n bordered?: boolean\n /** 是否全宽 */\n fullWidth?: boolean\n /** 滚动配置 */\n scroll?: {\n /** 横向滚动宽度 */\n x?: number | string\n /** 纵向滚动高度 */\n y?: number | string\n }\n /** 是否可选择 */\n selectable?: boolean\n /** 选择类型 */\n selectionMode?: 'single' | 'multiple'\n /** 选中的行 */\n selectedKeys?: Set<string | number> | 'all'\n /** 选中行变化回调 */\n onSelectionChange?: (keys: Set<string | number> | 'all') => void\n /** 是否可展开 */\n expandable?: boolean\n /** 展开的行 */\n expandedKeys?: Set<string | number>\n /** 展开行变化回调 */\n onExpandChange?: (keys: Set<string | number>) => void\n /** 自定义展开内容 */\n expandedRowRender?: (record: T, index: number) => ReactNode\n /** 排序配置 */\n sortConfig?: {\n key: string\n direction: 'asc' | 'desc' | null\n }\n /** 排序变化回调 */\n onSortChange?: (key: string, direction: 'asc' | 'desc' | null) => void\n /** 行点击事件 */\n onRowClick?: (record: T, index: number) => void\n /** 空数据展示 */\n emptyText?: ReactNode\n /** 自定义类名 */\n className?: string\n /** 是否允许折行 */\n wrapText?: boolean\n /** Loading 状态 */\n loading?: boolean\n}\n\n// ============================================================================\n// Table 组件\n// ============================================================================\n\nfunction TableInner<T extends Record<string, any> = Record<string, any>>(\n {\n columns,\n dataSource,\n size = 'md',\n variant = 'default',\n bordered = false,\n fullWidth = true,\n scroll,\n selectable = false,\n selectionMode = 'multiple',\n selectedKeys: controlledSelectedKeys,\n onSelectionChange,\n expandable = false,\n expandedKeys: controlledExpandedKeys,\n onExpandChange,\n expandedRowRender,\n sortConfig,\n onSortChange,\n onRowClick,\n emptyText = '暂无数据',\n className,\n wrapText = false,\n loading = false,\n }: TableProps<T>,\n ref: React.ForwardedRef<HTMLTableElement>\n) {\n // 内部状态管理\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<Set<string | number>>(new Set())\n const [internalExpandedKeys, setInternalExpandedKeys] = useState<Set<string | number>>(new Set())\n const [isScrollbarVisible, setIsScrollbarVisible] = useState(false)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const scrollHideTimerRef = useRef<number | null>(null)\n\n // 选中状态\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys\n const handleSelectionChange = useCallback((keys: Set<string | number> | 'all') => {\n // 总是将 'all' 转换为包含所有 ID 的 Set,确保外部接收到的是具体的 key 集合\n const newKeys = keys === 'all' ? new Set(dataSource.map(d => d.id)) : keys\n \n if (!controlledSelectedKeys) {\n setInternalSelectedKeys(newKeys)\n }\n onSelectionChange?.(newKeys)\n }, [controlledSelectedKeys, onSelectionChange, dataSource])\n\n // 展开状态\n const expandedKeys = controlledExpandedKeys ?? internalExpandedKeys\n const handleExpandChange = useCallback((key: string | number) => {\n const newKeys = new Set(expandedKeys)\n if (newKeys.has(key)) {\n newKeys.delete(key)\n } else {\n newKeys.add(key)\n }\n if (!controlledExpandedKeys) {\n setInternalExpandedKeys(newKeys)\n }\n onExpandChange?.(newKeys)\n }, [expandedKeys, controlledExpandedKeys, onExpandChange])\n\n // 排序处理\n const handleSort = useCallback((key: string) => {\n if (!onSortChange) return\n \n let newDirection: 'asc' | 'desc' | null = 'asc'\n \n // 如果当前是该列且正在排序\n if (sortConfig?.key === key) {\n if (sortConfig.direction === 'asc') {\n newDirection = 'desc'\n } else if (sortConfig.direction === 'desc') {\n // 从降序切换到取消排序\n newDirection = null\n }\n }\n \n onSortChange(key, newDirection)\n }, [sortConfig, onSortChange])\n\n // 全选状态计算\n const allSelected = useMemo(() => {\n if (!selectable || selectionMode === 'single') return false\n if (selectedKeys === 'all') return true\n if (dataSource.length === 0) return false\n return dataSource.every(record => selectedKeys.has(record.id))\n }, [selectable, selectionMode, selectedKeys, dataSource])\n\n const indeterminate = useMemo(() => {\n if (!selectable || selectionMode === 'single' || selectedKeys === 'all') return false\n if (dataSource.length === 0) return false\n const selectedCount = dataSource.filter(record => selectedKeys.has(record.id)).length\n return selectedCount > 0 && selectedCount < dataSource.length\n }, [selectable, selectionMode, selectedKeys, dataSource])\n\n // 滚动条显示/隐藏\n useEffect(() => {\n const container = containerRef.current\n if (!container) return\n\n const handleScroll = () => {\n setIsScrollbarVisible(true)\n if (scrollHideTimerRef.current) {\n window.clearTimeout(scrollHideTimerRef.current)\n }\n scrollHideTimerRef.current = window.setTimeout(() => {\n setIsScrollbarVisible(false)\n }, 800)\n }\n\n container.addEventListener('scroll', handleScroll, { passive: true })\n\n return () => {\n container.removeEventListener('scroll', handleScroll)\n if (scrollHideTimerRef.current) {\n window.clearTimeout(scrollHideTimerRef.current)\n }\n }\n }, [])\n\n // 渲染行数据(包含树形结构)\n const renderRows = useCallback((\n data: T[],\n level = 0\n ): React.ReactNode[] => {\n return data.flatMap((record, index) => {\n const isExpanded = expandedKeys.has(record.id)\n const isSelected = selectedKeys instanceof Set && selectedKeys.has(record.id)\n const hasChildren = record.children && record.children.length > 0\n\n const mainRow = (\n <TableRow\n key={record.id}\n selectable={selectable}\n selected={isSelected}\n expandable={expandable}\n expanded={isExpanded}\n level={level}\n onClick={() => {\n if (selectable && selectionMode === 'single') {\n handleSelectionChange(new Set([record.id]))\n }\n onRowClick?.(record, index)\n }}\n >\n {selectable && (\n <TableCell\n key=\"selection-column\"\n size={size}\n width={48}\n align=\"center\"\n >\n <CheckboxCell onClick={(e) => e.stopPropagation()}>\n {selectionMode === 'single' ? (\n <Radio\n checked={isSelected}\n onChange={() => {\n handleSelectionChange(new Set([record.id]))\n }}\n />\n ) : (\n <Checkbox\n checked={isSelected}\n onChange={(checked) => {\n const newKeys = new Set(selectedKeys === 'all' ? dataSource.map(d => d.id) : selectedKeys)\n if (checked) {\n newKeys.add(record.id)\n } else {\n newKeys.delete(record.id)\n }\n handleSelectionChange(newKeys)\n }}\n />\n )}\n </CheckboxCell>\n </TableCell>\n )}\n {columns.map((column, colIndex) => {\n const value = record[column.key]\n const isFirstColumn = colIndex === 0\n\n return (\n <TableCell\n key={column.key}\n size={size}\n fixed={column.fixed}\n align={column.align}\n width={column.width}\n level={isFirstColumn ? level : 0}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {isFirstColumn && expandable && hasChildren && (\n <ExpandButton\n expanded={isExpanded}\n onClick={(e) => {\n e.stopPropagation()\n handleExpandChange(record.id)\n }}\n aria-label={isExpanded ? '收起' : '展开'}\n >\n <ChevronRightOutline />\n </ExpandButton>\n )}\n \n <CellContent ellipsis={column.ellipsis} wrapText={wrapText}>\n {column.render ? column.render(value, record, index) : value}\n </CellContent>\n </div>\n </TableCell>\n )\n })}\n </TableRow>\n )\n\n const expandedRow = isExpanded && expandedRowRender && (\n <TableRow key={`${record.id}-expanded`} isSubRow>\n <TableCell colSpan={columns.length + (selectable ? 1 : 0)} size={size}>\n {expandedRowRender(record, index)}\n </TableCell>\n </TableRow>\n )\n\n const childRows = isExpanded && hasChildren\n ? renderRows(record.children as T[], level + 1)\n : []\n\n return [mainRow, expandedRow, ...childRows].filter(Boolean)\n })\n }, [\n columns,\n size,\n expandable,\n expandedKeys,\n selectedKeys,\n selectable,\n selectionMode,\n expandedRowRender,\n wrapText,\n handleExpandChange,\n handleSelectionChange,\n onRowClick,\n ])\n\n if (dataSource.length === 0 && !loading) {\n return (\n <TableContainer \n size={size}\n ref={containerRef}\n fullWidth={fullWidth} \n scrollX={scroll?.x}\n scrollY={scroll?.y}\n showScrollbar={isScrollbarVisible}\n className={className}\n >\n <EmptyState>{emptyText}</EmptyState>\n </TableContainer>\n )\n }\n\n return (\n <TableContainer \n size={size}\n ref={containerRef}\n fullWidth={fullWidth} \n scrollX={scroll?.x}\n scrollY={scroll?.y}\n showScrollbar={isScrollbarVisible}\n className={className}\n >\n <StyledTable \n ref={ref} \n size={size} \n variant={bordered ? 'bordered' : variant}\n scrollX={scroll?.x}\n >\n <TableHeader>\n <TableHeaderRow>\n {selectable && (\n <TableHeaderCell\n key=\"selection-column\"\n size={size}\n width={48}\n align=\"center\"\n >\n {selectionMode === 'multiple' && (\n <CheckboxCell>\n <Checkbox\n checked={allSelected}\n indeterminate={indeterminate}\n onChange={(checked) => {\n handleSelectionChange(checked ? 'all' : new Set())\n }}\n />\n </CheckboxCell>\n )}\n </TableHeaderCell>\n )}\n {columns.map((column) => (\n <TableHeaderCell\n key={column.key}\n size={size}\n fixed={column.fixed}\n align={column.align}\n width={column.width}\n sortable={column.sortable}\n onClick={() => column.sortable && handleSort(column.key)}\n >\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '8px' }}>\n <span>{column.title}</span>\n {column.sortable && (\n <SortIndicator\n direction={sortConfig?.key === column.key ? sortConfig.direction : undefined}\n >\n <ChevronUpOutline data-active={sortConfig?.key === column.key && sortConfig.direction === 'asc'} />\n <ChevronDownOutline data-active={sortConfig?.key === column.key && sortConfig.direction === 'desc'} />\n </SortIndicator>\n )}\n </div>\n </TableHeaderCell>\n ))}\n </TableHeaderRow>\n </TableHeader>\n\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell colSpan={columns.length + (selectable ? 1 : 0)} size={size}>\n <div style={{ textAlign: 'center', padding: '24px' }}>加载中...</div>\n </TableCell>\n </TableRow>\n ) : (\n renderRows(dataSource)\n )}\n </TableBody>\n </StyledTable>\n </TableContainer>\n )\n}\n\nconst TableWithRef = forwardRef(TableInner) as <T extends Record<string, any> = Record<string, any>>(\n props: TableProps<T> & { ref?: React.ForwardedRef<HTMLTableElement> }\n) => React.ReactElement\n\n;(TableWithRef as any).displayName = 'Table'\n\nexport const Table = TableWithRef\n","import {useControlledState as $d8rik$useControlledState} from \"@react-stately/utils\";\nimport {useState as $d8rik$useState} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $3017fa7ffdddec74$export$8042c6c013fd5226(props = {}) {\n let { isReadOnly: isReadOnly } = props;\n // have to provide an empty function so useControlledState doesn't throw a fit\n // can't use useControlledState's prop calling because we need the event object from the change\n let [isSelected, setSelected] = (0, $d8rik$useControlledState)(props.isSelected, props.defaultSelected || false, props.onChange);\n let [initialValue] = (0, $d8rik$useState)(isSelected);\n function updateSelected(value) {\n if (!isReadOnly) setSelected(value);\n }\n function toggleState() {\n if (!isReadOnly) setSelected(!isSelected);\n }\n var _props_defaultSelected;\n return {\n isSelected: isSelected,\n defaultSelected: (_props_defaultSelected = props.defaultSelected) !== null && _props_defaultSelected !== void 0 ? _props_defaultSelected : initialValue,\n setSelected: updateSelected,\n toggle: toggleState\n };\n}\n\n\nexport {$3017fa7ffdddec74$export$8042c6c013fd5226 as useToggleState};\n//# sourceMappingURL=useToggleState.module.js.map\n","/**\n * Switch 开关样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n * 支持带文字的开关组件(如 ON/OFF、开/关)\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const switchSizes = ['sm', 'md'] as const\nexport type SwitchSize = (typeof switchSizes)[number]\n\n// ============================================================================\n// 辅助函数\n// ============================================================================\n\n/**\n * 获取尺寸样式\n * 使用 Tier 3 组件层尺寸 Token\n */\nconst getSizeStyles = (size: SwitchSize, theme: AppTheme) => {\n const sizeToken = theme.components.switch.size[size]\n\n return css`\n /* 提供尺寸相关的 CSS 变量,方便内部元素计算占位 */\n --switch-thumb-size: ${sizeToken.thumbSize};\n --switch-inner-gap: ${theme.components.switch.gap};\n\n min-width: ${sizeToken.width};\n height: ${sizeToken.height};\n font-size: ${sizeToken.fontSize};\n\n /* 滑块尺寸 - 使用后代选择器 */\n & span[data-thumb] {\n width: ${sizeToken.thumbSize};\n height: ${sizeToken.thumbSize};\n }\n `\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Switch 根元素(label 标签)\n * \n * 特性:\n * - 基于三层 Token 设计\n * - 完整的交互状态(hover, focus, disabled)\n * - 支持带文字的开关\n * - 平滑的动画过渡\n */\nexport const SwitchRoot = styled.label<{\n size: SwitchSize\n isSelected: boolean\n isDisabled: boolean\n isFocusVisible: boolean\n hasInnerLabel: boolean\n}>`\n /* 基础布局 */\n position: relative;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n user-select: none;\n \n /* 背景和圆角 - 使用 Tier 3 Token */\n background: ${({ isSelected, isDisabled, theme }) =>\n isDisabled\n ? theme.components.switch.background.disabled\n : isSelected\n ? theme.components.switch.background.checked\n : theme.components.switch.background.unchecked};\n border-radius: ${({ theme }) => theme.components.switch.borderRadius};\n \n /* \n * 内边距 - 根据 Figma 设计:\n * - 有文字时:选中状态左8px右3px,未选中状态左3px右8px\n * - 无文字时:始终左右各3px\n * - 上下始终3px\n */\n padding: 3px;\n ${({ hasInnerLabel, isSelected }) => {\n if (!hasInnerLabel) {\n // 无文字时,左右都是 3px\n return css`\n padding-left: 3px;\n padding-right: 3px;\n `\n }\n // 有文字时,根据选中状态调整\n return css`\n padding-left: ${isSelected ? '8px' : '3px'};\n padding-right: ${isSelected ? '3px' : '8px'};\n `\n }}\n \n /* 过渡动画 - 只对背景色做动画,padding 瞬间切换以配合滑块动画 */\n transition: background-color ${({ theme }) => theme.components.switch.transition};\n \n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n \n /* Focus 可见状态 - 键盘导航时显示 */\n ${({ isFocusVisible, theme }) =>\n isFocusVisible &&\n css`\n outline: none;\n box-shadow: 0 0 0 ${theme.components.switch.focusRing.offset} ${theme.components.switch.focusRing.color};\n `}\n \n /* 禁用状态 */\n ${({ isDisabled, theme }) =>\n isDisabled &&\n css`\n opacity: ${theme.components.switch.disabled.opacity};\n cursor: not-allowed;\n `}\n`\n\n/**\n * Switch 内容容器\n * \n * 用于布局文字和滑块,确保正确的间距和对齐\n * 根据 Figma 设计,元素间距为 4px\n * \n * 布局策略:\n * - 文字使用相对定位,根据状态调整 justify-content\n * - 滑块使用绝对定位 + left/right 切换实现平滑动画\n */\nexport const SwitchContent = styled.span<{\n isSelected: boolean\n hasInnerLabel: boolean\n}>`\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n position: relative;\n z-index: 1;\n \n /* 当存在内部文字时,为滑块预留占位,避免文字与滑块重叠\n 预留尺寸 = 滑块尺寸 + 设计间距 */\n ${({ hasInnerLabel, isSelected, theme }) =>\n hasInnerLabel &&\n css`\n padding-right: ${isSelected\n ? `calc(var(--switch-thumb-size) + ${theme.components.switch.gap})`\n : '0'};\n padding-left: ${!isSelected\n ? `calc(var(--switch-thumb-size) + ${theme.components.switch.gap})`\n : '0'};\n `}\n \n /* 有文字时,根据选中状态调整文字位置 */\n ${({ hasInnerLabel, isSelected }) =>\n hasInnerLabel &&\n css`\n justify-content: ${isSelected ? 'flex-start' : 'flex-end'};\n `}\n`\n\n/**\n * Switch 文字标签\n * \n * 显示开关状态文字(如 ON/OFF、开/关)\n * 使用 Tier 3 组件层文字 Token\n * \n * 使用相对定位,不影响滑块的绝对定位计算\n */\nexport const SwitchLabel = styled.span<{\n isSelected: boolean\n}>`\n display: inline-flex;\n align-items: center;\n color: ${({ theme }) => theme.components.switch.text.color};\n font-size: ${({ theme }) => theme.components.switch.text.fontSize};\n font-weight: ${({ theme }) => theme.components.switch.text.fontWeight};\n line-height: 1.5;\n white-space: nowrap;\n user-select: none;\n position: relative;\n z-index: 2;\n`\n\n/**\n * Switch 滑块(Thumb)\n * \n * 白色圆形滑块,根据开关状态滑动\n * 使用 Tier 3 组件层滑块 Token\n * \n * 使用绝对定位 + transform 实现平滑的位置动画\n * 根据 Figma 设计:\n * - 未选中时:left: 0(紧贴左边缘,实际距离容器边缘 3px)\n * - 选中时:right: 0(紧贴右边缘,实际距离容器边缘 3px)\n */\nexport const SwitchThumb = styled.span<{\n isSelected: boolean\n}>`\n display: block;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n border-radius: 50%;\n background: ${({ theme }) => theme.components.switch.thumb.background};\n box-shadow: ${({ theme }) => theme.components.switch.thumb.shadow};\n \n /* 位置控制:未选中在左,选中在右 */\n ${({ isSelected }) =>\n isSelected\n ? css`\n right: 0;\n left: auto;\n `\n : css`\n left: 0;\n right: auto;\n `}\n \n /* 平滑的位置过渡动画 */\n transition: left ${({ theme }) => theme.components.switch.transition},\n right ${({ theme }) => theme.components.switch.transition};\n`\n\n/**\n * 外部标签容器\n * \n * 用于在 Switch 外部显示描述性标签\n */\nexport const SwitchLabelWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n\n/**\n * 外部标签文字\n * \n * Switch 旁边的描述性文字\n */\nexport const SwitchLabelText = styled.span<{\n isDisabled: boolean\n}>`\n font-size: ${({ theme }) => theme.global.typography.fontSize.sm};\n color: ${({ isDisabled, theme }) =>\n isDisabled\n ? theme.semantic.colors.text.disabled\n : theme.semantic.colors.text.primary};\n user-select: none;\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n`\n\n","/**\n * Switch 开关组件\n * \n * 基于 react-aria 实现无障碍访问的开关组件\n * 完全符合 Figma 设计稿规范\n * 支持带文字的开关(如 ON/OFF、开/关)\n * \n * @example\n * ```tsx\n * // 基础用法\n * <Switch>开启通知</Switch>\n * \n * // 带状态文字\n * <Switch \n * checkedLabel=\"开\" \n * uncheckedLabel=\"关\"\n * >\n * 夜间模式\n * </Switch>\n * \n * // 受控组件\n * <Switch \n * isSelected={enabled} \n * onChange={setEnabled}\n * >\n * 自动保存\n * </Switch>\n * ```\n */\n\nimport { forwardRef, useRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { useSwitch, useFocusRing, VisuallyHidden } from 'react-aria'\nimport type { AriaSwitchProps } from 'react-aria'\nimport { useToggleState } from '@react-stately/toggle'\nimport type { ToggleProps } from '@react-types/checkbox'\nimport { mergeProps } from '@react-aria/utils'\nimport {\n SwitchRoot,\n SwitchContent,\n SwitchLabel,\n SwitchThumb,\n SwitchLabelWrapper,\n SwitchLabelText,\n switchSizes,\n type SwitchSize,\n} from './Switch.style'\n\n// 导出常量供外部使用\nexport const SIZES = switchSizes\n\nexport type SwitchProps = Omit<AriaSwitchProps, 'children' | 'isDisabled'> & \n Omit<ToggleProps, 'children' | 'isDisabled'> & {\n /** 开关尺寸:小号(20px)、标准(24px) */\n size?: SwitchSize\n /** 选中状态的文字标签(显示在开关内部) */\n checkedLabel?: string\n /** 未选中状态的文字标签(显示在开关内部) */\n uncheckedLabel?: string\n /** 是否禁用(替代 isDisabled) */\n disabled?: boolean\n /** 受控值(统一 API,优先级高于 isSelected) */\n value?: boolean\n /** 默认值(统一 API,优先级高于 defaultSelected) */\n defaultValue?: boolean\n /** 外部描述性标签(显示在开关旁边) */\n children?: ReactNode\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * Switch 开关组件\n * \n * 基于 Figma 设计规范实现的开关组件,支持带文字的开关\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n size = 'md',\n checkedLabel,\n uncheckedLabel,\n disabled = false,\n value,\n defaultValue,\n children,\n className,\n isSelected,\n defaultSelected,\n ...props\n },\n forwardedRef,\n ) => {\n // 统一处理受控值:value 优先于 isSelected\n const finalIsSelected = value ?? isSelected\n // 统一处理默认值:defaultValue 优先于 defaultSelected\n const finalDefaultSelected = defaultValue ?? defaultSelected\n\n // 使用 react-stately 管理开关状态\n const state = useToggleState({\n ...props,\n isSelected: finalIsSelected,\n defaultSelected: finalDefaultSelected,\n })\n const innerRef = useRef<HTMLInputElement>(null)\n const ref = forwardedRef || innerRef\n\n // 使用 react-aria 的 useSwitch hook 获取无障碍属性\n const { inputProps } = useSwitch(\n {\n ...props,\n isDisabled: disabled,\n },\n state,\n innerRef,\n )\n\n // 使用 useFocusRing 处理键盘焦点样式\n const { isFocusVisible, focusProps } = useFocusRing()\n\n // 当前显示的标签文字\n const currentLabel = state.isSelected ? checkedLabel : uncheckedLabel\n \n // 是否有内部文字标签\n const hasInnerLabel = Boolean(checkedLabel || uncheckedLabel)\n\n // Switch 主体\n const switchElement = (\n <SwitchRoot\n size={size}\n isSelected={state.isSelected}\n isDisabled={disabled}\n isFocusVisible={isFocusVisible}\n hasInnerLabel={hasInnerLabel}\n className={className}\n data-selected={state.isSelected ? 'true' : undefined}\n data-disabled={disabled ? 'true' : undefined}\n >\n {/* 隐藏的原生 input,用于无障碍访问 */}\n <VisuallyHidden>\n <input\n {...mergeProps(inputProps, focusProps)}\n ref={ref}\n />\n </VisuallyHidden>\n\n {/* 开关内容:文字 + 滑块 */}\n <SwitchContent isSelected={state.isSelected} hasInnerLabel={hasInnerLabel}>\n {/* 滑块 - 使用绝对定位,始终渲染 */}\n <SwitchThumb\n isSelected={state.isSelected}\n data-thumb\n aria-hidden=\"true\"\n />\n \n {/* 内部状态文字(如果有) - 相对定位,在滑块上方 */}\n {hasInnerLabel && currentLabel && (\n <SwitchLabel isSelected={state.isSelected}>\n {currentLabel}\n </SwitchLabel>\n )}\n </SwitchContent>\n </SwitchRoot>\n )\n\n // 如果有外部标签,使用 wrapper 包装\n if (children) {\n return (\n <SwitchLabelWrapper>\n {switchElement}\n <SwitchLabelText\n isDisabled={disabled}\n onClick={() => {\n if (!disabled) {\n state.toggle()\n }\n }}\n >\n {children}\n </SwitchLabelText>\n </SwitchLabelWrapper>\n )\n }\n\n return switchElement\n },\n)\n\nSwitch.displayName = 'Switch'\n\n","/**\n * Upload 上传组件样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const uploadStatuses = ['idle', 'uploading', 'success', 'error'] as const\nexport type UploadStatus = (typeof uploadStatuses)[number]\n\n// ============================================================================\n// 上传区域样式\n// ============================================================================\n\n/**\n * 上传区域容器\n */\nexport const UploadRoot = styled.div`\n width: 100%;\n`\n\n/**\n * 拖拽区域\n */\nexport const UploadDropzone = styled.div<{\n isDragActive: boolean\n isDisabled: boolean\n}>`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 24px;\n padding: 40px 0;\n border: 1px solid ${({ theme, isDragActive }) => \n isDragActive ? theme.semantic.colors.brand.primary : theme.semantic.colors.border.primary};\n border-radius: 16px;\n background: ${({ theme, isDragActive }) => \n isDragActive ? '#EEF6FD' : theme.semantic.colors.background.surface};\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n transition: all 0.2s ease;\n outline: none;\n\n ${({ isDisabled, theme }) =>\n !isDisabled &&\n css`\n &:hover {\n border-color: ${theme.semantic.colors.brand.primary};\n }\n\n &:focus-visible {\n border-color: ${theme.semantic.colors.brand.primary};\n box-shadow: 0 0 0 4px rgba(44, 111, 231, 0.18);\n }\n `}\n\n ${({ isDisabled, theme }) =>\n isDisabled &&\n css`\n opacity: 0.5;\n background: ${theme.semantic.colors.background.secondary};\n `}\n`\n\n/**\n * 上传图标容器\n */\nexport const UploadIconWrapper = styled.div`\n width: 100px;\n height: 100px;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\n/**\n * 上传提示文本容器\n */\nexport const UploadTextWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n width: 100%;\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n`\n\n/**\n * 主要提示文本\n */\nexport const UploadMainText = styled.div`\n font-size: 14px;\n line-height: 20px;\n color: ${({ theme }) => theme.semantic.colors.text.primary};\n text-align: center;\n width: 100%;\n`\n\n/**\n * 次要提示文本\n */\nexport const UploadSecondaryText = styled.p`\n font-size: 12px;\n line-height: 18px;\n color: rgba(10, 24, 51, 0.4);\n margin: 0;\n white-space: pre;\n`\n\n/**\n * 链接文本\n */\nexport const UploadLink = styled.span`\n color: ${({ theme }) => theme.semantic.colors.brand.primary};\n cursor: pointer;\n \n &:hover {\n text-decoration: underline;\n }\n`\n\n// ============================================================================\n// 文件列表样式\n// ============================================================================\n\n/**\n * 文件列表容器\n */\nexport const FileList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n width: 100%;\n`\n\n/**\n * 文件项容器\n */\nexport const FileItem = styled.div<{\n status: UploadStatus\n}>`\n display: flex;\n flex-direction: column;\n gap: 0;\n width: 100%;\n`\n\n/**\n * 文件信息行\n */\nexport const FileInfoRow = styled.div<{\n status: UploadStatus\n}>`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 7px 8px;\n border-radius: 4px;\n background: ${({ status, theme }) => {\n if (status === 'success') return '#FAFAFB'\n if (status === 'error') return '#FEF6F1'\n return theme.semantic.colors.background.surface\n }};\n flex: 1;\n`\n\n/**\n * 文件图标\n */\nexport const FileIcon = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: ${({ theme }) => theme.semantic.colors.text.primary};\n`\n\n/**\n * 文件名\n */\nexport const FileName = styled.div<{\n status: UploadStatus\n}>`\n flex: 1;\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 12px;\n line-height: 18px;\n color: ${({ status, theme }) => {\n if (status === 'error') return theme.semantic.colors.state.danger\n return theme.semantic.colors.text.primary\n }};\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\n/**\n * 状态图标\n */\nexport const StatusIcon = styled.span<{\n status: UploadStatus\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: ${({ status, theme }) => {\n if (status === 'success') return theme.semantic.colors.state.success\n if (status === 'error') return theme.semantic.colors.state.danger\n return theme.semantic.colors.text.secondary\n }};\n`\n\n/**\n * 删除按钮\n */\nexport const DeleteButton = styled.button`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n border: none;\n background: transparent;\n color: ${({ theme }) => theme.semantic.colors.text.secondary};\n cursor: pointer;\n flex-shrink: 0;\n transition: color 0.2s ease;\n\n &:hover {\n color: ${({ theme }) => theme.semantic.colors.text.primary};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: 2px;\n border-radius: 2px;\n }\n`\n\n/**\n * 进度条容器\n */\nexport const ProgressWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: 16px;\n height: 16px;\n margin-top: 0;\n`\n\n/**\n * 进度条轨道\n */\nexport const ProgressTrack = styled.div`\n flex: 1;\n height: 6px;\n background: ${({ theme }) => theme.semantic.colors.background.secondary};\n border-radius: 5px;\n overflow: hidden;\n`\n\n/**\n * 进度条填充\n */\nexport const ProgressBar = styled.div<{\n percent: number\n}>`\n height: 100%;\n width: ${({ percent }) => percent}%;\n background: ${({ theme }) => theme.semantic.colors.brand.primary};\n border-radius: 12px;\n transition: width 0.3s ease;\n`\n\n/**\n * 进度百分比文本\n */\nexport const ProgressText = styled.span`\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 12px;\n line-height: 18px;\n color: ${({ theme }) => theme.semantic.colors.text.secondary};\n white-space: nowrap;\n flex-shrink: 0;\n width: 40px;\n text-align: right;\n`\n\n/**\n * 隐藏的文件输入框\n */\nexport const HiddenInput = styled.input`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n`\n\n","/**\n * Upload 上传组件\n * \n * 基于 react-aria 实现无障碍访问的上传组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * <Upload\n * accept=\".xls,.xlsx\"\n * maxSize={5 * 1024 * 1024}\n * onChange={(files) => console.log(files)}\n * />\n * ```\n */\n\nimport { forwardRef, useRef, useState, type ReactNode, type ChangeEvent, type DragEvent } from 'react'\nimport { useButton } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport {\n UploadRoot,\n UploadDropzone,\n UploadIconWrapper,\n UploadTextWrapper,\n UploadMainText,\n UploadSecondaryText,\n UploadLink,\n FileList,\n FileItem,\n FileInfoRow,\n FileIcon,\n FileName,\n StatusIcon,\n DeleteButton,\n ProgressWrapper,\n ProgressTrack,\n ProgressBar,\n ProgressText,\n HiddenInput,\n uploadStatuses,\n type UploadStatus,\n} from './Upload.style'\n\n// 导出常量供外部使用\nexport const STATUSES = uploadStatuses\n\nexport interface UploadFile {\n /** 文件唯一标识 */\n uid: string\n /** 文件名 */\n name: string\n /** 文件对象 */\n file?: File\n /** 上传状态 */\n status: UploadStatus\n /** 上传进度 (0-100) */\n percent?: number\n /** 错误信息 */\n error?: string\n}\n\nexport type UploadProps = {\n /** 接受的文件类型 */\n accept?: string\n /** 是否支持多选 */\n multiple?: boolean\n /** 最大文件大小(字节) */\n maxSize?: number\n /** 最大文件数量 */\n maxCount?: number\n /** 是否禁用 */\n disabled?: boolean\n /** 文件列表 */\n fileList?: UploadFile[]\n /** 默认文件列表 */\n defaultFileList?: UploadFile[]\n /** 文件变化回调 */\n onChange?: (fileList: UploadFile[]) => void\n /** 文件上传前的钩子 */\n beforeUpload?: (file: File) => boolean | Promise<boolean>\n /** 自定义上传逻辑 */\n customRequest?: (options: {\n file: File\n onProgress: (percent: number) => void\n onSuccess: () => void\n onError: (error: Error) => void\n }) => void\n /** 主要提示文本 */\n mainText?: ReactNode\n /** 次要提示文本 */\n secondaryText?: ReactNode\n /** 文件类型提示 */\n fileTypeHint?: ReactNode\n /** 下载模板文本 */\n downloadTemplateText?: ReactNode\n /** 下载模板回调 */\n onDownloadTemplate?: () => void\n /** 自定义类名 */\n className?: string\n /** 自定义上传图标 */\n icon?: ReactNode\n}\n\n/**\n * 默认上传图标\n */\nconst DefaultUploadIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" fill=\"none\">\n <g clipPath=\"url(#clip0_6955_14967)\">\n <path d=\"M6.25 63.1836L28.525 52.195C28.8475 52.0359 29.2023 51.9531 29.5619 51.9531H70.6424C71.0049 51.9531 71.3625 52.0372 71.687 52.1988L93.75 63.1836V91.4062C93.75 92.7007 92.7007 93.75 91.4062 93.75H8.59375C7.29932 93.75 6.25 92.7007 6.25 91.4062V63.1836Z\" fill=\"#F0F0F0\"/>\n <path d=\"M6.25 63.1836H34.4859C35.7804 63.1836 36.8297 64.2329 36.8297 65.5273V69.8906C36.8297 71.185 37.879 72.2344 39.1734 72.2344H60.7687C62.0632 72.2344 63.1125 71.185 63.1125 69.8906V65.5273C63.1125 64.2329 64.1618 63.1836 65.4562 63.1836H93.75V92.9688C93.75 93.176 93.6677 93.3747 93.5212 93.5212C93.3747 93.6677 93.1759 93.75 92.9688 93.75H7.03125C6.82405 93.75 6.62534 93.6677 6.47882 93.5212C6.33231 93.3747 6.25 93.176 6.25 92.9688V63.1836Z\" fill=\"#FAFAFB\"/>\n <path d=\"M19.1445 39.9733C19.3009 39.41 20.0994 39.41 20.2558 39.9733C20.797 41.9242 22.3218 43.449 24.2727 43.9902C24.836 44.1466 24.836 44.9451 24.2727 45.1015C22.3218 45.6427 20.797 47.1675 20.2558 49.1184C20.0994 49.6817 19.3009 49.6817 19.1445 49.1184C18.6033 47.1675 17.0785 45.6427 15.1276 45.1015C14.5642 44.9451 14.5643 44.1466 15.1276 43.9902C17.0785 43.449 18.6033 41.9242 19.1445 39.9733Z\" fill=\"#F0F0F0\"/>\n <path d=\"M78.1066 35.6488C78.3468 34.7837 79.573 34.7837 79.8132 35.6488C80.6443 38.6449 82.9858 40.9864 85.9819 41.8175C86.8469 42.0577 86.8469 43.2839 85.9819 43.5241C82.9858 44.3552 80.6443 46.6968 79.8132 49.6929C79.573 50.5579 78.3468 50.5579 78.1066 49.6929C77.2755 46.6968 74.9339 44.3552 71.9379 43.5241C71.0728 43.2839 71.0728 42.0577 71.9379 41.8175C74.9339 40.9864 77.2755 38.6449 78.1066 35.6488Z\" fill=\"#F0F0F0\"/>\n <path d=\"M49.0173 14.5685C49.733 13.8105 50.9389 13.8105 51.6547 14.5685L62.8375 26.4101C63.9294 27.5668 63.1096 29.469 61.5188 29.4691H57.591C56.0884 29.4691 54.8704 30.6871 54.8704 32.1897L54.8703 41C54.8703 41.5523 54.4226 42 53.8703 42H46.8015C46.2492 42 45.8015 41.5523 45.8015 41L45.8016 32.1897C45.8016 30.6871 44.5835 29.4691 43.0809 29.4691H39.1532C37.5623 29.4691 36.7424 27.5669 37.8345 26.4101L49.0173 14.5685Z\" fill=\"#F0F0F0\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_6955_14967\">\n <rect width=\"100\" height=\"100\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n)\n\n/**\n * 文件图标\n */\nconst FileIconSvg = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 1H3.5C2.67157 1 2 1.67157 2 2.5V13.5C2 14.3284 2.67157 15 3.5 15H12.5C13.3284 15 14 14.3284 14 13.5V6M9 1L14 6M9 1V6H14\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M5 7H7\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n <path d=\"M5 10H11\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n)\n\n/**\n * 成功图标\n */\nconst SuccessIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path d=\"M11.3333 5.5L6.75 10.0833L4.66667 8\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\n/**\n * 错误图标\n */\nconst ErrorIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path d=\"M10 6L6 10M6 6L10 10\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n)\n\n/**\n * 删除图标\n */\nconst DeleteIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3.5 4.5H12.5M6.5 7V11.5M9.5 7V11.5M10.5 4.5V2.5C10.5 2.22386 10.2761 2 10 2H6C5.72386 2 5.5 2.22386 5.5 2.5V4.5M4.5 4.5H11.5V13C11.5 13.2761 11.2761 13.5 11 13.5H5C4.72386 13.5 4.5 13.2761 4.5 13V4.5Z\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\n/**\n * 生成唯一 ID\n */\nconst generateUid = () => `upload-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`\n\n/**\n * Upload 上传组件\n * \n * 基于 Figma 设计规范实现的上传组件,支持拖拽上传和点击上传\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Upload = forwardRef<HTMLDivElement, UploadProps>(\n (\n {\n accept,\n multiple = false,\n maxSize,\n maxCount,\n disabled = false,\n fileList: controlledFileList,\n defaultFileList = [],\n onChange,\n beforeUpload,\n customRequest,\n mainText,\n secondaryText,\n fileTypeHint,\n downloadTemplateText,\n onDownloadTemplate,\n className,\n icon,\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const dropzoneRef = useRef<HTMLDivElement>(null)\n\n // 内部文件列表状态\n const [internalFileList, setInternalFileList] = useState<UploadFile[]>(defaultFileList)\n const [isDragActive, setIsDragActive] = useState(false)\n\n // 判断是否受控\n const isControlled = controlledFileList !== undefined\n const fileList = isControlled ? controlledFileList : internalFileList\n\n // 更新文件列表\n const updateFileList = (newFileList: UploadFile[]) => {\n if (!isControlled) {\n setInternalFileList(newFileList)\n }\n onChange?.(newFileList)\n }\n\n // 处理文件选择\n const handleFiles = async (files: FileList | null) => {\n if (!files || files.length === 0) return\n\n const filesArray = Array.from(files)\n\n // 检查文件数量限制\n if (maxCount && fileList.length + filesArray.length > maxCount) {\n console.warn(`最多只能上传 ${maxCount} 个文件`)\n return\n }\n\n // 处理每个文件\n const newFiles: UploadFile[] = []\n \n for (const file of filesArray) {\n // 检查文件大小\n if (maxSize && file.size > maxSize) {\n console.warn(`文件 ${file.name} 超过大小限制`)\n continue\n }\n\n // 执行 beforeUpload 钩子\n if (beforeUpload) {\n try {\n const result = await beforeUpload(file)\n if (!result) continue\n } catch (error) {\n console.error('beforeUpload error:', error)\n continue\n }\n }\n\n const uploadFile: UploadFile = {\n uid: generateUid(),\n name: file.name,\n file,\n status: 'uploading',\n percent: 0,\n }\n\n newFiles.push(uploadFile)\n }\n\n if (newFiles.length === 0) return\n\n // 更新文件列表\n const updatedFileList = [...fileList, ...newFiles]\n updateFileList(updatedFileList)\n\n // 执行上传\n newFiles.forEach((uploadFile) => {\n if (customRequest) {\n customRequest({\n file: uploadFile.file!,\n onProgress: (percent) => {\n updateFileList(\n updatedFileList.map((f) =>\n f.uid === uploadFile.uid ? { ...f, percent } : f\n )\n )\n },\n onSuccess: () => {\n updateFileList(\n updatedFileList.map((f) =>\n f.uid === uploadFile.uid ? { ...f, status: 'success', percent: 100 } : f\n )\n )\n },\n onError: (error) => {\n updateFileList(\n updatedFileList.map((f) =>\n f.uid === uploadFile.uid\n ? { ...f, status: 'error', error: error.message }\n : f\n )\n )\n },\n })\n } else {\n // 默认模拟上传\n simulateUpload(uploadFile.uid, updatedFileList)\n }\n })\n }\n\n // 模拟上传进度\n const simulateUpload = (uid: string, currentFileList: UploadFile[]) => {\n let percent = 0\n const interval = setInterval(() => {\n percent += 10\n if (percent >= 100) {\n clearInterval(interval)\n updateFileList(\n currentFileList.map((f) =>\n f.uid === uid ? { ...f, status: 'success', percent: 100 } : f\n )\n )\n } else {\n updateFileList(\n currentFileList.map((f) =>\n f.uid === uid ? { ...f, percent } : f\n )\n )\n }\n }, 200)\n }\n\n // 处理文件输入变化\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n handleFiles(e.target.files)\n // 清空 input 值,允许重复选择同一文件\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n }\n\n // 处理拖拽进入\n const handleDragEnter = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) {\n setIsDragActive(true)\n }\n }\n\n // 处理拖拽离开\n const handleDragLeave = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragActive(false)\n }\n\n // 处理拖拽悬停\n const handleDragOver = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n // 处理文件放置\n const handleDrop = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragActive(false)\n\n if (disabled) return\n\n const files = e.dataTransfer.files\n handleFiles(files)\n }\n\n // 处理点击上传区域\n const handleClick = () => {\n if (!disabled) {\n inputRef.current?.click()\n }\n }\n\n // 处理删除文件\n const handleDelete = (uid: string) => {\n const newFileList = fileList.filter((f) => f.uid !== uid)\n updateFileList(newFileList)\n }\n\n // 使用 react-aria 的 useButton\n const { buttonProps } = useButton(\n {\n onPress: handleClick,\n isDisabled: disabled,\n } as AriaButtonProps,\n dropzoneRef\n )\n\n // 渲染状态图标\n const renderStatusIcon = (status: UploadStatus) => {\n switch (status) {\n case 'success':\n return <SuccessIcon />\n case 'error':\n return <ErrorIcon />\n default:\n return null\n }\n }\n\n return (\n <UploadRoot ref={ref} className={className}>\n <UploadDropzone\n {...buttonProps}\n ref={dropzoneRef}\n isDragActive={isDragActive}\n isDisabled={disabled}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-label=\"上传文件区域\"\n >\n <UploadIconWrapper>\n {icon || <DefaultUploadIcon />}\n </UploadIconWrapper>\n\n <UploadTextWrapper>\n <UploadMainText>\n {mainText || (\n <>\n 将文件拖到此处,或<UploadLink>点击上传</UploadLink>\n </>\n )}\n </UploadMainText>\n\n {secondaryText && (\n <UploadSecondaryText>{secondaryText}</UploadSecondaryText>\n )}\n\n {(fileTypeHint || downloadTemplateText) && (\n <UploadSecondaryText>\n {fileTypeHint}\n {downloadTemplateText && onDownloadTemplate && (\n <>\n {' '}\n <UploadLink onClick={(e) => {\n e.stopPropagation()\n onDownloadTemplate()\n }}>\n {downloadTemplateText}\n </UploadLink>\n </>\n )}\n </UploadSecondaryText>\n )}\n </UploadTextWrapper>\n\n <HiddenInput\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n disabled={disabled}\n aria-hidden=\"true\"\n />\n </UploadDropzone>\n\n {fileList.length > 0 && (\n <FileList>\n {fileList.map((file) => (\n <FileItem key={file.uid} status={file.status}>\n <FileInfoRow status={file.status}>\n <FileIcon>\n <FileIconSvg />\n </FileIcon>\n <FileName status={file.status}>{file.name}</FileName>\n {(file.status === 'success' || file.status === 'error') && (\n <>\n <StatusIcon status={file.status}>\n {renderStatusIcon(file.status)}\n </StatusIcon>\n <DeleteButton\n onClick={() => handleDelete(file.uid)}\n aria-label={`删除文件 ${file.name}`}\n >\n <DeleteIcon />\n </DeleteButton>\n </>\n )}\n </FileInfoRow>\n\n {file.status === 'uploading' && (\n <ProgressWrapper>\n <ProgressTrack>\n <ProgressBar percent={file.percent || 0} />\n </ProgressTrack>\n <ProgressText>{file.percent || 0}%</ProgressText>\n </ProgressWrapper>\n )}\n </FileItem>\n ))}\n </FileList>\n )}\n </UploadRoot>\n )\n }\n)\n\nUpload.displayName = 'Upload'\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { ButtonTokens, IconButtonTokens } from '../types/component-tokens.types';\n\nexport const getButtonTokens: TokenGenerator<ButtonTokens> = ({ global, semantic }) => ({\n primary: {\n background: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n text: {\n default: semantic.colors.text.onBrand,\n },\n border: {\n default: 'transparent',\n },\n shadow: {\n default: 'none',\n hover: 'none',\n },\n },\n secondary: {\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n active: semantic.colors.background.surfaceSubtle,\n },\n text: {\n default: semantic.colors.brand.primary,\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.brand.primary,\n active: semantic.colors.brand.primaryActive,\n },\n shadow: {\n default: 'none',\n },\n },\n text: {\n background: {\n default: 'transparent',\n hover: semantic.colors.brand.primarySubtle,\n active: '#F0F0F0', // 文本按钮点击态背景 - note: this was hardcoded in original\n },\n text: {\n default: semantic.colors.brand.primary,\n },\n border: {\n default: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n },\n },\n danger: {\n background: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.dangerHover,\n active: semantic.colors.state.dangerActive,\n },\n text: {\n default: semantic.colors.state.dangerOn,\n },\n border: {\n default: 'transparent',\n },\n shadow: {\n default: 'none',\n hover: 'none',\n },\n },\n gradient: {\n background: {\n default: global.gradients.blueViolet,\n gradientFrom: '#0194FF',\n gradientTo: '#D581FF',\n },\n text: {\n default: global.colors.common.white,\n },\n border: {\n default: 'transparent',\n },\n shadow: {\n default: 'none',\n hover: 'none',\n },\n },\n disabled: {\n background: {\n default: semantic.colors.border.primary,\n },\n text: {\n default: semantic.colors.text.disabled,\n },\n opacity: 0.6,\n },\n size: {\n sm: {\n height: '24px',\n fontSize: global.typography.fontSize.sm, // 14px\n paddingInline: global.spacing.lg, // 16px\n iconSize: '16px',\n },\n md: {\n height: '32px',\n fontSize: global.typography.fontSize.sm, // 14px\n paddingInline: global.spacing.lg, // 16px\n iconSize: '16px',\n },\n lg: {\n height: '40px',\n fontSize: global.typography.fontSize.sm, // 14px\n paddingInline: global.spacing.lg, // 16px\n iconSize: '16px',\n },\n },\n borderRadius: global.radii.r3, // 6px - Figma 设计稿圆角\n fontWeight: global.typography.fontWeight.regular, // 400\n gap: global.spacing.sm, // 8px 图标和文字间距\n transition: '0.2s ease',\n});\n\nexport const getIconButtonTokens: TokenGenerator<IconButtonTokens> = ({ global, semantic }) => ({\n appearance: {\n solid: {\n primary: {\n background: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.text.onBrand,\n },\n },\n neutral: {\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n active: semantic.colors.background.surfaceStrong,\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.text.primary,\n },\n },\n danger: {\n background: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.dangerHover,\n active: semantic.colors.state.dangerActive,\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.state.dangerOn,\n },\n },\n },\n outline: {\n primary: {\n background: {\n default: 'transparent',\n hover: semantic.colors.brand.primarySubtle,\n active: 'rgba(44, 111, 231, 0.16)',\n },\n border: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primary,\n active: semantic.colors.brand.primary,\n },\n icon: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n },\n neutral: {\n background: {\n default: 'transparent',\n hover: semantic.colors.background.surfaceSubtle,\n active: semantic.colors.background.surfaceStrong,\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.border.strong,\n active: semantic.colors.border.strong,\n },\n icon: {\n default: semantic.colors.text.primary,\n hover: semantic.colors.text.primary,\n active: semantic.colors.text.primary,\n },\n },\n danger: {\n background: {\n default: 'transparent',\n hover: semantic.colors.state.dangerSubtle,\n active: 'rgba(237, 28, 28, 0.18)',\n },\n border: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.danger,\n active: semantic.colors.state.danger,\n },\n icon: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.dangerHover,\n active: semantic.colors.state.dangerActive,\n },\n },\n },\n ghost: {\n primary: {\n background: {\n default: 'transparent',\n hover: semantic.colors.brand.primarySubtle,\n active: 'rgba(44, 111, 231, 0.16)',\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n },\n neutral: {\n background: {\n default: 'transparent',\n hover: 'rgba(10, 24, 51, 0.05)',\n active: 'rgba(10, 24, 51, 0.1)',\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.text.primary,\n },\n },\n danger: {\n background: {\n default: 'transparent',\n hover: semantic.colors.state.dangerSubtle,\n active: 'rgba(237, 28, 28, 0.18)',\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.dangerHover,\n active: semantic.colors.state.dangerActive,\n },\n },\n },\n },\n disabled: {\n background: semantic.colors.background.surfaceSubtle,\n border: semantic.colors.border.primary,\n icon: semantic.colors.text.disabled,\n opacity: 0.6,\n },\n size: {\n sm: {\n edge: '24px',\n iconSize: '16px',\n },\n md: {\n edge: '32px',\n iconSize: '18px',\n },\n lg: {\n edge: '40px',\n iconSize: '20px',\n },\n },\n borderRadius: global.radii.r3,\n transition: '0.2s ease',\n focusRing: {\n color: 'rgba(44, 111, 231, 0.35)',\n offset: '2px',\n width: '2px',\n },\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { CheckboxTokens } from '../types/component-tokens.types';\n\nexport const getCheckboxTokens: TokenGenerator<CheckboxTokens> = ({ global, semantic }) => ({\n control: {\n size: \"16px\", // Checkbox 尺寸\n borderRadius: global.radii.r2, // 4px - 最小组件圆角\n borderWidth: \"1px\",\n background: {\n default: global.colors.common.white, // 未选中背景:白色\n checked: semantic.colors.brand.primary, // 选中背景:#2C6FE7\n disabled: global.colors.neutral[100], // 禁用未选中:#F0F2F4\n disabledChecked: global.colors.blue[200], // 禁用选中:#AAD1FC\n },\n borderColor: {\n default: global.colors.neutral[400], // 未选中边框:#C2C5CC\n hover: semantic.colors.brand.primary, // hover边框:#2C6FE7\n checked: semantic.colors.brand.primary, // 选中边框:#2C6FE7\n disabled: global.colors.neutral[400], // 禁用边框:#C2C5CC\n disabledChecked: global.colors.blue[200], // 禁用选中边框:#AAD1FC\n },\n icon: {\n color: global.colors.common.white, // 勾选图标颜色:白色\n size: \"10px\", // 图标大小\n },\n },\n focusRing: \"0 0 0 4px rgba(44, 111, 231, 0.18)\",\n gap: global.spacing.sm, // 8px - checkbox和文字间距\n text: {\n label: {\n fontSize: global.typography.fontSize.xs, // 12px\n lineHeight: \"18px\", // 行高18px\n color: global.colors.word[900], // #0A1833\n disabled: global.colors.word[300], // 禁用:#B6BEC2 (实际是#B5BAC2)\n fontWeight: global.typography.fontWeight.regular, // 400\n },\n },\n transition: \"0.16s ease\",\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { RadioTokens } from '../types/component-tokens.types';\n\nexport const getRadioTokens: TokenGenerator<RadioTokens> = ({ global }) => ({\n control: {\n size: \"16px\",\n borderRadius: \"999px\",\n borderWidth: \"1.5px\",\n background: global.colors.common.white,\n borderColor: {\n default: global.colors.neutral[300],\n hover: global.colors.blue[500],\n checked: global.colors.blue[500],\n disabled: global.colors.neutral[200],\n },\n indicator: {\n size: \"8px\",\n color: global.colors.blue[500],\n disabled: global.colors.word[300],\n },\n },\n focusRing: \"0 0 0 4px rgba(44, 111, 231, 0.18)\",\n gap: \"0.5rem\",\n text: {\n label: {\n fontSize: global.typography.fontSize.xs,\n color: global.colors.word[900],\n disabled: global.colors.word[300],\n fontWeight: global.typography.fontWeight.regular,\n },\n description: {\n color: global.colors.word[600],\n disabled: global.colors.word[300],\n fontSize: global.typography.fontSize.xs,\n },\n },\n disabled: {\n opacity: 0.55,\n },\n transition: \"0.16s ease\",\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { SwitchTokens } from '../types/component-tokens.types';\n\nexport const getSwitchTokens: TokenGenerator<SwitchTokens> = ({ global, semantic }) => ({\n size: {\n sm: {\n width: '36px', // 小尺寸开关宽度\n height: '20px', // 小尺寸开关高度\n thumbSize: '16px', // 小尺寸滑块\n fontSize: global.typography.fontSize.xs, // 12px\n paddingInline: '6px', // 左右内边距\n },\n md: {\n width: '44px', // 中等尺寸开关宽度(根据 Figma: 文字+滑块+间距)\n height: '24px', // 中等尺寸开关高度(Figma 设计)\n thumbSize: '18px', // 滑块尺寸(Figma 设计)\n fontSize: global.typography.fontSize.xs, // 12px(Figma 设计)\n paddingInline: '8px', // 左右内边距(左8px,右3px考虑滑块位置)\n },\n },\n background: {\n unchecked: global.colors.neutral[300], // 未选中状态:灰色 #D4D6D9\n checked: semantic.colors.brand.primary, // 选中状态:品牌蓝 #2C6FE7\n disabled: global.colors.neutral[200], // 禁用状态:浅灰\n },\n thumb: {\n background: global.colors.common.white, // 滑块:白色\n shadow: '0 1px 3px rgba(0, 0, 0, 0.12)', // 滑块阴影\n },\n text: {\n color: global.colors.common.white, // 文字颜色:白色\n fontSize: global.typography.fontSize.xs, // 12px\n fontWeight: global.typography.fontWeight.regular, // 400\n },\n borderRadius: global.radii.r5, // 12px - 中型容器圆角(Figma 设计)\n gap: global.spacing.xs, // 4px - 文字和滑块的间距(Figma 设计)\n transition: '0.2s cubic-bezier(0.4, 0, 0.2, 1)', // 平滑过渡动画\n disabled: {\n opacity: 0.5, // 禁用时的透明度\n },\n focusRing: {\n color: 'rgba(44, 111, 231, 0.3)', // Focus 环颜色\n offset: '2px', // Focus 环偏移\n },\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { InputTokens } from '../types/component-tokens.types';\n\nexport const getInputTokens: TokenGenerator<InputTokens> = ({ global, semantic }) => ({\n size: {\n sm: {\n height: '24px', // 小号输入框高度\n fontSize: global.typography.fontSize.xs, // 12px\n paddingInline: global.spacing.md, // 12px 左右内边距\n iconSize: '14px', // 小号图标尺寸\n },\n md: {\n height: '32px', // 标准输入框高度(Figma 设计)\n fontSize: global.typography.fontSize.xs, // 12px\n paddingInline: global.spacing.md, // 12px 左右内边距\n iconSize: '16px', // 标准图标尺寸\n },\n lg: {\n height: '40px', // 大号输入框高度\n fontSize: global.typography.fontSize.xs, // 12px\n paddingInline: global.spacing.md, // 12px 左右内边距\n iconSize: '18px', // 大号图标尺寸\n },\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.border.strong,\n focus: semantic.colors.brand.primary,\n error: semantic.colors.state.danger,\n disabled: semantic.colors.border.primary,\n },\n background: {\n default: semantic.colors.background.surface,\n disabled: semantic.colors.background.secondary,\n },\n text: {\n default: semantic.colors.text.primary,\n placeholder: semantic.colors.text.placeholder,\n disabled: semantic.colors.text.disabled,\n error: semantic.colors.state.danger,\n counter: semantic.colors.text.caption,\n },\n borderRadius: global.radii.r3, // 6px - 基础组件圆角\n gap: global.spacing.sm, // 8px - 图标与文字间距(Figma 设计)\n transition: '0.2s ease', // 过渡动画\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { SelectTokens } from '../types/component-tokens.types';\n\nexport const getSelectTokens: TokenGenerator<SelectTokens> = ({ global, semantic }) => ({\n size: {\n sm: {\n height: '24px',\n fontSize: global.typography.fontSize.xs,\n paddingInline: global.spacing.md,\n iconSize: '14px',\n },\n md: {\n height: '32px',\n fontSize: global.typography.fontSize.xs,\n paddingInline: global.spacing.md,\n iconSize: '16px',\n },\n lg: {\n height: '40px',\n fontSize: global.typography.fontSize.xs,\n paddingInline: global.spacing.md,\n iconSize: '18px',\n },\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.border.strong,\n focus: semantic.colors.brand.primary,\n error: semantic.colors.state.danger,\n disabled: semantic.colors.border.primary,\n },\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surface,\n disabled: semantic.colors.background.secondary,\n },\n text: {\n default: semantic.colors.text.primary,\n placeholder: semantic.colors.text.placeholder,\n disabled: semantic.colors.text.disabled,\n error: semantic.colors.state.danger,\n },\n borderRadius: global.radii.r3,\n gap: global.spacing.sm,\n transition: '0.2s ease',\n popover: {\n background: semantic.colors.background.surface,\n border: `1px solid ${semantic.colors.border.primary}`,\n borderRadius: global.radii.r3,\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.08)',\n padding: '4px',\n },\n option: {\n height: '32px',\n paddingInline: '8px',\n fontSize: global.typography.fontSize.xs,\n borderRadius: global.radii.r2,\n gap: '8px',\n background: {\n default: 'transparent',\n hover: semantic.colors.background.surfaceSubtle,\n selected: semantic.colors.brand.primarySubtle,\n focused: semantic.colors.background.surfaceSubtle,\n },\n text: {\n default: semantic.colors.text.primary,\n hover: semantic.colors.text.primary,\n selected: semantic.colors.brand.primary,\n disabled: semantic.colors.text.disabled,\n },\n },\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { NumberFieldTokens } from '../types/component-tokens.types';\n\nexport const getNumberFieldTokens: TokenGenerator<NumberFieldTokens> = ({ global, semantic }) => ({\n controls: {\n default: 'buttons',\n },\n size: {\n md: {\n height: '24px',\n fontSize: global.typography.fontSize.xs,\n paddingInline: global.spacing.sm,\n },\n lg: {\n height: '32px',\n fontSize: global.typography.fontSize.sm,\n paddingInline: global.spacing.sm,\n },\n },\n input: {\n width: '40px',\n height: '18px',\n paddingInline: global.spacing.sm,\n fontSize: global.typography.fontSize.xs,\n fontWeight: global.typography.fontWeight.regular,\n lineHeight: '18px',\n fontFamily: global.typography.fontFamily,\n },\n control: {\n side: {\n buttonSizeSm: '20px',\n buttonSizeLg: '28px',\n inset: '1px',\n gap: '8px',\n iconSize: '12px',\n widthsm: '100px',\n widthLg: '116px',\n },\n arrows: {\n buttonSizeSm: '10px',\n buttonSizeLg: '14px',\n iconSize: '12px',\n gap: '0px',\n widthsm: '72px',\n widthLg: '80px',\n },\n },\n borderRadius: global.radii.r3,\n border: {\n default: semantic.colors.border.strong,\n hover: semantic.colors.brand.primaryHover,\n disabled: semantic.colors.border.strong,\n },\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n disabled: semantic.colors.background.secondary,\n },\n text: {\n default: semantic.colors.text.primary,\n placeholder: semantic.colors.text.placeholder,\n disabled: semantic.colors.text.disabled,\n },\n transition: '0.2s ease',\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { CollapseTokens } from '../types/component-tokens.types';\n\nexport const getCollapseTokens: TokenGenerator<CollapseTokens> = ({ global, semantic }) => ({\n border: {\n default: semantic.colors.border.primary,\n },\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n },\n text: {\n default: semantic.colors.text.secondary, // Note: Light used 'rgba(10, 24, 51, 0.6)' (f5), Dark used text.secondary. Assuming text.secondary is correct abstraction.\n title: semantic.colors.text.primary, // Light: 'rgba(10, 24, 51, 0.7)' (f4), Dark: text.primary.\n },\n divider: semantic.colors.border.primary,\n arrow: {\n default: semantic.colors.text.secondary,\n },\n padding: {\n header: '12px 24px',\n content: '0 24px 12px 24px',\n },\n borderRadius: global.radii.r3,\n gap: global.spacing.sm,\n transition: '0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n arrowSize: '16px',\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { TagTokens } from '../types/component-tokens.types';\n\nexport const getTagTokens: TokenGenerator<TagTokens> = ({ global, semantic, mode }) => {\n const isDark = mode === 'dark';\n\n return {\n colors: {\n // 默认颜色(灰色)\n default: {\n background: {\n default: isDark ? 'rgba(148, 163, 184, 0.15)' : global.colors.neutral[100],\n hover: isDark ? 'rgba(148, 163, 184, 0.2)' : global.colors.neutral[200],\n active: isDark ? 'rgba(148, 163, 184, 0.25)' : global.colors.neutral[300],\n checked: semantic.colors.brand.primary,\n checkedHover: semantic.colors.brand.primaryHover,\n checkedActive: semantic.colors.brand.primaryActive,\n },\n text: {\n default: isDark ? global.colors.word[100] : 'rgba(10, 24, 51, 0.7)',\n checked: global.colors.common.white,\n },\n border: {\n default: isDark ? 'rgba(148, 163, 184, 0.28)' : global.colors.neutral[400],\n hover: isDark ? 'rgba(148, 163, 184, 0.38)' : global.colors.neutral[500],\n active: isDark ? 'rgba(148, 163, 184, 0.48)' : global.colors.word[600],\n checked: semantic.colors.brand.primary,\n checkedHover: semantic.colors.brand.primaryHover,\n checkedActive: semantic.colors.brand.primaryActive,\n },\n },\n // 红色 Red\n red: {\n background: {\n default: isDark ? 'rgba(170, 14, 41, 0.12)' : 'rgba(170, 14, 41, 0.08)',\n hover: isDark ? 'rgba(170, 14, 41, 0.16)' : 'rgba(170, 14, 41, 0.12)',\n active: isDark ? 'rgba(170, 14, 41, 0.2)' : 'rgba(170, 14, 41, 0.16)',\n },\n text: {\n default: isDark ? global.colors.red[300] : global.colors.red[700],\n },\n border: {\n default: isDark ? 'rgba(170, 14, 41, 0.3)' : 'rgba(170, 14, 41, 0.25)',\n },\n },\n // 橙色 Orange\n orange: {\n background: {\n default: isDark ? 'rgba(237, 154, 0, 0.12)' : 'rgba(237, 154, 0, 0.08)',\n hover: isDark ? 'rgba(237, 154, 0, 0.16)' : 'rgba(237, 154, 0, 0.12)',\n active: isDark ? 'rgba(237, 154, 0, 0.2)' : 'rgba(237, 154, 0, 0.16)',\n },\n text: {\n default: isDark ? global.colors.orange[300] : global.colors.orange[500],\n },\n border: {\n default: isDark ? 'rgba(237, 154, 0, 0.3)' : 'rgba(237, 154, 0, 0.25)',\n },\n },\n // 黄色 Yellow\n yellow: {\n background: {\n default: isDark ? 'rgba(250, 208, 0, 0.12)' : 'rgba(250, 208, 0, 0.08)',\n hover: isDark ? 'rgba(250, 208, 0, 0.16)' : 'rgba(250, 208, 0, 0.12)',\n active: isDark ? 'rgba(250, 208, 0, 0.2)' : 'rgba(250, 208, 0, 0.16)',\n },\n text: {\n default: isDark ? global.colors.yellow[300] : global.colors.yellow[500],\n },\n border: {\n default: isDark ? 'rgba(250, 208, 0, 0.3)' : 'rgba(250, 208, 0, 0.25)',\n },\n },\n // 绿色 Green\n green: {\n background: {\n default: isDark ? 'rgba(51, 189, 72, 0.12)' : 'rgba(51, 189, 72, 0.08)',\n hover: isDark ? 'rgba(51, 189, 72, 0.16)' : 'rgba(51, 189, 72, 0.12)',\n active: isDark ? 'rgba(51, 189, 72, 0.2)' : 'rgba(51, 189, 72, 0.16)',\n },\n text: {\n default: isDark ? global.colors.green[300] : global.colors.green[500],\n },\n border: {\n default: isDark ? 'rgba(51, 189, 72, 0.3)' : 'rgba(51, 189, 72, 0.25)',\n },\n },\n // 薰衣草色 Lavender\n lavender: {\n background: {\n default: isDark ? 'rgba(99, 79, 214, 0.12)' : 'rgba(99, 79, 214, 0.08)',\n hover: isDark ? 'rgba(99, 79, 214, 0.16)' : 'rgba(99, 79, 214, 0.12)',\n active: isDark ? 'rgba(99, 79, 214, 0.2)' : 'rgba(99, 79, 214, 0.16)',\n },\n text: {\n default: isDark ? global.colors.lavender[300] : global.colors.lavender[500],\n },\n border: {\n default: isDark ? 'rgba(99, 79, 214, 0.3)' : 'rgba(99, 79, 214, 0.25)',\n },\n },\n // 丁香色 Lilac\n lilac: {\n background: {\n default: isDark ? 'rgba(159, 58, 214, 0.12)' : 'rgba(159, 58, 214, 0.08)',\n hover: isDark ? 'rgba(159, 58, 214, 0.16)' : 'rgba(159, 58, 214, 0.12)',\n active: isDark ? 'rgba(159, 58, 214, 0.2)' : 'rgba(159, 58, 214, 0.16)',\n },\n text: {\n default: isDark ? global.colors.lilac[300] : global.colors.lilac[500],\n },\n border: {\n default: isDark ? 'rgba(159, 58, 214, 0.3)' : 'rgba(159, 58, 214, 0.25)',\n },\n },\n // 胭脂红 Carmine\n carmine: {\n background: {\n default: isDark ? 'rgba(214, 58, 191, 0.12)' : 'rgba(214, 58, 191, 0.08)',\n hover: isDark ? 'rgba(214, 58, 191, 0.16)' : 'rgba(214, 58, 191, 0.12)',\n active: isDark ? 'rgba(214, 58, 191, 0.2)' : 'rgba(214, 58, 191, 0.16)',\n },\n text: {\n default: isDark ? global.colors.carmine[300] : global.colors.carmine[500],\n },\n border: {\n default: isDark ? 'rgba(214, 58, 191, 0.3)' : 'rgba(214, 58, 191, 0.25)',\n },\n },\n // 玫瑰色 Rose\n rose: {\n background: {\n default: isDark ? 'rgba(229, 30, 100, 0.12)' : 'rgba(229, 30, 100, 0.08)',\n hover: isDark ? 'rgba(229, 30, 100, 0.16)' : 'rgba(229, 30, 100, 0.12)',\n active: isDark ? 'rgba(229, 30, 100, 0.2)' : 'rgba(229, 30, 100, 0.16)',\n },\n text: {\n default: isDark ? global.colors.rose[300] : global.colors.rose[500],\n },\n border: {\n default: isDark ? 'rgba(229, 30, 100, 0.3)' : 'rgba(229, 30, 100, 0.25)',\n },\n },\n // 薄荷色 Mint\n mint: {\n background: {\n default: isDark ? 'rgba(71, 192, 214, 0.12)' : 'rgba(71, 192, 214, 0.08)',\n hover: isDark ? 'rgba(71, 192, 214, 0.16)' : 'rgba(71, 192, 214, 0.12)',\n active: isDark ? 'rgba(71, 192, 214, 0.2)' : 'rgba(71, 192, 214, 0.16)',\n },\n text: {\n default: isDark ? global.colors.mint[300] : global.colors.mint[500],\n },\n border: {\n default: isDark ? 'rgba(71, 192, 214, 0.3)' : 'rgba(71, 192, 214, 0.25)',\n },\n },\n // 橄榄色 Olive\n olive: {\n background: {\n default: isDark ? 'rgba(187, 214, 36, 0.12)' : 'rgba(187, 214, 36, 0.08)',\n hover: isDark ? 'rgba(187, 214, 36, 0.16)' : 'rgba(187, 214, 36, 0.12)',\n active: isDark ? 'rgba(187, 214, 36, 0.2)' : 'rgba(187, 214, 36, 0.16)',\n },\n text: {\n default: isDark ? global.colors.olive[300] : global.colors.olive[500],\n },\n border: {\n default: isDark ? 'rgba(187, 214, 36, 0.3)' : 'rgba(187, 214, 36, 0.25)',\n },\n },\n // 蓝色 Blue\n blue: {\n background: {\n default: isDark ? 'rgba(44, 111, 231, 0.12)' : 'rgba(44, 111, 231, 0.08)',\n hover: isDark ? 'rgba(44, 111, 231, 0.16)' : 'rgba(44, 111, 231, 0.12)',\n active: isDark ? 'rgba(44, 111, 231, 0.2)' : 'rgba(44, 111, 231, 0.16)',\n },\n text: {\n default: semantic.colors.brand.primary,\n },\n border: {\n default: isDark ? 'rgba(44, 111, 231, 0.3)' : 'rgba(44, 111, 231, 0.25)',\n },\n },\n },\n size: {\n sm: {\n height: '18px', // 小号标签高度(Figma 设计)\n fontSize: '10px', // H11-最小标签字号(Figma 设计)\n lineHeight: '16px', // 行高\n paddingInline: global.spacing.sm, // 8px 左右内边距\n gap: global.spacing.xs, // 4px 图标和文字间距\n iconSize: '12px', // 图标尺寸\n closeIconSize: '8px', // 关闭图标尺寸\n },\n md: {\n height: '24px', // 中号标签高度(Figma 设计)\n fontSize: '10px', // H11-最小标签字号(Figma 设计)\n lineHeight: '16px', // 行高\n paddingInline: global.spacing.sm, // 8px 左右内边距\n gap: global.spacing.xs, // 4px 图标和文字间距\n iconSize: '14px', // 图标尺寸\n closeIconSize: '10px', // 关闭图标尺寸\n },\n lg: {\n height: '32px',\n fontSize: global.typography.fontSize.xs, // 12px\n lineHeight: '20px',\n paddingInline: global.spacing.md, // 12px\n gap: global.spacing.sm, // 8px\n iconSize: '16px',\n closeIconSize: '12px',\n },\n },\n fontWeight: global.typography.fontWeight.regular, // 400\n borderRadius: global.radii.r2, // 4px - 最小组件圆角\n transition: '0.2s ease',\n disabled: {\n opacity: 0.5,\n },\n };\n};\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { SkeletonTokens } from '../types/component-tokens.types';\n\nexport const getSkeletonTokens: TokenGenerator<SkeletonTokens> = ({ global, mode }) => {\n const isDark = mode === 'dark';\n return {\n background: {\n base: isDark ? 'rgba(148, 163, 184, 0.12)' : 'rgba(10, 24, 51, 0.05)',\n highlight: isDark ? 'rgba(148, 163, 184, 0.22)' : 'rgba(10, 24, 51, 0.12)',\n },\n animation: {\n duration: '1.4s',\n easing: 'ease-in-out',\n },\n radius: {\n sm: global.radii.r2,\n md: global.radii.r3,\n lg: global.radii.r4,\n pill: global.radii.r5,\n circle: global.radii.r0,\n },\n block: {\n height: '16px',\n },\n text: {\n lineHeight: '12px',\n gap: global.spacing.sm,\n lastLineWidth: '62%',\n },\n circle: {\n size: '40px',\n },\n };\n};\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { StepperTokens } from '../types/component-tokens.types';\n\nexport const getStepperTokens: TokenGenerator<StepperTokens> = ({ global, semantic, mode }) => {\n const isDark = mode === 'dark';\n return {\n circle: {\n size: {\n md: '32px',\n sm: '24px',\n },\n fontSize: {\n md: global.typography.fontSize.sm,\n sm: global.typography.fontSize.xs,\n },\n iconSize: {\n md: '14px',\n sm: '10px',\n },\n },\n dot: {\n size: {\n md: '10px',\n sm: '8px',\n },\n pulseColor: isDark ? 'rgba(44, 111, 231, 0.35)' : 'rgba(44, 111, 231, 0.25)',\n },\n line: {\n color: {\n default: semantic.colors.border.primary,\n active: semantic.colors.brand.primary,\n },\n size: '1px',\n },\n text: {\n title: {\n color: {\n default: semantic.colors.text.primary,\n active: semantic.colors.brand.primary,\n error: semantic.colors.state.danger,\n waiting: semantic.colors.text.tertiary,\n },\n fontWeight: global.typography.fontWeight.medium,\n fontSize: global.typography.fontSize.sm,\n },\n description: {\n color: semantic.colors.text.secondary,\n fontSize: global.typography.fontSize.xs,\n },\n },\n state: {\n process: {\n color: semantic.colors.brand.primary,\n bg: semantic.colors.brand.primary,\n },\n wait: {\n color: semantic.colors.text.tertiary,\n bg: isDark ? 'rgba(148, 163, 184, 0.2)' : global.colors.neutral[200],\n },\n finish: {\n color: semantic.colors.brand.primary,\n bg: isDark ? 'rgba(44, 111, 231, 0.15)' : semantic.colors.brand.primarySubtle,\n },\n error: {\n color: semantic.colors.state.danger,\n bg: isDark ? 'rgba(170, 14, 41, 0.15)' : semantic.colors.state.dangerSubtle,\n },\n },\n gap: global.spacing.sm,\n };\n};\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { MenuTokens } from '../types/component-tokens.types';\n\nexport const getMenuTokens: TokenGenerator<MenuTokens> = ({ global, semantic, mode }) => {\n const isDark = mode === 'dark';\n return {\n container: {\n width: {\n expanded: '240px', // 展开宽度(Figma 设计)\n collapsed: '68px', // 折叠宽度(Figma 设计)\n },\n background: isDark ? semantic.colors.background.surface : global.colors.common.white,\n border: `1px solid ${semantic.colors.border.primary}`,\n padding: global.spacing.lg, // 16px 左右内边距\n },\n item: {\n height: '40px', // 菜单项高度(Figma 设计)\n paddingInline: global.spacing.lg, // 16px 左右内边距\n fontSize: global.typography.fontSize.sm, // 14px\n fontWeight: global.typography.fontWeight.regular, // 400\n iconSize: '20px', // 图标尺寸(Figma 设计)\n gap: global.spacing.sm, // 8px 图标和文字间距\n borderRadius: global.radii.r3, // 4px 圆角\n background: {\n default: 'transparent',\n hover: isDark ? semantic.colors.background.surfaceStrong : semantic.colors.background.surfaceSubtle, // hover 背景\n active: isDark ? 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.2) 100%)' \n : 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.15) 100%)', // 选中渐变背景\n },\n text: {\n default: semantic.colors.text.primary,\n hover: semantic.colors.text.primary,\n active: semantic.colors.text.primary,\n },\n transition: '0.2s ease',\n },\n subItem: {\n paddingLeft: '20px', // 子菜单左缩进(Figma 设计有4px额外缩进)\n background: {\n default: 'transparent',\n hover: isDark ? semantic.colors.background.surfaceStrong : semantic.colors.background.surfaceSubtle,\n active: isDark ? 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.2) 100%)' \n : 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.15) 100%)',\n },\n },\n group: {\n marginTop: global.spacing.xl, // 24px 分组上边距\n marginBottom: global.spacing.md, // 12px 分组下边距\n gap: global.spacing.xs, // 4px 项目间距\n },\n groupTitle: {\n height: '18px', // 标题高度(Figma 设计)\n fontSize: global.typography.fontSize.xs, // 12px\n fontWeight: global.typography.fontWeight.regular, // 400\n color: semantic.colors.text.secondary, // 辅助文字颜色\n paddingInline: '0',\n marginBottom: global.spacing.sm, // 8px 标题下边距\n },\n scrollbar: {\n width: '8px', // 滚动条宽度(Figma 设计)\n thumbColor: isDark ? 'rgba(255, 255, 255, 0.2)' : 'rgba(0, 0, 0, 0.2)', // 滑块颜色\n trackColor: 'transparent', // 轨道颜色\n },\n popover: {\n background: isDark ? semantic.colors.background.surface : global.colors.common.white,\n border: `1px solid ${semantic.colors.border.primary}`,\n borderRadius: global.radii.r4, // 8px 圆角\n boxShadow: isDark ? '0 4px 12px rgba(0, 0, 0, 0.4)' : '0 4px 12px rgba(0, 0, 0, 0.08)', // 悬浮层阴影\n padding: global.spacing.xs, // 4px 内边距\n item: {\n background: {\n default: 'transparent',\n hover: isDark ? semantic.colors.background.surfaceStrong : semantic.colors.background.surfaceSubtle,\n active: isDark ? 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.2) 100%)' \n : 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.15) 100%)',\n },\n text: {\n default: semantic.colors.text.primary,\n hover: semantic.colors.text.primary,\n active: semantic.colors.brand.primary,\n },\n },\n },\n };\n};\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { LinkTokens } from '../types/component-tokens.types';\n\nexport const getLinkTokens: TokenGenerator<LinkTokens> = ({ semantic }) => {\n return {\n variant: {\n primary: {\n text: {\n default: semantic.colors.brand.primary, // B5 #2c6fe7\n hover: '#2468f2', // Brand B6 (Brighter)\n active: '#2055c6', // Brand Click #2055c6\n disabled: semantic.colors.text.disabled, // F8\n },\n decoration: {\n default: 'none',\n hover: 'none',\n },\n },\n neutral: {\n text: {\n default: semantic.colors.text.primary, // F2 #0a1833e5\n hover: semantic.colors.brand.primary, // B5 #2c6fe7\n active: '#2055c6', // Brand Click\n disabled: semantic.colors.text.disabled,\n },\n decoration: {\n default: 'none',\n hover: 'none',\n },\n },\n },\n size: {\n sm: {\n fontSize: '12px',\n },\n md: {\n fontSize: '14px',\n },\n lg: {\n fontSize: '16px',\n },\n },\n transition: '0.2s ease',\n borderRadius: '4px',\n focusRing: {\n color: semantic.colors.brand.primary,\n offset: '2px',\n },\n };\n};\n","/**\n * Modal 组件 Token\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n */\n\nimport { TokenGenerator } from '../types/theme-utils';\nimport { ModalTokens } from '../types/component-tokens.types';\n\nexport const getModalTokens: TokenGenerator<ModalTokens> = ({ global, semantic, mode }) => ({\n // 尺寸配置\n size: {\n sm: {\n width: '400px',\n maxWidth: '90vw',\n padding: global.spacing.lg, // 16px\n headerPadding: `${global.spacing.lg} ${global.spacing.xl}`, // 16px 24px\n footerPadding: `${global.spacing.md} ${global.spacing.xl}`, // 12px 24px\n titleFontSize: global.typography.fontSize.md, // 16px\n },\n md: {\n width: '520px',\n maxWidth: '90vw',\n padding: global.spacing.xl, // 24px\n headerPadding: `${global.spacing.lg} ${global.spacing.xl}`, // 16px 24px\n footerPadding: `${global.spacing.md} ${global.spacing.xl}`, // 12px 24px\n titleFontSize: global.typography.fontSize.lg, // 18px\n },\n lg: {\n width: '720px',\n maxWidth: '90vw',\n padding: global.spacing.xl, // 24px\n headerPadding: `20px ${global.spacing.xl}`, // 20px 24px\n footerPadding: `${global.spacing.lg} ${global.spacing.xl}`, // 16px 24px\n titleFontSize: global.typography.fontSize.lg, // 18px\n },\n xl: {\n width: '920px',\n maxWidth: '90vw',\n padding: global.spacing.xxl, // 32px\n headerPadding: `${global.spacing.xl} ${global.spacing.xxl}`, // 24px 32px\n footerPadding: `${global.spacing.lg} ${global.spacing.xxl}`, // 16px 32px\n titleFontSize: global.typography.fontSize.lg, // 18px\n },\n fullscreen: {\n width: '100vw',\n maxWidth: '100vw',\n padding: global.spacing.xxl, // 32px\n headerPadding: `${global.spacing.xl} ${global.spacing.xxl}`, // 24px 32px\n footerPadding: `${global.spacing.lg} ${global.spacing.xxl}`, // 16px 32px\n titleFontSize: global.typography.fontSize.lg, // 18px\n },\n },\n\n // 遮罩层\n overlay: {\n background: mode === 'light'\n ? 'rgba(10, 24, 51, 0.45)' // 亮色主题使用深色遮罩\n : 'rgba(0, 0, 0, 0.65)', // 暗色主题使用更深的遮罩\n backdropFilter: 'blur(4px)', // 毛玻璃效果\n },\n\n // 容器样式\n container: {\n background: semantic.colors.background.surface,\n borderRadius: global.radii.r5, // 12px - 中型容器圆角\n boxShadow: global.shadows.l4, // 弹窗投影\n border: mode === 'light'\n ? 'none'\n : `1px solid ${semantic.colors.border.primary}`,\n maxHeight: '85vh',\n },\n\n // 头部样式\n header: {\n background: 'transparent',\n borderBottom: `1px solid ${semantic.colors.border.divider}`,\n minHeight: '56px',\n gap: global.spacing.sm, // 8px\n },\n\n // 标题样式\n title: {\n color: semantic.colors.text.primary,\n fontWeight: global.typography.fontWeight.semibold, // 600\n lineHeight: '1.4',\n },\n\n // 副标题/描述样式\n description: {\n color: semantic.colors.text.secondary,\n fontSize: global.typography.fontSize.sm, // 14px\n lineHeight: '1.5',\n marginTop: global.spacing.xs, // 4px\n },\n\n // 关闭按钮\n closeButton: {\n size: '32px',\n iconSize: '16px',\n color: semantic.colors.text.tertiary,\n hoverColor: semantic.colors.text.primary,\n hoverBackground: semantic.colors.background.surfaceStrong,\n borderRadius: global.radii.r3, // 6px\n },\n\n // 内容区域\n content: {\n color: semantic.colors.text.primary,\n fontSize: global.typography.fontSize.sm, // 14px\n lineHeight: '1.6',\n maxHeight: 'calc(85vh - 160px)', // 减去头部和底部高度\n },\n\n // 底部样式\n footer: {\n background: 'transparent',\n borderTop: `1px solid ${semantic.colors.border.divider}`,\n minHeight: '56px',\n gap: global.spacing.sm, // 8px\n justifyContent: 'flex-end',\n },\n\n // 动画配置\n animation: {\n duration: '0.25s',\n easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', // 弹性曲线\n scaleFrom: '0.95',\n scaleTo: '1',\n },\n\n // 层级\n zIndex: {\n overlay: 1000,\n container: 1001,\n },\n\n // 过渡\n transition: '0.2s ease',\n});\n\n\n","import {\n AppTheme,\n globalColors,\n globalSpacing,\n globalRadii,\n globalTypography,\n globalShadows,\n globalGradients,\n lightSemantic,\n darkSemantic,\n SemanticColors,\n SemanticSpacing,\n SemanticBorderRadius,\n SemanticTypography,\n SemanticShadows,\n} from '@kingsoft-ai/theme';\nimport { ThemeContext } from './types/theme-utils';\nimport { ComponentTokens } from './types/component-tokens.types';\n\nimport { getButtonTokens, getIconButtonTokens } from './button/tokens';\nimport { getCheckboxTokens } from './checkbox/tokens';\nimport { getRadioTokens } from './radio/tokens';\nimport { getSwitchTokens } from './switch/tokens';\nimport { getInputTokens } from './input/tokens';\nimport { getSelectTokens } from './select/tokens';\nimport { getNumberFieldTokens } from './numberInput/tokens';\nimport { getCollapseTokens } from './collapse/tokens';\nimport { getTagTokens } from './tag/tokens';\nimport { getSkeletonTokens } from './skeleton/tokens';\nimport { getStepperTokens } from './stepper/tokens';\nimport { getMenuTokens } from './menu/tokens';\nimport { getLinkTokens } from './link/tokens';\nimport { getModalTokens } from './modal/tokens';\n\nexport const createComponentTokens = (context: ThemeContext): ComponentTokens => ({\n button: getButtonTokens(context),\n iconButton: getIconButtonTokens(context),\n checkbox: getCheckboxTokens(context),\n radio: getRadioTokens(context),\n switch: getSwitchTokens(context),\n input: getInputTokens(context),\n select: getSelectTokens(context),\n numberfield: getNumberFieldTokens(context),\n collapse: getCollapseTokens(context),\n tag: getTagTokens(context),\n skeleton: getSkeletonTokens(context),\n stepper: getStepperTokens(context),\n menu: getMenuTokens(context),\n link: getLinkTokens(context),\n modal: getModalTokens(context),\n});\n\ninterface SemanticTheme {\n colors: SemanticColors;\n spacing: SemanticSpacing;\n borderRadius: SemanticBorderRadius;\n typography: SemanticTypography;\n shadows: SemanticShadows;\n}\n\nexport const createDesignTheme = (\n semantic: SemanticTheme,\n mode: 'light' | 'dark' = 'light'\n): AppTheme => {\n const global = {\n colors: globalColors,\n spacing: globalSpacing,\n radii: globalRadii,\n typography: globalTypography,\n shadows: globalShadows,\n gradients: globalGradients,\n };\n\n const context: ThemeContext = {\n global,\n semantic,\n mode,\n };\n\n return {\n global,\n semantic,\n components: createComponentTokens(context),\n };\n};\n\nexport const defaultLightDesignTheme = createDesignTheme(lightSemantic, 'light');\nexport const defaultDarkDesignTheme = createDesignTheme(darkSemantic, 'dark');\n\n","/**\n * Design 组件的主题提供者\n * \n * 这是一个便捷的包装器,自动使用默认的设计主题\n * 用户可以直接使用而不需要手动导入 theme\n */\n\nimport type { ReactNode } from 'react'\nimport { CustomThemeProvider } from '@kingsoft-ai/theme'\nimport { defaultLightDesignTheme, defaultDarkDesignTheme } from './theme'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\nexport interface DesignThemeProviderProps {\n /** 子组件 */\n children: ReactNode\n /** \n * 主题模式\n * @default 'light'\n */\n mode?: 'light' | 'dark'\n /**\n * 自定义主题对象(可选)\n * 如果提供,将覆盖默认主题\n */\n theme?: AppTheme\n}\n\n/**\n * Design 组件主题提供者\n * \n * @example\n * ```tsx\n * // 使用默认亮色主题\n * <DesignThemeProvider>\n * <Button>点击我</Button>\n * </DesignThemeProvider>\n * \n * // 使用暗色主题\n * <DesignThemeProvider mode=\"dark\">\n * <Button>点击我</Button>\n * </DesignThemeProvider>\n * \n * // 使用自定义主题\n * <DesignThemeProvider theme={customTheme}>\n * <Button>点击我</Button>\n * </DesignThemeProvider>\n * ```\n */\nexport const DesignThemeProvider = ({ \n children, \n mode = 'light',\n theme \n}: DesignThemeProviderProps) => {\n // 如果提供了自定义主题,使用自定义主题;否则根据 mode 选择默认主题\n const selectedTheme = theme ?? (mode === 'dark' ? defaultDarkDesignTheme : defaultLightDesignTheme)\n \n return (\n <CustomThemeProvider theme={selectedTheme}>\n {children}\n </CustomThemeProvider>\n )\n}\n\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","$bdb11010cef70236$export$d41a04c74483c6ef","heldValue","$bdb11010cef70236$export$cd8c9cb68f842629","idA","idB","setIdsA","ref","setIdsB","$ff5963eb1fccf552$export$e08e3b67e392101e","callbacks","args","callback","r","e","t","f","o","clsx","$3ef42575df84b30b$export$9d1611c77c2fe928","result","i","a","b","$7jXr9$clsx","$7215afc6de606d6b$export$de79e2c695e052f3","element","$7215afc6de606d6b$var$supportsPreventScroll","scrollableElements","$7215afc6de606d6b$var$getScrollableElements","$7215afc6de606d6b$var$restoreScrollPosition","$7215afc6de606d6b$var$supportsPreventScrollCached","parent","rootScrollingElement","scrollTop","scrollLeft","$458b0a5536c1a7cf$export$40bfa8c7b0832715","defaultValue","onChange","stateValue","setStateValue","$3whtM$useState","isControlledRef","$3whtM$useRef","isControlled","$3whtM$useEffect","wasControlled","currentValue","setValue","$3whtM$useCallback","onChangeCaller","onChangeArgs","oldValue","functionArgs","interceptedValue","buttonVariants","buttonSizes","getVariantStyles","variant","theme","variantToken","components","button","hasShadow","gradientToken","defaultShadow","shadow","default","hoverShadow","hover","css","text","background","gradientFrom","gradientTo","getStateValue","obj","state","getBorderColor","border","getBackground","getSizeStyles","size","sizeToken","height","fontSize","paddingInline","iconSize","ButtonRoot","styled","global","typography","fontFamily","fontWeight","borderRadius","transition","fullWidth","primary","disabled","opacity","ButtonContent","span","gap","IconWrapper","isLoading","Label","VARIANTS","SIZES","Button","forwardRef","icon","loading","isDisabled","className","ariaProps","forwardedRef","innerRef","useRef","finalDisabled","buttonProps","isPressed","useButton","elementType","jsx","mergeProps","undefined","jsxs","animation","iconButtonAppearances","iconButtonTones","iconButtonSizes","appearance","tone","tokens","iconButton","resolve","defaultState","hoverState","activeState","edge","IconButtonRoot","focusRing","width","color","offset","IconSlot","isHidden","LoadingSpinner","ICON_BUTTON_APPEARANCES","ICON_BUTTON_TONES","ICON_BUTTON_SIZES","IconButton","label","loadingLabel","isDevEnvironment","useMemo","globalThis","process","env","NODE_ENV","ariaLabel","ariaLabelledby","console","warn","Boolean","VisuallyHidden","sheetForTag","tag","createStyleElement","options","StyleSheet","_this","before","_proto","nodes","rule","sheet","_tag$parentNode","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","LAYER","abs","from","assign","hash","length","charat","trim","match","pattern","replace","replacement","indexof","search","index","substr","begin","end","strlen","sizeof","append","array","combine","line","column","position","character","characters","root","copy","char","prev","next","peek","caret","slice","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","compile","parse","rules","rulesets","pseudo","points","declarations","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","j","x","z","serialize","output","stringify","middleware","collection","rulesheet","memoize","fn","cache","arg","identifierWithPointTracking","toRules","parsed","getRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","prefix","prefixer","defaultStylisPlugins","createCache","ssrStyles","dataEmotionAttribute","stylisPlugins","inserted","container","nodesToHydrate","attrib","_insert","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","stylis","styles","selector","serialized","shouldCache","c","d","g","h","l","m","n","p","q","v","w","u","A","reactIs_production_min","hasSymbol","REACT_PROVIDER_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","reactIs","FORWARD_REF_STATICS","MEMO_STATICS","TYPE_STATICS","isBrowser","getRegisteredStyles","registered","registeredStyles","classNames","rawClassName","registerStyles","isStringTag","insertStyles","current","murmur2","str","len","unitlessKeys","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","cursor","unitless","handleInterpolation","mergedProps","interpolation","componentSelector","keyframes","serializedStyles","createStringFromObject","previousCursor","asString","string","_i","interpolated","labelPattern","serializeStyles","stringMode","strings","asTemplateStringsArr","templateStringsArr","identifierName","hashString","syncFallback","create","useInsertionEffect","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","withEmotionCache","func","useContext","ThemeContext","hasOwn","typePropName","createEmotionProps","newProps","_key","Insertion","_ref","Emotion","cssProp","WrappedComponent","_key2","Emotion$1","ReactJSXRuntime.jsx","ReactJSXRuntime.jsxs","reactCompilerRuntime_production","reactCompilerRuntime_development","compilerRuntimeModule","checkboxContainer","checkboxControl","checkbox","control","borderWidth","borderColor","checked","disabledChecked","checkboxIcon","checkboxLabel","lineHeight","CheckIcon","t0","$","_c","useTheme","t1","t2","Symbol","for","t3","IndeterminateIcon","Checkbox","controlledChecked","inputProps","style","defaultChecked","indeterminate","inputRef","setHover","useState","internalChecked","setInternalChecked","t4","useEffect","t5","t6","t7","event","newChecked","target","handleChange","t8","t9","t10","t11","t12","t13","t14","t15","t16","F","C","W","n1","Q","R","I","D","G","X","U","B","J","O","s","M","S","V","Y","E","K","T","L","e1","Z","y","N","r1","_","P","l1","o1","i1","s1","a1","u1","d1","c1","C1","f1","h1","L1","m1","x1","j1","v1","k1","R1","O1","M1","_1","E1","y1","w1","b1","T1","N1","checkboxButtonSizeTokens","sm","paddingX","paddingY","minHeight","checkmarkSize","checkmarkIcon","md","lg","checkboxButtonContainer","checkboxButtonWrapper","colors","neutral","common","white","blue","checkboxButtonCheckmark","CheckboxButton","CheckOutline","slideDown","slideUp","CollapseRoot","div","collapse","CollapseItemWrapper","isLast","divider","CollapseHeader","padding","header","arrow","ArrowWrapper","arrowSize","isExpanded","TitleWrapper","TitleText","title","SuffixWrapper","CollapseContentWrapper","contentHeight","CollapseContentInner","content","ContentText","Collapse","activeKey","activeKeyProp","defaultActiveKey","accordion","internalActiveKey","setInternalActiveKey","Array","isArray","activeKeys","itemKey","expanded","newActiveKey","currentKeys","filter","items","Children","toArray","itemCount","map","child","itemKey_0","expanded_0","includes","last","cloneElement","renderChildren","CollapseItem","suffix","contentRef","setContentHeight","scrollHeight","handleToggle","preventDefault","handleKeyDown","ChevronDownOutline","t17","t18","t19","t20","t21","isFocused","isError","isHovered","input","error","focus","InputRoot","InputWrapper","StyledInput","placeholder","ClearButton","counter","Counter","CloseIcon","Input","clearable","errorMessage","showCounter","onFocus","onBlur","maxLength","description","id","ariaDescribedBy","restProps","generatedId","Math","random","toString","setIsFocused","setIsHovered","internalValue","setInternalValue","String","handleFocus","handleBlur","handleClear","nativeInputValueSetter","Object","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","set","call","Event","bubbles","defineProperty","writable","currentLength","showClearButton","inputId","descriptionId","errorId","describedBy","join","display","marginBottom","marginTop","MenuContainer","collapsed","menu","scrollbar","trackColor","thumbColor","MenuContent","MenuItemContainer","item","isSubItem","subItem","paddingLeft","active","semantic","brand","primaryActive","MenuItemIcon","MenuItemLabel","MenuItemArrow","MenuGroupContainer","group","MenuGroupTitle","groupTitle","MenuGroupItems","SubMenuPopoverContainer","popover","boxShadow","SubMenuPopoverContent","SubMenuPopoverItem","Menu","SubMenuPopover","visible","anchorRef","onClose","onMouseEnter","onMouseLeave","popoverRef","top","left","setPosition","updatePosition","rect","getBoundingClientRect","right","addEventListener","removeEventListener","handleClickOutside","contains","timer","setTimeout","document","clearTimeout","createPortal","body","MenuItem","showArrow","arrowExpanded","subMenu","onClick","itemRef","showPopover","setShowPopover","hoverTimerRef","closeTimerRef","clearTimers","handleMouseEnter","handleMouseLeave","MenuGroup","SubMenuItem","link","decoration","LinkRoot","Link","linkProps","useLink","ariaDisabled","modalSizes","fadeIn","fadeOut","scaleIn","scaleOut","slideInFromBottom","slideOutToBottom","isFullscreen","modal","maxWidth","getAnimationStyles","isOpen","isClosing","animationType","duration","easing","scale","enter","exit","slide","fade","ModalOverlay","zIndex","overlay","backdropFilter","ModalPortalContainer","ModalContainer","centered","maxHeight","ModalHeader","headerPadding","borderBottom","ModalTitleWrapper","ModalTitle","h2","titleFontSize","ModalDescription","ModalCloseButton","closeButton","hoverColor","hoverBackground","ModalContent","strong","ModalFooter","footer","justifyContent","footerPadding","borderTop","getFocusableElements","elements","querySelectorAll","el","hasAttribute","getAttribute","Modal","open","fullscreen","closable","maskClosable","keyboard","mask","destroyOnClose","contentClassName","afterClose","afterOpen","closeIcon","ariaLabelledBy","containerRef","previousActiveElement","isRendered","setIsRendered","setIsClosing","hasEverOpened","setHasEverOpened","titleId","getContainer","useCallback","activeElement","originalOverflow","overflow","originalPaddingRight","paddingRight","scrollbarWidth","innerWidth","documentElement","clientWidth","modalElement","handleClose","stopPropagation","focusableElements","firstElement","lastElement","shiftKey","handleOverlayClick","currentTarget","handleCloseButtonClick","actualSize","mountContainer","hasHeader","hasFooter","modalContent","getDisabledStyles","backgroundColor","numberfield","NumberRoot","NumberGroup","side","inset","controls","arrows","widthsm","widthLg","NumberField","Description","ArrowGroup","ArrowButton","direction","buttonSizeSm","buttonSizeLg","SideButton","PlusIcon","PlusOutline","MinusIcon","MinusOutline","UpIcon","ChevronUpOutline","DownIcon","NumberInput","max","min","onChangeValue","onValueChange","rest","step","internal","setInternal","clamp","v_0","triggerValueChange","v_1","nativeSetter","ev","raw","Number","final","isNaN","handleInputChange","next_0","increment","next_1","decrement","e_0","atMin","atMax","t22","t23","t24","t25","t26","RadioWrapper","shouldForwardProp","prop","alignItems","radio","RadioRoot","borderStyle","flexShrink","RadioNative","margin","transform","indicator","RadioIndicator","RadioText","flexDirection","minWidth","RadioLabel","RadioDescription","Radio","skeletonVariants","skeletonRadii","shimmerKeyframes","shimmerMixin","skeleton","highlight","SkeletonRoot","base","$variant","$radius","radius","circle","$width","$height","block","$animate","SkeletonStack","SkeletonLine","pill","$customWidth","$isLast","lastLineWidth","toCssSize","Skeleton","lines","animate","loaded","resolvedWidth","resolvedHeight","lineCount","shouldRenderStack","accessibilityProps","role","dotPulse","StepperRoot","orientation","StepRoot","labelPlacement","stepper","StepIconContainer","dot","status","bgColor","pulseColor","bg","StepContent","StepTitle","titleColors","waiting","StepDescription","StepConnector","isFinished","iconSizeToken","topPos","parseInt","Stepper","T0","steps","stepProps","Step","CloseOutline","renderIcon","resolvedLabelPlacement","shouldRenderIcon","iconContent","showVerticalLine","showHorizontalLine","progressTypes","progressSizes","progressStatuses","getStatusColor","normal","danger","warning","success","LineProgressRoot","LineProgressTrack","secondary","LineProgressBar","percent","ProgressText","StatusIcon","LineProgressInfo","CircleProgressRoot","CircleProgressSvg","svg","CircleProgressTrack","CircleProgressBar","CircleProgressContent","CircleProgressIcon","TYPES","STATUSES","SuccessIcon","ErrorIcon","WarningIcon","getStatusIcon","Progress","showPercent","showIcon","minValue","maxValue","progressBarProps","labelProps","useProgressBar","shouldShowIcon","round","circleSize","strokeWidth","getSizeConfig","circumference","PI","strokeDashoffset","showPercentInCircle","$e5be200c675c3b3a$export$aca958c65c314e6c","$e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE","$e5be200c675c3b3a$export$dad6ae84456c676a","$e5be200c675c3b3a$export$571b5131b7e65c11","$69F46$createContext","$e5be200c675c3b3a$export$a763b9476acd3eb","$e5be200c675c3b3a$export$fc1a364ae1f3ff10","realtimeValidation","displayValidation","updateValidation","resetValidation","commitValidation","$e5be200c675c3b3a$var$useFormValidationStateImpl","isInvalid","validationState","builtinValidation","validate","validationBehavior","controlledError","clientError","$69F46$useMemo","validateErrors","$e5be200c675c3b3a$var$runValidate","$e5be200c675c3b3a$var$getValidationResult","serverErrors","$69F46$useContext","serverErrorMessages","$e5be200c675c3b3a$var$asArray","lastServerErrors","setLastServerErrors","$69F46$useState","isServerErrorCleared","setServerErrorCleared","serverError","nextValidation","$69F46$useRef","currentValidity","setCurrentValidity","lastError","commitQueued","setCommitQueued","$e5be200c675c3b3a$var$isEqualValidation","$69F46$useEffect","errors","$a02d57049d202695$export$d085fb9e920b5ca7","_node_prevKey","_node_nextKey","_this_keyMap_get","idx","visit","_last_key","$e40ea825a81a3709$export$52baac22726c72bf","anchorKey","currentKey","$7af3f5b51489e0b5$var$equalSets","setA","setB","$7af3f5b51489e0b5$export$253fe78d46329472","selectionMode","disallowEmptySelection","allowDuplicateSelectionEvents","selectionBehaviorProp","disabledBehavior","isFocusedRef","$6tM1y$useRef","setFocused","$6tM1y$useState","focusedKeyRef","childFocusStrategyRef","setFocusedKey","selectedKeysProp","$6tM1y$useMemo","$7af3f5b51489e0b5$var$convertSelection","defaultSelectedKeys","selectedKeys","setSelectedKeys","$6tM1y$useControlledState","disabledKeysProp","selectionBehavior","setSelectionBehavior","lastSelectionBehavior","$6tM1y$useEffect","childFocusStrategy","selection","$c1d7fb2ec91bae71$var$Item","context","childItems","rendered","textValue","$c1d7fb2ec91bae71$var$hasChildItems","$6Fm0V$react","$c1d7fb2ec91bae71$export$6d08773d2e66f8f2","$9fc4852771d079eb$var$Section","$gtysd$react","$9fc4852771d079eb$export$6e2c8f0811a474ce","$eb2240fc39a57fa5$export$bf788dd355e3a401","$eb2240fc39a57fa5$var$iterable","$fzaAv$react","partialNode","parentKey","_v_key","parentNode","_partialNode_index","cached","childNodes","_partialNode_index1","childNode","_childNode_key","nodeKey","$eb2240fc39a57fa5$var$compose","_childNode_value","_parentNode_type","$eb2240fc39a57fa5$var$capitalize","builder","_partialNode_value","_partialNode_textValue","iterator","iterable","outer","inner","$7613b1592d41b092$export$6cd28814d92fa9c9","factory","$lbNth$useMemo","$c5a24bc478652b5f$export$1005530eda016c13","$c5a24bc478652b5f$export$fbdeaa6a76694f71","$c5a24bc478652b5f$export$5f3398f8733f90e2","$c5a24bc478652b5f$export$8c434b3a7a4dad6","aAncestors","$c5a24bc478652b5f$var$getAncestors","bAncestors","firstNonMatchingAncestor","parents","currNode","$d496c0a20b6e58ec$export$6c8a5aaad13c9852","mappedKey","allKeys","first","$jkhUT$compareNodeOrder","_first_key","toKey","mappedToKey","_selectedKeys_anchorKey","_selectedKeys_currentKey","to","fromItem","toItem","_this_layoutDelegate","addKeys","_getFirstItem","_getFirstItem_key","$jkhUT$getFirstItem","$jkhUT$getChildNodes","_item_props","_this_collection_getItem_props","_this_collection_getItem","_options_allowsCellSelection","$e72dd72e1c76a225$export$2f645645f7bca764","layoutDelegate","selectionState","$d5vlZ$useMultipleSelectionState","disabledKeys","$d5vlZ$useMemo","$d5vlZ$useCallback","$d5vlZ$useCollection","selectionManager","$d5vlZ$SelectionManager","$e72dd72e1c76a225$var$useFocusedKeyReset","cachedCollection","$d5vlZ$useRef","$d5vlZ$useEffect","startItem","cachedItemNodes","itemNode","itemNodes","_cachedItemNodes_length","_itemNodes_length","diff","_startItem_index","_startItem_index1","_itemNodes_length1","newNode","isReverseSearching","_startItem_index2","_startItem_index3","$fc909762b330b746$export$61c6a8c84e605fb6","setOpen","$hnMvi$useControlledState","$hnMvi$useCallback","close","toggle","$2bc3a590c5373a4e$export$5159ec8b34d4ec12","triggerState","$6FfNf$useOverlayTriggerState","focusStrategy","setFocusStrategy","$6FfNf$useState","$6FfNf$useMemo","_props_defaultSelectedKey","controlledValue","setControlledValue","$6FfNf$useControlledState","displayValue","_props_onSelectionChange","_value_","listState","$6FfNf$useListState","$2bc3a590c5373a4e$var$convertValue","_keys_values_next_value","selectedKey","selectedItems","$6FfNf$useFormValidationState","initialValue","_selectedItems_","bordered","colorToken","checkedHover","checkedActive","TagRoot","TagContent","CloseButton","closeIconSize","AddButton","Tag","checkable","actualVariant","isChecked","handleClick","TagAdd","Add","selectSizes","select","isMultiple","SelectWrapper","SelectTrigger","SelectValue","isPlaceholder","SelectIcon","ListBoxPopup","ListBoxContent","ul","OptionItem","li","option","isSelected","selected","focused","OptionText","OptionIcon","LoadingWrapper","xs","EmptyState","TagsContainer","CheckboxWrapper","Popover","triggerRef","placement","triggerWidth","setTriggerWidth","useLayoutEffect","shouldCloseOnBlur","isDismissable","overlayProps","overlayPropsFromUseOverlay","useOverlay","targetRef","overlayRef","resolvedPlacement","useOverlayPosition","onInteractOutside","trigger","DismissButton","Overlay","FocusScope","ListBox","listBoxProps","useListBox","Option","optionProps","useOption","_temp","MultiListBox","SelectInner","maxTagCount","defaultSelectedKey","onSelectionChange","finalSelectedKey","finalSelectedKeys","finalDefaultSelectedKey","finalDefaultSelectedKeys","handleSelectionChange","renderItems","Item","lastPointerTypeRef","singleState","useSelectState","multiState","useListState","multiOpen","setMultiOpen","effectiveOpen","selectedKeySet","has","push","visibleTags","overflowCount","triggerProps","valueProps","menuProps","descriptionProps","errorMessageProps","useSelect","handlePressStart","pointerType","focusWithoutScrolling","handlePress","onPressStart","onPress","handleRemoveTag","newKeys","Set","delete","renderTriggerContent","selectedItem","popoverState","HiddenSelect","marginRight","Select","Section","tableSizes","tableVariants","tableBorderRadiusMap","getTableRadius","TableContainer","showScrollbar","scrollX","scrollY","StyledTable","table","component","fontSizeSm","surface","surfaceSubtle","TableHeader","thead","TableHeaderRow","tr","TableHeaderCell","th","align","caption","fixed","sortable","surfaceStrong","SortIndicator","TableBody","tbody","TableRow","isSubRow","primarySubtle","selectable","expandable","TableCell","td","level","CheckboxCell","ExpandButton","tertiary","CellContent","ellipsis","wrapText","TableInner","columns","dataSource","scroll","controlledSelectedKeys","expandedKeys","controlledExpandedKeys","onExpandChange","expandedRowRender","sortConfig","onSortChange","onRowClick","emptyText","internalSelectedKeys","setInternalSelectedKeys","internalExpandedKeys","setInternalExpandedKeys","isScrollbarVisible","setIsScrollbarVisible","scrollHideTimerRef","handleExpandChange","add","handleSort","newDirection","allSelected","every","record","selectedCount","handleScroll","passive","renderRows","data","flatMap","hasChildren","mainRow","colIndex","isFirstColumn","ChevronRightOutline","render","expandedRow","childRows","textAlign","TableWithRef","Table","$3017fa7ffdddec74$export$8042c6c013fd5226","isReadOnly","setSelected","$d8rik$useControlledState","$d8rik$useState","updateSelected","toggleState","_props_defaultSelected","switchSizes","switch","thumbSize","SwitchRoot","unchecked","hasInnerLabel","isFocusVisible","SwitchContent","SwitchLabel","SwitchThumb","thumb","SwitchLabelWrapper","SwitchLabelText","Switch","checkedLabel","defaultSelected","uncheckedLabel","finalIsSelected","finalDefaultSelected","useToggleState","useSwitch","focusProps","useFocusRing","currentLabel","switchElement","uploadStatuses","UploadRoot","UploadDropzone","isDragActive","UploadIconWrapper","UploadTextWrapper","UploadMainText","UploadSecondaryText","UploadLink","FileList","FileItem","FileInfoRow","FileIcon","FileName","DeleteButton","ProgressWrapper","ProgressTrack","ProgressBar","HiddenInput","DefaultUploadIcon","FileIconSvg","DeleteIcon","generateUid","Date","now","Upload","accept","multiple","maxSize","maxCount","fileList","controlledFileList","defaultFileList","beforeUpload","customRequest","mainText","secondaryText","fileTypeHint","downloadTemplateText","onDownloadTemplate","dropzoneRef","internalFileList","setInternalFileList","setIsDragActive","newFileList","updateFileList","handleFiles","files","filesArray","newFiles","file","uploadFile","uid","updatedFileList","forEach","uploadFile_0","onProgress","onSuccess","f_0","onError","error_0","f_1","message","simulateUpload","currentFileList","percent_0","interval","setInterval","clearInterval","f_2","f_3","handleDragEnter","e_1","handleDragLeave","handleDragOver","e_3","files_0","dataTransfer","handleDrop","click","uid_0","newFileList_0","f_4","handleDelete","renderStatusIcon","_temp2","e_4","file_0","e_2","getButtonTokens","primaryHover","onBrand","dangerHover","dangerActive","dangerOn","gradient","gradients","blueViolet","spacing","radii","r3","regular","getIconButtonTokens","solid","outline","dangerSubtle","ghost","getCheckboxTokens","r2","word","getRadioTokens","getSwitchTokens","r5","getInputTokens","getSelectTokens","getNumberFieldTokens","getCollapseTokens","getTagTokens","mode","isDark","red","orange","yellow","green","lavender","lilac","carmine","rose","mint","olive","getSkeletonTokens","r4","r0","getStepperTokens","medium","wait","finish","getMenuTokens","xl","getLinkTokens","getModalTokens","xxl","shadows","l4","semibold","scaleFrom","scaleTo","createComponentTokens","createDesignTheme","globalColors","globalSpacing","globalRadii","globalTypography","globalShadows","globalGradients","defaultLightDesignTheme","lightSemantic","defaultDarkDesignTheme","darkSemantic","DesignThemeProvider","selectedTheme","CustomThemeProvider"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,67,68,69,70,71,72,73,74,75,76,77,78,79,88]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/useLayoutEffect.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/useId.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/chain.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/domHelpers.mjs","../../../node_modules/.pnpm/@react-stately+flags@3.1.2/node_modules/@react-stately/flags/dist/import.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/DOMFunctions.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/ShadowTreeWalker.mjs","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/mergeProps.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/focusWithoutScrolling.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/platform.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/runAfterTransition.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/isVirtualEvent.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/isElementVisible.mjs","../../../node_modules/.pnpm/@react-aria+utils@3.31.0_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/utils/dist/isFocusable.mjs","../../../node_modules/.pnpm/@react-stately+utils@3.10.8_react@19.2.0/node_modules/@react-stately/utils/dist/useControlledState.mjs","../src/button/Button.style.ts","../src/button/Button.tsx","../src/button/IconButton.style.ts","../src/button/IconButton.tsx","../../../node_modules/.pnpm/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Enum.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Utility.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Parser.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Serializer.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Middleware.js","../../../node_modules/.pnpm/@emotion+memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js","../../../node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../../../node_modules/.pnpm/@emotion+hash@0.9.2/node_modules/@emotion/hash/dist/emotion-hash.esm.js","../../../node_modules/.pnpm/@emotion+unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../node_modules/.pnpm/@emotion+serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../../../node_modules/.pnpm/@emotion+use-insertion-effect-with-fallbacks@1.2.0_react@19.2.0/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@19.2.2_react@19.2.0/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js","../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@19.2.2_react@19.2.0/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js","../src/checkbox/Checkbox.style.ts","../src/checkbox/Checkbox.tsx","../../icons/dist/index.mjs","../src/checkbox/CheckboxButton.style.ts","../src/checkbox/CheckboxButton.tsx","../src/collapse/Collapse.style.ts","../src/collapse/Collapse.tsx","../src/collapse/CollapseItem.tsx","../src/floatButton/FloatButton.style.ts","../src/floatButton/FloatButton.tsx","../src/input/Input.style.ts","../src/input/Input.tsx","../src/menu/Menu.style.ts","../src/menu/Menu.tsx","../src/menu/SubMenuPopover.tsx","../src/menu/MenuItem.tsx","../src/menu/MenuGroup.tsx","../src/menu/SubMenuItem.tsx","../src/link/Link.style.ts","../src/link/Link.tsx","../../../node_modules/.pnpm/@react-aria+interactions@3.25.6_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/interactions/dist/utils.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.25.6_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/interactions/dist/useFocusVisible.mjs","../../../node_modules/.pnpm/@react-aria+interactions@3.25.6_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/interactions/dist/focusSafely.mjs","../../../node_modules/.pnpm/@react-aria+focus@3.21.2_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@react-aria/focus/dist/FocusScope.mjs","../src/modal/Modal.style.ts","../src/modal/Modal.tsx","../src/numberInput/NumberInput.style.ts","../src/numberInput/NumberInput.tsx","../src/radio/Radio.style.ts","../src/radio/Radio.tsx","../src/skeleton/Skeleton.style.ts","../src/skeleton/Skeleton.tsx","../src/stepper/Stepper.style.ts","../src/stepper/Stepper.tsx","../src/stepper/Step.tsx","../src/progress/Progress.style.ts","../src/progress/Progress.tsx","../../../node_modules/.pnpm/@react-stately+form@3.2.2_react@19.2.0/node_modules/@react-stately/form/dist/useFormValidationState.mjs","../../../node_modules/.pnpm/@react-stately+list@3.13.1_react@19.2.0/node_modules/@react-stately/list/dist/ListCollection.mjs","../../../node_modules/.pnpm/@react-stately+selection@3.20.6_react@19.2.0/node_modules/@react-stately/selection/dist/Selection.mjs","../../../node_modules/.pnpm/@react-stately+selection@3.20.6_react@19.2.0/node_modules/@react-stately/selection/dist/useMultipleSelectionState.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/Item.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/Section.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/CollectionBuilder.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/useCollection.mjs","../../../node_modules/.pnpm/@react-stately+collections@3.12.8_react@19.2.0/node_modules/@react-stately/collections/dist/getChildNodes.mjs","../../../node_modules/.pnpm/@react-stately+selection@3.20.6_react@19.2.0/node_modules/@react-stately/selection/dist/SelectionManager.mjs","../../../node_modules/.pnpm/@react-stately+list@3.13.1_react@19.2.0/node_modules/@react-stately/list/dist/useListState.mjs","../../../node_modules/.pnpm/@react-stately+overlays@3.6.20_react@19.2.0/node_modules/@react-stately/overlays/dist/useOverlayTriggerState.mjs","../../../node_modules/.pnpm/@react-stately+select@3.8.0_react@19.2.0/node_modules/@react-stately/select/dist/useSelectState.mjs","../src/tag/Tag.style.ts","../src/tag/Tag.tsx","../src/select/Select.style.ts","../src/select/Popover.tsx","../src/select/ListBox.tsx","../src/select/Select.tsx","../src/table/Table.style.ts","../src/table/Table.tsx","../../../node_modules/.pnpm/@react-stately+toggle@3.9.2_react@19.2.0/node_modules/@react-stately/toggle/dist/useToggleState.mjs","../src/switch/Switch.style.ts","../src/switch/Switch.tsx","../src/transfer/Transfer.style.ts","../src/transfer/Transfer.tsx","../src/upload/Upload.style.ts","../src/upload/Upload.tsx","../src/card/Card.style.ts","../src/card/Card.tsx","../src/card/tokens.ts","../src/tooltip/Tooltip.style.ts","../src/tooltip/Tooltip.tsx","../src/button/tokens.ts","../src/floatButton/tokens.ts","../src/checkbox/tokens.ts","../src/radio/tokens.ts","../src/switch/tokens.ts","../src/input/tokens.ts","../src/select/tokens.ts","../src/numberInput/tokens.ts","../src/collapse/tokens.ts","../src/tag/tokens.ts","../src/skeleton/tokens.ts","../src/stepper/tokens.ts","../src/menu/tokens.ts","../src/link/tokens.ts","../src/transfer/tokens.ts","../src/modal/tokens.ts","../src/tooltip/tokens.ts","../src/theme.ts","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/DesignThemeProvider.tsx"],"sourcesContent":["import $HgANd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document !== 'undefined' ? (0, $HgANd$react).useLayoutEffect : ()=>{};\n\n\nexport {$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect};\n//# sourceMappingURL=useLayoutEffect.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useValueEffect as $1dbecbe27a04f9af$export$14d238f342723f25} from \"./useValueEffect.mjs\";\nimport {useState as $eKkEp$useState, useRef as $eKkEp$useRef, useEffect as $eKkEp$useEffect, useCallback as $eKkEp$useCallback} from \"react\";\nimport {useSSRSafeId as $eKkEp$useSSRSafeId} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet $bdb11010cef70236$var$canUseDOM = Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\nlet $bdb11010cef70236$export$d41a04c74483c6ef = new Map();\n// This allows us to clean up the idsUpdaterMap when the id is no longer used.\n// Map is a strong reference, so unused ids wouldn't be cleaned up otherwise.\n// This can happen in suspended components where mount/unmount is not called.\nlet $bdb11010cef70236$var$registry;\nif (typeof FinalizationRegistry !== 'undefined') $bdb11010cef70236$var$registry = new FinalizationRegistry((heldValue)=>{\n $bdb11010cef70236$export$d41a04c74483c6ef.delete(heldValue);\n});\nfunction $bdb11010cef70236$export$f680877a34711e37(defaultId) {\n let [value, setValue] = (0, $eKkEp$useState)(defaultId);\n let nextId = (0, $eKkEp$useRef)(null);\n let res = (0, $eKkEp$useSSRSafeId)(value);\n let cleanupRef = (0, $eKkEp$useRef)(null);\n if ($bdb11010cef70236$var$registry) $bdb11010cef70236$var$registry.register(cleanupRef, res);\n if ($bdb11010cef70236$var$canUseDOM) {\n const cacheIdRef = $bdb11010cef70236$export$d41a04c74483c6ef.get(res);\n if (cacheIdRef && !cacheIdRef.includes(nextId)) cacheIdRef.push(nextId);\n else $bdb11010cef70236$export$d41a04c74483c6ef.set(res, [\n nextId\n ]);\n }\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n let r = res;\n return ()=>{\n // In Suspense, the cleanup function may be not called\n // when it is though, also remove it from the finalization registry.\n if ($bdb11010cef70236$var$registry) $bdb11010cef70236$var$registry.unregister(cleanupRef);\n $bdb11010cef70236$export$d41a04c74483c6ef.delete(r);\n };\n }, [\n res\n ]);\n // This cannot cause an infinite loop because the ref is always cleaned up.\n // eslint-disable-next-line\n (0, $eKkEp$useEffect)(()=>{\n let newId = nextId.current;\n if (newId) setValue(newId);\n return ()=>{\n if (newId) nextId.current = null;\n };\n });\n return res;\n}\nfunction $bdb11010cef70236$export$cd8c9cb68f842629(idA, idB) {\n if (idA === idB) return idA;\n let setIdsA = $bdb11010cef70236$export$d41a04c74483c6ef.get(idA);\n if (setIdsA) {\n setIdsA.forEach((ref)=>ref.current = idB);\n return idB;\n }\n let setIdsB = $bdb11010cef70236$export$d41a04c74483c6ef.get(idB);\n if (setIdsB) {\n setIdsB.forEach((ref)=>ref.current = idA);\n return idA;\n }\n return idB;\n}\nfunction $bdb11010cef70236$export$b4cc09c592e8fdb8(depArray = []) {\n let id = $bdb11010cef70236$export$f680877a34711e37();\n let [resolvedId, setResolvedId] = (0, $1dbecbe27a04f9af$export$14d238f342723f25)(id);\n let updateId = (0, $eKkEp$useCallback)(()=>{\n setResolvedId(function*() {\n yield id;\n yield document.getElementById(id) ? id : undefined;\n });\n }, [\n id,\n setResolvedId\n ]);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(updateId, [\n id,\n updateId,\n ...depArray\n ]);\n return resolvedId;\n}\n\n\nexport {$bdb11010cef70236$export$d41a04c74483c6ef as idsUpdaterMap, $bdb11010cef70236$export$f680877a34711e37 as useId, $bdb11010cef70236$export$cd8c9cb68f842629 as mergeIds, $bdb11010cef70236$export$b4cc09c592e8fdb8 as useSlotId};\n//# sourceMappingURL=useId.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ /**\n * Calls all functions in the order they were chained with the same arguments.\n */ function $ff5963eb1fccf552$export$e08e3b67e392101e(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks)if (typeof callback === 'function') callback(...args);\n };\n}\n\n\nexport {$ff5963eb1fccf552$export$e08e3b67e392101e as chain};\n//# sourceMappingURL=chain.module.js.map\n","const $431fbd86ca7dc216$export$b204af158042fbac = (el)=>{\n var _el_ownerDocument;\n return (_el_ownerDocument = el === null || el === void 0 ? void 0 : el.ownerDocument) !== null && _el_ownerDocument !== void 0 ? _el_ownerDocument : document;\n};\nconst $431fbd86ca7dc216$export$f21a1ffae260145a = (el)=>{\n if (el && 'window' in el && el.window === el) return el;\n const doc = $431fbd86ca7dc216$export$b204af158042fbac(el);\n return doc.defaultView || window;\n};\n/**\n * Type guard that checks if a value is a Node. Verifies the presence and type of the nodeType property.\n */ function $431fbd86ca7dc216$var$isNode(value) {\n return value !== null && typeof value === 'object' && 'nodeType' in value && typeof value.nodeType === 'number';\n}\nfunction $431fbd86ca7dc216$export$af51f0f06c0f328a(node) {\n return $431fbd86ca7dc216$var$isNode(node) && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && 'host' in node;\n}\n\n\nexport {$431fbd86ca7dc216$export$b204af158042fbac as getOwnerDocument, $431fbd86ca7dc216$export$f21a1ffae260145a as getOwnerWindow, $431fbd86ca7dc216$export$af51f0f06c0f328a as isShadowRoot};\n//# sourceMappingURL=domHelpers.module.js.map\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ let $f4e2df6bd15f8569$var$_tableNestedRows = false;\nlet $f4e2df6bd15f8569$var$_shadowDOM = false;\nfunction $f4e2df6bd15f8569$export$d9d8a0f82de49530() {\n $f4e2df6bd15f8569$var$_tableNestedRows = true;\n}\nfunction $f4e2df6bd15f8569$export$1b00cb14a96194e6() {\n return $f4e2df6bd15f8569$var$_tableNestedRows;\n}\nfunction $f4e2df6bd15f8569$export$12b151d9882e9985() {\n $f4e2df6bd15f8569$var$_shadowDOM = true;\n}\nfunction $f4e2df6bd15f8569$export$98658e8c59125e6a() {\n return $f4e2df6bd15f8569$var$_shadowDOM;\n}\n\n\nexport {$f4e2df6bd15f8569$export$d9d8a0f82de49530 as enableTableNestedRows, $f4e2df6bd15f8569$export$1b00cb14a96194e6 as tableNestedRows, $f4e2df6bd15f8569$export$12b151d9882e9985 as enableShadowDOM, $f4e2df6bd15f8569$export$98658e8c59125e6a as shadowDOM};\n//# sourceMappingURL=module.js.map\n","import {isShadowRoot as $431fbd86ca7dc216$export$af51f0f06c0f328a} from \"./domHelpers.mjs\";\nimport {shadowDOM as $lcSu5$shadowDOM} from \"@react-stately/flags\";\n\n// Source: https://github.com/microsoft/tabster/blob/a89fc5d7e332d48f68d03b1ca6e344489d1c3898/src/Shadowdomize/DOMFunctions.ts#L16\n\n\nfunction $d4ee10de306f2510$export$4282f70798064fe0(node, otherNode) {\n if (!(0, $lcSu5$shadowDOM)()) return otherNode && node ? node.contains(otherNode) : false;\n if (!node || !otherNode) return false;\n let currentNode = otherNode;\n while(currentNode !== null){\n if (currentNode === node) return true;\n if (currentNode.tagName === 'SLOT' && currentNode.assignedSlot) // Element is slotted\n currentNode = currentNode.assignedSlot.parentNode;\n else if ((0, $431fbd86ca7dc216$export$af51f0f06c0f328a)(currentNode)) // Element is in shadow root\n currentNode = currentNode.host;\n else currentNode = currentNode.parentNode;\n }\n return false;\n}\nconst $d4ee10de306f2510$export$cd4e5573fbe2b576 = (doc = document)=>{\n var _activeElement_shadowRoot;\n if (!(0, $lcSu5$shadowDOM)()) return doc.activeElement;\n let activeElement = doc.activeElement;\n while(activeElement && 'shadowRoot' in activeElement && ((_activeElement_shadowRoot = activeElement.shadowRoot) === null || _activeElement_shadowRoot === void 0 ? void 0 : _activeElement_shadowRoot.activeElement))activeElement = activeElement.shadowRoot.activeElement;\n return activeElement;\n};\nfunction $d4ee10de306f2510$export$e58f029f0fbfdb29(event) {\n if ((0, $lcSu5$shadowDOM)() && event.target.shadowRoot) {\n if (event.composedPath) return event.composedPath()[0];\n }\n return event.target;\n}\n\n\nexport {$d4ee10de306f2510$export$4282f70798064fe0 as nodeContains, $d4ee10de306f2510$export$cd4e5573fbe2b576 as getActiveElement, $d4ee10de306f2510$export$e58f029f0fbfdb29 as getEventTarget};\n//# sourceMappingURL=DOMFunctions.module.js.map\n","import {nodeContains as $d4ee10de306f2510$export$4282f70798064fe0} from \"./DOMFunctions.mjs\";\nimport {shadowDOM as $bJKXg$shadowDOM} from \"@react-stately/flags\";\n\n// https://github.com/microsoft/tabster/blob/a89fc5d7e332d48f68d03b1ca6e344489d1c3898/src/Shadowdomize/ShadowTreeWalker.ts\n\n\nclass $dfc540311bf7f109$export$63eb3ababa9c55c4 {\n get currentNode() {\n return this._currentNode;\n }\n set currentNode(node) {\n if (!(0, $d4ee10de306f2510$export$4282f70798064fe0)(this.root, node)) throw new Error('Cannot set currentNode to a node that is not contained by the root node.');\n const walkers = [];\n let curNode = node;\n let currentWalkerCurrentNode = node;\n this._currentNode = node;\n while(curNode && curNode !== this.root)if (curNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowRoot = curNode;\n const walker = this._doc.createTreeWalker(shadowRoot, this.whatToShow, {\n acceptNode: this._acceptNode\n });\n walkers.push(walker);\n walker.currentNode = currentWalkerCurrentNode;\n this._currentSetFor.add(walker);\n curNode = currentWalkerCurrentNode = shadowRoot.host;\n } else curNode = curNode.parentNode;\n const walker = this._doc.createTreeWalker(this.root, this.whatToShow, {\n acceptNode: this._acceptNode\n });\n walkers.push(walker);\n walker.currentNode = currentWalkerCurrentNode;\n this._currentSetFor.add(walker);\n this._walkerStack = walkers;\n }\n get doc() {\n return this._doc;\n }\n firstChild() {\n let currentNode = this.currentNode;\n let newNode = this.nextNode();\n if (!(0, $d4ee10de306f2510$export$4282f70798064fe0)(currentNode, newNode)) {\n this.currentNode = currentNode;\n return null;\n }\n if (newNode) this.currentNode = newNode;\n return newNode;\n }\n lastChild() {\n let walker = this._walkerStack[0];\n let newNode = walker.lastChild();\n if (newNode) this.currentNode = newNode;\n return newNode;\n }\n nextNode() {\n const nextNode = this._walkerStack[0].nextNode();\n if (nextNode) {\n const shadowRoot = nextNode.shadowRoot;\n if (shadowRoot) {\n var _this_filter;\n let nodeResult;\n if (typeof this.filter === 'function') nodeResult = this.filter(nextNode);\n else if ((_this_filter = this.filter) === null || _this_filter === void 0 ? void 0 : _this_filter.acceptNode) nodeResult = this.filter.acceptNode(nextNode);\n if (nodeResult === NodeFilter.FILTER_ACCEPT) {\n this.currentNode = nextNode;\n return nextNode;\n }\n // _acceptNode should have added new walker for this shadow,\n // go in recursively.\n let newNode = this.nextNode();\n if (newNode) this.currentNode = newNode;\n return newNode;\n }\n if (nextNode) this.currentNode = nextNode;\n return nextNode;\n } else {\n if (this._walkerStack.length > 1) {\n this._walkerStack.shift();\n let newNode = this.nextNode();\n if (newNode) this.currentNode = newNode;\n return newNode;\n } else return null;\n }\n }\n previousNode() {\n const currentWalker = this._walkerStack[0];\n if (currentWalker.currentNode === currentWalker.root) {\n if (this._currentSetFor.has(currentWalker)) {\n this._currentSetFor.delete(currentWalker);\n if (this._walkerStack.length > 1) {\n this._walkerStack.shift();\n let newNode = this.previousNode();\n if (newNode) this.currentNode = newNode;\n return newNode;\n } else return null;\n }\n return null;\n }\n const previousNode = currentWalker.previousNode();\n if (previousNode) {\n const shadowRoot = previousNode.shadowRoot;\n if (shadowRoot) {\n var _this_filter;\n let nodeResult;\n if (typeof this.filter === 'function') nodeResult = this.filter(previousNode);\n else if ((_this_filter = this.filter) === null || _this_filter === void 0 ? void 0 : _this_filter.acceptNode) nodeResult = this.filter.acceptNode(previousNode);\n if (nodeResult === NodeFilter.FILTER_ACCEPT) {\n if (previousNode) this.currentNode = previousNode;\n return previousNode;\n }\n // _acceptNode should have added new walker for this shadow,\n // go in recursively.\n let newNode = this.lastChild();\n if (newNode) this.currentNode = newNode;\n return newNode;\n }\n if (previousNode) this.currentNode = previousNode;\n return previousNode;\n } else {\n if (this._walkerStack.length > 1) {\n this._walkerStack.shift();\n let newNode = this.previousNode();\n if (newNode) this.currentNode = newNode;\n return newNode;\n } else return null;\n }\n }\n /**\n * @deprecated\n */ nextSibling() {\n // if (__DEV__) {\n // throw new Error(\"Method not implemented.\");\n // }\n return null;\n }\n /**\n * @deprecated\n */ previousSibling() {\n // if (__DEV__) {\n // throw new Error(\"Method not implemented.\");\n // }\n return null;\n }\n /**\n * @deprecated\n */ parentNode() {\n // if (__DEV__) {\n // throw new Error(\"Method not implemented.\");\n // }\n return null;\n }\n constructor(doc, root, whatToShow, filter){\n this._walkerStack = [];\n this._currentSetFor = new Set();\n this._acceptNode = (node)=>{\n if (node.nodeType === Node.ELEMENT_NODE) {\n const shadowRoot = node.shadowRoot;\n if (shadowRoot) {\n const walker = this._doc.createTreeWalker(shadowRoot, this.whatToShow, {\n acceptNode: this._acceptNode\n });\n this._walkerStack.unshift(walker);\n return NodeFilter.FILTER_ACCEPT;\n } else {\n var _this_filter;\n if (typeof this.filter === 'function') return this.filter(node);\n else if ((_this_filter = this.filter) === null || _this_filter === void 0 ? void 0 : _this_filter.acceptNode) return this.filter.acceptNode(node);\n else if (this.filter === null) return NodeFilter.FILTER_ACCEPT;\n }\n }\n return NodeFilter.FILTER_SKIP;\n };\n this._doc = doc;\n this.root = root;\n this.filter = filter !== null && filter !== void 0 ? filter : null;\n this.whatToShow = whatToShow !== null && whatToShow !== void 0 ? whatToShow : NodeFilter.SHOW_ALL;\n this._currentNode = root;\n this._walkerStack.unshift(doc.createTreeWalker(root, whatToShow, this._acceptNode));\n const shadowRoot = root.shadowRoot;\n if (shadowRoot) {\n const walker = this._doc.createTreeWalker(shadowRoot, this.whatToShow, {\n acceptNode: this._acceptNode\n });\n this._walkerStack.unshift(walker);\n }\n }\n}\nfunction $dfc540311bf7f109$export$4d0f8be8b12a7ef6(doc, root, whatToShow, filter) {\n if ((0, $bJKXg$shadowDOM)()) return new $dfc540311bf7f109$export$63eb3ababa9c55c4(doc, root, whatToShow, filter);\n return doc.createTreeWalker(root, whatToShow, filter);\n}\n\n\nexport {$dfc540311bf7f109$export$63eb3ababa9c55c4 as ShadowTreeWalker, $dfc540311bf7f109$export$4d0f8be8b12a7ef6 as createShadowTreeWalker};\n//# sourceMappingURL=ShadowTreeWalker.module.js.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import {chain as $ff5963eb1fccf552$export$e08e3b67e392101e} from \"./chain.mjs\";\nimport {mergeIds as $bdb11010cef70236$export$cd8c9cb68f842629} from \"./useId.mjs\";\nimport $7jXr9$clsx from \"clsx\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $3ef42575df84b30b$export$9d1611c77c2fe928(...args) {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result = {\n ...args[0]\n };\n for(let i = 1; i < args.length; i++){\n let props = args[i];\n for(let key in props){\n let a = result[key];\n let b = props[key];\n // Chain events\n if (typeof a === 'function' && typeof b === 'function' && // This is a lot faster than a regex.\n key[0] === 'o' && key[1] === 'n' && key.charCodeAt(2) >= /* 'A' */ 65 && key.charCodeAt(2) <= /* 'Z' */ 90) result[key] = (0, $ff5963eb1fccf552$export$e08e3b67e392101e)(a, b);\n else if ((key === 'className' || key === 'UNSAFE_className') && typeof a === 'string' && typeof b === 'string') result[key] = (0, $7jXr9$clsx)(a, b);\n else if (key === 'id' && a && b) result.id = (0, $bdb11010cef70236$export$cd8c9cb68f842629)(a, b);\n else result[key] = b !== undefined ? b : a;\n }\n }\n return result;\n}\n\n\nexport {$3ef42575df84b30b$export$9d1611c77c2fe928 as mergeProps};\n//# sourceMappingURL=mergeProps.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $7215afc6de606d6b$export$de79e2c695e052f3(element) {\n if ($7215afc6de606d6b$var$supportsPreventScroll()) element.focus({\n preventScroll: true\n });\n else {\n let scrollableElements = $7215afc6de606d6b$var$getScrollableElements(element);\n element.focus();\n $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements);\n }\n}\nlet $7215afc6de606d6b$var$supportsPreventScrollCached = null;\nfunction $7215afc6de606d6b$var$supportsPreventScroll() {\n if ($7215afc6de606d6b$var$supportsPreventScrollCached == null) {\n $7215afc6de606d6b$var$supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll () {\n $7215afc6de606d6b$var$supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch {\n // Ignore\n }\n }\n return $7215afc6de606d6b$var$supportsPreventScrollCached;\n}\nfunction $7215afc6de606d6b$var$getScrollableElements(element) {\n let parent = element.parentNode;\n let scrollableElements = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n while(parent instanceof HTMLElement && parent !== rootScrollingElement){\n if (parent.offsetHeight < parent.scrollHeight || parent.offsetWidth < parent.scrollWidth) scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n parent = parent.parentNode;\n }\n if (rootScrollingElement instanceof HTMLElement) scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n return scrollableElements;\n}\nfunction $7215afc6de606d6b$var$restoreScrollPosition(scrollableElements) {\n for (let { element: element, scrollTop: scrollTop, scrollLeft: scrollLeft } of scrollableElements){\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n\n\nexport {$7215afc6de606d6b$export$de79e2c695e052f3 as focusWithoutScrolling};\n//# sourceMappingURL=focusWithoutScrolling.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n var _window_navigator_userAgentData;\n if (typeof window === 'undefined' || window.navigator == null) return false;\n let brands = (_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands;\n return Array.isArray(brands) && brands.some((brand)=>re.test(brand.brand)) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n var _window_navigator_userAgentData;\n return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$var$cached(fn) {\n if (process.env.NODE_ENV === 'test') return fn;\n let res = null;\n return ()=>{\n if (res == null) res = fn();\n return res;\n };\n}\nconst $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n});\nconst $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n});\nconst $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n});\nconst $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n});\nconst $c87311424ea30a05$export$e1865c3bedcd822b = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n});\nconst $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n});\nconst $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n});\nconst $c87311424ea30a05$export$a11b0059900ceec8 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Android/i);\n});\nconst $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Firefox/i);\n});\n\n\nexport {$c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $c87311424ea30a05$export$b7d78993b74f766d as isFirefox};\n//# sourceMappingURL=platform.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // We store a global list of elements that are currently transitioning,\n// mapped to a set of CSS properties that are transitioning for that element.\n// This is necessary rather than a simple count of transitions because of browser\n// bugs, e.g. Chrome sometimes fires both transitionend and transitioncancel rather\n// than one or the other. So we need to track what's actually transitioning so that\n// we can ignore these duplicate events.\nlet $bbed8b41f857bcc0$var$transitionsByElement = new Map();\n// A list of callbacks to call once there are no transitioning elements.\nlet $bbed8b41f857bcc0$var$transitionCallbacks = new Set();\nfunction $bbed8b41f857bcc0$var$setupGlobalEvents() {\n if (typeof window === 'undefined') return;\n function isTransitionEvent(event) {\n return 'propertyName' in event;\n }\n let onTransitionStart = (e)=>{\n if (!isTransitionEvent(e) || !e.target) return;\n // Add the transitioning property to the list for this element.\n let transitions = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n $bbed8b41f857bcc0$var$transitionsByElement.set(e.target, transitions);\n // The transitioncancel event must be registered on the element itself, rather than as a global\n // event. This enables us to handle when the node is deleted from the document while it is transitioning.\n // In that case, the cancel event would have nowhere to bubble to so we need to handle it directly.\n e.target.addEventListener('transitioncancel', onTransitionEnd, {\n once: true\n });\n }\n transitions.add(e.propertyName);\n };\n let onTransitionEnd = (e)=>{\n if (!isTransitionEvent(e) || !e.target) return;\n // Remove property from list of transitioning properties.\n let properties = $bbed8b41f857bcc0$var$transitionsByElement.get(e.target);\n if (!properties) return;\n properties.delete(e.propertyName);\n // If empty, remove transitioncancel event, and remove the element from the list of transitioning elements.\n if (properties.size === 0) {\n e.target.removeEventListener('transitioncancel', onTransitionEnd);\n $bbed8b41f857bcc0$var$transitionsByElement.delete(e.target);\n }\n // If no transitioning elements, call all of the queued callbacks.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) {\n for (let cb of $bbed8b41f857bcc0$var$transitionCallbacks)cb();\n $bbed8b41f857bcc0$var$transitionCallbacks.clear();\n }\n };\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') $bbed8b41f857bcc0$var$setupGlobalEvents();\n else document.addEventListener('DOMContentLoaded', $bbed8b41f857bcc0$var$setupGlobalEvents);\n}\n/**\n * Cleans up any elements that are no longer in the document.\n * This is necessary because we can't rely on transitionend events to fire\n * for elements that are removed from the document while transitioning.\n */ function $bbed8b41f857bcc0$var$cleanupDetachedElements() {\n for (const [eventTarget] of $bbed8b41f857bcc0$var$transitionsByElement)// Similar to `eventTarget instanceof Element && !eventTarget.isConnected`, but avoids\n // the explicit instanceof check, since it may be different in different contexts.\n if ('isConnected' in eventTarget && !eventTarget.isConnected) $bbed8b41f857bcc0$var$transitionsByElement.delete(eventTarget);\n}\nfunction $bbed8b41f857bcc0$export$24490316f764c430(fn) {\n // Wait one frame to see if an animation starts, e.g. a transition on mount.\n requestAnimationFrame(()=>{\n $bbed8b41f857bcc0$var$cleanupDetachedElements();\n // If no transitions are running, call the function immediately.\n // Otherwise, add it to a list of callbacks to run at the end of the animation.\n if ($bbed8b41f857bcc0$var$transitionsByElement.size === 0) fn();\n else $bbed8b41f857bcc0$var$transitionCallbacks.add(fn);\n });\n}\n\n\nexport {$bbed8b41f857bcc0$export$24490316f764c430 as runAfterTransition};\n//# sourceMappingURL=runAfterTransition.module.js.map\n","import {isAndroid as $c87311424ea30a05$export$a11b0059900ceec8} from \"./platform.mjs\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n // JAWS/NVDA with Firefox.\n if (event.pointerType === '' && event.isTrusted) return true;\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if ((0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return !(0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\nexport {$6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=isVirtualEvent.module.js.map\n","import {getOwnerWindow as $431fbd86ca7dc216$export$f21a1ffae260145a} from \"./domHelpers.mjs\";\n\n/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $7d2416ea0959daaa$var$supportsCheckVisibility = typeof Element !== 'undefined' && 'checkVisibility' in Element.prototype;\nfunction $7d2416ea0959daaa$var$isStyleVisible(element) {\n const windowObject = (0, $431fbd86ca7dc216$export$f21a1ffae260145a)(element);\n if (!(element instanceof windowObject.HTMLElement) && !(element instanceof windowObject.SVGElement)) return false;\n let { display: display, visibility: visibility } = element.style;\n let isVisible = display !== 'none' && visibility !== 'hidden' && visibility !== 'collapse';\n if (isVisible) {\n const { getComputedStyle: getComputedStyle } = element.ownerDocument.defaultView;\n let { display: computedDisplay, visibility: computedVisibility } = getComputedStyle(element);\n isVisible = computedDisplay !== 'none' && computedVisibility !== 'hidden' && computedVisibility !== 'collapse';\n }\n return isVisible;\n}\nfunction $7d2416ea0959daaa$var$isAttributeVisible(element, childElement) {\n return !element.hasAttribute('hidden') && // Ignore HiddenSelect when tree walking.\n !element.hasAttribute('data-react-aria-prevent-focus') && (element.nodeName === 'DETAILS' && childElement && childElement.nodeName !== 'SUMMARY' ? element.hasAttribute('open') : true);\n}\nfunction $7d2416ea0959daaa$export$e989c0fffaa6b27a(element, childElement) {\n if ($7d2416ea0959daaa$var$supportsCheckVisibility) return element.checkVisibility({\n visibilityProperty: true\n }) && !element.closest('[data-react-aria-prevent-focus]');\n return element.nodeName !== '#comment' && $7d2416ea0959daaa$var$isStyleVisible(element) && $7d2416ea0959daaa$var$isAttributeVisible(element, childElement) && (!element.parentElement || $7d2416ea0959daaa$export$e989c0fffaa6b27a(element.parentElement, element));\n}\n\n\nexport {$7d2416ea0959daaa$export$e989c0fffaa6b27a as isElementVisible};\n//# sourceMappingURL=isElementVisible.module.js.map\n","import {isElementVisible as $7d2416ea0959daaa$export$e989c0fffaa6b27a} from \"./isElementVisible.mjs\";\n\n/*\n * Copyright 2025 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $b4b717babfbb907b$var$focusableElements = [\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable^=\"false\"])',\n 'permission'\n];\nconst $b4b717babfbb907b$var$FOCUSABLE_ELEMENT_SELECTOR = $b4b717babfbb907b$var$focusableElements.join(':not([hidden]),') + ',[tabindex]:not([disabled]):not([hidden])';\n$b4b717babfbb907b$var$focusableElements.push('[tabindex]:not([tabindex=\"-1\"]):not([disabled])');\nconst $b4b717babfbb907b$var$TABBABLE_ELEMENT_SELECTOR = $b4b717babfbb907b$var$focusableElements.join(':not([hidden]):not([tabindex=\"-1\"]),');\nfunction $b4b717babfbb907b$export$4c063cf1350e6fed(element) {\n return element.matches($b4b717babfbb907b$var$FOCUSABLE_ELEMENT_SELECTOR) && (0, $7d2416ea0959daaa$export$e989c0fffaa6b27a)(element) && !$b4b717babfbb907b$var$isInert(element);\n}\nfunction $b4b717babfbb907b$export$bebd5a1431fec25d(element) {\n return element.matches($b4b717babfbb907b$var$TABBABLE_ELEMENT_SELECTOR) && (0, $7d2416ea0959daaa$export$e989c0fffaa6b27a)(element) && !$b4b717babfbb907b$var$isInert(element);\n}\nfunction $b4b717babfbb907b$var$isInert(element) {\n let node = element;\n while(node != null){\n if (node instanceof node.ownerDocument.defaultView.HTMLElement && node.inert) return true;\n node = node.parentElement;\n }\n return false;\n}\n\n\nexport {$b4b717babfbb907b$export$4c063cf1350e6fed as isFocusable, $b4b717babfbb907b$export$bebd5a1431fec25d as isTabbable};\n//# sourceMappingURL=isFocusable.module.js.map\n","import {useState as $3whtM$useState, useRef as $3whtM$useRef, useEffect as $3whtM$useEffect, useCallback as $3whtM$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $458b0a5536c1a7cf$export$40bfa8c7b0832715(value, defaultValue, onChange) {\n let [stateValue, setStateValue] = (0, $3whtM$useState)(value || defaultValue);\n let isControlledRef = (0, $3whtM$useRef)(value !== undefined);\n let isControlled = value !== undefined;\n (0, $3whtM$useEffect)(()=>{\n let wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled && process.env.NODE_ENV !== 'production') console.warn(`WARN: A component changed from ${wasControlled ? 'controlled' : 'uncontrolled'} to ${isControlled ? 'controlled' : 'uncontrolled'}.`);\n isControlledRef.current = isControlled;\n }, [\n isControlled\n ]);\n let currentValue = isControlled ? value : stateValue;\n let setValue = (0, $3whtM$useCallback)((value, ...args)=>{\n let onChangeCaller = (value, ...onChangeArgs)=>{\n if (onChange) {\n if (!Object.is(currentValue, value)) onChange(value, ...onChangeArgs);\n }\n if (!isControlled) // If uncontrolled, mutate the currentValue local variable so that\n // calling setState multiple times with the same value only emits onChange once.\n // We do not use a ref for this because we specifically _do_ want the value to\n // reset every render, and assigning to a ref in render breaks aborted suspended renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n currentValue = value;\n };\n if (typeof value === 'function') {\n if (process.env.NODE_ENV !== 'production') console.warn('We can not support a function callback. See Github Issues for details https://github.com/adobe/react-spectrum/issues/2320');\n // this supports functional updates https://reactjs.org/docs/hooks-reference.html#functional-updates\n // when someone using useControlledState calls setControlledState(myFunc)\n // this will call our useState setState with a function as well which invokes myFunc and calls onChange with the value from myFunc\n // if we're in an uncontrolled state, then we also return the value of myFunc which to setState looks as though it was just called with myFunc from the beginning\n // otherwise we just return the controlled value, which won't cause a rerender because React knows to bail out when the value is the same\n let updateFunction = (oldValue, ...functionArgs)=>{\n let interceptedValue = value(isControlled ? currentValue : oldValue, ...functionArgs);\n onChangeCaller(interceptedValue, ...args);\n if (!isControlled) return interceptedValue;\n return oldValue;\n };\n setStateValue(updateFunction);\n } else {\n if (!isControlled) setStateValue(value);\n onChangeCaller(value, ...args);\n }\n }, [\n isControlled,\n currentValue,\n onChange\n ]);\n return [\n currentValue,\n setValue\n ];\n}\n\n\nexport {$458b0a5536c1a7cf$export$40bfa8c7b0832715 as useControlledState};\n//# sourceMappingURL=useControlledState.module.js.map\n","/**\n * Button 按钮样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const buttonVariants = ['primary', 'secondary', 'text', 'danger', 'gradient'] as const\nexport const buttonSizes = ['sm', 'md', 'lg'] as const\n\nexport type ButtonVariant = (typeof buttonVariants)[number]\nexport type ButtonSize = (typeof buttonSizes)[number]\n\n// ============================================================================\n// 变体样式生成器\n// ============================================================================\n\ntype ButtonState = 'default' | 'hover' | 'active'\ntype PartialStateToken = { default: string } & Partial<Record<'hover' | 'active', string>>\ntype WithOptionalShadow = { shadow: { default: string; hover?: string } }\n\n/**\n * 获取按钮变体样式\n * 优先使用 Tier 3 组件层 Token\n */\nconst getVariantStyles = (variant: ButtonVariant, theme: AppTheme) => {\n const variantToken = theme.components.button[variant]\n const hasShadow = 'shadow' in variantToken\n \n // 渐变按钮使用特殊的渐变样式逻辑\n if (variant === 'gradient') {\n const gradientToken = variantToken as typeof theme.components.button.gradient\n const defaultShadow = gradientToken.shadow.default\n const hoverShadow = gradientToken.shadow.hover\n \n return css`\n position: relative;\n color: ${gradientToken.text.default};\n border-color: transparent; /* 渐变无边框,保留 1px 以保持高度一致 */\n box-shadow: ${defaultShadow};\n \n /* 默认渐变背景 */\n background: linear-gradient(\n 90deg, \n ${gradientToken.background.gradientFrom} 0%, \n ${gradientToken.background.gradientTo} 100%\n );\n background-origin: border-box;\n \n /* 使用伪元素创建反向渐变层 */\n &::before {\n content: '';\n position: absolute;\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n border-radius: inherit;\n background: linear-gradient(\n 90deg, \n ${gradientToken.background.gradientTo} 0%, \n ${gradientToken.background.gradientFrom} 100%\n );\n opacity: 0;\n transition: opacity 0.6s ease;\n z-index: 0;\n }\n \n /* 确保内容在渐变层上方 */\n & > * {\n position: relative;\n z-index: 1;\n }\n\n /* Hover 状态 - 显示反向渐变层 */\n &:hover:not(:disabled):not([data-loading='true'])::before {\n opacity: 1;\n }\n \n &:hover:not(:disabled):not([data-loading='true']) {\n box-shadow: ${hoverShadow};\n }\n\n /* Active/Pressed 状态(点击态) */\n &:active:not(:disabled):not([data-loading='true']),\n &[data-pressed='true']:not(:disabled):not([data-loading='true']) {\n box-shadow: none;\n transform: translateY(1px);\n }\n `\n }\n \n // 常规变体样式\n // 获取指定状态值(带默认回退)\n const getStateValue = (obj: PartialStateToken, state: ButtonState) => obj[state] ?? obj.default\n\n // 获取边框颜色\n const getBorderColor = (state: ButtonState) => {\n return getStateValue(variantToken.border as PartialStateToken, state)\n }\n\n // 获取背景颜色\n const getBackground = (state: ButtonState) => {\n return getStateValue(variantToken.background as PartialStateToken, state)\n }\n\n // 阴影(某些变体无阴影)\n const defaultShadow = hasShadow ? (variantToken as WithOptionalShadow).shadow.default : 'none'\n const hoverShadow = hasShadow ? ((variantToken as WithOptionalShadow).shadow.hover ?? 'none') : 'none'\n\n return css`\n background: ${variantToken.background.default};\n color: ${variantToken.text.default};\n border-color: ${variantToken.border.default};\n box-shadow: ${defaultShadow};\n\n /* Hover 状态 */\n &:hover:not(:disabled):not([data-loading='true']) {\n background: ${getBackground('hover')};\n border-color: ${getBorderColor('hover')};\n box-shadow: ${hoverShadow};\n }\n\n /* Active/Pressed 状态(点击态) */\n &:active:not(:disabled):not([data-loading='true']),\n &[data-pressed='true']:not(:disabled):not([data-loading='true']) {\n background: ${getBackground('active')};\n border-color: ${getBorderColor('active')};\n box-shadow: none;\n transform: translateY(1px);\n }\n `\n}\n\n/**\n * 获取按钮尺寸样式\n * 使用 Tier 3 组件层尺寸 Token\n */\nconst getSizeStyles = (size: ButtonSize, theme: AppTheme) => {\n const sizeToken = theme.components.button.size[size]\n\n return css`\n height: ${sizeToken.height};\n font-size: ${sizeToken.fontSize};\n padding-inline: ${sizeToken.paddingInline};\n\n /* 图标尺寸 */\n svg {\n width: ${sizeToken.iconSize};\n height: ${sizeToken.iconSize};\n }\n `\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Button 根元素\n * \n * 特性:\n * - 基于三层 Token 设计\n * - 完整的交互状态(hover, active, focus, disabled)\n * - 支持加载状态\n * - 支持全宽模式\n */\nexport const ButtonRoot = styled.button<{\n variant: ButtonVariant\n size: ButtonSize\n fullWidth: boolean\n isPressed: boolean\n isDisabled: boolean\n isLoading: boolean\n}>`\n /* 基础样式 - 使用 Tier 3 组件层 Token */\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n \n /* 字体样式 */\n font-family: ${({ theme }) => theme?.global?.typography?.fontFamily || '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif'};\n font-weight: ${({ theme }) => theme?.components?.button?.fontWeight || 500};\n line-height: 1;\n white-space: nowrap;\n \n /* 边框样式 */\n border-width: 1px;\n border-style: solid;\n border-radius: ${({ theme }) => theme?.components?.button?.borderRadius || '6px'};\n \n /* 交互样式 */\n cursor: pointer;\n user-select: none;\n outline: none;\n \n /* 过渡动画 */\n transition: \n background ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'},\n border-color ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'},\n box-shadow ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'},\n transform ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'};\n\n /* 变体样式 */\n ${({ variant, theme }) => getVariantStyles(variant, theme)}\n\n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n /* 全宽模式 */\n ${({ fullWidth }) =>\n fullWidth &&\n css`\n width: 100%;\n `}\n\n /* Focus 可见状态 - 键盘导航时显示 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme?.components?.button?.primary?.background?.default || '#1677ff'};\n outline-offset: 2px;\n }\n\n /* 禁用状态 */\n &:disabled {\n cursor: not-allowed;\n opacity: ${({ theme }) => theme?.components?.button?.disabled?.opacity || 0.5};\n background: ${({ theme }) => theme?.components?.button?.disabled?.background?.default || '#f5f5f5'};\n color: ${({ theme }) => theme?.components?.button?.disabled?.text?.default || 'rgba(0, 0, 0, 0.25)'};\n border-color: transparent;\n box-shadow: none;\n }\n\n /* 加载状态 - 阻止交互 */\n &[data-loading='true'] {\n pointer-events: none;\n }\n\n /* 加载状态 - 使用伪元素实现 cursor: wait */\n &[data-loading='true']::after {\n content: '';\n position: absolute;\n inset: 0;\n cursor: wait;\n pointer-events: auto; /* 伪元素接收鼠标事件以显示 cursor */\n z-index: 10; /* 确保在所有内容之上 */\n }\n\n /* 添加旋转动画的关键帧 */\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n`\n\n/**\n * 按钮内容容器\n * \n * 用于布局图标和文本\n */\nexport const ButtonContent = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: ${({ theme }) => theme?.components?.button?.gap || '8px'};\n position: relative;\n`\n\n/**\n * 图标包装器\n * \n * 特性:\n * - 在加载状态下淡出\n * - 保持布局稳定\n */\nexport const IconWrapper = styled.span<{\n isLoading: boolean\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n \n transition: opacity ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'};\n \n ${({ isLoading }) =>\n isLoading &&\n css`\n opacity: 0;\n pointer-events: none;\n `}\n`\n\n/**\n * 按钮文本标签\n * \n * 特性:\n * - 在加载状态下淡出\n * - 保持文本居中\n */\nexport const Label = styled.span<{\n isLoading: boolean\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n \n transition: opacity ${({ theme }) => theme?.components?.button?.transition || '0.2s ease'};\n \n ${({ isLoading }) =>\n isLoading &&\n css`\n opacity: 0.4;\n `}\n`\n","/**\n * Button 按钮组件\n * \n * 基于 react-aria 实现无障碍访问的按钮组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\">\n * 按钮文字\n * </Button>\n * ```\n */\n\nimport { forwardRef, useRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { useButton } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport { mergeProps } from '@react-aria/utils'\nimport {\n ButtonRoot,\n ButtonContent,\n IconWrapper,\n Label,\n buttonVariants,\n buttonSizes,\n type ButtonVariant,\n type ButtonSize,\n} from './Button.style'\n\n// 导出常量供外部使用\nexport const VARIANTS = buttonVariants\nexport const SIZES = buttonSizes\n\nexport type ButtonProps = Omit<AriaButtonProps, 'elementType'> & {\n /** 按钮类型:主按钮、次按钮、文本按钮、危险按钮 */\n variant?: ButtonVariant\n /** 按钮尺寸:小号(24px)、标准(32px)、大号(40px) */\n size?: ButtonSize\n /** 前置图标 */\n icon?: ReactNode\n /** 加载状态 */\n loading?: boolean\n /** 全宽按钮 */\n fullWidth?: boolean\n /** 是否禁用(统一 API,优先级高于 isDisabled) */\n disabled?: boolean\n /** 自定义类名 */\n className?: string\n /** 子元素 */\n children?: ReactNode\n}\n\n/**\n * Button 按钮组件\n * \n * 基于 Figma 设计规范实现的按钮组件,支持多种变体和尺寸\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n icon,\n loading = false,\n fullWidth = false,\n disabled,\n isDisabled,\n className,\n children,\n ...ariaProps\n },\n forwardedRef,\n ) => {\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef || innerRef\n\n // 按钮禁用状态:disabled 优先于 isDisabled,加载中也视为禁用\n const finalDisabled = (disabled ?? isDisabled) || loading\n\n // 使用 react-aria 的 useButton hook\n const { buttonProps, isPressed } = useButton(\n {\n ...ariaProps,\n isDisabled: finalDisabled,\n elementType: 'button',\n },\n innerRef,\n )\n\n return (\n <ButtonRoot\n {...mergeProps(buttonProps, {\n ref,\n className,\n })}\n variant={variant}\n size={size}\n fullWidth={fullWidth}\n isPressed={isPressed}\n isDisabled={finalDisabled}\n isLoading={loading}\n data-variant={variant}\n data-size={size}\n data-loading={loading ? 'true' : undefined}\n data-pressed={isPressed ? 'true' : undefined}\n >\n <ButtonContent>\n {/* 前置图标 */}\n {icon && (\n <IconWrapper isLoading={loading} aria-hidden=\"true\">\n {icon}\n </IconWrapper>\n )}\n\n {/* 按钮文本 */}\n <Label isLoading={loading}>{children}</Label>\n\n {/* 加载状态指示器 */}\n {loading && (\n <IconWrapper isLoading={false} aria-label=\"加载中\" role=\"status\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n animation: 'spin 0.8s linear infinite',\n }}\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"30 10\"\n />\n </svg>\n </IconWrapper>\n )}\n </ButtonContent>\n </ButtonRoot>\n )\n },\n)\n\nButton.displayName = 'Button'\n","/**\n * IconButton 图标按钮样式\n *\n * 依赖三层 Token 体系,并对尺寸/变体进行语义化封装\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\nexport const iconButtonAppearances = ['solid', 'outline', 'ghost'] as const\nexport const iconButtonTones = ['primary', 'neutral', 'danger'] as const\nexport const iconButtonSizes = ['sm', 'md', 'lg'] as const\n\nexport type IconButtonAppearance = (typeof iconButtonAppearances)[number]\nexport type IconButtonTone = (typeof iconButtonTones)[number]\nexport type IconButtonSize = (typeof iconButtonSizes)[number]\n\ntype InteractionState = 'default' | 'hover' | 'active'\n\nconst getVariantStyles = (appearance: IconButtonAppearance, tone: IconButtonTone, theme: AppTheme) => {\n const tokens = theme.components.iconButton.appearance[appearance][tone]\n\n const resolve = (state: InteractionState) => ({\n background: tokens.background[state],\n border: tokens.border[state] ?? tokens.border.hover ?? tokens.border.default,\n icon: tokens.icon[state] ?? tokens.icon.hover ?? tokens.icon.default,\n })\n\n const defaultState = resolve('default')\n const hoverState = resolve('hover')\n const activeState = resolve('active')\n\n const defaultShadow = tokens.shadow?.default ?? 'none'\n const hoverShadow = tokens.shadow?.hover ?? defaultShadow\n\n return css`\n background: ${defaultState.background};\n border-color: ${defaultState.border};\n color: ${defaultState.icon};\n box-shadow: ${defaultShadow};\n\n &:hover:not(:disabled):not([data-loading='true']) {\n background: ${hoverState.background};\n border-color: ${hoverState.border};\n color: ${hoverState.icon};\n box-shadow: ${hoverShadow};\n }\n\n &:active:not(:disabled):not([data-loading='true']),\n &[data-pressed='true']:not(:disabled):not([data-loading='true']) {\n background: ${activeState.background};\n border-color: ${activeState.border};\n color: ${activeState.icon};\n box-shadow: none;\n transform: translateY(1px);\n }\n `\n}\n\nconst getSizeStyles = (size: IconButtonSize, theme: AppTheme) => {\n const sizeToken = theme.components.iconButton.size[size]\n\n return css`\n --icon-button-icon-size: ${sizeToken.iconSize};\n width: ${sizeToken.edge};\n height: ${sizeToken.edge};\n min-width: ${sizeToken.edge};\n min-height: ${sizeToken.edge};\n\n svg {\n width: var(--icon-button-icon-size);\n height: var(--icon-button-icon-size);\n }\n `\n}\n\nexport const IconButtonRoot = styled.button<{\n appearance: IconButtonAppearance\n tone: IconButtonTone\n size: IconButtonSize\n isPressed: boolean\n isDisabled: boolean\n isLoading: boolean\n}>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-width: 1px;\n border-style: solid;\n border-radius: ${({ theme }) => theme.components.iconButton.borderRadius};\n padding: 0;\n cursor: pointer;\n user-select: none;\n line-height: 1;\n background: transparent;\n\n transition:\n background ${({ theme }) => theme.components.iconButton.transition},\n border-color ${({ theme }) => theme.components.iconButton.transition},\n color ${({ theme }) => theme.components.iconButton.transition},\n box-shadow ${({ theme }) => theme.components.iconButton.transition},\n transform ${({ theme }) => theme.components.iconButton.transition};\n\n ${({ appearance, tone, theme }) => getVariantStyles(appearance, tone, theme)}\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n &:focus-visible {\n outline: ${({ theme }) => theme.components.iconButton.focusRing.width} solid\n ${({ theme }) => theme.components.iconButton.focusRing.color};\n outline-offset: ${({ theme }) => theme.components.iconButton.focusRing.offset};\n }\n\n &:disabled {\n cursor: not-allowed;\n background: ${({ theme }) => theme.components.iconButton.disabled.background};\n border-color: ${({ theme }) => theme.components.iconButton.disabled.border};\n color: ${({ theme }) => theme.components.iconButton.disabled.icon};\n opacity: ${({ theme }) => theme.components.iconButton.disabled.opacity};\n }\n\n &[data-loading='true'] {\n pointer-events: none;\n }\n\n @keyframes icon-button-spin {\n to {\n transform: rotate(360deg);\n }\n }\n`\n\nexport const IconSlot = styled.span<{\n isHidden: boolean\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n transition: opacity ${({ theme }) => theme.components.iconButton.transition};\n pointer-events: none;\n\n ${({ isHidden }) =>\n isHidden &&\n css`\n opacity: 0;\n `}\n`\n\nexport const LoadingSpinner = styled.span`\n position: absolute;\n inset: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n pointer-events: none;\n\n svg {\n width: var(--icon-button-icon-size);\n height: var(--icon-button-icon-size);\n animation: icon-button-spin 0.8s linear infinite;\n }\n`\n\n","/**\n * IconButton 图标按钮组件\n *\n * 适用于仅展示图标的高频交互,支持多种外观与语义色彩\n */\n\nimport { forwardRef, useMemo, useRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { useButton, VisuallyHidden } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport { mergeProps } from '@react-aria/utils'\nimport {\n IconButtonRoot,\n IconSlot,\n LoadingSpinner,\n iconButtonAppearances,\n iconButtonTones,\n iconButtonSizes,\n type IconButtonAppearance,\n type IconButtonTone,\n type IconButtonSize,\n} from './IconButton.style'\n\nexport const ICON_BUTTON_APPEARANCES = iconButtonAppearances\nexport const ICON_BUTTON_TONES = iconButtonTones\nexport const ICON_BUTTON_SIZES = iconButtonSizes\n\nexport type IconButtonProps = Omit<AriaButtonProps, 'elementType' | 'children'> & {\n /** 图标按钮的视觉外观:实心、描边、幽灵 */\n appearance?: IconButtonAppearance\n /** 语义色彩:主题、自然、危险 */\n tone?: IconButtonTone\n /** 尺寸:24px / 32px / 40px */\n size?: IconButtonSize\n /** 需要展示的图标 */\n icon: ReactNode\n /** 提供屏幕阅读器可见文本(会以 VisuallyHidden 的形式注入) */\n label?: ReactNode\n /** 加载状态 */\n loading?: boolean\n /** 自定义加载状态的无障碍文本 */\n loadingLabel?: string\n /** 自定义类名 */\n className?: string\n}\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n appearance = 'solid',\n tone = 'primary',\n size = 'md',\n icon,\n label,\n loading = false,\n loadingLabel = '加载中',\n isDisabled,\n className,\n ...ariaProps\n },\n forwardedRef,\n ) => {\n const isDevEnvironment = useMemo(() => {\n if (typeof globalThis === 'undefined') {\n return true\n }\n const nodeEnv =\n (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env?.NODE_ENV\n return nodeEnv !== 'production'\n }, [])\n\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef || innerRef\n const disabled = isDisabled || loading\n\n if (isDevEnvironment) {\n const ariaLabel = (ariaProps as Record<string, unknown>)['aria-label']\n const ariaLabelledby = (ariaProps as Record<string, unknown>)['aria-labelledby']\n if (!label && !ariaLabel && !ariaLabelledby) {\n console.warn(\n 'IconButton 需要可感知的文本。请传入 label、aria-label 或 aria-labelledby。',\n )\n }\n }\n\n const { buttonProps, isPressed } = useButton(\n {\n ...ariaProps,\n isDisabled: disabled,\n elementType: 'button',\n },\n innerRef,\n )\n\n return (\n <IconButtonRoot\n {...mergeProps(buttonProps, {\n ref,\n className,\n })}\n appearance={appearance}\n tone={tone}\n size={size}\n isPressed={isPressed}\n isDisabled={Boolean(disabled)}\n isLoading={loading}\n data-appearance={appearance}\n data-tone={tone}\n data-size={size}\n data-loading={loading ? 'true' : undefined}\n data-pressed={isPressed ? 'true' : undefined}\n >\n <IconSlot isHidden={loading} aria-hidden=\"true\">\n {icon}\n </IconSlot>\n {loading && (\n <LoadingSpinner role=\"status\" aria-live=\"polite\" aria-label={loadingLabel}>\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"30 10\"\n />\n </svg>\n </LoadingSpinner>\n )}\n {label ? <VisuallyHidden>{label}</VisuallyHidden> : null}\n </IconButtonRoot>\n )\n },\n)\n\nIconButton.displayName = 'IconButton'\n\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n var WithTheme = /*#__PURE__*/React.forwardRef(function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n\n var newProps = {};\n\n for (var _key in props) {\n if (hasOwn.call(props, _key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var _key2 in props) {\n if (hasOwn.call(props, _key2) && _key2 !== 'css' && _key2 !== typePropName && (!isDevelopment )) {\n newProps[_key2] = props[_key2];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import * as ReactJSXRuntime from 'react/jsx-runtime';\nimport { h as hasOwn, E as Emotion, c as createEmotionProps } from '../../dist/emotion-element-f0de968e.browser.esm.js';\nimport 'react';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar Fragment = ReactJSXRuntime.Fragment;\nvar jsx = function jsx(type, props, key) {\n if (!hasOwn.call(props, 'css')) {\n return ReactJSXRuntime.jsx(type, props, key);\n }\n\n return ReactJSXRuntime.jsx(Emotion, createEmotionProps(type, props), key);\n};\nvar jsxs = function jsxs(type, props, key) {\n if (!hasOwn.call(props, 'css')) {\n return ReactJSXRuntime.jsxs(type, props, key);\n }\n\n return ReactJSXRuntime.jsxs(Emotion, createEmotionProps(type, props), key);\n};\n\nexport { Fragment, jsx, jsxs };\n","/**\n * Checkbox 组件样式\n * 基于 Emotion + Theme Token\n */\n\nimport { css } from '@emotion/react';\nimport type { Theme } from '@kingsoft-ai/theme';\n\n// Checkbox 容器样式\nexport const checkboxContainer = css`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n position: relative;\n \n input[type=\"checkbox\"] {\n position: absolute;\n opacity: 0;\n width: 1px;\n height: 1px;\n margin: 0;\n padding: 0;\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n white-space: nowrap;\n overflow: hidden;\n left: -9999px;\n -webkit-appearance: none;\n appearance: none;\n }\n \n &[data-disabled=\"true\"] {\n cursor: not-allowed;\n }\n`;\n\n// Checkbox 控件样式(实际的复选框)\nexport const checkboxControl = (theme: Theme) => css`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: ${theme.components.checkbox.control.size};\n height: ${theme.components.checkbox.control.size};\n border-radius: ${theme.components.checkbox.control.borderRadius};\n border: ${theme.components.checkbox.control.borderWidth} solid ${theme.components.checkbox.control.borderColor.default};\n background-color: ${theme.components.checkbox.control.background.default};\n transition: all ${theme.components.checkbox.transition};\n \n /* Hover 状态 */\n &[data-hover=\"true\"]:not([data-disabled=\"true\"]) {\n border-color: ${theme.components.checkbox.control.borderColor.hover};\n }\n \n /* Checked 状态 */\n &[data-checked=\"true\"]:not([data-disabled=\"true\"]) {\n background-color: ${theme.components.checkbox.control.background.checked};\n border-color: ${theme.components.checkbox.control.borderColor.checked};\n }\n \n /* Indeterminate 状态(半选) */\n &[data-indeterminate=\"true\"]:not([data-disabled=\"true\"]) {\n background-color: ${theme.components.checkbox.control.background.checked};\n border-color: ${theme.components.checkbox.control.borderColor.checked};\n }\n \n /* Disabled 未选中状态 */\n &[data-disabled=\"true\"]:not([data-checked=\"true\"]):not([data-indeterminate=\"true\"]) {\n background-color: ${theme.components.checkbox.control.background.disabled};\n border-color: ${theme.components.checkbox.control.borderColor.disabled};\n }\n \n /* Disabled 选中状态 */\n &[data-disabled=\"true\"][data-checked=\"true\"],\n &[data-disabled=\"true\"][data-indeterminate=\"true\"] {\n background-color: ${theme.components.checkbox.control.background.disabledChecked};\n border-color: ${theme.components.checkbox.control.borderColor.disabledChecked};\n }\n \n /* Focus 状态 */\n input:focus-visible + & {\n box-shadow: ${theme.components.checkbox.focusRing};\n }\n`;\n\n// Checkbox 图标样式\nexport const checkboxIcon = (theme: Theme) => css`\n color: ${theme.components.checkbox.control.icon.color};\n width: ${theme.components.checkbox.control.icon.size};\n height: ${theme.components.checkbox.control.icon.size};\n opacity: 0;\n transform: scale(0.8);\n transition: all ${theme.components.checkbox.transition};\n \n &[data-checked=\"true\"] {\n opacity: 1;\n transform: scale(1);\n }\n`;\n\n// Checkbox 标签文字样式\nexport const checkboxLabel = (theme: Theme) => css`\n margin-left: ${theme.components.checkbox.gap};\n font-size: ${theme.components.checkbox.text.label.fontSize};\n line-height: ${theme.components.checkbox.text.label.lineHeight};\n font-weight: ${theme.components.checkbox.text.label.fontWeight};\n color: ${theme.components.checkbox.text.label.color};\n transition: color ${theme.components.checkbox.transition};\n \n &[data-disabled=\"true\"] {\n color: ${theme.components.checkbox.text.label.disabled};\n }\n`;\n\n","/**\n * Checkbox 组件\n * 基于 Figma 设计稿 1:1 还原\n */\n\n/** @jsxImportSource @emotion/react */\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport { useTheme } from '@emotion/react';\nimport type { Theme } from '@kingsoft-ai/theme';\nimport {\n checkboxContainer,\n checkboxControl,\n checkboxIcon,\n checkboxLabel,\n} from './Checkbox.style';\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'onChange'> {\n /**\n * 是否选中\n */\n checked?: boolean;\n \n /**\n * 默认是否选中(非受控)\n */\n defaultChecked?: boolean;\n \n /**\n * 半选状态(用于全选场景)\n */\n indeterminate?: boolean;\n \n /**\n * 是否禁用\n */\n disabled?: boolean;\n \n /**\n * 标签文字\n */\n label?: React.ReactNode;\n \n /**\n * 值改变回调\n */\n onChange?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;\n \n /**\n * 自定义类名\n */\n className?: string;\n \n /**\n * 自定义样式\n */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// Checkbox 图标组件\n// ============================================================================\n\n/**\n * 勾选图标(✓)\n */\nconst CheckIcon: React.FC<{ checked: boolean }> = ({ checked }) => {\n const theme = useTheme() as Theme;\n \n return (\n <svg\n css={checkboxIcon(theme)}\n data-checked={checked}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3332 4.5L5.99984 11.8333L2.6665 8.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\n/**\n * 半选图标(—)\n */\nconst IndeterminateIcon: React.FC<{ checked: boolean }> = ({ checked }) => {\n const theme = useTheme() as Theme;\n \n return (\n <svg\n css={checkboxIcon(theme)}\n data-checked={checked}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.5 8H12.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n};\n\n// ============================================================================\n// Checkbox 组件\n// ============================================================================\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const {\n checked: controlledChecked,\n defaultChecked = false,\n indeterminate = false,\n disabled = false,\n label,\n onChange,\n className,\n style,\n ...inputProps\n } = props;\n\n const theme = useTheme() as Theme;\n const inputRef = useRef<HTMLInputElement>(null);\n const [hover, setHover] = useState(false);\n \n // 内部状态管理(非受控)\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n \n // 判断是否受控\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n\n // 合并 refs\n useEffect(() => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(inputRef.current);\n } else {\n ref.current = inputRef.current;\n }\n }\n }, [ref]);\n\n // 设置 indeterminate 属性(原生 HTML 属性只能通过 JS 设置)\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n // 处理点击\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n const newChecked = event.target.checked;\n \n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n \n onChange?.(newChecked, event);\n };\n\n return (\n <label\n css={checkboxContainer}\n data-disabled={disabled}\n className={className}\n style={style}\n onMouseEnter={() => !disabled && setHover(true)}\n onMouseLeave={() => !disabled && setHover(false)}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n {...inputProps}\n />\n \n <span\n css={checkboxControl(theme)}\n data-hover={hover}\n data-checked={checked && !indeterminate}\n data-indeterminate={indeterminate}\n data-disabled={disabled}\n >\n {indeterminate ? (\n <IndeterminateIcon checked={true} />\n ) : (\n <CheckIcon checked={checked} />\n )}\n </span>\n \n {label && (\n <span\n css={checkboxLabel(theme)}\n data-disabled={disabled}\n >\n {label}\n </span>\n )}\n </label>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n\n","import { jsx as e, jsxs as i } from \"react/jsx-runtime\";\nimport { forwardRef as n } from \"react\";\nconst t = n(\n ({\n children: l,\n size: r = 24,\n color: o = \"currentColor\",\n viewBox: d = \"0 0 24 24\",\n useFill: u = !1,\n strokeWidth: s = 1.5,\n ...a\n }, c) => {\n const C = {\n ref: c,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: r,\n height: r,\n viewBox: d,\n ...a\n };\n return u ? /* @__PURE__ */ e(\"svg\", { ...C, fill: o, children: l }) : /* @__PURE__ */ e(\n \"svg\",\n {\n ...C,\n fill: \"none\",\n stroke: o,\n strokeWidth: s,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: l\n }\n );\n }\n);\nt.displayName = \"IconBase\";\nconst h = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, viewBox: \"0 0 22 22\", useFill: !0, children: /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M0.31074 10.9704C0.310783 10.5562 0.646483 10.2205 1.06066 10.2205L10.2213 10.2218L10.222 1.06742C10.2223 0.653481 10.5579 0.317504 10.9719 0.317505C11.3858 0.317611 11.7215 0.653547 11.7218 1.06742L11.7211 10.2218L20.8824 10.2225C21.2965 10.2227 21.6324 10.5583 21.6324 10.9724C21.6323 11.3865 21.2965 11.7222 20.8824 11.7224L11.7211 11.7217L11.7218 20.8706C11.7218 21.2847 11.386 21.6204 10.9719 21.6205C10.5577 21.6205 10.222 21.2847 10.222 20.8706L10.2213 11.7217L1.06066 11.7203C0.646473 11.7202 0.310739 11.3845 0.31074 10.9704Z\",\n fill: \"currentColor\"\n }\n) }));\nh.displayName = \"AddOutline\";\nconst L = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M5 12h14m0 0l-7-7m7 7l-7 7\" }) }));\nL.displayName = \"ArrowRightOutline\";\nconst p = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M19 12H5m0 0l7-7m-7 7l7 7\" }) }));\np.displayName = \"ArrowLeftOutline\";\nconst k = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, useFill: !0, children: [\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3.80273 8.19824C3.38873 8.19824 3.05273 7.86224 3.05273 7.44824V5.30124C3.06573 2.36324 5.44173 0.000244141 8.35473 0.000244141H8.37473C10.6307 0.000244141 12.6447 1.43324 13.3837 3.56724C13.5197 3.95824 13.3117 4.38524 12.9197 4.52124C12.5287 4.65824 12.1017 4.44924 11.9657 4.05724C11.4367 2.52824 9.99173 1.50024 8.37173 1.50024H8.35773C6.26573 1.50024 4.56173 3.19424 4.55273 5.28424V7.44824C4.55273 7.86224 4.21673 8.19824 3.80273 8.19824Z\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.542 8.12695C2.864 8.12695 1.5 9.49195 1.5 11.17V15.458C1.5 17.136 2.864 18.501 4.542 18.501H12.184C13.861 18.501 15.226 17.136 15.226 15.458V11.17C15.226 9.49195 13.861 8.12695 12.184 8.12695H4.542ZM12.184 20.001H4.542C2.037 20.001 0 17.963 0 15.458V11.17C0 8.66495 2.037 6.62695 4.542 6.62695H12.184C14.688 6.62695 16.726 8.66495 16.726 11.17V15.458C16.726 17.963 14.688 20.001 12.184 20.001Z\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.36328 15.1748C7.94928 15.1748 7.61328 14.8388 7.61328 14.4248V12.2028C7.61328 11.7888 7.94928 11.4528 8.36328 11.4528C8.77728 11.4528 9.11328 11.7888 9.11328 12.2028V14.4248C9.11328 14.8388 8.77728 15.1748 8.36328 15.1748Z\"\n }\n )\n] }));\nk.displayName = \"UnlockOutline\";\nconst M = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, useFill: !0, children: [\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 1.5C5.313 1.5 1.5 5.313 1.5 10C1.5 14.687 5.313 18.5 10 18.5C14.687 18.5 18.5 14.687 18.5 10C18.5 5.313 14.687 1.5 10 1.5ZM10 20C4.486 20 0 15.514 0 10C0 4.486 4.486 0 10 0C15.514 0 20 4.486 20 10C20 15.514 15.514 20 10 20Z\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.55858 14.2207C8.36658 14.2207 8.17358 14.1477 8.02758 13.9997C7.73558 13.7057 7.73658 13.2317 8.02958 12.9397L10.9816 9.99968L8.02958 7.06068C7.73658 6.76868 7.73558 6.29368 8.02758 5.99968C8.31958 5.70468 8.79358 5.70668 9.08758 5.99768L12.5736 9.46868C12.7146 9.60968 12.7936 9.80068 12.7936 9.99968C12.7936 10.1997 12.7146 10.3907 12.5736 10.5317L9.08758 14.0017C8.94158 14.1477 8.74958 14.2207 8.55858 14.2207Z\"\n }\n )\n] }));\nM.displayName = \"ArrowRightCircleOutline\";\nconst v = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M9 6l6 6-6 6\" }) }));\nv.displayName = \"ChevronRightOutline\";\nconst m = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M15 6l-6 6 6 6\" }) }));\nm.displayName = \"ChevronLeftOutline\";\nconst R = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M6 9l6 6 6-6\" }) }));\nR.displayName = \"ChevronDownOutline\";\nconst f = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M18 15l-6-6-6 6\" }) }));\nf.displayName = \"ChevronUpOutline\";\nconst O = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M12 5v14m-7-7h14\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) }));\nO.displayName = \"PlusOutline\";\nconst H = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, children: [\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M11 2H9C4 2 2 4 2 9v6c0 5 2 7 7 7h6c5 0 7-2 7-7v-2\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M16.04 3.02001L8.16 10.9C7.86 11.2 7.56 11.79 7.5 12.22L7.07 15.23C6.91 16.32 7.68 17.08 8.77 16.93L11.78 16.5C12.2 16.44 12.79 16.14 13.1 15.84L20.98 7.96001C22.34 6.60001 22.98 5.02001 20.98 3.02001C18.98 1.02001 17.4 1.66001 16.04 3.02001Z\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M14.91 4.1499C15.58 6.5399 17.45 8.4099 19.85 9.0899\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n )\n] }));\nH.displayName = \"EditSquareOutline\";\nconst V = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, children: [\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M13.26 3.6L5.05 12.29C4.74 12.62 4.44 13.27 4.38 13.72L4.01 16.96C3.88 18.13 4.72 18.93 5.88 18.73L9.1 18.18C9.55 18.1 10.18 17.77 10.49 17.43L18.7 8.74C20.12 7.24 20.76 5.53 18.55 3.44C16.35 1.37 14.68 2.1 13.26 3.6Z\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M11.89 5.05C12.32 7.81 14.56 9.92 17.34 10.2\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M3 22H21\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n )\n] }));\nV.displayName = \"EditOutline\";\nconst y = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M21 5.98C17.67 5.65 14.32 5.48 10.98 5.48C9 5.48 7.02 5.58 5.04 5.78L3 5.98M8.5 4.97L8.72 3.66C8.88 2.71 9 2 10.69 2H13.31C15 2 15.13 2.75 15.28 3.67L15.5 4.97M18.85 9.14L18.2 19.21C18.09 20.78 18 22 15.21 22H8.79C6 22 5.91 20.78 5.8 19.21L5.15 9.14M10.33 16.5H13.66M9.5 12.5H14.5\" }) }));\ny.displayName = \"DeleteOutline\";\nconst Z = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, children: [\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M17 20.5H7C4 20.5 2 19 2 15.5V8.5C2 5 4 3.5 7 3.5H17C20 3.5 22 5 22 8.5V15.5C22 19 20 20.5 17 20.5Z\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M17 9L13.87 11.5C12.84 12.32 11.15 12.32 10.12 11.5L7 9\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeMiterlimit: \"10\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\"\n }\n )\n] }));\nZ.displayName = \"MessageOutline\";\nconst w = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, children: [\n /* @__PURE__ */ e(\n \"circle\",\n {\n cx: \"11.7666\",\n cy: \"11.7666\",\n r: \"8.98856\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n d: \"M18.0183 18.4851L21.5423 22\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n fill: \"none\"\n }\n )\n] }));\nw.displayName = \"SearchOutline\";\nconst N = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, viewBox: \"0 0 22 22\", useFill: !0, children: [\n /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M7.5979 15.5596C7.1839 15.5596 6.8479 15.2236 6.8479 14.8096V11.0646C6.8479 10.6506 7.1839 10.3146 7.5979 10.3146C8.0119 10.3146 8.3479 10.6506 8.3479 11.0646V14.8096C8.3479 15.2236 8.0119 15.5596 7.5979 15.5596Z\", fill: \"currentColor\" }),\n /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M9.50862 13.6865H5.68762C5.27362 13.6865 4.93762 13.3505 4.93762 12.9365C4.93762 12.5225 5.27362 12.1865 5.68762 12.1865H9.50862C9.92262 12.1865 10.2586 12.5225 10.2586 12.9365C10.2586 13.3505 9.92262 13.6865 9.50862 13.6865Z\", fill: \"currentColor\" }),\n /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M14.116 11.9287H14.009C13.595 11.9287 13.259 11.5927 13.259 11.1787C13.259 10.7647 13.595 10.4287 14.009 10.4287H14.116C14.53 10.4287 14.866 10.7647 14.866 11.1787C14.866 11.5927 14.53 11.9287 14.116 11.9287Z\", fill: \"currentColor\" }),\n /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M15.9295 15.5029H15.8225C15.4085 15.5029 15.0725 15.1669 15.0725 14.7529C15.0725 14.3389 15.4085 14.0029 15.8225 14.0029H15.9295C16.3435 14.0029 16.6795 14.3389 16.6795 14.7529C16.6795 15.1669 16.3435 15.5029 15.9295 15.5029Z\", fill: \"currentColor\" }),\n /* @__PURE__ */ e(\"mask\", { id: \"mask0_6909_3794\", style: { maskType: \"luminance\" }, maskUnits: \"userSpaceOnUse\", x: \"6\", y: \"0\", width: \"7\", height: \"6\", children: /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M6.07166 0H12.1117V5.5879H6.07166V0Z\", fill: \"white\" }) }),\n /* @__PURE__ */ e(\"g\", { mask: \"url(#mask0_6909_3794)\", children: /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.3617 5.58788C10.9477 5.58788 10.6117 5.25188 10.6117 4.83788V4.16288C10.6087 3.43888 9.99466 2.84388 9.24366 2.84088H8.18966C7.02266 2.84088 6.07166 1.90288 6.07166 0.749878C6.07166 0.335878 6.40766 -0.00012207 6.82166 -0.00012207C7.23666 -0.00012207 7.57166 0.335878 7.57166 0.749878C7.57166 1.07588 7.84866 1.34088 8.18966 1.34088H9.24666C10.8197 1.34588 12.1047 2.60988 12.1117 4.15888V4.83788C12.1117 5.25188 11.7757 5.58788 11.3617 5.58788Z\", fill: \"currentColor\" }) }),\n /* @__PURE__ */ e(\"mask\", { id: \"mask1_6909_3794\", style: { maskType: \"luminance\" }, maskUnits: \"userSpaceOnUse\", x: \"0\", y: \"4\", width: \"22\", height: \"18\", children: /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M0 4.37329H21.4998V21.5H0V4.37329Z\", fill: \"white\" }) }),\n /* @__PURE__ */ e(\"g\", { mask: \"url(#mask1_6909_3794)\", children: /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.701 5.87304C9.225 5.87304 7.767 5.88604 6.335 5.91004C3.528 5.91004 1.5 7.88804 1.5 10.612V15.262C1.5 17.985 3.528 19.963 6.323 19.963C9.27 20.012 12.241 20.012 15.165 19.963H15.178C17.972 19.963 20 17.985 20 15.262V10.612C20 7.88804 17.972 5.91004 15.178 5.91004C13.674 5.88604 12.179 5.87304 10.701 5.87304ZM10.754 21.5C9.271 21.5 7.786 21.487 6.31 21.463C2.659 21.463 0 18.854 0 15.262V10.612C0 7.01904 2.659 4.41004 6.323 4.41004C9.192 4.36104 12.18 4.36104 15.19 4.41004C18.841 4.41004 21.5 7.01904 21.5 10.612V15.262C21.5 18.852 18.845 21.46 15.184 21.463C13.716 21.487 12.236 21.5 10.754 21.5Z\", fill: \"currentColor\" }) })\n] }));\nN.displayName = \"GameOutline\";\nconst g = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, viewBox: \"0 0 12 12\", useFill: !0, children: /* @__PURE__ */ e(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M9.41575 3.81219C9.53779 3.93423 9.53779 4.1321 9.41575 4.25414L4.90757 8.76231L2.58467 6.4468C2.46243 6.32496 2.46212 6.12709 2.58396 6.00486L2.93695 5.65074C3.05879 5.52851 3.25666 5.52819 3.37889 5.65004L3.46421 5.73508L4.90631 7.17259L8.62025 3.45864C8.74229 3.3366 8.94015 3.3366 9.06219 3.45864L9.41575 3.81219Z\", fill: \"currentColor\" }) }));\ng.displayName = \"CheckOutline\";\nconst x = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M18 6L6 18M6 6l12 12\" }) }));\nx.displayName = \"CloseOutline\";\nconst j = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, viewBox: \"0 0 20 19\", useFill: !0, children: /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.74992 1.5C9.65892 1.5 9.43492 1.525 9.31592 1.763L7.48992 5.414C7.20092 5.991 6.64392 6.392 5.99992 6.484L1.91192 7.073C1.64192 7.112 1.54992 7.312 1.52192 7.396C1.49692 7.477 1.45692 7.683 1.64292 7.861L4.59892 10.701C5.06992 11.154 5.28392 11.807 5.17192 12.446L4.47592 16.456C4.43292 16.707 4.58992 16.853 4.65992 16.903C4.73392 16.959 4.93192 17.07 5.17692 16.942L8.83192 15.047C9.40792 14.75 10.0939 14.75 10.6679 15.047L14.3219 16.941C14.5679 17.068 14.7659 16.957 14.8409 16.903C14.9109 16.853 15.0679 16.707 15.0249 16.456L14.3269 12.446C14.2149 11.807 14.4289 11.154 14.8999 10.701L17.8559 7.861C18.0429 7.683 18.0029 7.476 17.9769 7.396C17.9499 7.312 17.8579 7.112 17.5879 7.073L13.4999 6.484C12.8569 6.392 12.2999 5.991 12.0109 5.413L10.1829 1.763C10.0649 1.525 9.84092 1.5 9.74992 1.5ZM4.94692 18.5C4.53392 18.5 4.12392 18.37 3.77292 18.114C3.16692 17.67 2.86992 16.937 2.99892 16.199L3.69492 12.189C3.72092 12.04 3.66992 11.889 3.55992 11.783L0.603916 8.943C0.0599161 8.422 -0.135084 7.652 0.0949161 6.937C0.326916 6.214 0.940916 5.697 1.69792 5.589L5.78592 5C5.94392 4.978 6.07992 4.881 6.14792 4.743L7.97492 1.091C8.31192 0.418 8.99192 0 9.74992 0C10.5079 0 11.1879 0.418 11.5249 1.091L13.3529 4.742C13.4219 4.881 13.5569 4.978 13.7139 5L17.8019 5.589C18.5589 5.697 19.1729 6.214 19.4049 6.937C19.6349 7.652 19.4389 8.422 18.8949 8.943L15.9389 11.783C15.8289 11.889 15.7789 12.04 15.8049 12.188L16.5019 16.199C16.6299 16.938 16.3329 17.671 15.7259 18.114C15.1109 18.565 14.3099 18.626 13.6309 18.272L9.97792 16.379C9.83492 16.305 9.66392 16.305 9.52092 16.379L5.86792 18.273C5.57592 18.425 5.26092 18.5 4.94692 18.5Z\",\n fill: \"currentColor\"\n }\n) }));\nj.displayName = \"StartOutline\";\nconst B = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, viewBox: \"0 0 20 19\", useFill: !0, children: [\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.5 11.979V14.024C1.5 14.73 1.774 15.393 2.273 15.892C2.772 16.391 3.436 16.666 4.141 16.666H15.857C17.313 16.666 18.499 15.482 18.5 14.026V11.978C17.214 11.645 16.261 10.474 16.26 9.085C16.26 7.696 17.213 6.525 18.499 6.191L18.5 4.146C18.501 2.688 17.318 1.501 15.861 1.5H4.144C2.687 1.5 1.501 2.685 1.5 4.142V6.259C1.986 6.375 2.437 6.614 2.812 6.964C3.381 7.495 3.709 8.215 3.737 8.993C3.74 10.459 2.787 11.643 1.5 11.979ZM15.857 18.166H4.142C3.035 18.166 1.995 17.736 1.212 16.953C0.43 16.17 0 15.13 0 14.024V11.324C0 10.91 0.336 10.574 0.75 10.574C1.574 10.573 2.24 9.905 2.239 9.085C2.225 8.667 2.065 8.319 1.789 8.061C1.514 7.803 1.158 7.662 0.776 7.683C0.569 7.685 0.375 7.614 0.229 7.473C0.083 7.332 0 7.136 0 6.933V4.143C0.001 1.858 1.86 0 4.144 0H15.856C18.146 0.001 20.002 1.863 20 4.147V6.846C20 7.26 19.664 7.596 19.25 7.596C18.429 7.596 17.76 8.264 17.76 9.084C17.761 9.906 18.429 10.574 19.25 10.574C19.664 10.574 20 10.91 20 11.324V14.024C19.999 16.308 18.14 18.166 15.857 18.166Z\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.10395 8.38103L8.61295 8.87703C8.88895 9.14803 9.01395 9.53403 8.94795 9.91103L8.82795 10.609L9.45695 10.278C9.79595 10.097 10.203 10.098 10.545 10.28L11.17 10.608L11.05 9.90903C10.987 9.52603 11.113 9.14303 11.386 8.87703L11.8949 8.38103L11.1899 8.27903C10.812 8.22403 10.484 7.98603 10.3149 7.64103L9.99995 7.00403L9.68495 7.64203C9.51595 7.98603 9.18795 8.22403 8.80795 8.27903L8.10395 8.38103ZM11.6179 12.387C11.432 12.387 11.246 12.342 11.074 12.251L9.99995 11.688L8.92495 12.252C8.52895 12.459 8.05795 12.426 7.69795 12.164C7.33695 11.901 7.15995 11.465 7.23495 11.025L7.43995 9.82903L6.57095 8.98203C6.25195 8.67103 6.13795 8.21403 6.27495 7.79003C6.41295 7.36503 6.77295 7.06003 7.21395 6.99603L8.41795 6.82003L8.95495 5.73103C9.15195 5.33103 9.55195 5.08203 9.99995 5.08203C10.446 5.08203 10.847 5.33103 11.044 5.73203L11.582 6.82003L12.784 6.99603C13.226 7.06003 13.5869 7.36503 13.7239 7.79003C13.8609 8.21403 13.748 8.67103 13.4279 8.98303L12.558 9.83003L12.7639 11.025C12.8389 11.466 12.661 11.903 12.299 12.165C12.095 12.312 11.8569 12.387 11.6179 12.387Z\"\n }\n )\n] }));\nB.displayName = \"TicketOutline\";\nconst F = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, viewBox: \"0 0 20 20\", useFill: !0, children: [\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10 1.5C5.313 1.5 1.5 5.313 1.5 10C1.5 14.687 5.313 18.5 10 18.5C14.687 18.5 18.5 14.687 18.5 10C18.5 5.313 14.687 1.5 10 1.5ZM10 20C4.486 20 0 15.514 0 10C0 4.486 4.486 0 10 0C15.514 0 20 4.486 20 10C20 15.514 15.514 20 10 20Z\",\n fill: \"currentColor\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.9482 11.0137C13.3952 11.0137 12.9432 10.5667 12.9432 10.0137C12.9432 9.46067 13.3862 9.01367 13.9382 9.01367H13.9482C14.5012 9.01367 14.9482 9.46067 14.9482 10.0137C14.9482 10.5667 14.5012 11.0137 13.9482 11.0137Z\",\n fill: \"currentColor\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.93845 11.0137C9.38545 11.0137 8.93445 10.5667 8.93445 10.0137C8.93445 9.46067 9.37645 9.01367 9.92945 9.01367H9.93845C10.4914 9.01367 10.9384 9.46067 10.9384 10.0137C10.9384 10.5667 10.4914 11.0137 9.93845 11.0137Z\",\n fill: \"currentColor\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.92968 11.0137C5.37668 11.0137 4.92468 10.5667 4.92468 10.0137C4.92468 9.46067 5.36768 9.01367 5.92068 9.01367H5.92968C6.48268 9.01367 6.92968 9.46067 6.92968 10.0137C6.92968 10.5667 6.48268 11.0137 5.92968 11.0137Z\",\n fill: \"currentColor\"\n }\n )\n] }));\nF.displayName = \"MoreCircleOutline\";\nconst A = n((l, r) => /* @__PURE__ */ i(t, { ref: r, ...l, children: [\n /* @__PURE__ */ e(\"path\", { d: \"M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z\" }),\n /* @__PURE__ */ e(\"circle\", { cx: \"15.5\", cy: \"12\", r: \"1\" }),\n /* @__PURE__ */ e(\"circle\", { cx: \"11.5\", cy: \"12\", r: \"1\" }),\n /* @__PURE__ */ e(\"circle\", { cx: \"7.5\", cy: \"12\", r: \"1\" })\n] }));\nA.displayName = \"MoreSquareOutline\";\nconst S = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, viewBox: \"0 0 19 19\", useFill: !0, children: /* @__PURE__ */ e(\"path\", { d: \"M12.2871 7.28027C11.9093 7.28115 11.596 7.00252 11.543 6.63965L11.5352 6.5293L11.5488 0.749023C11.5498 0.33481 11.8866 -0.000957489 12.3008 0C12.6771 0.00109291 12.9883 0.279963 13.041 0.641602L13.0488 0.751953L13.0371 5.77832L18.0635 5.76758C18.4777 5.76662 18.8145 6.10141 18.8154 6.51562C18.8163 6.89214 18.5392 7.20439 18.1777 7.25879L18.0674 7.26758L12.2871 7.28027ZM6.51465 18.8164C6.1383 18.8153 5.82712 18.5364 5.77441 18.1748L5.7666 18.0645L5.77832 13.0371L0.751953 13.0488C0.375542 13.0497 0.0633717 12.7734 0.00878906 12.4121L0 12.3008C-0.000797272 11.9243 0.276207 11.612 0.637695 11.5576L0.748047 11.5488L6.52832 11.5361C6.90611 11.5353 7.2194 11.8139 7.27246 12.1768L7.28027 12.2871L7.2666 18.0674C7.26564 18.4816 6.92886 18.8174 6.51465 18.8164Z\" }) }));\nS.displayName = \"ShrinkOutline\";\nconst W = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M21 9V3h-6M3 15v6h6M21 3l-7 7M10 14l-7 7\" }) }));\nW.displayName = \"ExpandOutline\";\nconst U = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, viewBox: \"0 0 20 20\", useFill: !0, children: /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.773 9.59876C6.791 9.61476 6.808 9.62976 6.825 9.64776C7.904 10.7538 8.499 12.2188 8.499 13.7738V17.7578L10.735 16.5398C10.911 16.4438 11.02 16.2558 11.02 16.0488V13.7618C11.02 12.2128 11.609 10.7528 12.678 9.65276L17.515 4.50776C17.828 4.17476 18 3.73776 18 3.27676V2.34076C18 1.87676 17.634 1.49976 17.186 1.49976H2.315C1.866 1.49976 1.5 1.87676 1.5 2.34076V3.27676C1.5 3.73776 1.672 4.17476 1.985 4.50676L6.773 9.59876ZM8.146 19.5008C7.944 19.5008 7.744 19.4468 7.562 19.3388C7.21 19.1288 6.999 18.7578 6.999 18.3458V13.7738C6.999 12.6388 6.576 11.5698 5.805 10.7508C5.782 10.7318 5.759 10.7108 5.739 10.6888L0.893 5.53576C0.317 4.92376 0 4.12076 0 3.27676V2.34076C0 1.04976 1.039 -0.000244141 2.315 -0.000244141H17.186C18.461 -0.000244141 19.5 1.04976 19.5 2.34076V3.27676C19.5 4.11976 19.183 4.92176 18.609 5.53476L13.762 10.6888C12.959 11.5168 12.52 12.6058 12.52 13.7618V16.0488C12.52 16.8048 12.111 17.4968 11.453 17.8568L8.692 19.3608C8.52 19.4538 8.333 19.5008 8.146 19.5008Z\",\n fill: \"currentColor\"\n }\n) }));\nU.displayName = \"FunnelOutline\";\nconst _ = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M2 12H22\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) }));\n_.displayName = \"MinusOutline\";\nconst E = n((l, r) => /* @__PURE__ */ i(t, { ref: r, useFill: !0, ...l, children: [\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M4.25 12a.75.75 0 0 1 .75-.75h14a.75.75 0 0 1 0 1.5H5a.75.75 0 0 1-.75-.75Z\"\n }\n ),\n /* @__PURE__ */ e(\n \"path\",\n {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.47 4.47a.75.75 0 0 1 1.06 0l7 7a.75.75 0 0 1 0 1.06l-7 7a.75.75 0 1 1-1.06-1.06L18.94 12l-6.47-6.47a.75.75 0 0 1 0-1.06Z\"\n }\n )\n] }));\nE.displayName = \"ArrowRightBold\";\nconst q = n((l, r) => /* @__PURE__ */ e(t, { ref: r, ...l, children: /* @__PURE__ */ e(\"path\", { d: \"M5 12h7m5 0h2m-2 0l-7-7m7 7l-7 7\" }) }));\nq.displayName = \"ArrowRightBroken\";\nexport {\n h as AddOutline,\n p as ArrowLeftOutline,\n E as ArrowRightBold,\n q as ArrowRightBroken,\n M as ArrowRightCircleOutline,\n L as ArrowRightOutline,\n g as CheckOutline,\n R as ChevronDownOutline,\n m as ChevronLeftOutline,\n v as ChevronRightOutline,\n f as ChevronUpOutline,\n x as CloseOutline,\n y as DeleteOutline,\n V as EditOutline,\n H as EditSquareOutline,\n W as ExpandOutline,\n U as FunnelOutline,\n N as GameOutline,\n t as IconBase,\n Z as MessageOutline,\n _ as MinusOutline,\n F as MoreCircleOutline,\n A as MoreSquareOutline,\n O as PlusOutline,\n w as SearchOutline,\n S as ShrinkOutline,\n j as StartOutline,\n B as TicketOutline,\n k as UnlockOutline\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * CheckboxButton 组件样式\n * 基于 Emotion + Theme Token\n * \n * 设计规范:\n * - 按钮样式的 checkbox\n * - 右下角勾选标记\n * - 完整的交互状态\n */\n\nimport { css } from '@emotion/react';\nimport type { Theme } from '@kingsoft-ai/theme';\n\nexport type CheckboxButtonSize = 'sm' | 'md' | 'lg';\n\ninterface CheckboxButtonSizeConfig {\n paddingX: number;\n paddingY: number;\n gap: number;\n minHeight: number;\n fontSize: number;\n lineHeight: number;\n checkmarkSize: number;\n checkmarkIcon: number;\n}\n\nexport const checkboxButtonSizeTokens: Record<CheckboxButtonSize, CheckboxButtonSizeConfig> = {\n sm: {\n paddingX: 12,\n paddingY: 5,\n gap: 8,\n minHeight: 28,\n fontSize: 12,\n lineHeight: 18,\n checkmarkSize: 10,\n checkmarkIcon: 7,\n },\n md: {\n paddingX: 16,\n paddingY: 7,\n gap: 10,\n minHeight: 32,\n fontSize: 12,\n lineHeight: 18,\n checkmarkSize: 12,\n checkmarkIcon: 8,\n },\n lg: {\n paddingX: 20,\n paddingY: 9,\n gap: 12,\n minHeight: 38,\n fontSize: 14,\n lineHeight: 20,\n checkmarkSize: 14,\n checkmarkIcon: 9,\n },\n};\n\n// ============================================================================\n// CheckboxButton 容器样式\n// ============================================================================\n\nexport const checkboxButtonContainer = css`\n display: inline-flex;\n cursor: pointer;\n user-select: none;\n position: relative;\n \n /* 隐藏原生 checkbox */\n input[type=\"checkbox\"] {\n position: absolute;\n opacity: 0;\n width: 1px;\n height: 1px;\n margin: 0;\n padding: 0;\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n white-space: nowrap;\n overflow: hidden;\n left: -9999px;\n -webkit-appearance: none;\n appearance: none;\n }\n \n &[data-disabled=\"true\"] {\n cursor: not-allowed;\n }\n`;\n\n// ============================================================================\n// CheckboxButton 包装器样式(按钮外观)\n// ============================================================================\n\nexport const checkboxButtonWrapper = (theme: Theme, size: CheckboxButtonSize = 'md') => {\n const sizeToken = checkboxButtonSizeTokens[size];\n \n return css`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n \n /* 尺寸与间距 - 按照设计稿 */\n padding: ${sizeToken.paddingY}px ${sizeToken.paddingX}px;\n gap: ${sizeToken.gap}px;\n min-height: ${sizeToken.minHeight}px;\n \n /* 字体样式 */\n font-family: ${theme.global.typography.fontFamily};\n font-size: ${sizeToken.fontSize}px;\n line-height: ${sizeToken.lineHeight}px;\n font-weight: 400;\n white-space: nowrap;\n \n /* 边框与圆角 */\n border: 1px solid ${theme.global.colors.neutral[200]}; /* #e1e1e1 - b4 组件描边 */\n border-radius: 4px;\n \n /* 默认状态 - 未选中 */\n background-color: ${theme.global.colors.common.white};\n color: rgba(10, 24, 51, 0.7); /* f4 正文文字色 */\n \n /* 过渡动画 */\n transition: \n background-color 0.2s ease,\n border-color 0.2s ease,\n color 0.2s ease;\n \n /* Hover 状态 - 未选中 */\n &[data-hover=\"true\"]:not([data-checked=\"true\"]):not([data-disabled=\"true\"]) {\n border-color: ${theme.global.colors.blue[500]}; /* #2c6fe7 - b5 主按钮色 */\n color: ${theme.global.colors.blue[500]};\n }\n \n /* Checked 状态 - 已选中 */\n &[data-checked=\"true\"]:not([data-disabled=\"true\"]) {\n background-color: ${theme.global.colors.blue[100]}; /* #d4e9fd - b1 选中背景面 */\n border-color: ${theme.global.colors.blue[500]}; /* #2c6fe7 - b5 主按钮色 */\n color: ${theme.global.colors.blue[500]};\n }\n \n /* Disabled 未选中状态 */\n &[data-disabled=\"true\"]:not([data-checked=\"true\"]) {\n background-color: ${theme.global.colors.neutral[100]}; /* #f0f0f0 - b5 禁用背景色 */\n border-color: ${theme.global.colors.neutral[200]}; /* #e1e1e1 */\n color: rgba(10, 24, 51, 0.3); /* f8 禁用文字色 */\n }\n \n /* Disabled 选中状态 */\n &[data-disabled=\"true\"][data-checked=\"true\"] {\n background-color: ${theme.global.colors.neutral[100]}; /* #f0f0f0 - b5 禁用背景色 */\n border-color: ${theme.global.colors.neutral[400]}; /* #c2c5cc - b6 选中边框色 */\n color: rgba(10, 24, 51, 0.3); /* f8 禁用文字色 */\n }\n \n /* Focus 状态 - 键盘导航 */\n input:focus-visible + & {\n outline: 2px solid ${theme.global.colors.blue[500]};\n outline-offset: 2px;\n }\n `;\n};\n\n// ============================================================================\n// CheckboxButton 勾选标记样式(右下角)\n// ============================================================================\n\nexport const checkboxButtonCheckmark = (theme: Theme, size: CheckboxButtonSize = 'md') => {\n const { checkmarkSize, checkmarkIcon } = checkboxButtonSizeTokens[size];\n \n return css`\n position: absolute;\n bottom: 0;\n right: 0;\n \n display: flex;\n align-items: flex-end;\n justify-content: flex-end;\n \n /* 勾选标记的背景三角形区域 */\n width: ${checkmarkSize}px;\n height: ${checkmarkSize}px;\n overflow: hidden;\n \n /* 过渡动画 */\n transition: background-color 0.2s ease;\n \n /* 背景三角形 */\n &::before {\n content: '';\n position: absolute;\n bottom: 0;\n right: 0;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 0 ${checkmarkSize}px ${checkmarkSize}px;\n border-color: transparent transparent ${theme.global.colors.blue[500]} transparent;\n transition: border-color 0.2s ease;\n }\n \n /* 禁用状态的背景 */\n &[data-disabled=\"true\"]::before {\n border-color: transparent transparent ${theme.global.colors.neutral[400]} transparent;\n }\n \n /* 图标样式 */\n svg {\n position: relative;\n color: ${theme.global.colors.common.white};\n width: ${checkmarkIcon}px;\n height: ${checkmarkIcon}px;\n margin: 0;\n z-index: 1;\n }\n \n /* 禁用状态的图标 */\n &[data-disabled=\"true\"] svg {\n color: ${theme.global.colors.neutral[100]}; /* #f0f2f4 */\n }\n `;\n};\n\n","/**\n * CheckboxButton 组件 - 按钮风格的 Checkbox\n * \n * 特性:\n * - 按钮样式的 checkbox 外观\n * - 右下角显示勾选标记\n * - 支持受控/非受控模式\n */\n\n/** @jsxImportSource @emotion/react */\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\nimport { useTheme } from '@emotion/react';\nimport type { Theme } from '@kingsoft-ai/theme';\nimport { CheckOutline } from '@kingsoft-ai/icons';\nimport {\n checkboxButtonContainer,\n checkboxButtonWrapper,\n checkboxButtonCheckmark,\n checkboxButtonSizeTokens,\n} from './CheckboxButton.style';\nimport type { CheckboxButtonSize } from './CheckboxButton.style';\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface CheckboxButtonProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'onChange' | 'indeterminate'> {\n /**\n * 是否选中\n */\n checked?: boolean;\n \n /**\n * 默认是否选中(非受控)\n */\n defaultChecked?: boolean;\n \n /**\n * 是否禁用\n */\n disabled?: boolean;\n \n /**\n * 标签文字(必填)\n */\n label: React.ReactNode;\n \n /**\n * 值改变回调\n */\n onChange?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;\n \n /**\n * 尺寸\n */\n size?: CheckboxButtonSize;\n \n /**\n * 自定义类名\n */\n className?: string;\n \n /**\n * 自定义样式\n */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// CheckboxButton 组件\n// ============================================================================\n\n/**\n * CheckboxButton - 按钮风格的复选框组件\n * \n * 按照设计稿,呈现为按钮样式,右下角带勾选标记\n */\nexport const CheckboxButton = forwardRef<HTMLInputElement, CheckboxButtonProps>(\n (props, ref) => {\n const {\n checked: controlledChecked,\n defaultChecked = false,\n disabled = false,\n label,\n size = 'md',\n onChange,\n className,\n style,\n ...inputProps\n } = props;\n\n const theme = useTheme() as Theme;\n const inputRef = useRef<HTMLInputElement>(null);\n const [hover, setHover] = useState(false);\n \n // 内部状态管理(非受控)\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n \n // 判断是否受控\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n\n // 合并 refs\n useEffect(() => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(inputRef.current);\n } else {\n ref.current = inputRef.current;\n }\n }\n }, [ref]);\n\n // 处理点击\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n \n const newChecked = event.target.checked;\n \n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n \n onChange?.(newChecked, event);\n };\n\n const sizeToken = checkboxButtonSizeTokens[size];\n \n return (\n <label\n css={checkboxButtonContainer}\n data-disabled={disabled}\n className={className}\n style={style}\n onMouseEnter={() => !disabled && setHover(true)}\n onMouseLeave={() => !disabled && setHover(false)}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n {...inputProps}\n />\n \n <span\n css={checkboxButtonWrapper(theme, size)}\n data-hover={hover}\n data-checked={checked}\n data-disabled={disabled}\n data-size={size}\n >\n {/* 标签文字 */}\n {label}\n \n {/* 右下角勾选标记 */}\n {checked && (\n <span\n css={checkboxButtonCheckmark(theme, size)}\n data-disabled={disabled}\n data-size={size}\n >\n <CheckOutline size={sizeToken.checkmarkIcon} />\n </span>\n )}\n </span>\n </label>\n );\n }\n);\n\nCheckboxButton.displayName = 'CheckboxButton';\n\nexport default CheckboxButton;\n\n","/**\n * Collapse 折叠面板样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css, keyframes } from '@emotion/react'\n\n// ============================================================================\n// 动画定义\n// ============================================================================\n\n/**\n * 折叠内容展开动画\n */\nconst slideDown = keyframes`\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`\n\n/**\n * 折叠内容收起动画\n */\nconst slideUp = keyframes`\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-8px);\n }\n`\n\n/**\n * 箭头旋转动画(展开)\n */\nexport const rotateArrowDown = keyframes`\n from {\n transform: rotate(-90deg);\n }\n to {\n transform: rotate(0deg);\n }\n`\n\n/**\n * 箭头旋转动画(收起)\n */\nexport const rotateArrowUp = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(-90deg);\n }\n`\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Collapse 根容器\n * \n * 特性:\n * - 完整的边框和圆角\n * - 使用 Tier 3 组件层 Token\n */\nexport const CollapseRoot = styled.div`\n width: 100%;\n border: 1px solid ${({ theme }) => theme.components.collapse.border.default};\n border-radius: ${({ theme }) => theme.components.collapse.borderRadius};\n background: ${({ theme }) => theme.components.collapse.background.default};\n overflow: hidden;\n`\n\n/**\n * CollapseItem 容器\n * \n * 特性:\n * - 包含标题栏和内容区\n * - 底部边框作为分隔线\n */\nexport const CollapseItemWrapper = styled.div<{\n isLast?: boolean\n}>`\n border-bottom: ${({ isLast, theme }) =>\n isLast ? 'none' : `1px solid ${theme.components.collapse.divider}`};\n`\n\n/**\n * 折叠面板标题栏\n * \n * 特性:\n * - 可点击区域\n * - hover 状态背景色变化\n * - 支持键盘导航\n * - 完整的无障碍支持\n */\nexport const CollapseHeader = styled.div<{\n isExpanded: boolean\n isDisabled?: boolean\n}>`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.components.collapse.gap};\n padding: ${({ theme }) => theme.components.collapse.padding.header};\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n user-select: none;\n transition: background ${({ theme }) => theme.components.collapse.transition};\n \n /* Hover 状态 */\n ${({ isDisabled, theme }) =>\n !isDisabled &&\n css`\n &:hover {\n background: ${theme.components.collapse.background.hover};\n }\n `}\n\n /* Focus 可见状态 - 键盘导航时显示 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.components.collapse.arrow.default};\n outline-offset: -2px;\n }\n \n /* 禁用状态 */\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n opacity: 0.5;\n `}\n`\n\n/**\n * 箭头图标容器\n * \n * 特性:\n * - 平滑的旋转动画\n * - 展开时旋转 90 度(从右箭头变为下箭头)\n */\nexport const ArrowWrapper = styled.div<{\n isExpanded: boolean\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: ${({ theme }) => theme.components.collapse.arrowSize};\n height: ${({ theme }) => theme.components.collapse.arrowSize};\n color: ${({ theme }) => theme.components.collapse.arrow.default};\n transition: transform ${({ theme }) => theme.components.collapse.transition};\n transform: rotate(${({ isExpanded }) => (isExpanded ? '0deg' : '-90deg')});\n \n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n/**\n * 标题内容区\n * \n * 特性:\n * - 弹性布局,支持多行换行\n * - 可容纳自定义内容\n */\nexport const TitleWrapper = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.components.collapse.gap};\n min-width: 0; /* 允许内容收缩 */\n`\n\n/**\n * 标题文本\n * \n * 特性:\n * - 使用 Tier 3 文字颜色 Token\n * - 支持多行文本\n */\nexport const TitleText = styled.p`\n margin: 0;\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 14px;\n line-height: 22px;\n color: ${({ theme }) => theme.components.collapse.text.title};\n white-space: pre-wrap;\n word-break: break-word;\n`\n\n/**\n * 右侧后缀内容区\n * \n * 特性:\n * - 固定在右侧\n * - 支持图标、按钮等自定义内容\n */\nexport const SuffixWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n`\n\n/**\n * 折叠内容外层容器\n * \n * 特性:\n * - 控制高度和 overflow\n * - 平滑的高度过渡动画\n */\nexport const CollapseContentWrapper = styled.div<{\n isExpanded: boolean\n contentHeight: number\n}>`\n max-height: ${({ isExpanded, contentHeight }) =>\n isExpanded ? `${contentHeight}px` : '0px'};\n overflow: hidden;\n transition: max-height ${({ theme }) => theme.components.collapse.transition};\n`\n\n/**\n * 折叠内容内层容器\n * \n * 特性:\n * - 实际内容区域\n * - 内边距\n * - 淡入淡出动画\n */\nexport const CollapseContentInner = styled.div<{\n isExpanded: boolean\n}>`\n padding: ${({ theme }) => theme.components.collapse.padding.content};\n border-top: 1px solid ${({ theme }) => theme.components.collapse.divider};\n \n ${({ isExpanded }) =>\n isExpanded\n ? css`\n animation: ${slideDown} 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n `\n : css`\n animation: ${slideUp} 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n `}\n`\n\n/**\n * 折叠内容文本区域\n * \n * 特性:\n * - 使用 Tier 3 文字颜色 Token\n * - 支持富文本内容\n */\nexport const ContentText = styled.div`\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 12px;\n line-height: 22px;\n color: ${({ theme }) => theme.components.collapse.text.default};\n \n p {\n margin: 0 0 12px 0;\n \n &:last-child {\n margin-bottom: 0;\n }\n }\n`\n\n","/**\n * Collapse 折叠面板组件\n * \n * 可以折叠/展开的内容区域\n * 支持手风琴模式(同时只能展开一个)和普通模式(可同时展开多个)\n * \n * @example\n * ```tsx\n * // 非受控模式\n * <Collapse defaultActiveKey={['1']}>\n * <CollapseItem itemKey=\"1\" title=\"标题1\">内容1</CollapseItem>\n * <CollapseItem itemKey=\"2\" title=\"标题2\">内容2</CollapseItem>\n * </Collapse>\n * \n * // 受控模式 + 手风琴\n * <Collapse\n * activeKey={activeKey}\n * onChange={setActiveKey}\n * accordion\n * >\n * <CollapseItem itemKey=\"1\" title=\"标题1\">内容1</CollapseItem>\n * <CollapseItem itemKey=\"2\" title=\"标题2\">内容2</CollapseItem>\n * </Collapse>\n * ```\n */\n\nimport { useState, Children, cloneElement, isValidElement, forwardRef } from 'react'\nimport type { ReactElement, ReactNode } from 'react'\nimport { CollapseRoot } from './Collapse.style'\nimport type { CollapseItemProps } from './CollapseItem'\n\nexport interface CollapseProps {\n /** 当前激活的面板(受控) */\n activeKey?: string | number | (string | number)[]\n /** 默认激活的面板(非受控) */\n defaultActiveKey?: string | number | (string | number)[]\n /** 手风琴模式,每次只能展开一个面板 */\n accordion?: boolean\n /** 展开/收起回调 */\n onChange?: (activeKey: string | number | (string | number)[]) => void\n /** 子元素(CollapseItem) */\n children?: ReactNode\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * Collapse 折叠面板\n * \n * 特性:\n * - 支持受控和非受控模式\n * - 支持手风琴模式(accordion)\n * - 平滑的展开/收起动画\n * - 完整的键盘导航和无障碍支持\n */\nexport const Collapse = forwardRef<HTMLDivElement, CollapseProps>(\n (\n {\n activeKey: activeKeyProp,\n defaultActiveKey = [],\n accordion = false,\n onChange,\n children,\n className,\n },\n ref,\n ) => {\n // 内部状态(非受控模式)\n const [internalActiveKey, setInternalActiveKey] = useState<\n string | number | (string | number)[]\n >(defaultActiveKey)\n\n // 判断是否为受控模式\n const isControlled = activeKeyProp !== undefined\n const activeKey = isControlled ? activeKeyProp : internalActiveKey\n\n // 将 activeKey 统一转换为数组形式处理\n const activeKeys = Array.isArray(activeKey) ? activeKey : [activeKey]\n\n /**\n * 处理面板展开/收起\n */\n const handleChange = (itemKey: string | number, expanded: boolean) => {\n let newActiveKey: string | number | (string | number)[]\n\n if (accordion) {\n // 手风琴模式:只能展开一个\n newActiveKey = expanded ? itemKey : ''\n } else {\n // 普通模式:可以展开多个\n const currentKeys = Array.isArray(activeKey) ? [...activeKey] : activeKey ? [activeKey] : []\n \n if (expanded) {\n // 添加到激活列表\n newActiveKey = [...currentKeys, itemKey]\n } else {\n // 从激活列表移除\n newActiveKey = currentKeys.filter((key) => key !== itemKey)\n }\n }\n\n // 更新状态\n if (!isControlled) {\n setInternalActiveKey(newActiveKey)\n }\n\n // 触发回调\n onChange?.(newActiveKey)\n }\n\n /**\n * 渲染子元素\n */\n const renderChildren = () => {\n const items = Children.toArray(children).filter(isValidElement) as ReactElement<CollapseItemProps>[]\n const itemCount = items.length\n\n return items.map((child, index) => {\n const itemKey = child.props.itemKey\n const expanded = activeKeys.includes(itemKey)\n const last = index === itemCount - 1\n\n return cloneElement(child, {\n ...child.props,\n expanded,\n last,\n onChange: handleChange,\n })\n })\n }\n\n return (\n <CollapseRoot ref={ref} className={className} role=\"region\">\n {renderChildren()}\n </CollapseRoot>\n )\n },\n)\n\nCollapse.displayName = 'Collapse'\n\n\n\n\n\n","/**\n * CollapseItem 折叠面板项组件\n * \n * 单个可折叠的面板项,支持自定义标题、内容和后缀\n * \n * @example\n * ```tsx\n * <CollapseItem\n * title=\"折叠面板\"\n * suffix={<Tag>Red</Tag>}\n * >\n * 这是折叠面板的内容\n * </CollapseItem>\n * ```\n */\n\nimport { useRef, useEffect, useState, forwardRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { ChevronDownOutline } from '@kingsoft-ai/icons'\nimport {\n CollapseItemWrapper,\n CollapseHeader,\n ArrowWrapper,\n TitleWrapper,\n TitleText,\n SuffixWrapper,\n CollapseContentWrapper,\n CollapseContentInner,\n ContentText,\n} from './Collapse.style'\n\nexport interface CollapseItemProps {\n /** 面板唯一标识 */\n itemKey: string | number\n /** 标题内容(可以是字符串或自定义 ReactNode) */\n title?: ReactNode\n /** 面板内容 */\n children?: ReactNode\n /** 右侧后缀内容(如标签、图标等) */\n suffix?: ReactNode\n /** 是否展开(受控) */\n expanded?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 是否是最后一项(控制底部边框) */\n last?: boolean\n /** 展开/收起回调 */\n onChange?: (itemKey: string | number, expanded: boolean) => void\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * CollapseItem 折叠面板项\n * \n * 特性:\n * - 平滑的展开/收起动画\n * - 支持自定义标题和后缀\n * - 完整的键盘导航支持\n * - 自适应内容高度\n */\nexport const CollapseItem = forwardRef<HTMLDivElement, CollapseItemProps>(\n (\n {\n itemKey,\n title,\n children,\n suffix,\n expanded = false,\n disabled = false,\n last = false,\n onChange,\n className,\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null)\n const [contentHeight, setContentHeight] = useState(0)\n\n // 计算内容高度\n useEffect(() => {\n if (contentRef.current) {\n // 使用 scrollHeight 获取实际内容高度\n setContentHeight(contentRef.current.scrollHeight)\n }\n }, [children, expanded])\n\n // 处理点击\n const handleToggle = () => {\n if (disabled) return\n onChange?.(itemKey, !expanded)\n }\n\n // 处理键盘事件\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (disabled) return\n\n // 空格或回车键切换展开状态\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault()\n handleToggle()\n }\n }\n\n return (\n <CollapseItemWrapper ref={ref} isLast={last} className={className}>\n {/* 标题栏 */}\n <CollapseHeader\n isExpanded={expanded}\n isDisabled={disabled}\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={expanded}\n aria-disabled={disabled}\n aria-controls={`collapse-content-${itemKey}`}\n >\n {/* 箭头图标 */}\n <ArrowWrapper isExpanded={expanded} aria-hidden=\"true\">\n <ChevronDownOutline />\n </ArrowWrapper>\n\n {/* 标题内容 */}\n <TitleWrapper>\n {typeof title === 'string' ? <TitleText>{title}</TitleText> : title}\n </TitleWrapper>\n\n {/* 右侧后缀 */}\n {suffix && <SuffixWrapper>{suffix}</SuffixWrapper>}\n </CollapseHeader>\n\n {/* 折叠内容 */}\n <CollapseContentWrapper\n isExpanded={expanded}\n contentHeight={contentHeight}\n id={`collapse-content-${itemKey}`}\n role=\"region\"\n aria-labelledby={`collapse-header-${itemKey}`}\n >\n <CollapseContentInner ref={contentRef} isExpanded={expanded}>\n {typeof children === 'string' ? (\n <ContentText>{children}</ContentText>\n ) : (\n children\n )}\n </CollapseContentInner>\n </CollapseContentWrapper>\n </CollapseItemWrapper>\n )\n },\n)\n\nCollapseItem.displayName = 'CollapseItem'\n\n\n\n\n\n","/**\n * FloatButton 悬浮按钮样式\n * \n * 基于三层 Token 体系实现悬浮按钮样式\n * 参考 antd FloatButton 设计规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\nexport const floatButtonTypes = ['default', 'primary'] as const\nexport const floatButtonShapes = ['circle', 'square'] as const\nexport const floatButtonSizes = ['sm', 'md', 'lg'] as const\nexport const tooltipPlacements = ['top', 'bottom', 'left', 'right'] as const\n\nexport type FloatButtonType = (typeof floatButtonTypes)[number]\nexport type FloatButtonShape = (typeof floatButtonShapes)[number]\nexport type FloatButtonSize = (typeof floatButtonSizes)[number]\nexport type TooltipPlacement = (typeof tooltipPlacements)[number]\n\n/**\n * 获取按钮类型样式\n */\nconst getTypeStyles = (buttonType: FloatButtonType, theme: AppTheme) => {\n const typeToken = theme.components.floatButton[buttonType]\n\n return css`\n background-color: ${typeToken.background.default};\n color: ${typeToken.text.default};\n border: 1px solid ${typeToken.border.default};\n box-shadow: ${typeToken.shadow.default};\n\n &:hover:not(:disabled) {\n background-color: ${typeToken.background.hover};\n box-shadow: ${typeToken.shadow.hover};\n }\n\n &:active:not(:disabled),\n &[data-pressed='true']:not(:disabled) {\n background-color: ${typeToken.background.active};\n transform: scale(0.95);\n }\n `\n}\n\n/**\n * 获取按钮形状样式\n */\nconst getShapeStyles = (shape: FloatButtonShape, size: FloatButtonSize, theme: AppTheme) => {\n const sizeToken = theme.components.floatButton.size[size]\n \n if (shape === 'circle') {\n return css`\n width: ${sizeToken.size};\n height: ${sizeToken.size};\n border-radius: 50%;\n `\n }\n \n return css`\n width: ${sizeToken.size};\n height: ${sizeToken.size};\n border-radius: ${theme.global.radii.r2};\n `\n}\n\n/**\n * 悬浮按钮根元素\n */\nexport const FloatButtonRoot = styled.button<{\n $buttonType: FloatButtonType\n $shape: FloatButtonShape\n $size: FloatButtonSize\n $isPressed: boolean\n}>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n outline: none;\n border: none;\n padding: 0;\n z-index: 999;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\n ${({ $buttonType, theme }) => getTypeStyles($buttonType, theme)}\n ${({ $shape, $size, theme }) => getShapeStyles($shape, $size, theme)}\n\n &:disabled {\n cursor: not-allowed;\n opacity: ${({ theme }) => theme.components.floatButton.disabled.opacity};\n background-color: ${({ theme }) => theme.components.floatButton.disabled.background.default};\n color: ${({ theme }) => theme.components.floatButton.disabled.text.default};\n box-shadow: none;\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: 2px;\n }\n`\n\n/**\n * 按钮内容容器\n */\nexport const FloatButtonContent = styled.span`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: ${({ theme }) => theme.global.spacing.xs};\n width: 100%;\n height: 100%;\n`\n\n/**\n * 图标包装器\n */\nexport const IconWrapper = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: ${({ theme }) => theme.components.floatButton.icon.size};\n line-height: 1;\n\n svg {\n width: 1em;\n height: 1em;\n }\n`\n\n/**\n * 描述文字\n */\nexport const Description = styled.span`\n font-size: ${({ theme }) => theme.components.floatButton.description.fontSize};\n line-height: ${({ theme }) => theme.components.floatButton.description.lineHeight};\n color: inherit;\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n padding: 0 ${({ theme }) => theme.global.spacing.xs};\n`\n\n/**\n * Tooltip 包装器\n */\nexport const TooltipWrapper = styled.div`\n position: relative;\n display: inline-flex;\n`\n\n/**\n * 获取 tooltip 位置样式\n */\nconst getTooltipPosition = (placement: TooltipPlacement) => {\n switch (placement) {\n case 'top':\n return css`\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-bottom: 8px;\n `\n case 'bottom':\n return css`\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-top: 8px;\n `\n case 'left':\n return css`\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n margin-right: 8px;\n `\n case 'right':\n return css`\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n margin-left: 8px;\n `\n }\n}\n\n/**\n * Tooltip 卡片\n */\nexport const TooltipCard = styled.div<{\n $placement: TooltipPlacement\n $color?: string\n}>`\n position: absolute;\n z-index: 1050;\n padding: 6px 8px;\n font-size: 14px;\n line-height: 1.5;\n color: #fff;\n background-color: ${({ $color }) => $color || 'rgba(0, 0, 0, 0.85)'};\n border-radius: 6px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08),\n 0 3px 6px -4px rgba(0, 0, 0, 0.12),\n 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n white-space: nowrap;\n animation: tooltipFadeIn 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\n ${({ $placement }) => getTooltipPosition($placement)}\n\n @keyframes tooltipFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n`\n\n/**\n * 获取箭头位置和方向\n */\nconst getArrowPosition = (placement: TooltipPlacement) => {\n const arrowSize = 5\n \n switch (placement) {\n case 'top':\n return css`\n bottom: -${arrowSize}px;\n left: 50%;\n transform: translateX(-50%);\n border-left: ${arrowSize}px solid transparent;\n border-right: ${arrowSize}px solid transparent;\n border-top: ${arrowSize}px solid currentColor;\n `\n case 'bottom':\n return css`\n top: -${arrowSize}px;\n left: 50%;\n transform: translateX(-50%);\n border-left: ${arrowSize}px solid transparent;\n border-right: ${arrowSize}px solid transparent;\n border-bottom: ${arrowSize}px solid currentColor;\n `\n case 'left':\n return css`\n right: -${arrowSize}px;\n top: 50%;\n transform: translateY(-50%);\n border-top: ${arrowSize}px solid transparent;\n border-bottom: ${arrowSize}px solid transparent;\n border-left: ${arrowSize}px solid currentColor;\n `\n case 'right':\n return css`\n left: -${arrowSize}px;\n top: 50%;\n transform: translateY(-50%);\n border-top: ${arrowSize}px solid transparent;\n border-bottom: ${arrowSize}px solid transparent;\n border-right: ${arrowSize}px solid currentColor;\n `\n }\n}\n\n/**\n * Tooltip 箭头\n */\nexport const TooltipArrow = styled.span<{\n $placement: TooltipPlacement\n $color?: string\n}>`\n position: absolute;\n width: 0;\n height: 0;\n color: ${({ $color }) => $color || 'rgba(0, 0, 0, 0.85)'};\n \n ${({ $placement }) => getArrowPosition($placement)}\n`\n","/**\n * FloatButton 悬浮按钮组件\n * \n * 基于 react-aria 实现无障碍访问的悬浮按钮组件\n * 参考 antd FloatButton 设计实现\n * \n * @example\n * ```tsx\n * <FloatButton\n * icon={<IconPlus />}\n * type=\"primary\"\n * onClick={() => console.log('clicked')}\n * />\n * ```\n */\n\nimport { forwardRef, useRef, useState } from 'react'\nimport type { ReactNode } from 'react'\nimport { useButton } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport { mergeProps } from '@react-aria/utils'\nimport {\n FloatButtonRoot,\n FloatButtonContent,\n IconWrapper,\n Description,\n TooltipWrapper,\n TooltipCard,\n TooltipArrow,\n floatButtonTypes,\n floatButtonShapes,\n floatButtonSizes,\n type FloatButtonType,\n type FloatButtonShape,\n type FloatButtonSize,\n type TooltipPlacement,\n} from './FloatButton.style'\n\nexport type { TooltipPlacement }\n\nexport interface TooltipConfig {\n /** Tooltip 标题 */\n title?: ReactNode\n /** Tooltip 颜色 */\n color?: string\n /** Tooltip 位置 */\n placement?: TooltipPlacement\n}\n\nexport const TYPES = floatButtonTypes\nexport const SHAPES = floatButtonShapes\nexport const SIZES = floatButtonSizes\n\nexport interface FloatButtonProps extends Omit<AriaButtonProps, 'elementType'> {\n /** 按钮类型 */\n buttonType?: FloatButtonType\n /** 按钮形状 */\n shape?: FloatButtonShape\n /** 按钮尺寸 */\n size?: FloatButtonSize\n /** 图标 */\n icon?: ReactNode\n /** 文字描述 */\n description?: ReactNode\n /** 提示文字或配置 */\n tooltip?: ReactNode | TooltipConfig\n /** 是否禁用 */\n disabled?: boolean\n /** 自定义类名 */\n className?: string\n /** 自定义样式 */\n style?: React.CSSProperties\n}\n\n/**\n * FloatButton 悬浮按钮组件\n * \n * 用于页面中的悬浮操作按钮,通常固定在页面特定位置\n * 支持圆形和方形两种形状\n */\nexport const FloatButton = forwardRef<HTMLButtonElement, FloatButtonProps>(\n (\n {\n buttonType = 'default',\n shape = 'circle',\n size = 'md',\n icon,\n description,\n tooltip,\n disabled,\n isDisabled,\n className,\n style,\n ...ariaProps\n },\n forwardedRef,\n ) => {\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef || innerRef\n const [showTooltip, setShowTooltip] = useState(false)\n\n const finalDisabled = disabled ?? isDisabled\n\n const { buttonProps, isPressed } = useButton(\n {\n ...ariaProps,\n isDisabled: finalDisabled,\n elementType: 'button',\n },\n innerRef,\n )\n\n // 解析 tooltip 配置\n const isTooltipConfig = typeof tooltip === 'object' && tooltip !== null && 'title' in tooltip\n const tooltipConfig = isTooltipConfig ? tooltip as TooltipConfig : null\n const tooltipTitle: ReactNode = tooltipConfig?.title ?? (isTooltipConfig ? null : tooltip as ReactNode)\n const tooltipColor = tooltipConfig?.color\n const tooltipPlacement = tooltipConfig?.placement ?? 'top'\n const hasTooltip = !!tooltipTitle\n\n return (\n <TooltipWrapper\n onMouseEnter={() => hasTooltip && setShowTooltip(true)}\n onMouseLeave={() => hasTooltip && setShowTooltip(false)}\n >\n {hasTooltip && showTooltip && (\n <TooltipCard $placement={tooltipPlacement} $color={tooltipColor}>\n {tooltipTitle}\n <TooltipArrow $placement={tooltipPlacement} $color={tooltipColor} />\n </TooltipCard>\n )}\n <FloatButtonRoot\n {...mergeProps(buttonProps, {\n ref,\n className,\n style,\n })}\n $buttonType={buttonType}\n $shape={shape}\n $size={size}\n $isPressed={isPressed}\n >\n <FloatButtonContent>\n {icon && <IconWrapper>{icon}</IconWrapper>}\n {description && <Description>{description}</Description>}\n </FloatButtonContent>\n </FloatButtonRoot>\n </TooltipWrapper>\n )\n },\n)\n\nFloatButton.displayName = 'FloatButton'\n","/**\n * Input 输入框样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const inputSizes = ['sm', 'md', 'lg'] as const\nexport type InputSize = (typeof inputSizes)[number]\n\n// ============================================================================\n// 样式辅助函数\n// ============================================================================\n\n/**\n * 获取边框颜色(根据状态优先级)\n */\nconst getBorderColor = (\n isFocused: boolean,\n isError: boolean,\n isDisabled: boolean,\n isHovered: boolean,\n theme: AppTheme\n) => {\n if (isDisabled) return theme.components.input.border.disabled\n if (isError) return theme.components.input.border.error\n if (isFocused) return theme.components.input.border.focus\n if (isHovered) return theme.components.input.border.hover\n return theme.components.input.border.default\n}\n\n/**\n * 获取输入框尺寸样式\n */\nconst getSizeStyles = (size: InputSize, theme: AppTheme) => {\n const sizeToken = theme.components.input.size[size]\n\n return css`\n height: ${sizeToken.height};\n font-size: ${sizeToken.fontSize};\n padding-inline: ${sizeToken.paddingInline};\n\n /* 图标尺寸 */\n svg {\n width: ${sizeToken.iconSize};\n height: ${sizeToken.iconSize};\n flex-shrink: 0;\n }\n `\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Input 根容器\n * \n * 特性:\n * - 处理边框颜色状态切换\n * - 支持全宽模式\n * - 基于三层 Token 设计\n */\nexport const InputRoot = styled.div<{\n size: InputSize\n fullWidth: boolean\n isFocused: boolean\n isError: boolean\n isDisabled: boolean\n isHovered: boolean\n}>`\n /* 基础样式 */\n position: relative;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : '200px')};\n min-width: 200px; /* 防止内容动态变化导致宽度闪烁 */\n\n /* 边框样式 */\n border: 1px solid;\n border-color: ${({ isFocused, isError, isDisabled, isHovered, theme }) =>\n getBorderColor(isFocused, isError, isDisabled, isHovered, theme)};\n border-radius: ${({ theme }) => theme.components.input.borderRadius};\n\n /* 背景色 */\n background: ${({ isDisabled, theme }) =>\n isDisabled\n ? theme.components.input.background.disabled\n : theme.components.input.background.default};\n\n /* 过渡动画 */\n transition: border-color ${({ theme }) => theme.components.input.transition},\n background ${({ theme }) => theme.components.input.transition};\n\n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n /* 禁用状态 */\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n cursor: not-allowed;\n opacity: 0.6;\n `}\n\n /* 全宽模式 */\n ${({ fullWidth }) =>\n fullWidth &&\n css`\n width: 100%;\n `}\n`\n\n/**\n * 输入框内部包装器\n * \n * 用于布局前缀图标、输入框、后缀图标、清除按钮和计数器\n */\nexport const InputWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.components.input.gap};\n width: 100%;\n height: 100%;\n`\n\n/**\n * 原生 input 元素\n * \n * 特性:\n * - 无边框、背景透明(由容器处理)\n * - 支持错误状态文字颜色\n * - 占位符样式\n */\nexport const StyledInput = styled.input<{\n isError: boolean\n isDisabled: boolean\n}>`\n /* 重置默认样式 */\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n padding: 0;\n margin: 0;\n\n /* 字体样式 */\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: inherit;\n line-height: 1.5;\n color: ${({ isError, isDisabled, theme }) => {\n if (isDisabled) return theme.components.input.text.disabled\n if (isError) return theme.components.input.text.error\n return theme.components.input.text.default\n }};\n\n /* 占位符样式 */\n &::placeholder {\n color: ${({ theme }) => theme.components.input.text.placeholder};\n opacity: 1;\n }\n\n /* 禁用状态 */\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n cursor: not-allowed;\n user-select: none;\n `}\n\n /* 移除默认的 focus 样式 */\n &:focus {\n outline: none;\n }\n\n /* 移除数字输入框的箭头(Chrome, Safari, Edge, Opera) */\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n /* 移除数字输入框的箭头(Firefox) */\n &[type='number'] {\n -moz-appearance: textfield;\n }\n`\n\n/**\n * 图标包装器(前缀/后缀图标)\n * \n * 特性:\n * - 灵活的尺寸适配\n * - 颜色自动继承或根据状态调整\n */\nexport const IconWrapper = styled.span<{\n isError: boolean\n isDisabled: boolean\n position: 'prefix' | 'suffix'\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 0;\n\n /* 颜色继承或根据状态调整 */\n color: ${({ isError, isDisabled, theme }) => {\n if (isDisabled) return theme.components.input.text.disabled\n if (isError) return theme.components.input.text.error\n return theme.components.input.text.default\n }};\n\n /* 确保图标大小一致 */\n svg {\n display: block;\n }\n`\n\n/**\n * 清除按钮\n * \n * 特性:\n * - 仅在有内容且未禁用时显示\n * - hover 时有反馈效果\n * - 无障碍友好\n */\nexport const ClearButton = styled.button<{\n isError: boolean\n}>`\n /* 重置按钮样式 */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n padding: 0;\n margin: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n outline: none;\n line-height: 0;\n\n /* 颜色 */\n color: ${({ isError, theme }) =>\n isError\n ? theme.components.input.text.error\n : theme.components.input.text.counter};\n\n /* 过渡动画 */\n transition: opacity ${({ theme }) => theme.components.input.transition},\n color ${({ theme }) => theme.components.input.transition};\n\n /* hover 状态 */\n &:hover {\n opacity: 0.7;\n }\n\n /* active 状态 */\n &:active {\n opacity: 0.5;\n }\n\n /* focus 可见状态 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.components.input.border.focus};\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n /* 图标尺寸 */\n svg {\n width: 16px;\n height: 16px;\n display: block;\n }\n`\n\n/**\n * 字符计数器\n * \n * 显示格式:当前字数/最大字数\n */\nexport const Counter = styled.span<{\n isError: boolean\n isDisabled: boolean\n}>`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: inherit;\n line-height: 1.5;\n white-space: nowrap;\n user-select: none;\n\n /* 颜色 */\n color: ${({ isError, isDisabled, theme }) => {\n if (isDisabled) return theme.components.input.text.disabled\n if (isError) return theme.components.input.text.error\n return theme.components.input.text.counter\n }};\n`\n\n","/**\n * Input 输入框组件\n * \n * 基于 react-aria 实现无障碍访问的输入框组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * <Input\n * size=\"md\"\n * placeholder=\"请输入内容\"\n * clearable\n * showCounter\n * maxLength={100}\n * />\n * ```\n */\n\nimport { forwardRef, useRef, useState, type ReactNode, type ChangeEvent, type FocusEvent } from 'react'\nimport {\n InputRoot,\n InputWrapper,\n StyledInput,\n IconWrapper,\n ClearButton,\n Counter,\n inputSizes,\n type InputSize,\n} from './Input.style'\n\n// 导出常量供外部使用\nexport const SIZES = inputSizes\n\nexport type InputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'prefix'\n> & {\n /** 输入框尺寸:小号(24px)、标准(32px)、大号(40px) */\n size?: InputSize\n /** 前缀图标 */\n prefix?: ReactNode\n /** 后缀图标 */\n suffix?: ReactNode\n /** 是否显示清除按钮(有值时显示) */\n clearable?: boolean\n /** 错误状态 */\n error?: boolean\n /** 错误提示信息 */\n errorMessage?: ReactNode\n /** 是否显示字符计数器 */\n showCounter?: boolean\n /** 全宽输入框 */\n fullWidth?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 输入框标签 */\n label?: ReactNode\n /** 输入框描述 */\n description?: ReactNode\n}\n\n/**\n * 清除图标 SVG\n */\nconst CloseIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n/**\n * Input 输入框组件\n * \n * 基于 Figma 设计规范实现的输入框组件,支持多种尺寸和状态\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'md',\n prefix,\n suffix,\n clearable = false,\n error = false,\n errorMessage,\n showCounter = false,\n fullWidth = false,\n disabled,\n className,\n type = 'text',\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n maxLength,\n label,\n description,\n id,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n ...restProps\n },\n forwardedRef\n ) => {\n const innerRef = useRef<HTMLInputElement>(null)\n const ref = (forwardedRef || innerRef) as React.RefObject<HTMLInputElement>\n \n // 生成唯一 ID(只在组件初始化时生成一次)\n const generatedId = useRef(`input-${Math.random().toString(36).slice(2, 9)}`)\n\n // 内部状态管理(用于 UI 反馈)\n const [isFocused, setIsFocused] = useState(false)\n const [isHovered, setIsHovered] = useState(false)\n const [internalValue, setInternalValue] = useState(defaultValue || '')\n\n // 获取当前值(受控或非受控)\n const isControlled = value !== undefined\n const currentValue = isControlled ? String(value) : String(internalValue)\n\n // 处理输入变化\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n }\n\n // 处理焦点事件\n const handleFocus = (e: FocusEvent<HTMLInputElement>) => {\n setIsFocused(true)\n onFocus?.(e)\n }\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n setIsFocused(false)\n onBlur?.(e)\n }\n\n // 清除按钮点击处理\n const handleClear = () => {\n if (disabled || !ref.current) return\n\n // 创建合成事件以触发 onChange\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n 'value'\n )?.set\n nativeInputValueSetter?.call(ref.current, '')\n\n const event = new Event('input', { bubbles: true })\n Object.defineProperty(event, 'target', {\n writable: false,\n value: ref.current,\n })\n \n if (!isControlled) {\n setInternalValue('')\n }\n onChange?.(event as unknown as ChangeEvent<HTMLInputElement>)\n\n // 聚焦回输入框\n ref.current.focus()\n }\n\n // 计算字符数\n const currentLength = currentValue.length\n const showClearButton = clearable && currentLength > 0 && !disabled\n\n // 使用提供的 ID 或生成的唯一 ID\n const inputId = id || generatedId.current\n const descriptionId = description ? `${inputId}-description` : undefined\n const errorId = errorMessage && error ? `${inputId}-error` : undefined\n \n const describedBy = [ariaDescribedBy, descriptionId, errorId]\n .filter(Boolean)\n .join(' ') || undefined\n\n return (\n <div>\n {/* Label 如果提供 */}\n {label && (\n <label htmlFor={inputId} style={{ display: 'block', marginBottom: 4 }}>\n {label}\n </label>\n )}\n\n <InputRoot\n size={size}\n fullWidth={fullWidth}\n isFocused={isFocused}\n isError={error}\n isDisabled={!!disabled}\n isHovered={isHovered}\n className={className}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n <InputWrapper>\n {/* 前缀图标 */}\n {prefix && (\n <IconWrapper\n isError={error}\n isDisabled={!!disabled}\n position=\"prefix\"\n aria-hidden=\"true\"\n >\n {prefix}\n </IconWrapper>\n )}\n\n {/* 输入框 */}\n <StyledInput\n {...restProps}\n ref={ref}\n id={inputId}\n type={type}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n maxLength={maxLength}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-describedby={describedBy}\n aria-invalid={error}\n isError={error}\n isDisabled={!!disabled}\n />\n\n {/* 清除按钮 */}\n {showClearButton && (\n <ClearButton\n type=\"button\"\n onClick={handleClear}\n aria-label=\"清除内容\"\n isError={error}\n tabIndex={-1}\n >\n <CloseIcon />\n </ClearButton>\n )}\n\n {/* 后缀图标 */}\n {suffix && (\n <IconWrapper\n isError={error}\n isDisabled={!!disabled}\n position=\"suffix\"\n aria-hidden=\"true\"\n >\n {suffix}\n </IconWrapper>\n )}\n\n {/* 字符计数器 */}\n {showCounter && maxLength !== undefined && (\n <Counter\n isError={error}\n isDisabled={!!disabled}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {currentLength}/{maxLength}\n </Counter>\n )}\n </InputWrapper>\n </InputRoot>\n\n {/* Description 如果提供 */}\n {description && (\n <div id={descriptionId} style={{ marginTop: 4, fontSize: 12 }}>\n {description}\n </div>\n )}\n\n {/* Error Message 如果提供 */}\n {errorMessage && error && (\n <div\n id={errorId}\n role=\"alert\"\n style={{ marginTop: 4, fontSize: 12, color: 'inherit' }}\n >\n {errorMessage}\n </div>\n )}\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\n\n","/**\n * Menu 菜单样式\n * \n * 基于三层 Token 体系的侧边栏导航菜单组件样式\n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface MenuStyleProps {\n collapsed?: boolean\n}\n\nexport interface MenuItemStyleProps {\n active?: boolean\n disabled?: boolean\n isSubItem?: boolean\n collapsed?: boolean\n}\n\n// ============================================================================\n// Menu 容器样式\n// ============================================================================\n\n/**\n * Menu 根容器\n * \n * 特性:\n * - 支持展开/折叠状态\n * - 固定宽度\n * - 滚动区域\n */\nexport const MenuContainer = styled.div<MenuStyleProps>`\n display: flex;\n flex-direction: column;\n width: ${({ collapsed, theme }) => \n collapsed ? theme.components.menu.container.width.collapsed : theme.components.menu.container.width.expanded};\n height: 100%;\n background: ${({ theme }) => theme.components.menu.container.background};\n transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n\n /* 滚动条样式 */\n &::-webkit-scrollbar {\n width: ${({ theme }) => theme.components.menu.scrollbar.width};\n }\n\n &::-webkit-scrollbar-track {\n background: ${({ theme }) => theme.components.menu.scrollbar.trackColor};\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.components.menu.scrollbar.thumbColor};\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n`\n\n/**\n * Menu 内容滚动区域\n */\nexport const MenuContent = styled.div`\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: ${({ theme }) => theme.components.menu.container.padding};\n padding-top: 0;\n\n /* 滚动条样式 */\n &::-webkit-scrollbar {\n width: ${({ theme }) => theme.components.menu.scrollbar.width};\n }\n\n &::-webkit-scrollbar-track {\n background: ${({ theme }) => theme.components.menu.scrollbar.trackColor};\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.components.menu.scrollbar.thumbColor};\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n`\n\n// ============================================================================\n// MenuItem 样式\n// ============================================================================\n\n/**\n * MenuItem 容器\n * \n * 支持:\n * - 激活状态\n * - 禁用状态\n * - 子菜单缩进\n */\nexport const MenuItemContainer = styled.button<MenuItemStyleProps>`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n height: ${({ theme }) => theme.components.menu.item.height};\n padding-inline: ${({ theme, isSubItem }) => \n isSubItem ? theme.components.menu.subItem.paddingLeft : theme.components.menu.item.paddingInline};\n gap: ${({ theme }) => theme.components.menu.item.gap};\n border: none;\n border-radius: ${({ theme }) => theme.components.menu.item.borderRadius};\n position: relative;\n overflow: hidden;\n background: ${({ theme, active, isSubItem, collapsed }) =>\n collapsed\n ? 'transparent'\n : active\n ? 'transparent'\n : isSubItem\n ? theme.components.menu.subItem.background.default\n : theme.components.menu.item.background.default};\n color: ${({ theme, active, collapsed }) =>\n collapsed && active\n ? theme.semantic.colors.brand.primaryActive\n : active\n ? theme.components.menu.item.text.active\n : theme.components.menu.item.text.default};\n font-size: ${({ theme }) => theme.components.menu.item.fontSize};\n font-weight: ${({ theme }) => theme.components.menu.item.fontWeight};\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n text-align: left;\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n transition: ${({ theme }) => theme.components.menu.item.transition};\n user-select: none;\n outline: none;\n\n &::before {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: ${({ theme, isSubItem }) =>\n isSubItem\n ? theme.components.menu.subItem.background.active\n : theme.components.menu.item.background.active};\n transform-origin: left center;\n transform: ${({ active, collapsed }) => (collapsed ? 'scaleX(0)' : active ? 'scaleX(1)' : 'scaleX(0)')};\n opacity: ${({ active, collapsed }) => (collapsed ? 0 : active ? 1 : 0)};\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease;\n z-index: 0;\n }\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: ${({ theme, isSubItem }) =>\n isSubItem\n ? theme.components.menu.subItem.background.hover\n : theme.components.menu.item.background.hover};\n transform: translateX(-100%);\n opacity: 0;\n transition: transform 0.3s ease, opacity 0.2s ease;\n z-index: 0;\n }\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n /* Hover 状态 */\n &:hover:not(:disabled) {\n background: ${({ theme, active, isSubItem, collapsed }) =>\n collapsed\n ? 'transparent'\n : active\n ? 'transparent'\n : isSubItem\n ? theme.components.menu.subItem.background.hover\n : theme.components.menu.item.background.hover};\n color: ${({ theme, active, collapsed }) =>\n collapsed\n ? theme.semantic.colors.brand.primaryActive\n : active\n ? theme.components.menu.item.text.active\n : theme.components.menu.item.text.hover};\n }\n\n &:hover:not(:disabled)::after {\n transform: ${({ collapsed, active }) =>\n !collapsed && !active ? 'translateX(0)' : 'translateX(-100%)'};\n opacity: ${({ collapsed, active }) => (!collapsed && !active ? 1 : 0)};\n }\n\n /* 禁用状态 */\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Focus 状态 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: -2px;\n }\n`\n\n/**\n * MenuItem 图标容器\n */\nexport const MenuItemIcon = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: ${({ theme }) => theme.components.menu.item.iconSize};\n height: ${({ theme }) => theme.components.menu.item.iconSize};\n\n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n/**\n * MenuItem 文字标签\n */\nexport const MenuItemLabel = styled.span<{ collapsed?: boolean }>`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n opacity: ${({ collapsed }) => (collapsed ? 0 : 1)};\n transition: opacity 0.2s ease;\n`\n\n/**\n * MenuItem 箭头图标\n */\nexport const MenuItemArrow = styled.span<{ collapsed?: boolean; expanded?: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 14px;\n height: 14px;\n opacity: ${({ collapsed }) => (collapsed ? 0 : 1)};\n transition: transform 0.2s ease, opacity 0.2s ease;\n transform: ${({ expanded }) => (expanded ? 'rotate(90deg)' : 'rotate(0deg)')};\n\n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n// ============================================================================\n// MenuGroup 样式\n// ============================================================================\n\n/**\n * MenuGroup 容器\n */\nexport const MenuGroupContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.menu.group.gap};\n margin-top: ${({ theme }) => theme.components.menu.group.marginTop};\n\n &:first-of-type {\n margin-top: 0;\n }\n`\n\n/**\n * MenuGroup 标题\n */\nexport const MenuGroupTitle = styled.div<{ collapsed?: boolean }>`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.components.menu.groupTitle.height};\n padding-inline: ${({ theme }) => theme.components.menu.groupTitle.paddingInline};\n margin-bottom: ${({ theme }) => theme.components.menu.groupTitle.marginBottom};\n font-size: ${({ theme }) => theme.components.menu.groupTitle.fontSize};\n font-weight: ${({ theme }) => theme.components.menu.groupTitle.fontWeight};\n color: ${({ theme }) => theme.components.menu.groupTitle.color};\n opacity: ${({ collapsed }) => (collapsed ? 0 : 1)};\n transition: opacity 0.2s ease;\n overflow: hidden;\n\n /* 分割线 */\n &::after {\n content: '';\n flex: 1;\n height: 1px;\n background: ${({ theme }) => theme.semantic.colors.border.primary};\n margin-left: 8px;\n opacity: ${({ collapsed }) => (collapsed ? 0 : 1)};\n }\n`\n\n/**\n * MenuGroup 项目容器\n */\nexport const MenuGroupItems = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.menu.group.gap};\n`\n\n// ============================================================================\n// SubMenuPopover 悬浮层样式\n// ============================================================================\n\n/**\n * SubMenuPopover 容器\n * \n * 折叠状态下的二级菜单悬浮层\n */\nexport const SubMenuPopoverContainer = styled.div`\n position: fixed;\n z-index: 9999;\n min-width: 200px;\n background: ${({ theme }) => theme.components.menu.popover.background};\n border: ${({ theme }) => theme.components.menu.popover.border};\n border-radius: ${({ theme }) => theme.components.menu.popover.borderRadius};\n box-shadow: ${({ theme }) => theme.components.menu.popover.boxShadow};\n padding: ${({ theme }) => theme.components.menu.popover.padding};\n animation: slideIn 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translateX(-8px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n`\n\n/**\n * SubMenuPopover 内容区域\n */\nexport const SubMenuPopoverContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.menu.group.gap};\n`\n\n/**\n * SubMenuPopover 菜单项容器\n * \n * 悬浮层中的菜单项样式\n */\nexport const SubMenuPopoverItem = styled.button<{ active?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n height: ${({ theme }) => theme.components.menu.item.height};\n padding-inline: ${({ theme }) => theme.components.menu.item.paddingInline};\n gap: ${({ theme }) => theme.components.menu.item.gap};\n border: none;\n border-radius: ${({ theme }) => theme.components.menu.item.borderRadius};\n background: ${({ theme, active }) =>\n active\n ? theme.components.menu.popover.item.background.active\n : theme.components.menu.popover.item.background.default};\n color: ${({ theme, active }) =>\n active\n ? theme.components.menu.popover.item.text.active\n : theme.components.menu.popover.item.text.default};\n font-size: ${({ theme }) => theme.components.menu.item.fontSize};\n font-weight: ${({ theme }) => theme.components.menu.item.fontWeight};\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n text-align: left;\n cursor: pointer;\n transition: ${({ theme }) => theme.components.menu.item.transition};\n user-select: none;\n outline: none;\n white-space: nowrap;\n\n &:hover {\n background: ${({ theme, active }) =>\n active\n ? theme.components.menu.popover.item.background.active\n : theme.components.menu.popover.item.background.hover};\n color: ${({ theme, active }) =>\n active\n ? theme.components.menu.popover.item.text.active\n : theme.components.menu.popover.item.text.hover};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: -2px;\n }\n`\n\n","/**\n * Menu 侧边栏菜单组件\n * \n * 基于 Figma 设计稿的导航菜单组件\n * 支持展开/折叠、分组、子菜单等功能\n */\n\nimport { forwardRef, type ReactNode } from 'react'\nimport { MenuContainer, MenuContent } from './Menu.style'\n\nexport interface MenuProps {\n /** 菜单是否折叠 */\n collapsed?: boolean\n /** 子元素(自定义内容、MenuGroup、MenuItem等) */\n children: ReactNode\n /** 自定义类名 */\n className?: string\n /** 自定义样式 */\n style?: React.CSSProperties\n}\n\n/**\n * Menu 侧边栏菜单组件\n * \n * 主容器组件,用于包裹所有菜单相关子组件\n * \n * @example\n * ```tsx\n * <Menu collapsed={false}>\n * <div style={{ padding: 24 }}>自定义头部</div>\n *\n * <MenuGroup title=\"主要功能\">\n * <MenuItem icon={<HomeIcon />} label=\"首页\" active />\n * <MenuItem icon={<UserIcon />} label=\"用户\" />\n * </MenuGroup>\n * \n * <div style={{ padding: 24 }}>自定义底部</div>\n * </Menu>\n * ```\n */\nexport const Menu = forwardRef<HTMLDivElement, MenuProps>(\n ({ collapsed = false, children, className, style }, ref) => {\n return (\n <MenuContainer\n ref={ref}\n collapsed={collapsed}\n className={className}\n style={style}\n role=\"navigation\"\n aria-label=\"主导航\"\n >\n <MenuContent role=\"menu\">{children}</MenuContent>\n </MenuContainer>\n )\n },\n)\n\nMenu.displayName = 'Menu'\n\n","/**\n * SubMenuPopover 子菜单悬浮层组件\n * \n * 用于在折叠状态下显示二级菜单\n */\n\nimport { type ReactNode, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { SubMenuPopoverContainer, SubMenuPopoverContent } from './Menu.style'\n\nexport interface SubMenuPopoverProps {\n /** 是否显示 */\n visible: boolean\n /** 触发元素的引用 */\n anchorRef: React.RefObject<HTMLElement>\n /** 子菜单内容 */\n children: ReactNode\n /** 关闭回调 */\n onClose?: () => void\n /** 鼠标移入事件 */\n onMouseEnter?: () => void\n /** 鼠标移出事件 */\n onMouseLeave?: () => void\n}\n\n/**\n * SubMenuPopover 子菜单悬浮层组件\n * \n * 在折叠状态下,鼠标悬浮一级菜单时展示二级菜单\n */\nexport const SubMenuPopover = ({\n visible,\n anchorRef,\n children,\n onClose,\n onMouseEnter,\n onMouseLeave,\n}: SubMenuPopoverProps) => {\n const popoverRef = useRef<HTMLDivElement>(null)\n const [position, setPosition] = useState({ top: 0, left: 0 })\n\n // 计算弹出层位置\n useEffect(() => {\n if (!visible || !anchorRef.current) return\n\n const updatePosition = () => {\n if (!anchorRef.current) return\n\n const rect = anchorRef.current.getBoundingClientRect()\n const gap = 4 // 与触发元素的间距\n\n setPosition({\n top: rect.top,\n left: rect.right + gap,\n })\n }\n\n updatePosition()\n\n // 监听滚动和窗口大小变化\n window.addEventListener('scroll', updatePosition, true)\n window.addEventListener('resize', updatePosition)\n\n return () => {\n window.removeEventListener('scroll', updatePosition, true)\n window.removeEventListener('resize', updatePosition)\n }\n }, [visible, anchorRef])\n\n // 处理点击外部关闭\n useEffect(() => {\n if (!visible) return\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(e.target as Node) &&\n anchorRef.current &&\n !anchorRef.current.contains(e.target as Node)\n ) {\n onClose?.()\n }\n }\n\n // 延迟添加监听器,避免立即触发\n const timer = setTimeout(() => {\n document.addEventListener('mousedown', handleClickOutside)\n }, 100)\n\n return () => {\n clearTimeout(timer)\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [visible, onClose, anchorRef])\n\n if (!visible) return null\n\n return createPortal(\n <SubMenuPopoverContainer\n ref={popoverRef}\n style={{\n top: position.top,\n left: position.left,\n }}\n role=\"menu\"\n aria-label=\"子菜单\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <SubMenuPopoverContent>{children}</SubMenuPopoverContent>\n </SubMenuPopoverContainer>,\n document.body,\n )\n}\n\nSubMenuPopover.displayName = 'SubMenuPopover'\n\n","/**\n * MenuItem 菜单项组件\n * \n * 基于 react-aria 实现无障碍访问的菜单项\n * 支持图标、文字、箭头指示器、悬浮子菜单\n */\n\nimport { forwardRef, type ReactNode, useRef, useState } from 'react'\nimport {\n MenuItemContainer,\n MenuItemIcon,\n MenuItemLabel,\n MenuItemArrow,\n} from './Menu.style'\nimport { SubMenuPopover } from './SubMenuPopover'\n\nexport interface MenuItemProps {\n /** 唯一标识符 */\n id?: string\n /** 菜单项图标 */\n icon?: ReactNode\n /** 菜单项文字 */\n label: string\n /** 是否激活/选中 */\n active?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 是否为子菜单项 */\n isSubItem?: boolean\n /** 是否显示箭头(用于可展开项) */\n showArrow?: boolean\n /** 箭头是否展开 */\n arrowExpanded?: boolean\n /** 菜单是否折叠 */\n collapsed?: boolean\n /** 子菜单内容(折叠状态下悬浮显示) */\n subMenu?: ReactNode\n /** 点击事件 */\n onClick?: () => void\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * MenuItem 菜单项组件\n * \n * 用于侧边栏导航的单个菜单项\n * 支持激活状态、禁用状态、子菜单缩进、折叠时的悬浮子菜单\n */\nexport const MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(\n (\n {\n id,\n icon,\n label,\n active = false,\n disabled = false,\n isSubItem = false,\n showArrow = false,\n arrowExpanded = false,\n collapsed = false,\n subMenu,\n onClick,\n className,\n },\n ref,\n ) => {\n const itemRef = useRef<HTMLButtonElement>(null)\n const [showPopover, setShowPopover] = useState(false)\n const hoverTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n\n // 清除所有定时器\n const clearTimers = () => {\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current)\n hoverTimerRef.current = undefined\n }\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current)\n closeTimerRef.current = undefined\n }\n }\n\n // 处理鼠标进入\n const handleMouseEnter = () => {\n clearTimers()\n \n if (collapsed && subMenu) {\n if (showPopover) return\n\n // 延迟显示,避免误触\n hoverTimerRef.current = setTimeout(() => {\n setShowPopover(true)\n }, 200)\n }\n }\n\n // 处理鼠标离开\n const handleMouseLeave = () => {\n clearTimers()\n \n // 延迟隐藏,让用户有时间移动到悬浮层\n closeTimerRef.current = setTimeout(() => {\n setShowPopover(false)\n }, 100)\n }\n\n return (\n <>\n <MenuItemContainer\n ref={(node) => {\n // 合并 refs\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n if (node) {\n itemRef.current = node\n }\n }}\n id={id}\n active={active}\n disabled={disabled}\n isSubItem={isSubItem}\n onClick={onClick}\n collapsed={collapsed}\n className={className}\n role=\"menuitem\"\n aria-disabled={disabled}\n aria-current={active ? 'page' : undefined}\n aria-haspopup={collapsed && subMenu ? 'menu' : undefined}\n type=\"button\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {/* 图标 */}\n {icon && <MenuItemIcon aria-hidden=\"true\">{icon}</MenuItemIcon>}\n\n {/* 文字标签 */}\n <MenuItemLabel collapsed={collapsed}>{label}</MenuItemLabel>\n\n {/* 箭头指示器 */}\n {showArrow && !collapsed && (\n <MenuItemArrow collapsed={collapsed} expanded={arrowExpanded} aria-hidden=\"true\">\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.25 3.5L8.75 7L5.25 10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </MenuItemArrow>\n )}\n </MenuItemContainer>\n\n {/* 折叠状态下的悬浮子菜单 */}\n {collapsed && subMenu && (\n <SubMenuPopover\n visible={showPopover}\n anchorRef={itemRef as React.RefObject<HTMLElement>}\n onClose={() => setShowPopover(false)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {subMenu}\n </SubMenuPopover>\n )}\n </>\n )\n },\n)\n\nMenuItem.displayName = 'MenuItem'\n\n","/**\n * MenuGroup 菜单分组组件\n * \n * 用于对菜单项进行分组,并显示分组标题\n */\n\nimport { type ReactNode } from 'react'\nimport {\n MenuGroupContainer,\n MenuGroupTitle,\n MenuGroupItems,\n} from './Menu.style'\n\nexport interface MenuGroupProps {\n /** 分组标题 */\n title?: string\n /** 子元素(菜单项) */\n children: ReactNode\n /** 菜单是否折叠 */\n collapsed?: boolean\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * MenuGroup 菜单分组组件\n * \n * 用于将相关的菜单项组织在一起\n * 可选的分组标题和分割线\n */\nexport const MenuGroup = ({\n title,\n children,\n collapsed = false,\n className,\n}: MenuGroupProps) => {\n return (\n <MenuGroupContainer className={className} role=\"group\" aria-label={title}>\n {/* 分组标题 */}\n {title && (\n <MenuGroupTitle collapsed={collapsed} aria-hidden={collapsed}>\n {title}\n </MenuGroupTitle>\n )}\n\n {/* 菜单项列表 */}\n <MenuGroupItems>{children}</MenuGroupItems>\n </MenuGroupContainer>\n )\n}\n\nMenuGroup.displayName = 'MenuGroup'\n\n","/**\n * SubMenuItem 子菜单项组件\n * \n * 用于在悬浮层中展示的子菜单项\n */\n\nimport { SubMenuPopoverItem } from './Menu.style'\n\nexport interface SubMenuItemProps {\n /** 唯一标识符 */\n id?: string\n /** 菜单项文字 */\n label: string\n /** 是否激活/选中 */\n active?: boolean\n /** 点击事件 */\n onClick?: () => void\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * SubMenuItem 子菜单项组件\n * \n * 用于悬浮层中的子菜单项\n */\nexport const SubMenuItem = ({\n id,\n label,\n active = false,\n onClick,\n className,\n}: SubMenuItemProps) => {\n return (\n <SubMenuPopoverItem\n id={id}\n active={active}\n onClick={onClick}\n className={className}\n role=\"menuitem\"\n aria-current={active ? 'page' : undefined}\n type=\"button\"\n >\n {label}\n </SubMenuPopoverItem>\n )\n}\n\nSubMenuItem.displayName = 'SubMenuItem'\n\n","import styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport type { AppTheme } from '@kingsoft-ai/theme';\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport type LinkVariant = 'primary' | 'neutral';\nexport type LinkSize = 'sm' | 'md' | 'lg';\n\n// ============================================================================\n// 样式生成器\n// ============================================================================\n\nconst getVariantStyles = (variant: LinkVariant, theme: AppTheme) => {\n const token = theme.components.link.variant[variant];\n\n return css`\n color: ${token.text.default};\n text-decoration: ${token.decoration.default};\n\n &:hover:not([aria-disabled='true']) {\n color: ${token.text.hover};\n text-decoration: ${token.decoration.hover};\n }\n\n &:active:not([aria-disabled='true']) {\n color: ${token.text.active};\n }\n\n &[aria-disabled='true'] {\n color: ${token.text.disabled};\n cursor: not-allowed;\n }\n `;\n};\n\nconst getSizeStyles = (size: LinkSize, theme: AppTheme) => {\n const token = theme.components.link.size[size];\n return css`\n font-size: ${token.fontSize};\n `;\n};\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\nexport const LinkRoot = styled.a<{\n variant: LinkVariant;\n size: LinkSize;\n}>`\n /* 基础样式 */\n position: relative;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n background: transparent;\n outline: none;\n border: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n \n /* 字体样式 */\n font-family: ${({ theme }) => theme?.global?.typography?.fontFamily || 'inherit'};\n line-height: 1.5; /* 保持与文本一致的行高 */\n\n /* 过渡动画 */\n transition: color ${({ theme }) => theme?.components?.link?.transition || '0.2s ease'};\n\n /* 变体样式 */\n ${({ variant, theme }) => getVariantStyles(variant, theme)}\n\n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n /* Focus 可见状态 */\n &:focus-visible {\n border-radius: ${({ theme }) => theme?.components?.link?.borderRadius || '4px'};\n outline: 2px solid ${({ theme }) => theme?.components?.link?.focusRing?.color || '#1677ff'};\n outline-offset: ${({ theme }) => theme?.components?.link?.focusRing?.offset || '2px'};\n }\n`;\n\n","import { forwardRef, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { useLink } from 'react-aria';\nimport { mergeProps } from '@react-aria/utils';\nimport { LinkRoot, type LinkVariant, type LinkSize } from './Link.style';\n\n// Helper to extract props type from useLink\ntype UseLinkProps = Parameters<typeof useLink>[0];\n\nexport type LinkProps = UseLinkProps & {\n /** 链接变体:primary (主色), neutral (中性色) */\n variant?: LinkVariant;\n /** 链接尺寸:sm (12px), md (14px), lg (16px) */\n size?: LinkSize;\n /** 是否禁用(统一 API,优先级高于 isDisabled) */\n disabled?: boolean;\n /** 自定义类名 */\n className?: string;\n /** 子元素 */\n children?: ReactNode;\n};\n\n/**\n * Link 文字链接组件\n *\n * 用于页面内的跳转或操作,支持多种状态和尺寸。\n * 基于 react-aria useLink 实现无障碍访问。\n */\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n disabled,\n className,\n children,\n isDisabled,\n ...props\n },\n forwardedRef\n ) => {\n const innerRef = useRef<HTMLAnchorElement>(null);\n const ref = forwardedRef || innerRef;\n\n // disabled 优先于 isDisabled\n const finalDisabled = disabled ?? isDisabled;\n\n const { linkProps } = useLink(\n {\n ...props,\n isDisabled: finalDisabled,\n elementType: 'a',\n },\n innerRef\n );\n\n return (\n <LinkRoot\n ref={ref}\n as=\"a\"\n className={className}\n variant={variant}\n size={size}\n {...mergeProps(linkProps, { ariaDisabled: finalDisabled })}\n >\n {children}\n </LinkRoot>\n );\n }\n);\n\nLink.displayName = 'Link';\n","import {useLayoutEffect as $6dfIe$useLayoutEffect, useEffectEvent as $6dfIe$useEffectEvent, isFocusable as $6dfIe$isFocusable, getOwnerWindow as $6dfIe$getOwnerWindow, focusWithoutScrolling as $6dfIe$focusWithoutScrolling} from \"@react-aria/utils\";\nimport {useRef as $6dfIe$useRef, useCallback as $6dfIe$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8a9cb279dc87e130$export$525bc4921d56d4a(nativeEvent) {\n let event = nativeEvent;\n event.nativeEvent = nativeEvent;\n event.isDefaultPrevented = ()=>event.defaultPrevented;\n // cancelBubble is technically deprecated in the spec, but still supported in all browsers.\n event.isPropagationStopped = ()=>event.cancelBubble;\n event.persist = ()=>{};\n return event;\n}\nfunction $8a9cb279dc87e130$export$c2b7abe5d61ec696(event, target) {\n Object.defineProperty(event, 'target', {\n value: target\n });\n Object.defineProperty(event, 'currentTarget', {\n value: target\n });\n}\nfunction $8a9cb279dc87e130$export$715c682d09d639cc(onBlur) {\n let stateRef = (0, $6dfIe$useRef)({\n isFocused: false,\n observer: null\n });\n // Clean up MutationObserver on unmount. See below.\n (0, $6dfIe$useLayoutEffect)(()=>{\n const state = stateRef.current;\n return ()=>{\n if (state.observer) {\n state.observer.disconnect();\n state.observer = null;\n }\n };\n }, []);\n let dispatchBlur = (0, $6dfIe$useEffectEvent)((e)=>{\n onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n });\n // This function is called during a React onFocus event.\n return (0, $6dfIe$useCallback)((e)=>{\n // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n stateRef.current.isFocused = true;\n let target = e.target;\n let onBlurHandler = (e)=>{\n stateRef.current.isFocused = false;\n if (target.disabled) {\n // For backward compatibility, dispatch a (fake) React synthetic event.\n let event = $8a9cb279dc87e130$export$525bc4921d56d4a(e);\n dispatchBlur(event);\n }\n // We no longer need the MutationObserver once the target is blurred.\n if (stateRef.current.observer) {\n stateRef.current.observer.disconnect();\n stateRef.current.observer = null;\n }\n };\n target.addEventListener('focusout', onBlurHandler, {\n once: true\n });\n stateRef.current.observer = new MutationObserver(()=>{\n if (stateRef.current.isFocused && target.disabled) {\n var _stateRef_current_observer;\n (_stateRef_current_observer = stateRef.current.observer) === null || _stateRef_current_observer === void 0 ? void 0 : _stateRef_current_observer.disconnect();\n let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n target.dispatchEvent(new FocusEvent('blur', {\n relatedTarget: relatedTargetEl\n }));\n target.dispatchEvent(new FocusEvent('focusout', {\n bubbles: true,\n relatedTarget: relatedTargetEl\n }));\n }\n });\n stateRef.current.observer.observe(target, {\n attributes: true,\n attributeFilter: [\n 'disabled'\n ]\n });\n }\n }, [\n dispatchBlur\n ]);\n}\nlet $8a9cb279dc87e130$export$fda7da73ab5d4c48 = false;\nfunction $8a9cb279dc87e130$export$cabe61c495ee3649(target) {\n // The browser will focus the nearest focusable ancestor of our target.\n while(target && !(0, $6dfIe$isFocusable)(target))target = target.parentElement;\n let window = (0, $6dfIe$getOwnerWindow)(target);\n let activeElement = window.document.activeElement;\n if (!activeElement || activeElement === target) return;\n $8a9cb279dc87e130$export$fda7da73ab5d4c48 = true;\n let isRefocusing = false;\n let onBlur = (e)=>{\n if (e.target === activeElement || isRefocusing) e.stopImmediatePropagation();\n };\n let onFocusOut = (e)=>{\n if (e.target === activeElement || isRefocusing) {\n e.stopImmediatePropagation();\n // If there was no focusable ancestor, we don't expect a focus event.\n // Re-focus the original active element here.\n if (!target && !isRefocusing) {\n isRefocusing = true;\n (0, $6dfIe$focusWithoutScrolling)(activeElement);\n cleanup();\n }\n }\n };\n let onFocus = (e)=>{\n if (e.target === target || isRefocusing) e.stopImmediatePropagation();\n };\n let onFocusIn = (e)=>{\n if (e.target === target || isRefocusing) {\n e.stopImmediatePropagation();\n if (!isRefocusing) {\n isRefocusing = true;\n (0, $6dfIe$focusWithoutScrolling)(activeElement);\n cleanup();\n }\n }\n };\n window.addEventListener('blur', onBlur, true);\n window.addEventListener('focusout', onFocusOut, true);\n window.addEventListener('focusin', onFocusIn, true);\n window.addEventListener('focus', onFocus, true);\n let cleanup = ()=>{\n cancelAnimationFrame(raf);\n window.removeEventListener('blur', onBlur, true);\n window.removeEventListener('focusout', onFocusOut, true);\n window.removeEventListener('focusin', onFocusIn, true);\n window.removeEventListener('focus', onFocus, true);\n $8a9cb279dc87e130$export$fda7da73ab5d4c48 = false;\n isRefocusing = false;\n };\n let raf = requestAnimationFrame(cleanup);\n return cleanup;\n}\n\n\nexport {$8a9cb279dc87e130$export$525bc4921d56d4a as createSyntheticEvent, $8a9cb279dc87e130$export$c2b7abe5d61ec696 as setEventTarget, $8a9cb279dc87e130$export$715c682d09d639cc as useSyntheticBlurEvent, $8a9cb279dc87e130$export$fda7da73ab5d4c48 as ignoreFocusEvent, $8a9cb279dc87e130$export$cabe61c495ee3649 as preventFocus};\n//# sourceMappingURL=utils.module.js.map\n","import {ignoreFocusEvent as $8a9cb279dc87e130$export$fda7da73ab5d4c48} from \"./utils.mjs\";\nimport {isMac as $28AnR$isMac, isVirtualClick as $28AnR$isVirtualClick, getOwnerWindow as $28AnR$getOwnerWindow, getOwnerDocument as $28AnR$getOwnerDocument} from \"@react-aria/utils\";\nimport {useState as $28AnR$useState, useEffect as $28AnR$useEffect} from \"react\";\nimport {useIsSSR as $28AnR$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\n\nlet $507fabe10e71c6fb$var$currentModality = null;\nlet $507fabe10e71c6fb$var$changeHandlers = new Set();\nlet $507fabe10e71c6fb$export$d90243b58daecda7 = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\nlet $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n// Only Tab or Esc keys will make focus visible on text input elements\nconst $507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\nfunction $507fabe10e71c6fb$var$triggerChangeHandlers(modality, e) {\n for (let handler of $507fabe10e71c6fb$var$changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function $507fabe10e71c6fb$var$isValidKey(e) {\n // Control and Shift keys trigger when navigating back to the tab with keyboard.\n return !(e.metaKey || !(0, $28AnR$isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction $507fabe10e71c6fb$var$handleKeyboardEvent(e) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n if ($507fabe10e71c6fb$var$isValidKey(e)) {\n $507fabe10e71c6fb$var$currentModality = 'keyboard';\n $507fabe10e71c6fb$var$triggerChangeHandlers('keyboard', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handlePointerEvent(e) {\n $507fabe10e71c6fb$var$currentModality = 'pointer';\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$triggerChangeHandlers('pointer', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handleClickEvent(e) {\n if ((0, $28AnR$isVirtualClick)(e)) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n }\n}\nfunction $507fabe10e71c6fb$var$handleFocusEvent(e) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document || (0, $8a9cb279dc87e130$export$fda7da73ab5d4c48) || !e.isTrusted) return;\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!$507fabe10e71c6fb$var$hasEventBeforeFocus && !$507fabe10e71c6fb$var$hasBlurredWindowRecently) {\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n $507fabe10e71c6fb$var$triggerChangeHandlers('virtual', e);\n }\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n}\nfunction $507fabe10e71c6fb$var$handleWindowBlur() {\n if (0, $8a9cb279dc87e130$export$fda7da73ab5d4c48) return;\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = true;\n}\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */ function $507fabe10e71c6fb$var$setupGlobalFocusEvents(element) {\n if (typeof window === 'undefined' || typeof document === 'undefined' || $507fabe10e71c6fb$export$d90243b58daecda7.get((0, $28AnR$getOwnerWindow)(element))) return;\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n let focus = windowObject.HTMLElement.prototype.focus;\n windowObject.HTMLElement.prototype.focus = function() {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n focus.apply(this, arguments);\n };\n documentObject.addEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n windowObject.addEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.addEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.addEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else if (process.env.NODE_ENV === 'test') {\n documentObject.addEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n // Add unmount handler\n windowObject.addEventListener('beforeunload', ()=>{\n $507fabe10e71c6fb$var$tearDownWindowFocusTracking(element);\n }, {\n once: true\n });\n $507fabe10e71c6fb$export$d90243b58daecda7.set(windowObject, {\n focus: focus\n });\n}\nconst $507fabe10e71c6fb$var$tearDownWindowFocusTracking = (element, loadListener)=>{\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n if (!$507fabe10e71c6fb$export$d90243b58daecda7.has(windowObject)) return;\n windowObject.HTMLElement.prototype.focus = $507fabe10e71c6fb$export$d90243b58daecda7.get(windowObject).focus;\n documentObject.removeEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n windowObject.removeEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.removeEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.removeEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else if (process.env.NODE_ENV === 'test') {\n documentObject.removeEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n $507fabe10e71c6fb$export$d90243b58daecda7.delete(windowObject);\n};\nfunction $507fabe10e71c6fb$export$2f1888112f558a7d(element) {\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n let loadListener;\n if (documentObject.readyState !== 'loading') $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n else {\n loadListener = ()=>{\n $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener('DOMContentLoaded', loadListener);\n }\n return ()=>$507fabe10e71c6fb$var$tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') $507fabe10e71c6fb$export$2f1888112f558a7d();\nfunction $507fabe10e71c6fb$export$b9b3dfddab17db27() {\n return $507fabe10e71c6fb$var$currentModality !== 'pointer';\n}\nfunction $507fabe10e71c6fb$export$630ff653c5ada6a9() {\n return $507fabe10e71c6fb$var$currentModality;\n}\nfunction $507fabe10e71c6fb$export$8397ddfc504fdb9a(modality) {\n $507fabe10e71c6fb$var$currentModality = modality;\n $507fabe10e71c6fb$var$triggerChangeHandlers(modality, null);\n}\nfunction $507fabe10e71c6fb$export$98e20ec92f614cfe() {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n let [modality, setModality] = (0, $28AnR$useState)($507fabe10e71c6fb$var$currentModality);\n (0, $28AnR$useEffect)(()=>{\n let handler = ()=>{\n setModality($507fabe10e71c6fb$var$currentModality);\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n }, []);\n return (0, $28AnR$useIsSSR)() ? null : modality;\n}\nconst $507fabe10e71c6fb$var$nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */ function $507fabe10e71c6fb$var$isKeyboardFocusEvent(isTextInput, modality, e) {\n let document1 = (0, $28AnR$getOwnerDocument)(e === null || e === void 0 ? void 0 : e.target);\n const IHTMLInputElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLInputElement : HTMLInputElement;\n const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLTextAreaElement : HTMLTextAreaElement;\n const IHTMLElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLElement : HTMLElement;\n const IKeyboardEvent = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).KeyboardEvent : KeyboardEvent;\n // For keyboard events that occur on a non-input element that will move focus into input element (aka ArrowLeft going from Datepicker button to the main input group)\n // we need to rely on the user passing isTextInput into here. This way we can skip toggling focus visiblity for said input element\n isTextInput = isTextInput || document1.activeElement instanceof IHTMLInputElement && !$507fabe10e71c6fb$var$nonTextInputTypes.has(document1.activeElement.type) || document1.activeElement instanceof IHTMLTextAreaElement || document1.activeElement instanceof IHTMLElement && document1.activeElement.isContentEditable;\n return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction $507fabe10e71c6fb$export$ffd9e5021c1fb2d6(props = {}) {\n let { isTextInput: isTextInput, autoFocus: autoFocus } = props;\n let [isFocusVisibleState, setFocusVisible] = (0, $28AnR$useState)(autoFocus || $507fabe10e71c6fb$export$b9b3dfddab17db27());\n $507fabe10e71c6fb$export$ec71b4b83ac08ec3((isFocusVisible)=>{\n setFocusVisible(isFocusVisible);\n }, [\n isTextInput\n ], {\n isTextInput: isTextInput\n });\n return {\n isFocusVisible: isFocusVisibleState\n };\n}\nfunction $507fabe10e71c6fb$export$ec71b4b83ac08ec3(fn, deps, opts) {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n (0, $28AnR$useEffect)(()=>{\n let handler = (modality, e)=>{\n // We want to early return for any keyboard events that occur inside text inputs EXCEPT for Tab and Escape\n if (!$507fabe10e71c6fb$var$isKeyboardFocusEvent(!!(opts === null || opts === void 0 ? void 0 : opts.isTextInput), modality, e)) return;\n fn($507fabe10e71c6fb$export$b9b3dfddab17db27());\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\n\nexport {$507fabe10e71c6fb$export$d90243b58daecda7 as hasSetupGlobalListeners, $507fabe10e71c6fb$export$2f1888112f558a7d as addWindowFocusTracking, $507fabe10e71c6fb$export$b9b3dfddab17db27 as isFocusVisible, $507fabe10e71c6fb$export$630ff653c5ada6a9 as getInteractionModality, $507fabe10e71c6fb$export$8397ddfc504fdb9a as setInteractionModality, $507fabe10e71c6fb$export$98e20ec92f614cfe as useInteractionModality, $507fabe10e71c6fb$export$ffd9e5021c1fb2d6 as useFocusVisible, $507fabe10e71c6fb$export$ec71b4b83ac08ec3 as useFocusVisibleListener};\n//# sourceMappingURL=useFocusVisible.module.js.map\n","import {getInteractionModality as $507fabe10e71c6fb$export$630ff653c5ada6a9} from \"./useFocusVisible.mjs\";\nimport {getOwnerDocument as $k50bp$getOwnerDocument, getActiveElement as $k50bp$getActiveElement, runAfterTransition as $k50bp$runAfterTransition, focusWithoutScrolling as $k50bp$focusWithoutScrolling} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $3ad3f6e1647bc98d$export$80f3e147d781571c(element) {\n // If the user is interacting with a virtual cursor, e.g. screen reader, then\n // wait until after any animated transitions that are currently occurring on\n // the page before shifting focus. This avoids issues with VoiceOver on iOS\n // causing the page to scroll when moving focus if the element is transitioning\n // from off the screen.\n const ownerDocument = (0, $k50bp$getOwnerDocument)(element);\n const activeElement = (0, $k50bp$getActiveElement)(ownerDocument);\n if ((0, $507fabe10e71c6fb$export$630ff653c5ada6a9)() === 'virtual') {\n let lastFocusedElement = activeElement;\n (0, $k50bp$runAfterTransition)(()=>{\n // If focus did not move and the element is still in the document, focus it.\n if ((0, $k50bp$getActiveElement)(ownerDocument) === lastFocusedElement && element.isConnected) (0, $k50bp$focusWithoutScrolling)(element);\n });\n } else (0, $k50bp$focusWithoutScrolling)(element);\n}\n\n\nexport {$3ad3f6e1647bc98d$export$80f3e147d781571c as focusSafely};\n//# sourceMappingURL=focusSafely.module.js.map\n","import {useLayoutEffect as $cgawC$useLayoutEffect, getActiveElement as $cgawC$getActiveElement, getOwnerDocument as $cgawC$getOwnerDocument, getEventTarget as $cgawC$getEventTarget, isAndroid as $cgawC$isAndroid, isChrome as $cgawC$isChrome, isTabbable as $cgawC$isTabbable, isFocusable as $cgawC$isFocusable, createShadowTreeWalker as $cgawC$createShadowTreeWalker} from \"@react-aria/utils\";\nimport {getInteractionModality as $cgawC$getInteractionModality, focusSafely as $cgawC$focusSafely} from \"@react-aria/interactions\";\nimport $cgawC$react, {useRef as $cgawC$useRef, useContext as $cgawC$useContext, useMemo as $cgawC$useMemo, useEffect as $cgawC$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nconst $9bf71ea28793e738$var$FocusContext = /*#__PURE__*/ (0, $cgawC$react).createContext(null);\nconst $9bf71ea28793e738$var$RESTORE_FOCUS_EVENT = 'react-aria-focus-scope-restore';\nlet $9bf71ea28793e738$var$activeScope = null;\nfunction $9bf71ea28793e738$export$20e40289641fbbb6(props) {\n let { children: children, contain: contain, restoreFocus: restoreFocus, autoFocus: autoFocus } = props;\n let startRef = (0, $cgawC$useRef)(null);\n let endRef = (0, $cgawC$useRef)(null);\n let scopeRef = (0, $cgawC$useRef)([]);\n let { parentNode: parentNode } = (0, $cgawC$useContext)($9bf71ea28793e738$var$FocusContext) || {};\n // Create a tree node here so we can add children to it even before it is added to the tree.\n let node = (0, $cgawC$useMemo)(()=>new $9bf71ea28793e738$var$TreeNode({\n scopeRef: scopeRef\n }), [\n scopeRef\n ]);\n (0, $cgawC$useLayoutEffect)(()=>{\n // If a new scope mounts outside the active scope, (e.g. DialogContainer launched from a menu),\n // use the active scope as the parent instead of the parent from context. Layout effects run bottom\n // up, so if the parent is not yet added to the tree, don't do this. Only the outer-most FocusScope\n // that is being added should get the activeScope as its parent.\n let parent = parentNode || $9bf71ea28793e738$export$d06fae2ee68b101e.root;\n if ($9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(parent.scopeRef) && $9bf71ea28793e738$var$activeScope && !$9bf71ea28793e738$var$isAncestorScope($9bf71ea28793e738$var$activeScope, parent.scopeRef)) {\n let activeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode($9bf71ea28793e738$var$activeScope);\n if (activeNode) parent = activeNode;\n }\n // Add the node to the parent, and to the tree.\n parent.addChild(node);\n $9bf71ea28793e738$export$d06fae2ee68b101e.addNode(node);\n }, [\n node,\n parentNode\n ]);\n (0, $cgawC$useLayoutEffect)(()=>{\n let node = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef);\n if (node) node.contain = !!contain;\n }, [\n contain\n ]);\n (0, $cgawC$useLayoutEffect)(()=>{\n var _startRef_current;\n // Find all rendered nodes between the sentinels and add them to the scope.\n let node = (_startRef_current = startRef.current) === null || _startRef_current === void 0 ? void 0 : _startRef_current.nextSibling;\n let nodes = [];\n let stopPropagation = (e)=>e.stopPropagation();\n while(node && node !== endRef.current){\n nodes.push(node);\n // Stop custom restore focus event from propagating to parent focus scopes.\n node.addEventListener($9bf71ea28793e738$var$RESTORE_FOCUS_EVENT, stopPropagation);\n node = node.nextSibling;\n }\n scopeRef.current = nodes;\n return ()=>{\n for (let node of nodes)node.removeEventListener($9bf71ea28793e738$var$RESTORE_FOCUS_EVENT, stopPropagation);\n };\n }, [\n children\n ]);\n $9bf71ea28793e738$var$useActiveScopeTracker(scopeRef, restoreFocus, contain);\n $9bf71ea28793e738$var$useFocusContainment(scopeRef, contain);\n $9bf71ea28793e738$var$useRestoreFocus(scopeRef, restoreFocus, contain);\n $9bf71ea28793e738$var$useAutoFocus(scopeRef, autoFocus);\n // This needs to be an effect so that activeScope is updated after the FocusScope tree is complete.\n // It cannot be a useLayoutEffect because the parent of this node hasn't been attached in the tree yet.\n (0, $cgawC$useEffect)(()=>{\n const activeElement = (0, $cgawC$getActiveElement)((0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined));\n let scope = null;\n if ($9bf71ea28793e738$var$isElementInScope(activeElement, scopeRef.current)) {\n // We need to traverse the focusScope tree and find the bottom most scope that\n // contains the active element and set that as the activeScope.\n for (let node of $9bf71ea28793e738$export$d06fae2ee68b101e.traverse())if (node.scopeRef && $9bf71ea28793e738$var$isElementInScope(activeElement, node.scopeRef.current)) scope = node;\n if (scope === $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef)) $9bf71ea28793e738$var$activeScope = scope.scopeRef;\n }\n }, [\n scopeRef\n ]);\n // This layout effect cleanup is so that the tree node is removed synchronously with react before the RAF\n // in useRestoreFocus cleanup runs.\n (0, $cgawC$useLayoutEffect)(()=>{\n return ()=>{\n var _focusScopeTree_getTreeNode_parent, _focusScopeTree_getTreeNode;\n var _focusScopeTree_getTreeNode_parent_scopeRef;\n // Scope may have been re-parented.\n let parentScope = (_focusScopeTree_getTreeNode_parent_scopeRef = (_focusScopeTree_getTreeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef)) === null || _focusScopeTree_getTreeNode === void 0 ? void 0 : (_focusScopeTree_getTreeNode_parent = _focusScopeTree_getTreeNode.parent) === null || _focusScopeTree_getTreeNode_parent === void 0 ? void 0 : _focusScopeTree_getTreeNode_parent.scopeRef) !== null && _focusScopeTree_getTreeNode_parent_scopeRef !== void 0 ? _focusScopeTree_getTreeNode_parent_scopeRef : null;\n if ((scopeRef === $9bf71ea28793e738$var$activeScope || $9bf71ea28793e738$var$isAncestorScope(scopeRef, $9bf71ea28793e738$var$activeScope)) && (!parentScope || $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(parentScope))) $9bf71ea28793e738$var$activeScope = parentScope;\n $9bf71ea28793e738$export$d06fae2ee68b101e.removeTreeNode(scopeRef);\n };\n }, [\n scopeRef\n ]);\n let focusManager = (0, $cgawC$useMemo)(()=>$9bf71ea28793e738$var$createFocusManagerForScope(scopeRef), []);\n let value = (0, $cgawC$useMemo)(()=>({\n focusManager: focusManager,\n parentNode: node\n }), [\n node,\n focusManager\n ]);\n return /*#__PURE__*/ (0, $cgawC$react).createElement($9bf71ea28793e738$var$FocusContext.Provider, {\n value: value\n }, /*#__PURE__*/ (0, $cgawC$react).createElement(\"span\", {\n \"data-focus-scope-start\": true,\n hidden: true,\n ref: startRef\n }), children, /*#__PURE__*/ (0, $cgawC$react).createElement(\"span\", {\n \"data-focus-scope-end\": true,\n hidden: true,\n ref: endRef\n }));\n}\nfunction $9bf71ea28793e738$export$10c5169755ce7bd7() {\n var _useContext;\n return (_useContext = (0, $cgawC$useContext)($9bf71ea28793e738$var$FocusContext)) === null || _useContext === void 0 ? void 0 : _useContext.focusManager;\n}\nfunction $9bf71ea28793e738$var$createFocusManagerForScope(scopeRef) {\n return {\n focusNext (opts = {}) {\n let scope = scopeRef.current;\n let { from: from, tabbable: tabbable, wrap: wrap, accept: accept } = opts;\n var _scope_;\n let node = from || (0, $cgawC$getActiveElement)((0, $cgawC$getOwnerDocument)((_scope_ = scope[0]) !== null && _scope_ !== void 0 ? _scope_ : undefined));\n let sentinel = scope[0].previousElementSibling;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable,\n accept: accept\n }, scope);\n walker.currentNode = $9bf71ea28793e738$var$isElementInScope(node, scope) ? node : sentinel;\n let nextNode = walker.nextNode();\n if (!nextNode && wrap) {\n walker.currentNode = sentinel;\n nextNode = walker.nextNode();\n }\n if (nextNode) $9bf71ea28793e738$var$focusElement(nextNode, true);\n return nextNode;\n },\n focusPrevious (opts = {}) {\n let scope = scopeRef.current;\n let { from: from, tabbable: tabbable, wrap: wrap, accept: accept } = opts;\n var _scope_;\n let node = from || (0, $cgawC$getActiveElement)((0, $cgawC$getOwnerDocument)((_scope_ = scope[0]) !== null && _scope_ !== void 0 ? _scope_ : undefined));\n let sentinel = scope[scope.length - 1].nextElementSibling;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable,\n accept: accept\n }, scope);\n walker.currentNode = $9bf71ea28793e738$var$isElementInScope(node, scope) ? node : sentinel;\n let previousNode = walker.previousNode();\n if (!previousNode && wrap) {\n walker.currentNode = sentinel;\n previousNode = walker.previousNode();\n }\n if (previousNode) $9bf71ea28793e738$var$focusElement(previousNode, true);\n return previousNode;\n },\n focusFirst (opts = {}) {\n let scope = scopeRef.current;\n let { tabbable: tabbable, accept: accept } = opts;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable,\n accept: accept\n }, scope);\n walker.currentNode = scope[0].previousElementSibling;\n let nextNode = walker.nextNode();\n if (nextNode) $9bf71ea28793e738$var$focusElement(nextNode, true);\n return nextNode;\n },\n focusLast (opts = {}) {\n let scope = scopeRef.current;\n let { tabbable: tabbable, accept: accept } = opts;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable,\n accept: accept\n }, scope);\n walker.currentNode = scope[scope.length - 1].nextElementSibling;\n let previousNode = walker.previousNode();\n if (previousNode) $9bf71ea28793e738$var$focusElement(previousNode, true);\n return previousNode;\n }\n };\n}\nfunction $9bf71ea28793e738$var$getScopeRoot(scope) {\n return scope[0].parentElement;\n}\nfunction $9bf71ea28793e738$var$shouldContainFocus(scopeRef) {\n let scope = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode($9bf71ea28793e738$var$activeScope);\n while(scope && scope.scopeRef !== scopeRef){\n if (scope.contain) return false;\n scope = scope.parent;\n }\n return true;\n}\nfunction $9bf71ea28793e738$var$isTabbableRadio(element) {\n if (element.checked) return true;\n let radios = [];\n if (!element.form) radios = [\n ...(0, $cgawC$getOwnerDocument)(element).querySelectorAll(`input[type=\"radio\"][name=\"${CSS.escape(element.name)}\"]`)\n ].filter((radio)=>!radio.form);\n else {\n var _element_form_elements, _element_form;\n let radioList = (_element_form = element.form) === null || _element_form === void 0 ? void 0 : (_element_form_elements = _element_form.elements) === null || _element_form_elements === void 0 ? void 0 : _element_form_elements.namedItem(element.name);\n radios = [\n ...radioList !== null && radioList !== void 0 ? radioList : []\n ];\n }\n if (!radios) return false;\n let anyChecked = radios.some((radio)=>radio.checked);\n return !anyChecked;\n}\nfunction $9bf71ea28793e738$var$useFocusContainment(scopeRef, contain) {\n let focusedNode = (0, $cgawC$useRef)(undefined);\n let raf = (0, $cgawC$useRef)(undefined);\n (0, $cgawC$useLayoutEffect)(()=>{\n let scope = scopeRef.current;\n if (!contain) {\n // if contain was changed, then we should cancel any ongoing waits to pull focus back into containment\n if (raf.current) {\n cancelAnimationFrame(raf.current);\n raf.current = undefined;\n }\n return;\n }\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scope ? scope[0] : undefined);\n // Handle the Tab key to contain focus within the scope\n let onKeyDown = (e)=>{\n if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey || !$9bf71ea28793e738$var$shouldContainFocus(scopeRef) || e.isComposing) return;\n let focusedElement = (0, $cgawC$getActiveElement)(ownerDocument);\n let scope = scopeRef.current;\n if (!scope || !$9bf71ea28793e738$var$isElementInScope(focusedElement, scope)) return;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: true\n }, scope);\n if (!focusedElement) return;\n walker.currentNode = focusedElement;\n let nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();\n if (!nextElement) {\n walker.currentNode = e.shiftKey ? scope[scope.length - 1].nextElementSibling : scope[0].previousElementSibling;\n nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();\n }\n e.preventDefault();\n if (nextElement) $9bf71ea28793e738$var$focusElement(nextElement, true);\n };\n let onFocus = (e)=>{\n // If focusing an element in a child scope of the currently active scope, the child becomes active.\n // Moving out of the active scope to an ancestor is not allowed.\n if ((!$9bf71ea28793e738$var$activeScope || $9bf71ea28793e738$var$isAncestorScope($9bf71ea28793e738$var$activeScope, scopeRef)) && $9bf71ea28793e738$var$isElementInScope((0, $cgawC$getEventTarget)(e), scopeRef.current)) {\n $9bf71ea28793e738$var$activeScope = scopeRef;\n focusedNode.current = (0, $cgawC$getEventTarget)(e);\n } else if ($9bf71ea28793e738$var$shouldContainFocus(scopeRef) && !$9bf71ea28793e738$var$isElementInChildScope((0, $cgawC$getEventTarget)(e), scopeRef)) {\n // If a focus event occurs outside the active scope (e.g. user tabs from browser location bar),\n // restore focus to the previously focused node or the first tabbable element in the active scope.\n if (focusedNode.current) focusedNode.current.focus();\n else if ($9bf71ea28793e738$var$activeScope && $9bf71ea28793e738$var$activeScope.current) $9bf71ea28793e738$var$focusFirstInScope($9bf71ea28793e738$var$activeScope.current);\n } else if ($9bf71ea28793e738$var$shouldContainFocus(scopeRef)) focusedNode.current = (0, $cgawC$getEventTarget)(e);\n };\n let onBlur = (e)=>{\n // Firefox doesn't shift focus back to the Dialog properly without this\n if (raf.current) cancelAnimationFrame(raf.current);\n raf.current = requestAnimationFrame(()=>{\n // Patches infinite focus coersion loop for Android Talkback where the user isn't able to move the virtual cursor\n // if within a containing focus scope. Bug filed against Chrome: https://issuetracker.google.com/issues/384844019.\n // Note that this means focus can leave focus containing modals due to this, but it is isolated to Chrome Talkback.\n let modality = (0, $cgawC$getInteractionModality)();\n let shouldSkipFocusRestore = (modality === 'virtual' || modality === null) && (0, $cgawC$isAndroid)() && (0, $cgawC$isChrome)();\n // Use document.activeElement instead of e.relatedTarget so we can tell if user clicked into iframe\n let activeElement = (0, $cgawC$getActiveElement)(ownerDocument);\n if (!shouldSkipFocusRestore && activeElement && $9bf71ea28793e738$var$shouldContainFocus(scopeRef) && !$9bf71ea28793e738$var$isElementInChildScope(activeElement, scopeRef)) {\n $9bf71ea28793e738$var$activeScope = scopeRef;\n let target = (0, $cgawC$getEventTarget)(e);\n if (target && target.isConnected) {\n var _focusedNode_current;\n focusedNode.current = target;\n (_focusedNode_current = focusedNode.current) === null || _focusedNode_current === void 0 ? void 0 : _focusedNode_current.focus();\n } else if ($9bf71ea28793e738$var$activeScope.current) $9bf71ea28793e738$var$focusFirstInScope($9bf71ea28793e738$var$activeScope.current);\n }\n });\n };\n ownerDocument.addEventListener('keydown', onKeyDown, false);\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.addEventListener('focusin', onFocus, false));\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.addEventListener('focusout', onBlur, false));\n return ()=>{\n ownerDocument.removeEventListener('keydown', onKeyDown, false);\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.removeEventListener('focusin', onFocus, false));\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.removeEventListener('focusout', onBlur, false));\n };\n }, [\n scopeRef,\n contain\n ]);\n // This is a useLayoutEffect so it is guaranteed to run before our async synthetic blur\n (0, $cgawC$useLayoutEffect)(()=>{\n return ()=>{\n if (raf.current) cancelAnimationFrame(raf.current);\n };\n }, [\n raf\n ]);\n}\nfunction $9bf71ea28793e738$var$isElementInAnyScope(element) {\n return $9bf71ea28793e738$var$isElementInChildScope(element);\n}\nfunction $9bf71ea28793e738$var$isElementInScope(element, scope) {\n if (!element) return false;\n if (!scope) return false;\n return scope.some((node)=>node.contains(element));\n}\nfunction $9bf71ea28793e738$var$isElementInChildScope(element, scope = null) {\n // If the element is within a top layer element (e.g. toasts), always allow moving focus there.\n if (element instanceof Element && element.closest('[data-react-aria-top-layer]')) return true;\n // node.contains in isElementInScope covers child scopes that are also DOM children,\n // but does not cover child scopes in portals.\n for (let { scopeRef: s } of $9bf71ea28793e738$export$d06fae2ee68b101e.traverse($9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scope))){\n if (s && $9bf71ea28793e738$var$isElementInScope(element, s.current)) return true;\n }\n return false;\n}\nfunction $9bf71ea28793e738$export$1258395f99bf9cbf(element) {\n return $9bf71ea28793e738$var$isElementInChildScope(element, $9bf71ea28793e738$var$activeScope);\n}\nfunction $9bf71ea28793e738$var$isAncestorScope(ancestor, scope) {\n var _focusScopeTree_getTreeNode;\n let parent = (_focusScopeTree_getTreeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scope)) === null || _focusScopeTree_getTreeNode === void 0 ? void 0 : _focusScopeTree_getTreeNode.parent;\n while(parent){\n if (parent.scopeRef === ancestor) return true;\n parent = parent.parent;\n }\n return false;\n}\nfunction $9bf71ea28793e738$var$focusElement(element, scroll = false) {\n if (element != null && !scroll) try {\n (0, $cgawC$focusSafely)(element);\n } catch {\n // ignore\n }\n else if (element != null) try {\n element.focus();\n } catch {\n // ignore\n }\n}\nfunction $9bf71ea28793e738$var$getFirstInScope(scope, tabbable = true) {\n let sentinel = scope[0].previousElementSibling;\n let scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: tabbable\n }, scope);\n walker.currentNode = sentinel;\n let nextNode = walker.nextNode();\n // If the scope does not contain a tabbable element, use the first focusable element.\n if (tabbable && !nextNode) {\n scopeRoot = $9bf71ea28793e738$var$getScopeRoot(scope);\n walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(scopeRoot, {\n tabbable: false\n }, scope);\n walker.currentNode = sentinel;\n nextNode = walker.nextNode();\n }\n return nextNode;\n}\nfunction $9bf71ea28793e738$var$focusFirstInScope(scope, tabbable = true) {\n $9bf71ea28793e738$var$focusElement($9bf71ea28793e738$var$getFirstInScope(scope, tabbable));\n}\nfunction $9bf71ea28793e738$var$useAutoFocus(scopeRef, autoFocus) {\n const autoFocusRef = (0, $cgawC$react).useRef(autoFocus);\n (0, $cgawC$useEffect)(()=>{\n if (autoFocusRef.current) {\n $9bf71ea28793e738$var$activeScope = scopeRef;\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined);\n if (!$9bf71ea28793e738$var$isElementInScope((0, $cgawC$getActiveElement)(ownerDocument), $9bf71ea28793e738$var$activeScope.current) && scopeRef.current) $9bf71ea28793e738$var$focusFirstInScope(scopeRef.current);\n }\n autoFocusRef.current = false;\n }, [\n scopeRef\n ]);\n}\nfunction $9bf71ea28793e738$var$useActiveScopeTracker(scopeRef, restore, contain) {\n // tracks the active scope, in case restore and contain are both false.\n // if either are true, this is tracked in useRestoreFocus or useFocusContainment.\n (0, $cgawC$useLayoutEffect)(()=>{\n if (restore || contain) return;\n let scope = scopeRef.current;\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scope ? scope[0] : undefined);\n let onFocus = (e)=>{\n let target = (0, $cgawC$getEventTarget)(e);\n if ($9bf71ea28793e738$var$isElementInScope(target, scopeRef.current)) $9bf71ea28793e738$var$activeScope = scopeRef;\n else if (!$9bf71ea28793e738$var$isElementInAnyScope(target)) $9bf71ea28793e738$var$activeScope = null;\n };\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.addEventListener('focusin', onFocus, false));\n return ()=>{\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.removeEventListener('focusin', onFocus, false));\n };\n }, [\n scopeRef,\n restore,\n contain\n ]);\n}\nfunction $9bf71ea28793e738$var$shouldRestoreFocus(scopeRef) {\n let scope = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode($9bf71ea28793e738$var$activeScope);\n while(scope && scope.scopeRef !== scopeRef){\n if (scope.nodeToRestore) return false;\n scope = scope.parent;\n }\n return (scope === null || scope === void 0 ? void 0 : scope.scopeRef) === scopeRef;\n}\nfunction $9bf71ea28793e738$var$useRestoreFocus(scopeRef, restoreFocus, contain) {\n // create a ref during render instead of useLayoutEffect so the active element is saved before a child with autoFocus=true mounts.\n // eslint-disable-next-line no-restricted-globals\n const nodeToRestoreRef = (0, $cgawC$useRef)(typeof document !== 'undefined' ? (0, $cgawC$getActiveElement)((0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined)) : null);\n // restoring scopes should all track if they are active regardless of contain, but contain already tracks it plus logic to contain the focus\n // restoring-non-containing scopes should only care if they become active so they can perform the restore\n (0, $cgawC$useLayoutEffect)(()=>{\n let scope = scopeRef.current;\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scope ? scope[0] : undefined);\n if (!restoreFocus || contain) return;\n let onFocus = ()=>{\n // If focusing an element in a child scope of the currently active scope, the child becomes active.\n // Moving out of the active scope to an ancestor is not allowed.\n if ((!$9bf71ea28793e738$var$activeScope || $9bf71ea28793e738$var$isAncestorScope($9bf71ea28793e738$var$activeScope, scopeRef)) && $9bf71ea28793e738$var$isElementInScope((0, $cgawC$getActiveElement)(ownerDocument), scopeRef.current)) $9bf71ea28793e738$var$activeScope = scopeRef;\n };\n ownerDocument.addEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.addEventListener('focusin', onFocus, false));\n return ()=>{\n ownerDocument.removeEventListener('focusin', onFocus, false);\n scope === null || scope === void 0 ? void 0 : scope.forEach((element)=>element.removeEventListener('focusin', onFocus, false));\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n scopeRef,\n contain\n ]);\n (0, $cgawC$useLayoutEffect)(()=>{\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined);\n if (!restoreFocus) return;\n // Handle the Tab key so that tabbing out of the scope goes to the next element\n // after the node that had focus when the scope mounted. This is important when\n // using portals for overlays, so that focus goes to the expected element when\n // tabbing out of the overlay.\n let onKeyDown = (e)=>{\n if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey || !$9bf71ea28793e738$var$shouldContainFocus(scopeRef) || e.isComposing) return;\n let focusedElement = ownerDocument.activeElement;\n if (!$9bf71ea28793e738$var$isElementInChildScope(focusedElement, scopeRef) || !$9bf71ea28793e738$var$shouldRestoreFocus(scopeRef)) return;\n let treeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef);\n if (!treeNode) return;\n let nodeToRestore = treeNode.nodeToRestore;\n // Create a DOM tree walker that matches all tabbable elements\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(ownerDocument.body, {\n tabbable: true\n });\n // Find the next tabbable element after the currently focused element\n walker.currentNode = focusedElement;\n let nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();\n if (!nodeToRestore || !nodeToRestore.isConnected || nodeToRestore === ownerDocument.body) {\n nodeToRestore = undefined;\n treeNode.nodeToRestore = undefined;\n }\n // If there is no next element, or it is outside the current scope, move focus to the\n // next element after the node to restore to instead.\n if ((!nextElement || !$9bf71ea28793e738$var$isElementInChildScope(nextElement, scopeRef)) && nodeToRestore) {\n walker.currentNode = nodeToRestore;\n // Skip over elements within the scope, in case the scope immediately follows the node to restore.\n do nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();\n while ($9bf71ea28793e738$var$isElementInChildScope(nextElement, scopeRef));\n e.preventDefault();\n e.stopPropagation();\n if (nextElement) $9bf71ea28793e738$var$focusElement(nextElement, true);\n else // If there is no next element and the nodeToRestore isn't within a FocusScope (i.e. we are leaving the top level focus scope)\n // then move focus to the body.\n // Otherwise restore focus to the nodeToRestore (e.g menu within a popover -> tabbing to close the menu should move focus to menu trigger)\n if (!$9bf71ea28793e738$var$isElementInAnyScope(nodeToRestore)) focusedElement.blur();\n else $9bf71ea28793e738$var$focusElement(nodeToRestore, true);\n }\n };\n if (!contain) ownerDocument.addEventListener('keydown', onKeyDown, true);\n return ()=>{\n if (!contain) ownerDocument.removeEventListener('keydown', onKeyDown, true);\n };\n }, [\n scopeRef,\n restoreFocus,\n contain\n ]);\n // useLayoutEffect instead of useEffect so the active element is saved synchronously instead of asynchronously.\n (0, $cgawC$useLayoutEffect)(()=>{\n const ownerDocument = (0, $cgawC$getOwnerDocument)(scopeRef.current ? scopeRef.current[0] : undefined);\n if (!restoreFocus) return;\n let treeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef);\n if (!treeNode) return;\n var _nodeToRestoreRef_current;\n treeNode.nodeToRestore = (_nodeToRestoreRef_current = nodeToRestoreRef.current) !== null && _nodeToRestoreRef_current !== void 0 ? _nodeToRestoreRef_current : undefined;\n return ()=>{\n let treeNode = $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(scopeRef);\n if (!treeNode) return;\n let nodeToRestore = treeNode.nodeToRestore;\n // if we already lost focus to the body and this was the active scope, then we should attempt to restore\n let activeElement = (0, $cgawC$getActiveElement)(ownerDocument);\n if (restoreFocus && nodeToRestore && (activeElement && $9bf71ea28793e738$var$isElementInChildScope(activeElement, scopeRef) || activeElement === ownerDocument.body && $9bf71ea28793e738$var$shouldRestoreFocus(scopeRef))) {\n // freeze the focusScopeTree so it persists after the raf, otherwise during unmount nodes are removed from it\n let clonedTree = $9bf71ea28793e738$export$d06fae2ee68b101e.clone();\n requestAnimationFrame(()=>{\n // Only restore focus if we've lost focus to the body, the alternative is that focus has been purposefully moved elsewhere\n if (ownerDocument.activeElement === ownerDocument.body) {\n // look up the tree starting with our scope to find a nodeToRestore still in the DOM\n let treeNode = clonedTree.getTreeNode(scopeRef);\n while(treeNode){\n if (treeNode.nodeToRestore && treeNode.nodeToRestore.isConnected) {\n $9bf71ea28793e738$var$restoreFocusToElement(treeNode.nodeToRestore);\n return;\n }\n treeNode = treeNode.parent;\n }\n // If no nodeToRestore was found, focus the first element in the nearest\n // ancestor scope that is still in the tree.\n treeNode = clonedTree.getTreeNode(scopeRef);\n while(treeNode){\n if (treeNode.scopeRef && treeNode.scopeRef.current && $9bf71ea28793e738$export$d06fae2ee68b101e.getTreeNode(treeNode.scopeRef)) {\n let node = $9bf71ea28793e738$var$getFirstInScope(treeNode.scopeRef.current, true);\n $9bf71ea28793e738$var$restoreFocusToElement(node);\n return;\n }\n treeNode = treeNode.parent;\n }\n }\n });\n }\n };\n }, [\n scopeRef,\n restoreFocus\n ]);\n}\nfunction $9bf71ea28793e738$var$restoreFocusToElement(node) {\n // Dispatch a custom event that parent elements can intercept to customize focus restoration.\n // For example, virtualized collection components reuse DOM elements, so the original element\n // might still exist in the DOM but representing a different item.\n if (node.dispatchEvent(new CustomEvent($9bf71ea28793e738$var$RESTORE_FOCUS_EVENT, {\n bubbles: true,\n cancelable: true\n }))) $9bf71ea28793e738$var$focusElement(node);\n}\nfunction $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, opts, scope) {\n let filter = (opts === null || opts === void 0 ? void 0 : opts.tabbable) ? (0, $cgawC$isTabbable) : (0, $cgawC$isFocusable);\n // Ensure that root is an Element or fall back appropriately\n let rootElement = (root === null || root === void 0 ? void 0 : root.nodeType) === Node.ELEMENT_NODE ? root : null;\n // Determine the document to use\n let doc = (0, $cgawC$getOwnerDocument)(rootElement);\n // Create a TreeWalker, ensuring the root is an Element or Document\n let walker = (0, $cgawC$createShadowTreeWalker)(doc, root || doc, NodeFilter.SHOW_ELEMENT, {\n acceptNode (node) {\n var _opts_from;\n // Skip nodes inside the starting node.\n if (opts === null || opts === void 0 ? void 0 : (_opts_from = opts.from) === null || _opts_from === void 0 ? void 0 : _opts_from.contains(node)) return NodeFilter.FILTER_REJECT;\n if ((opts === null || opts === void 0 ? void 0 : opts.tabbable) && node.tagName === 'INPUT' && node.getAttribute('type') === 'radio') {\n // If the radio is in a form, we can get all the other radios by name\n if (!$9bf71ea28793e738$var$isTabbableRadio(node)) return NodeFilter.FILTER_REJECT;\n // If the radio is in the same group as the current node and none are selected, we can skip it\n if (walker.currentNode.tagName === 'INPUT' && walker.currentNode.type === 'radio' && walker.currentNode.name === node.name) return NodeFilter.FILTER_REJECT;\n }\n if (filter(node) && (!scope || $9bf71ea28793e738$var$isElementInScope(node, scope)) && (!(opts === null || opts === void 0 ? void 0 : opts.accept) || opts.accept(node))) return NodeFilter.FILTER_ACCEPT;\n return NodeFilter.FILTER_SKIP;\n }\n });\n if (opts === null || opts === void 0 ? void 0 : opts.from) walker.currentNode = opts.from;\n return walker;\n}\nfunction $9bf71ea28793e738$export$c5251b9e124bf29(ref, defaultOptions = {}) {\n return {\n focusNext (opts = {}) {\n let root = ref.current;\n if (!root) return null;\n let { from: from, tabbable: tabbable = defaultOptions.tabbable, wrap: wrap = defaultOptions.wrap, accept: accept = defaultOptions.accept } = opts;\n let node = from || (0, $cgawC$getActiveElement)((0, $cgawC$getOwnerDocument)(root));\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, {\n tabbable: tabbable,\n accept: accept\n });\n if (root.contains(node)) walker.currentNode = node;\n let nextNode = walker.nextNode();\n if (!nextNode && wrap) {\n walker.currentNode = root;\n nextNode = walker.nextNode();\n }\n if (nextNode) $9bf71ea28793e738$var$focusElement(nextNode, true);\n return nextNode;\n },\n focusPrevious (opts = defaultOptions) {\n let root = ref.current;\n if (!root) return null;\n let { from: from, tabbable: tabbable = defaultOptions.tabbable, wrap: wrap = defaultOptions.wrap, accept: accept = defaultOptions.accept } = opts;\n let node = from || (0, $cgawC$getActiveElement)((0, $cgawC$getOwnerDocument)(root));\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, {\n tabbable: tabbable,\n accept: accept\n });\n if (root.contains(node)) walker.currentNode = node;\n else {\n let next = $9bf71ea28793e738$var$last(walker);\n if (next) $9bf71ea28793e738$var$focusElement(next, true);\n return next !== null && next !== void 0 ? next : null;\n }\n let previousNode = walker.previousNode();\n if (!previousNode && wrap) {\n walker.currentNode = root;\n let lastNode = $9bf71ea28793e738$var$last(walker);\n if (!lastNode) // couldn't wrap\n return null;\n previousNode = lastNode;\n }\n if (previousNode) $9bf71ea28793e738$var$focusElement(previousNode, true);\n return previousNode !== null && previousNode !== void 0 ? previousNode : null;\n },\n focusFirst (opts = defaultOptions) {\n let root = ref.current;\n if (!root) return null;\n let { tabbable: tabbable = defaultOptions.tabbable, accept: accept = defaultOptions.accept } = opts;\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, {\n tabbable: tabbable,\n accept: accept\n });\n let nextNode = walker.nextNode();\n if (nextNode) $9bf71ea28793e738$var$focusElement(nextNode, true);\n return nextNode;\n },\n focusLast (opts = defaultOptions) {\n let root = ref.current;\n if (!root) return null;\n let { tabbable: tabbable = defaultOptions.tabbable, accept: accept = defaultOptions.accept } = opts;\n let walker = $9bf71ea28793e738$export$2d6ec8fc375ceafa(root, {\n tabbable: tabbable,\n accept: accept\n });\n let next = $9bf71ea28793e738$var$last(walker);\n if (next) $9bf71ea28793e738$var$focusElement(next, true);\n return next !== null && next !== void 0 ? next : null;\n }\n };\n}\nfunction $9bf71ea28793e738$var$last(walker) {\n let next = undefined;\n let last;\n do {\n last = walker.lastChild();\n if (last) next = last;\n }while (last);\n return next;\n}\nclass $9bf71ea28793e738$var$Tree {\n get size() {\n return this.fastMap.size;\n }\n getTreeNode(data) {\n return this.fastMap.get(data);\n }\n addTreeNode(scopeRef, parent, nodeToRestore) {\n let parentNode = this.fastMap.get(parent !== null && parent !== void 0 ? parent : null);\n if (!parentNode) return;\n let node = new $9bf71ea28793e738$var$TreeNode({\n scopeRef: scopeRef\n });\n parentNode.addChild(node);\n node.parent = parentNode;\n this.fastMap.set(scopeRef, node);\n if (nodeToRestore) node.nodeToRestore = nodeToRestore;\n }\n addNode(node) {\n this.fastMap.set(node.scopeRef, node);\n }\n removeTreeNode(scopeRef) {\n // never remove the root\n if (scopeRef === null) return;\n let node = this.fastMap.get(scopeRef);\n if (!node) return;\n let parentNode = node.parent;\n // when we remove a scope, check if any sibling scopes are trying to restore focus to something inside the scope we're removing\n // if we are, then replace the siblings restore with the restore from the scope we're removing\n for (let current of this.traverse())if (current !== node && node.nodeToRestore && current.nodeToRestore && node.scopeRef && node.scopeRef.current && $9bf71ea28793e738$var$isElementInScope(current.nodeToRestore, node.scopeRef.current)) current.nodeToRestore = node.nodeToRestore;\n let children = node.children;\n if (parentNode) {\n parentNode.removeChild(node);\n if (children.size > 0) children.forEach((child)=>parentNode && parentNode.addChild(child));\n }\n this.fastMap.delete(node.scopeRef);\n }\n // Pre Order Depth First\n *traverse(node = this.root) {\n if (node.scopeRef != null) yield node;\n if (node.children.size > 0) for (let child of node.children)yield* this.traverse(child);\n }\n clone() {\n var _node_parent;\n let newTree = new $9bf71ea28793e738$var$Tree();\n var _node_parent_scopeRef;\n for (let node of this.traverse())newTree.addTreeNode(node.scopeRef, (_node_parent_scopeRef = (_node_parent = node.parent) === null || _node_parent === void 0 ? void 0 : _node_parent.scopeRef) !== null && _node_parent_scopeRef !== void 0 ? _node_parent_scopeRef : null, node.nodeToRestore);\n return newTree;\n }\n constructor(){\n this.fastMap = new Map();\n this.root = new $9bf71ea28793e738$var$TreeNode({\n scopeRef: null\n });\n this.fastMap.set(null, this.root);\n }\n}\nclass $9bf71ea28793e738$var$TreeNode {\n addChild(node) {\n this.children.add(node);\n node.parent = this;\n }\n removeChild(node) {\n this.children.delete(node);\n node.parent = undefined;\n }\n constructor(props){\n this.children = new Set();\n this.contain = false;\n this.scopeRef = props.scopeRef;\n }\n}\nlet $9bf71ea28793e738$export$d06fae2ee68b101e = new $9bf71ea28793e738$var$Tree();\n\n\nexport {$9bf71ea28793e738$export$20e40289641fbbb6 as FocusScope, $9bf71ea28793e738$export$d06fae2ee68b101e as focusScopeTree, $9bf71ea28793e738$export$10c5169755ce7bd7 as useFocusManager, $9bf71ea28793e738$export$2d6ec8fc375ceafa as getFocusableTreeWalker, $9bf71ea28793e738$export$1258395f99bf9cbf as isElementInChildOfActiveScope, $9bf71ea28793e738$export$c5251b9e124bf29 as createFocusManager};\n//# sourceMappingURL=FocusScope.module.js.map\n","/**\n * Modal 样式(React Aria)\n *\n * 设计目标:\n * - 轻盈、科技、极简阴影(避免厚重“Antd 弹窗”观感)\n * - overlay / dialog / close button 三层明确分工\n */\n\nimport styled from '@emotion/styled'\nimport { keyframes } from '@emotion/react'\n\nconst fadeIn = keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n`\n\nconst dialogIn = keyframes`\n from {\n opacity: 0;\n transform: translateY(6px) scale(0.985);\n }\n to {\n opacity: 1;\n transform: translateY(0px) scale(1);\n }\n`\n\nexport const ModalPortalRoot = styled.div`\n position: fixed;\n inset: 0;\n z-index: ${({ theme }) => theme.components.modal.zIndex.overlay};\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${({ theme }) => theme.global.spacing.xl};\n`\n\nexport const ModalBackdrop = styled.div`\n position: absolute;\n inset: 0;\n background: ${({ theme }) => theme.components.modal.overlay.background};\n backdrop-filter: ${({ theme }) => theme.components.modal.overlay.backdropFilter};\n -webkit-backdrop-filter: ${({ theme }) => theme.components.modal.overlay.backdropFilter};\n animation: ${fadeIn} ${({ theme }) => theme.components.modal.animation.duration} ease forwards;\n`\n\nexport const ModalDialog = styled.div`\n position: relative;\n z-index: ${({ theme }) => theme.components.modal.zIndex.container};\n\n width: ${({ theme }) => theme.components.modal.size.md.width};\n max-width: ${({ theme }) => theme.components.modal.size.md.maxWidth};\n max-height: ${({ theme }) => theme.components.modal.container.maxHeight};\n\n display: flex;\n flex-direction: column;\n overflow: hidden;\n\n background: ${({ theme }) => theme.components.modal.container.background};\n border-radius: ${({ theme }) => theme.components.modal.container.borderRadius};\n border: ${({ theme }) => theme.components.modal.container.border};\n box-shadow: ${({ theme }) => theme.components.modal.container.boxShadow};\n\n animation: ${dialogIn} ${({ theme }) => theme.components.modal.animation.duration}\n ${({ theme }) => theme.components.modal.animation.easing} forwards;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: 2px;\n }\n`\n\nexport const ModalDialogHeader = styled.header`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ${({ theme }) => theme.components.modal.header.gap};\n flex-shrink: 0;\n\n padding: ${({ theme }) => theme.components.modal.size.md.headerPadding};\n min-height: ${({ theme }) => theme.components.modal.header.minHeight};\n\n border-bottom: ${({ theme }) => theme.components.modal.header.borderBottom};\n background: ${({ theme }) => theme.components.modal.header.background};\n`\n\nexport const ModalDialogTitle = styled.h2`\n margin: 0;\n padding: 0;\n min-width: 0;\n flex: 1;\n\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: ${({ theme }) => theme.components.modal.size.md.titleFontSize};\n font-weight: ${({ theme }) => theme.components.modal.title.fontWeight};\n line-height: ${({ theme }) => theme.components.modal.title.lineHeight};\n color: ${({ theme }) => theme.components.modal.title.color};\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const ModalCloseButton = styled.button`\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n outline: none;\n\n width: ${({ theme }) => theme.components.modal.closeButton.size};\n height: ${({ theme }) => theme.components.modal.closeButton.size};\n flex-shrink: 0;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n border-radius: ${({ theme }) => theme.components.modal.closeButton.borderRadius};\n color: ${({ theme }) => theme.components.modal.closeButton.color};\n transition: ${({ theme }) => theme.components.modal.transition};\n\n svg {\n width: ${({ theme }) => theme.components.modal.closeButton.iconSize};\n height: ${({ theme }) => theme.components.modal.closeButton.iconSize};\n display: block;\n }\n\n &:hover {\n color: ${({ theme }) => theme.components.modal.closeButton.hoverColor};\n background: ${({ theme }) => theme.components.modal.closeButton.hoverBackground};\n }\n\n &:active {\n transform: translateY(0.5px);\n opacity: 0.9;\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: 2px;\n }\n`\n\nexport const ModalDialogBody = styled.div`\n flex: 1;\n min-height: 0;\n overflow: auto;\n padding: ${({ theme }) => theme.components.modal.size.md.padding};\n\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: ${({ theme }) => theme.components.modal.content.fontSize};\n line-height: ${({ theme }) => theme.components.modal.content.lineHeight};\n color: ${({ theme }) => theme.components.modal.content.color};\n\n /* 轻量滚动条 */\n &::-webkit-scrollbar {\n width: 6px;\n }\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.semantic.colors.border.strong};\n border-radius: 3px;\n }\n &::-webkit-scrollbar-thumb:hover {\n background: ${({ theme }) => theme.semantic.colors.text.disabled};\n }\n`\n","/**\n * Modal 弹窗组件(React Aria)\n *\n * - 受控:open + onOpenChange(所有关闭路径统一出口)\n * - 基于 react-aria overlays/dialog:焦点管理、ESC、无障碍语义\n * - 支持 portalContainer(微前端 / iframe / shadow dom)\n * - 样式分层:overlay / dialog / close button 分别支持 className 与 style\n */\n\nimport {\n forwardRef,\n useCallback,\n useId,\n useMemo,\n useRef,\n type CSSProperties,\n type ReactNode,\n} from 'react'\n// @ts-ignore - react-dom type issue (workspace tsconfig)\nimport { createPortal } from 'react-dom'\nimport { FocusScope } from '@react-aria/focus'\nimport { mergeProps } from '@react-aria/utils'\nimport { useDialog, useModal, useOverlay, usePreventScroll } from 'react-aria'\nimport {\n ModalBackdrop,\n ModalCloseButton,\n ModalDialog,\n ModalDialogBody,\n ModalDialogHeader,\n ModalDialogTitle,\n ModalPortalRoot,\n} from './Modal.style'\n\nexport type ModalProps = {\n /** 是否展示 Modal */\n open: boolean\n /**\n * open 状态变更回调\n * 所有关闭路径(ESC / 遮罩 / 关闭按钮 / outside)统一出口\n */\n onOpenChange: (open: boolean) => void\n /** 内容(完全自定义) */\n children: ReactNode\n /** 标题(用于默认头部与 aria 标注) */\n title?: ReactNode\n\n /**\n * 是否隐藏默认头部(标题 + 右上角关闭按钮)\n * - true:不渲染默认 Header,你可以在 children 内完全自定义标题区与关闭按钮\n * - false:按默认逻辑渲染(有 title 或可关闭时显示 Header)\n * @default false\n */\n hideHeader?: boolean\n\n /**\n * 是否允许“用户主动关闭”\n * - false:禁用 ESC/遮罩/close button/outside 关闭(只能由外部控制 open)\n * - true:按各关闭开关控制\n * @default true\n */\n isDismissable?: boolean\n\n /** 是否允许 ESC 关闭(在 isDismissable=true 前提下生效)@default true */\n closeOnEsc?: boolean\n /** 是否允许点击遮罩关闭(在 isDismissable=true 前提下生效)@default true */\n closeOnOverlay?: boolean\n /**\n * 是否允许点击外部关闭(在 isDismissable=true 前提下生效)\n * 对应 react-aria shouldCloseOnInteractOutside\n * @default true\n */\n closeOnOutside?: boolean\n /**\n * 外部点击白名单/黑名单\n * 返回 true 表示允许触发关闭\n */\n shouldCloseOnInteractOutside?: (element: Element) => boolean\n\n /** Portal 挂载容器,默认 document.body(SSR 环境下不回退) */\n portalContainer?: Element\n\n /** overlay(遮罩层)样式分层 */\n overlayClassName?: string\n overlayStyle?: CSSProperties\n\n /** dialog(弹层容器)样式分层 */\n dialogClassName?: string\n dialogStyle?: CSSProperties\n\n /** close button 样式分层 */\n closeButtonClassName?: string\n closeButtonStyle?: CSSProperties\n}\n\ntype CloseReason = 'esc' | 'overlay' | 'outside' | 'closeButton' | 'reactAria'\n\nconst DefaultCloseIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n if (!ref) return\n if (typeof ref === 'function') {\n ref(value)\n return\n }\n try {\n ;(ref as { current: T | null }).current = value\n } catch {\n // ignore\n }\n}\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n open,\n onOpenChange,\n children,\n title,\n hideHeader = false,\n isDismissable = true,\n closeOnEsc = true,\n closeOnOverlay = true,\n closeOnOutside = true,\n shouldCloseOnInteractOutside,\n portalContainer,\n overlayClassName,\n overlayStyle,\n dialogClassName,\n dialogStyle,\n closeButtonClassName,\n closeButtonStyle,\n },\n forwardedRef,\n ) => {\n // SSR-safe:服务端不渲染(避免触发 react-aria 访问 document/window)\n if (typeof document === 'undefined') return null\n\n const internalRef = useRef<HTMLDivElement>(null)\n const dialogRef = internalRef\n\n const titleId = useId()\n\n const requestClose = useCallback(\n (_reason: CloseReason) => {\n onOpenChange(false)\n },\n [onOpenChange],\n )\n\n const mountContainer = useMemo(() => {\n if (portalContainer) return portalContainer\n return document.body\n }, [portalContainer])\n\n // 禁止背景滚动\n usePreventScroll({ isDisabled: !open })\n\n const allowUserDismiss = isDismissable === true\n const allowEsc = allowUserDismiss && closeOnEsc\n const allowOutside = allowUserDismiss && closeOnOutside\n\n const { overlayProps, underlayProps } = useOverlay(\n {\n isOpen: open,\n onClose: () => requestClose('reactAria'),\n // ESC\n isKeyboardDismissDisabled: !allowEsc,\n // outside(非遮罩点击,更多用于 shadow dom / 非全屏场景)\n isDismissable: allowOutside,\n shouldCloseOnInteractOutside: allowOutside\n ? shouldCloseOnInteractOutside\n : () => false,\n },\n dialogRef,\n )\n\n const { modalProps } = useModal()\n\n const { dialogProps, titleProps } = useDialog(\n {\n // 无障碍兜底:\n // - 默认:有 title 则 aria-labelledby 绑定到可见标题\n // - hideHeader=true 时:标题不可见,避免 aria-labelledby 指向不存在节点;此时尽量用 aria-label 承载可访问名称\n 'aria-label':\n hideHeader && title\n ? typeof title === 'string'\n ? title\n : 'Modal'\n : title\n ? undefined\n : 'Modal',\n 'aria-labelledby': !hideHeader && title ? titleId : undefined,\n },\n dialogRef,\n )\n\n const handleCloseButton = useCallback(() => {\n if (!allowUserDismiss) return\n requestClose('closeButton')\n }, [allowUserDismiss, requestClose])\n\n const mergedDialogProps = mergeProps(overlayProps, dialogProps, modalProps, {\n ref: (node: HTMLDivElement | null) => {\n dialogRef.current = node\n setRef(forwardedRef, node)\n },\n className: dialogClassName,\n style: dialogStyle,\n 'data-open': 'true',\n })\n\n // 处理遮罩关闭逻辑:\n // 如果 closeOnOverlay 为 true,直接使用 react-aria 的 underlayProps(包含 pointer down dismiss)\n // 如果 closeOnOverlay 为 false,我们屏蔽掉 underlayProps 的交互事件\n const backdropProps = useMemo(() => {\n const { onPointerDown, onMouseDown, ...rest } = underlayProps\n return closeOnOverlay ? underlayProps : rest\n }, [underlayProps, closeOnOverlay])\n\n const content = (\n <ModalPortalRoot>\n <ModalBackdrop\n {...mergeProps(backdropProps, {\n className: overlayClassName,\n style: overlayStyle,\n 'data-open': 'true',\n })}\n />\n <FocusScope contain restoreFocus autoFocus>\n <ModalDialog {...mergedDialogProps}>\n {!hideHeader && (title || allowUserDismiss) && (\n <ModalDialogHeader>\n {title ? (\n <ModalDialogTitle {...titleProps} id={titleId}>\n {title}\n </ModalDialogTitle>\n ) : (\n <span />\n )}\n {allowUserDismiss ? (\n <ModalCloseButton\n type=\"button\"\n onClick={handleCloseButton}\n className={closeButtonClassName}\n style={closeButtonStyle}\n aria-label=\"关闭\"\n >\n <DefaultCloseIcon />\n </ModalCloseButton>\n ) : null}\n </ModalDialogHeader>\n )}\n <ModalDialogBody>{children}</ModalDialogBody>\n </ModalDialog>\n </FocusScope>\n </ModalPortalRoot>\n )\n\n // open=false 时不渲染(第一版不做退场动画,保持 API 简洁)\n if (!open || !mountContainer) return null\n return createPortal(content, mountContainer)\n },\n)\n\nModal.displayName = 'Modal'\n\n","import styled from '@emotion/styled'\n// 提取公共禁用样式函数\nconst getDisabledStyles = (theme: any) => ({\n cursor: 'not-allowed',\n backgroundColor: theme.components.numberfield?.background?.disabled ?? '#f5f5f5',\n color: theme.components.numberfield?.text?.disabled ?? '#9aa0a6',\n opacity: 0.6\n})\n\nexport const NumberRoot = styled.div`\n display: inline-flex;\n flex-direction: column;\n`\n\nexport const Label = styled.label`\n margin-bottom: 6px;\n font-size: 12px;\n`\n\n// 修改NumberGroup组件的类型定义,添加controls属性\n export const NumberGroup = styled.div<{ \n size?: 'md' | 'lg'; \n disabled?: boolean;\n controls?: 'buttons' | 'arrows' // 添加controls属性\n }>`\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n text-align: center;\n gap: ${({ theme }) => theme.components.numberfield?.control?.side?.gap ?? '8px'};\n padding: ${({ theme }) => theme.components.numberfield?.control?.side?.inset};\n border: 1px solid ${({ theme }) => theme.components.numberfield?.border?.default ?? '#d9d9d9'};\n border-radius: ${({ theme }) => theme.components.numberfield?.borderRadius ?? '4px'};\n color: ${({ theme }) => theme.components.numberfield?.text?.default ?? '#0A1833'};\n background: ${({ disabled, theme }) => disabled ? theme.components.numberfield?.background?.disabled : theme.components.numberfield?.background?.default};\n height: ${({ theme, size }) => \n size === 'md' \n ? theme.components.numberfield?.size?.md?.height ?? '24px' \n : theme.components.numberfield?.size?.lg?.height ?? '32px'};\n font-size: ${({ theme, size }) => \n size === 'md' \n ? theme.components.numberfield?.size?.md?.fontSize ?? '12px' \n : theme.components.numberfield?.size?.lg?.fontSize ?? '14px'};\n \n // 优化宽度设置逻辑:先判断控件类型,再根据size设置不同宽度\n width: ${({ controls, size, theme }) => {\n // 先判断是buttons还是arrows类型\n if (controls === 'arrows') {\n // 箭头类型根据size设置不同宽度\n return size === 'md' ? theme.components.numberfield?.control?.arrows?.widthsm : theme.components.numberfield?.control?.arrows?.widthLg;\n }\n // 按钮类型根据size设置不同宽度(默认)\n return size === 'md' ? theme.components.numberfield?.control?.side?.widthsm : theme.components.numberfield?.control?.side?.widthLg;\n }};\n \n // 状态样式\n &:disabled,\n &[data-disabled=\"true\"] {\n ${({ theme }) => getDisabledStyles(theme)}\n opacity: 0.8;\n // 强制所有子元素不响应事件\n * {\n pointer-events: none !important;\n }\n }\n &:not(:disabled):not([data-disabled=\"true\"]):hover {\n border-color: ${({ theme }) => theme.components.numberfield?.border?.hover};\n button:not(:disabled):not(:hover) {\n background: ${({ theme }) => theme.components.numberfield?.background.hover};\n color: ${({ theme }) => theme.components.numberfield?.text?.default};\n }\n }\n \n // 禁用状态保持原有边框颜色\n &:disabled,\n &[data-disabled=\"true\"] {\n border-color: ${({ theme }) => theme.components.numberfield?.border?.default ?? '#d9d9d9'} !important;\n }\n }\n `\n\n// NumberField 简化后的样式\nexport const NumberField = styled.input`\n text-align: center;\n border:none;\n outline: none;\n width: ${({ theme }) => theme.components.numberfield?.input?.width ?? '40px'};\n height: ${({ theme }) => theme.components.numberfield?.input?.height ?? '18px'};\n font-size: ${({ theme }) => theme.components.numberfield?.input?.fontSize ?? '12px'};\n font-weight: ${({ theme }) => theme.components.numberfield?.input?.fontWeight ?? 400};\n line-height: ${({ theme }) => theme.components.numberfield?.input?.lineHeight ?? '18px'};\n font-family: ${({ theme }) => theme.components.numberfield?.input?.fontFamily ?? 'sans-serif'};\n \n // 移除默认箭头\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n -moz-appearance: textfield;\n appearance: textfield;\n\n // 状态样式\n &:disabled,\n &[data-disabled=\"true\"] {\n ${({ theme }) => getDisabledStyles(theme)}\n }\n \n`\nexport const Description = styled.div`\n margin-top: 6px;\n font-size: 12px;\n color: ${({ theme }) => theme.components.numberfield?.text?.placeholder ?? '#6b6b6b'};\n`\n/** 竖直箭头控件(展示在输入右侧) */\nexport const ArrowGroup = styled.div`\n display: inline-flex;\n flex-direction: column; \n gap: 1px;\n`\n\n// 在文件末尾添加ArrowButton组件\nexport const ArrowButton = styled.button<{ direction: 'up' | 'down'; size?: 'md' | 'lg' ;disabled?: boolean}>`\n background: transparent;\n border: none;\n border-radius: ${({ direction }) => direction === 'up' ? '4px 4px 0 0' : '0 0 4px 4px'};\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ theme, size }) => {\n const heightValue = size === 'md' \n ? theme.components.numberfield?.control?.arrows?.buttonSizeSm \n : theme.components.numberfield?.control?.arrows?.buttonSizeLg;\n return `calc(${heightValue} * 2)`;\n}};\n height: ${({ theme, size }) => {\n const heightValue = size === 'md' \n ? theme.components.numberfield?.control?.arrows?.buttonSizeSm \n : theme.components.numberfield?.control?.arrows?.buttonSizeLg;\n return heightValue;\n}};\n color: ${({ theme }) => theme.components.numberfield?.border.default ?? '#0A1833'};\n cursor: pointer;\n // 使用主题中numberfield定义的transition参数\n transition: background-color ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'}, \n color ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'}, \n transform ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'};\n \n &:disabled,\n &[data-disabled=\"true\"] {\n ${({ theme }) => getDisabledStyles(theme)}\n transition: none; // 禁用状态不使用过渡\n }\n \n &:not(:disabled):hover:not([data-disabled=\"true\"]) {\n background-color: ${({ theme }) => theme.components.numberfield?.border?.default};\n color: ${({ theme }) => theme.components.numberfield?.border?.hover ?? '#1890ff'};\n }\n \n // 添加点击效果:点击变大一点再变回来\n &:not(:disabled):active:not([data-disabled=\"true\"]) {\n animation: clickScale ${({ theme }) => theme.components.numberfield?.transition?.replace('0.2s', '0.3s') || '0.3s ease'};\n }\n \n // 定义点击缩放动画\n @keyframes clickScale {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.1); }\n 100% { transform: scale(1); }\n }\n`\n\n// 在SideButton组件中添加hover状态以控制背景颜色\nexport const SideButton = styled.button<{ pos?: 'left' | 'right'; size?: 'md' | 'lg' }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ${({ theme, size }) =>\n size === 'md'\n ? theme.components.numberfield?.control?.side?.buttonSizeSm \n : theme.components.numberfield?.control?.side?.buttonSizeLg };\n height: ${({ theme, size }) =>\n size === 'md'\n ? theme.components.numberfield?.control?.side?.buttonSizeSm \n : theme.components.numberfield?.control?.side?.buttonSizeLg };\n background: transparent;\n color: ${({ theme }) => theme.components.numberfield?.border.default ?? '#d9d9d9'};\n border: none;\n cursor: pointer;\n border-radius: 6px; \n padding: 2px;\n // 使用主题中numberfield定义的transition参数\n transition: background-color ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'}, \n color ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'}, \n transform ${({ theme }) => theme.components.numberfield?.transition || '0.2s ease'};\n \n &:disabled,\n &[data-disabled=\"true\"] {\n ${({ theme }) => getDisabledStyles(theme)}\n transition: none; // 禁用状态不使用过渡\n }\n \n // 添加hover状态控制背景颜色和图标颜色\n &:not(:disabled):hover:not([data-disabled=\"true\"]) {\n background-color: ${({ theme }) => theme.components.numberfield?.border.default};\n color: ${({ theme }) => theme.components.numberfield?.border?.hover ?? '#1890ff'};\n }\n \n // 添加点击效果:点击变大一点再变回来\n &:not(:disabled):active:not([data-disabled=\"true\"]) {\n animation: clickScale ${({ theme }) => theme.components.numberfield?.transition?.replace('0.2s', '0.3s') || '0.3s ease'};\n }\n \n // 定义点击缩放动画\n @keyframes clickScale {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.1); }\n 100% { transform: scale(1); }\n }\n`","/**\n * 数字输入框组件\n * \n * 基于 react-aria 实现无障碍访问的数字输入框组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * <NumberInput\n * size=\"md\"\n * defaultValue={10}\n * min={0}\n * max={100}\n * step={1}\n * label=\"数量\"\n * description=\"请输入数量\"\n * controls=\"buttons\"\n * onValueChange={(v) => console.log(v)}\n * />\n * ```\n */\n\nimport {\n forwardRef,\n useRef,\n useState,\n useEffect,\n type ReactNode,\n type ChangeEvent,\n type KeyboardEvent,\n} from 'react'\nimport {\n\tNumberRoot,\n\tNumberGroup,\n\tNumberField,\n\tLabel,\n\tDescription,\n\tArrowGroup,\n\tSideButton,\n\tArrowButton\n} from './NumberInput.style'\nimport { PlusOutline, ChevronUpOutline, ChevronDownOutline, MinusOutline } from '@kingsoft-ai/icons'\nexport type NumberInputProps = {\n\t/** 初始数值(受控请使用 value) */\n\tdefaultValue?: number\n\t/** 受控数值 */\n\tvalue?: number\n\t/** 最小值 */\n\tmin?: number\n\t/** 最大值 */\n\tmax?: number\n\t/** 步长 */\n\tstep?: number\n\t/** 控件样式:'buttons' - 左右 加/减 按钮;'arrows' - 右侧竖直箭头 */\n\tcontrols?: 'buttons' | 'arrows'\n\t/** 大小:'md' | 'lg' */\n\tsize?: 'md' | 'lg'\n\t/** \n\t * 值变化回调(统一 API,推荐使用)\n\t * 等同于其他表单组件的 onChange,返回 number | undefined \n\t */\n\tonValueChange?: (value: number | undefined) => void\n\t/**\n\t * 值变化回调别名(统一 API)\n\t * 与 onValueChange 功能相同,提供与其他表单组件一致的 API 命名\n\t */\n\tonChangeValue?: (value: number | undefined) => void\n\t/** 标签文本 */\n\tlabel?: ReactNode\n\t/** 描述文本 */\n\tdescription?: ReactNode\n\t/** 是否显示错误状态 */\n\terror?: boolean\n\t/** 错误提示文本 */\n\terrorMessage?: ReactNode\n\t/** 是否禁用 */\n\tdisabled?: boolean\n\t/** 自定义类名 */\n\tclassName?: string\n\t/** 自定义 ID */\n\tid?: string\n\t/** 原生 input onChange 事件(用于表单库等场景) */\n\tonChange?: (e: ChangeEvent<HTMLInputElement>) => void\n}\n/** 加图标 */\nconst PlusIcon = PlusOutline\n/** 减图标 */\nconst MinusIcon = MinusOutline\n/** 上箭头图标 */\nconst UpIcon = ChevronUpOutline\n/** 下箭头图标 */\nconst DownIcon = ChevronDownOutline\n/** 数字输入框组件 */\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n\t(\n\t\t\t{\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep = 1,\n\t\t\tvalue,\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\tonValueChange,\n\t\t\tonChangeValue,\n\t\t\tdisabled,\n\t\t\tclassName,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\terror = false,\n\t\t\tid,\n\t\t\tcontrols = 'buttons',\n\t\t\tsize = 'md',\n\t\t\t...rest\n\t\t},\n\t\tforwardedRef,\n\t) => {\n\t\tconst innerRef = useRef<HTMLInputElement | null>(null)\n\t\t// 同步 forwardedRef 到内部 ref(支持 object ref 与回调 ref)\n\t\tuseEffect(() => {\n\t\t\tif (!forwardedRef) return\n\t\t\tif (typeof forwardedRef === 'function') {\n\t\t\t\tforwardedRef(innerRef.current)\n\t\t\t} else {\n\t\t\t\t;(forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = innerRef.current\n\t\t\t}\n\t\t}, [forwardedRef])\n\t\tconst isControlled = value !== undefined\n\t\tconst [internal, setInternal] = useState<number | undefined>(defaultValue)\n\t\tconst currentValue = isControlled ? value : internal\n\t\t// clamp 工具\n\t\tconst clamp = (v: number) => {\n\t\t\tlet next = v\n\t\t\tif (min !== undefined) next = Math.max(next, min)\n\t\t\tif (max !== undefined) next = Math.min(next, max)\n\t\t\treturn next\n\t\t}\n\t\t// 统一触发值变化回调\n\t\tconst triggerValueChange = (v: number | undefined) => {\n\t\t\tonValueChange?.(v)\n\t\t\tonChangeValue?.(v)\n\t\t}\n\n\t\tconst setValue = (v: number | undefined) => {\n\t\t\tif (!isControlled) setInternal(v)\n\t\t\t// 更新原生 input 的 value 并触发 input 事件,兼容外部监听\n\t\t\tif (innerRef.current) {\n\t\t\t\tconst nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')?.set\n\t\t\t\tnativeSetter?.call(innerRef.current, v === undefined ? '' : String(v))\n\t\t\t\tconst ev = new Event('input', { bubbles: true })\n\t\t\t\tObject.defineProperty(ev, 'target', { writable: false, value: innerRef.current })\n\t\t\t\t// 触发原生 onChange 回调(如果有人依赖)\n\t\t\t\tonChange?.(ev as unknown as ChangeEvent<HTMLInputElement>)\n\t\t\t}\n\t\t\ttriggerValueChange(v)\n\t\t}\n\t\t// 修改handleInputChange函数\n\t\tconst handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\t const raw = e.target.value\n\t\t // 当输入为空时,使用min或0作为默认值,而不是undefined\n\t\t const parsed = raw === '' ? (min !== undefined ? min : 0) : Number(raw)\n\t\t const final = Number.isNaN(parsed) ? (min !== undefined ? min : 0) : clamp(parsed)\n\t\t if (!isControlled) setInternal(final)\n\t\t triggerValueChange(final)\n\t\t onChange?.(e)\n\t\t}\n\n\t\tconst increment = () => {\n\t\t\tconst base = currentValue ?? 0\n\t\t\tconst next = clamp(base + (step ?? 1))\n\t\t\tsetValue(next)\n\t\t}\n\n\t\tconst decrement = () => {\n\t\t\tconst base = currentValue ?? 0\n\t\t\tconst next = clamp(base - (step ?? 1))\n\t\t\tsetValue(next)\n\t\t}\n\t\tconst handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n\t\t\tif (e.key === 'ArrowUp') {\n\t\t\t\te.preventDefault()\n\t\t\t\tincrement()\n\t\t\t} else if (e.key === 'ArrowDown') {\n\t\t\t\te.preventDefault()\n\t\t\t\tdecrement()\n\t\t\t}\n\t\t}\n\n\t\tconst inputId = id || `number-${Math.random().toString(36).slice(2, 9)}`\n\n\t\tconst atMin = currentValue !== undefined && min !== undefined && currentValue <= min\n\t\tconst atMax = currentValue !== undefined && max !== undefined && currentValue >= max\n\n\t\treturn (\n\t\t\t<NumberRoot className={className}>\n\t\t\t\t{label && (\n\t\t\t\t\t<Label htmlFor={inputId} aria-hidden={false}>\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Label>\n\t\t\t\t)}\n\t\t\t\t<NumberGroup className={`controls-${controls} size-${size}`} size={size} disabled={disabled} controls={controls}>\n\t\t\t\t\t{controls === 'buttons' && (\n\t\t\t\t\t\t<SideButton\n\t\t\t\t\t\tclassName=\"btn-decrement\"\n\t\t\t\t\t\tpos=\"left\"\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={decrement}\n\t\t\t\t\t\tdisabled={disabled || atMin}\n\t\t\t\t\t>\n\t\t\t\t\t\t<MinusIcon size={size === 'lg' ? 12 : 8.571} />\n\t\t\t\t\t</SideButton>\n\t\t\t\t\t)}\n\t\t\t\t\t<NumberField\n\t\t\t\t\t\t{...(rest as any)}\n\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\tref={innerRef}\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tvalue={currentValue === undefined ? '' : String(currentValue)}\n\t\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-invalid={error}\n\t\t\t\t\t\taria-describedby={description ? `${inputId}-desc` : undefined}\n\t\t\t\t\t\tclassName={controls === 'buttons' ? 'with-side-controls' : undefined}\n\t\t\t\t\t\tdata-size={size}\n\t\t\t\t\t/>\n\t\t\t\t\t{controls === 'buttons' && (\n\t\t\t\t\t\t<SideButton\n\t\t\t\t\t\tclassName=\"btn-increment\"\n\t\t\t\t\t\tpos=\"right\"\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={increment}\n\t\t\t\t\t\tdisabled={disabled || atMax}\n\t\t\t\t\t>\n\t\t\t\t\t\t<PlusIcon size={size === 'lg' ? 12 : 8.571} />\n\t\t\t\t\t</SideButton>\n\t\t\t\t\t)}\n\t\t\t\t\t{controls === 'arrows' && (\n\t\t\t\t\t\t<ArrowGroup className=\"arrow-group\" >\n\t\t\t\t\t\t\t<ArrowButton\n\t\t\t direction=\"up\"\n\t\t\t type=\"button\"\n\t\t\t size={size}\n\t\t\t onClick={increment}\n\t\t\t disabled={disabled || atMax}\n\t\t\t className=\"arrow-up\"\n\t\t >\n\t\t\t <UpIcon />\n\t\t </ArrowButton>\n\t\t <ArrowButton\n\t\t\t direction=\"down\"\n\t\t\t type=\"button\"\n\t\t\t aria-label=\"减小\"\n\t\t\t title=\"减小\"\n\t\t\t size={size}\n\t\t\t onClick={decrement}\n\t\t\t disabled={disabled || atMin}\n\t\t\t className=\"arrow-down\"\n\t\t >\n\t\t\t <DownIcon />\n\t\t </ArrowButton>\n\t\t\t\t\t\t</ArrowGroup>\n\t\t\t\t\t)}\n\t\t\t\t</NumberGroup>\n\t\t\t\t{description && <Description id={`${inputId}-desc`}>{description}</Description>}\n\t\t\t</NumberRoot>\n\t\t)\n\t},\n)\nNumberInput.displayName = 'NumberInput'\nexport default NumberInput","import styled from '@emotion/styled'\n\nexport const RadioWrapper = styled('label', {\n shouldForwardProp: (prop) => prop !== 'disabled',\n})<{ disabled: boolean }>(({ theme, disabled }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.components.radio.gap,\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? theme.components.radio.disabled.opacity : 1,\n transition: `opacity ${theme.components.radio.transition}`,\n}))\n\nexport const RadioRoot = styled('span', {\n shouldForwardProp: (prop) => prop !== 'disabled',\n})<{ disabled?: boolean }>(({ theme, disabled }) => ({\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: theme.components.radio.control.size,\n height: theme.components.radio.control.size,\n borderRadius: theme.components.radio.control.borderRadius,\n borderWidth: theme.components.radio.control.borderWidth,\n borderStyle: 'solid',\n borderColor: disabled\n ? theme.components.radio.control.borderColor.disabled\n : theme.components.radio.control.borderColor.default,\n background: theme.components.radio.control.background,\n transition: `border-color ${theme.components.radio.transition}, box-shadow ${theme.components.radio.transition}, transform ${theme.components.radio.transition}`,\n flexShrink: 0,\n}))\n\nexport const RadioNative = styled('input')(({ theme }) => ({\n position: 'absolute',\n inset: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n opacity: 0,\n cursor: 'inherit',\n '&:focus-visible + span': {\n boxShadow: theme.components.radio.focusRing,\n },\n '&:hover:not(:disabled) + span': {\n borderColor: theme.components.radio.control.borderColor.hover,\n transform: 'translateY(-0.5px)',\n },\n '&:checked + span': {\n borderColor: theme.components.radio.control.borderColor.checked,\n },\n '&:checked + span::after': {\n transform: 'translate(-50%, -50%) scale(1)',\n opacity: 1,\n },\n '&:disabled + span': {\n borderColor: theme.components.radio.control.borderColor.disabled,\n },\n '&:disabled + span::after': {\n background: theme.components.radio.control.indicator.disabled,\n },\n}))\n\nexport const RadioIndicator = styled('span')(({ theme }) => ({\n position: 'relative',\n inset: 0,\n width: '100%',\n height: '100%',\n borderRadius: 'inherit',\n boxShadow: 'none',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: theme.components.radio.control.indicator.size,\n height: theme.components.radio.control.indicator.size,\n background: theme.components.radio.control.indicator.color,\n borderRadius: 'inherit',\n transform: 'translate(-50%, -50%) scale(0.35)',\n opacity: 0,\n transition: `transform ${theme.components.radio.transition}, opacity ${theme.components.radio.transition}`,\n },\n}))\n\nexport const RadioText = styled('span')({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.25rem',\n minWidth: 0,\n})\n\nexport const RadioLabel = styled('span', {\n shouldForwardProp: (prop) => prop !== 'disabled',\n})<{ disabled: boolean }>(({ theme, disabled }) => ({\n fontSize: theme.components.radio.text.label.fontSize,\n fontWeight: theme.components.radio.text.label.fontWeight,\n color: disabled ? theme.components.radio.text.label.disabled : theme.components.radio.text.label.color,\n lineHeight: 1.5,\n transition: `color ${theme.components.radio.transition}`,\n}))\n\nexport const RadioDescription = styled('span', {\n shouldForwardProp: (prop) => prop !== 'disabled',\n})<{ disabled: boolean }>(({ theme, disabled }) => ({\n margin: 0,\n color: disabled\n ? theme.components.radio.text.description.disabled\n : theme.components.radio.text.description.color,\n fontSize: theme.components.radio.text.description.fontSize,\n lineHeight: 1.4,\n transition: `color ${theme.components.radio.transition}`,\n}))\n\n","import { forwardRef } from 'react'\nimport type { InputHTMLAttributes, ReactNode } from 'react'\nimport {\n RadioDescription,\n RadioIndicator,\n RadioLabel,\n RadioNative,\n RadioRoot,\n RadioText,\n RadioWrapper,\n} from './Radio.style'\n\nexport type RadioProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & {\n label?: ReactNode\n description?: ReactNode\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n ({ label, description, className, ...inputProps }, ref) => {\n const isDisabled = Boolean(inputProps.disabled)\n\n return (\n <RadioWrapper disabled={isDisabled} className={className} data-disabled={isDisabled ? 'true' : undefined}>\n <RadioRoot disabled={isDisabled}>\n <RadioNative ref={ref} type=\"radio\" disabled={isDisabled} {...inputProps} />\n <RadioIndicator aria-hidden />\n </RadioRoot>\n {(label || description) && (\n <RadioText>\n {label ? <RadioLabel disabled={isDisabled}>{label}</RadioLabel> : null}\n {description ? <RadioDescription disabled={isDisabled}>{description}</RadioDescription> : null}\n </RadioText>\n )}\n </RadioWrapper>\n )\n },\n)\n\nRadio.displayName = 'Radio'\n\n","import styled from '@emotion/styled'\nimport { css, keyframes } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\nexport const skeletonVariants = ['rect', 'text', 'circle'] as const\nexport type SkeletonVariant = (typeof skeletonVariants)[number]\n\nexport const skeletonRadii = ['sm', 'md', 'lg', 'pill'] as const\nexport type SkeletonRadius = (typeof skeletonRadii)[number]\n\ntype SkeletonRootProps = {\n $variant: SkeletonVariant\n $animate: boolean\n $radius: SkeletonRadius\n $width?: string\n $height?: string\n}\n\ntype SkeletonLineProps = {\n $animate: boolean\n $isLast: boolean\n $customWidth?: string\n}\n\ntype SkeletonStackProps = {\n $width?: string\n}\n\nconst shimmerKeyframes = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(100%);\n }\n`\n\nconst shimmerMixin = ({ theme }: { theme: AppTheme }) => css`\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(\n 90deg,\n transparent 0%,\n ${theme.components.skeleton.background.highlight} 50%,\n transparent 100%\n );\n animation: ${shimmerKeyframes} ${theme.components.skeleton.animation.duration}\n ${theme.components.skeleton.animation.easing} infinite;\n transform: translateX(-100%);\n }\n\n @media (prefers-reduced-motion: reduce) {\n &::after {\n animation-duration: 0.01ms;\n animation-iteration-count: 1;\n transform: translateX(-50%);\n }\n }\n`\n\nexport const SkeletonRoot = styled.div<SkeletonRootProps>`\n position: relative;\n overflow: hidden;\n display: block;\n background: ${({ theme }) => theme.components.skeleton.background.base};\n border-radius: ${({ theme, $variant, $radius }) =>\n $variant === 'circle' ? theme.components.skeleton.radius.circle : theme.components.skeleton.radius[$radius]};\n width: ${({ $variant, $width, theme }) => {\n if ($variant === 'circle') {\n return $width ?? theme.components.skeleton.circle.size\n }\n\n return $width ?? '100%'\n }};\n height: ${({ $variant, $height, theme }) => {\n if ($variant === 'circle') {\n return $height ?? theme.components.skeleton.circle.size\n }\n\n if ($variant === 'text') {\n return $height ?? theme.components.skeleton.text.lineHeight\n }\n\n return $height ?? theme.components.skeleton.block.height\n }};\n\n ${({ $animate, theme }) =>\n $animate &&\n css`\n ${shimmerMixin({ theme })}\n `}\n`\n\nexport const SkeletonStack = styled.div<SkeletonStackProps>`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.skeleton.text.gap};\n width: ${({ $width }) => $width ?? '100%'};\n`\n\nexport const SkeletonLine = styled.span<SkeletonLineProps>`\n position: relative;\n overflow: hidden;\n display: block;\n background: ${({ theme }) => theme.components.skeleton.background.base};\n height: ${({ theme }) => theme.components.skeleton.text.lineHeight};\n border-radius: ${({ theme }) => theme.components.skeleton.radius.pill};\n width: ${({ $customWidth, $isLast, theme }) =>\n $customWidth ?? ($isLast ? theme.components.skeleton.text.lastLineWidth : '100%')};\n\n ${({ $animate, theme }) =>\n $animate &&\n css`\n ${shimmerMixin({ theme })}\n `}\n`\n\n","import { forwardRef } from 'react'\nimport type { HTMLAttributes, ReactNode } from 'react'\nimport {\n SkeletonRoot,\n SkeletonLine,\n SkeletonStack,\n skeletonVariants,\n skeletonRadii,\n type SkeletonVariant,\n type SkeletonRadius,\n} from './Skeleton.style'\n\nconst toCssSize = (value?: number | string) => {\n if (value === undefined) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n /** Skeleton 展示形态 */\n variant?: SkeletonVariant\n /** 自定义宽度,支持 number(px) 或 string */\n width?: number | string\n /** 自定义高度,支持 number(px) 或 string */\n height?: number | string\n /** 文本模式下的行数 */\n lines?: number\n /** 是否展示骨架动画 */\n animate?: boolean\n /** 方形/矩形骨架的圆角尺寸 */\n radius?: SkeletonRadius\n /** 加载完成后展示真实内容 */\n loaded?: boolean\n /** 加载完成后展示的真实内容 */\n children?: ReactNode\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = 'rect',\n width,\n height,\n lines = variant === 'text' ? 3 : 1,\n animate = true,\n radius = 'md',\n loaded = false,\n className,\n children,\n style,\n ...rest\n },\n ref,\n ) => {\n const resolvedWidth = toCssSize(width)\n const resolvedHeight = toCssSize(height)\n const lineCount = Math.max(1, lines)\n const shouldRenderStack = variant === 'text' && lineCount > 1\n\n if (loaded) {\n if (!children) {\n return null\n }\n\n return (\n <div ref={ref} className={className} style={style} {...rest}>\n {children}\n </div>\n )\n }\n\n const accessibilityProps = {\n role: 'status' as const,\n 'aria-live': 'polite' as const,\n 'aria-busy': true,\n }\n\n if (shouldRenderStack) {\n return (\n <SkeletonStack\n ref={ref}\n className={className}\n style={style}\n $width={resolvedWidth}\n data-variant=\"text\"\n {...accessibilityProps}\n {...rest}\n >\n {Array.from({ length: lineCount }).map((_, index) => (\n <SkeletonLine\n key={index}\n $animate={animate}\n $isLast={index === lineCount - 1}\n $customWidth={index === lineCount - 1 ? resolvedWidth : undefined}\n aria-hidden=\"true\"\n />\n ))}\n </SkeletonStack>\n )\n }\n\n return (\n <SkeletonRoot\n ref={ref}\n className={className}\n style={style}\n $variant={variant}\n $animate={animate}\n $radius={radius}\n $width={resolvedWidth}\n $height={resolvedHeight}\n data-variant={variant}\n {...accessibilityProps}\n {...rest}\n />\n )\n },\n)\n\nSkeleton.displayName = 'Skeleton'\n\nexport { skeletonVariants, skeletonRadii }\nexport type { SkeletonVariant, SkeletonRadius }\n\n","import styled from '@emotion/styled'\nimport { css, keyframes } from '@emotion/react'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type StepperOrientation = 'horizontal' | 'vertical'\nexport type StepperLabelPlacement = 'right' | 'bottom'\nexport type StepStatus = 'wait' | 'process' | 'finish' | 'error'\nexport type StepSize = 'md' | 'sm'\nexport type StepperVariant = 'default' | 'dot'\n\nconst dotPulse = keyframes`\n 0% {\n transform: scale(1);\n opacity: 0.6;\n }\n 50% {\n transform: scale(1.6);\n opacity: 0.3;\n }\n 100% {\n transform: scale(1);\n opacity: 0.6;\n }\n`\n\n// ============================================================================\n// Styled Components\n// ============================================================================\n\nexport const StepperRoot = styled.div<{\n orientation: StepperOrientation\n}>`\n display: flex;\n flex-direction: ${({ orientation }) => (orientation === 'vertical' ? 'column' : 'row')};\n width: 100%;\n \n ${({ orientation }) => orientation === 'horizontal' && css`\n align-items: flex-start;\n `}\n`\n\nexport const StepRoot = styled.div<{\n orientation: StepperOrientation\n labelPlacement: StepperLabelPlacement\n status: StepStatus\n isLast: boolean\n flexBasis?: string\n variant: StepperVariant\n}>`\n position: relative;\n display: flex;\n flex: ${({ isLast, orientation }) => (isLast || orientation === 'vertical' ? '0 0 auto' : '1')};\n flex-direction: ${({ orientation, labelPlacement }) => \n orientation === 'horizontal' && labelPlacement === 'bottom' ? 'column' : 'row'};\n align-items: ${({ orientation, labelPlacement }) => \n orientation === 'horizontal' && labelPlacement === 'bottom' ? 'center' : 'flex-start'};\n\n /* Gap between content elements */\n gap: ${({ theme }) => theme.components.stepper.gap};\n`\n\nexport const StepIconContainer = styled.div<{\n status: StepStatus\n size: StepSize\n variant: StepperVariant\n}>`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1; /* To stay above line */\n \n /* Size */\n width: ${({ theme, size, variant }) =>\n variant === 'dot'\n ? theme.components.stepper.dot.size[size]\n : theme.components.stepper.circle.size[size]};\n height: ${({ theme, size, variant }) =>\n variant === 'dot'\n ? theme.components.stepper.dot.size[size]\n : theme.components.stepper.circle.size[size]};\n\n border-radius: 50%;\n border: ${({ variant }) => (variant === 'dot' ? 'none' : '1px solid')};\n transition: all 0.2s ease;\n\n /* Colors based on Status */\n ${({ theme, status, variant }) => {\n const stepper = theme.components.stepper;\n const state = stepper.state[status];\n \n // Default styles (Wait)\n let borderColor = state.color;\n let bgColor = 'transparent';\n let color = state.color;\n\n if (variant === 'dot') {\n if (status === 'wait') {\n bgColor = stepper.line.color.default;\n } else {\n bgColor = state.color;\n }\n color = 'transparent';\n\n return css`\n background-color: ${bgColor};\n color: ${color};\n ${status === 'process'\n ? `\n &::after {\n content: '';\n position: absolute;\n inset: -4px;\n border-radius: 50%;\n background-color: ${stepper.dot.pulseColor};\n animation: ${dotPulse} 1.5s ease-in-out infinite;\n will-change: transform, opacity;\n z-index: -1;\n }\n `\n : ''}\n `;\n } else {\n if (status === 'process') {\n borderColor = state.color;\n bgColor = state.bg;\n color = theme.global.colors.common.white;\n } else if (status === 'finish') {\n borderColor = state.color;\n bgColor = state.bg; \n color = state.color;\n } else if (status === 'error') {\n borderColor = state.color;\n bgColor = state.bg;\n color = state.color;\n } else {\n // Wait\n color = state.color;\n }\n\n return css`\n border-color: ${borderColor};\n background-color: ${bgColor};\n color: ${color};\n ${status === 'process'\n ? `\n &::after {\n content: '';\n position: absolute;\n inset: -4px;\n border-radius: 50%;\n border: 2px solid ${state.color};\n opacity: 0.6;\n animation: ${dotPulse} 1.5s ease-in-out infinite;\n will-change: transform, opacity;\n z-index: -1;\n }\n `\n : ''}\n `;\n }\n }}\n\n /* Text style inside circle */\n font-size: ${({ theme, size }) => theme.components.stepper.circle.fontSize[size]};\n font-weight: 500;\n\n /* Icon size control */\n svg {\n width: ${({ theme, size }) => theme.components.stepper.circle.iconSize[size]};\n height: ${({ theme, size }) => theme.components.stepper.circle.iconSize[size]};\n flex-shrink: 0;\n }\n`\n\nexport const StepContent = styled.div<{\n orientation: StepperOrientation\n labelPlacement: StepperLabelPlacement\n}>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n \n ${({ orientation, labelPlacement }) => \n orientation === 'horizontal' && labelPlacement === 'bottom' && css`\n align-items: center;\n text-align: center;\n padding-top: 4px; /* Space between icon and text */\n `}\n\n ${({ orientation, labelPlacement }) => \n (orientation === 'vertical' || labelPlacement === 'right') && css`\n padding-left: 4px; /* Space between icon and text */\n /* Adjust for vertical alignment with icon center if needed */\n padding-top: 4px; \n `}\n`\n\nexport const StepTitle = styled.div<{\n status: StepStatus\n}>`\n font-size: ${({ theme }) => theme.components.stepper.text.title.fontSize};\n font-weight: ${({ theme }) => theme.components.stepper.text.title.fontWeight};\n line-height: 1.4;\n \n color: ${({ theme, status }) => {\n const titleColors = theme.components.stepper.text.title.color;\n switch (status) {\n case 'process': return titleColors.active;\n case 'finish': return titleColors.default; \n case 'error': return titleColors.error;\n case 'wait': return titleColors.waiting;\n default: return titleColors.default;\n }\n }};\n`\n\nexport const StepDescription = styled.div`\n font-size: ${({ theme }) => theme.components.stepper.text.description.fontSize};\n color: ${({ theme }) => theme.components.stepper.text.description.color};\n line-height: 1.4;\n margin-top: 2px;\n`\n\nexport const StepConnector = styled.div<{\n orientation: StepperOrientation\n labelPlacement: StepperLabelPlacement\n isFinished: boolean\n size: StepSize\n variant: StepperVariant\n}>`\n transition: background-color 0.2s ease;\n \n ${({ orientation, theme, isFinished, size, labelPlacement, variant }) => {\n const iconSizeToken =\n variant === 'dot'\n ? theme.components.stepper.dot.size[size]\n : theme.components.stepper.circle.size[size];\n const iconSizeVal = parseInt(iconSizeToken);\n const topPos = iconSizeVal / 2;\n\n if (orientation === 'horizontal') {\n // Horizontal Connector\n return css`\n flex: 1;\n height: 1px;\n background-color: ${isFinished ? theme.components.stepper.line.color.active : theme.components.stepper.line.color.default};\n margin: 0 ${theme.components.stepper.gap};\n margin-top: ${topPos}px;\n ${labelPlacement === 'bottom' ? 'align-self: flex-start;' : ''}\n `;\n } else {\n // Vertical Connector\n return css`\n width: 1px;\n min-height: 40px;\n flex: 1;\n background-color: ${isFinished ? theme.components.stepper.line.color.active : theme.components.stepper.line.color.default};\n margin-top: 4px;\n `;\n }\n }}\n`\n\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport type { ReactNode } from 'react'\nimport {\n StepperRoot,\n type StepperOrientation,\n type StepperLabelPlacement,\n type StepSize,\n type StepStatus,\n type StepperVariant,\n} from './Stepper.style'\nimport type { StepProps } from './Step'\n\nexport interface StepperProps {\n /** Current active step index (0-indexed) */\n active?: number\n /** Orientation of the stepper */\n orientation?: StepperOrientation\n /** Label placement (only for horizontal orientation) */\n labelPlacement?: StepperLabelPlacement\n /** Size of the stepper */\n size?: StepSize\n /** Visual variant */\n variant?: StepperVariant\n /** Children (Step components) */\n children: ReactNode\n className?: string\n /** Callback when step is clicked */\n onChange?: (index: number) => void\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>((props, ref) => {\n const {\n active = 0,\n orientation = 'horizontal',\n labelPlacement = 'right',\n size = 'md',\n variant = 'default',\n children,\n className,\n onChange,\n ...rest\n } = props\n\n const steps = Children.toArray(children).filter(isValidElement)\n\n return (\n <StepperRoot\n ref={ref}\n orientation={orientation}\n className={className}\n role=\"list\"\n aria-label=\"Progress\"\n {...rest}\n >\n {steps.map((step, index) => {\n const stepProps = step.props as StepProps\n \n // Determine status\n let status: StepStatus = 'wait'\n \n if (stepProps.status) {\n // If step has explicit status, use it (useful for error state or static steppers)\n status = stepProps.status\n } else {\n // Calculate status based on active index\n if (index < active) {\n status = 'finish'\n } else if (index === active) {\n status = 'process'\n } else {\n status = 'wait'\n }\n }\n\n return cloneElement(step, {\n index,\n last: index === steps.length - 1,\n orientation,\n labelPlacement: orientation === 'vertical' ? 'right' : labelPlacement, // Vertical always right (or maybe bottom doesn't make sense)\n size,\n status,\n variant,\n onClick: () => {\n if (onChange && !stepProps.disabled) {\n onChange(index)\n }\n stepProps.onClick?.()\n },\n } as StepProps)\n })}\n </StepperRoot>\n )\n})\n\nStepper.displayName = 'Stepper'\n\n","import { forwardRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { CheckOutline, CloseOutline } from '@kingsoft-ai/icons'\nimport {\n StepRoot,\n StepIconContainer,\n StepContent,\n StepTitle,\n StepDescription,\n StepConnector,\n type StepperOrientation,\n type StepperLabelPlacement,\n type StepStatus,\n type StepSize,\n type StepperVariant,\n} from './Stepper.style'\n\nexport interface StepProps {\n /** Title of the step */\n title?: ReactNode\n /** Description of the step */\n description?: ReactNode\n /** Icon of the step */\n icon?: ReactNode\n /** Status of the step, determined by Stepper if not provided */\n status?: StepStatus\n /** Disable the step */\n disabled?: boolean\n /** Click handler */\n onClick?: () => void\n className?: string\n \n // Internal props passed by Stepper\n index?: number\n orientation?: StepperOrientation\n labelPlacement?: StepperLabelPlacement\n size?: StepSize\n last?: boolean\n variant?: StepperVariant\n}\n\nexport const Step = forwardRef<HTMLDivElement, StepProps>((props, ref) => {\n const {\n title,\n description,\n icon,\n status = 'wait',\n index = 0,\n orientation = 'horizontal',\n labelPlacement = 'right',\n size = 'md',\n last = false,\n variant = 'default',\n className,\n onClick,\n ...rest\n } = props\n\n // Render icon based on status\n const renderIcon = () => {\n if (icon) return icon\n\n switch (status) {\n case 'finish':\n return <CheckOutline />\n case 'error':\n return <CloseOutline />\n default:\n // For process and wait, show number\n return <span>{index + 1}</span>\n }\n }\n\n const resolvedLabelPlacement =\n orientation === 'horizontal' && variant === 'dot' ? 'bottom' : labelPlacement\n\n const shouldRenderIcon = !(variant === 'dot' && !icon)\n const iconContent = shouldRenderIcon ? renderIcon() : null\n\n // Vertical line logic:\n // In vertical mode, the line connects from bottom of current icon to top of next icon.\n // It should be visible if not the last item.\n const showVerticalLine = orientation === 'vertical' && !last\n\n // Horizontal line logic:\n // In horizontal mode, the line connects current step to next step.\n const showHorizontalLine = orientation === 'horizontal' && !last\n\n return (\n <StepRoot\n ref={ref}\n className={className}\n orientation={orientation}\n labelPlacement={resolvedLabelPlacement}\n status={status}\n isLast={last}\n variant={variant}\n onClick={onClick}\n role=\"listitem\"\n aria-current={status === 'process' ? 'step' : undefined}\n {...rest}\n >\n {/* Vertical Mode: Icon column with line below */}\n {orientation === 'vertical' && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', flexShrink: 0, minHeight: last ? 'auto' : '80px' }}>\n <StepIconContainer status={status} size={size} variant={variant}>\n {iconContent}\n </StepIconContainer>\n {showVerticalLine && (\n <StepConnector\n orientation=\"vertical\"\n labelPlacement={resolvedLabelPlacement}\n isFinished={status === 'finish'}\n size={size}\n variant={variant}\n />\n )}\n </div>\n <StepContent orientation={orientation} labelPlacement={resolvedLabelPlacement}>\n <StepTitle status={status}>{title}</StepTitle>\n {description && <StepDescription>{description}</StepDescription>}\n </StepContent>\n </>\n )}\n\n {/* Horizontal Mode */}\n {orientation === 'horizontal' && (\n <>\n {/* Icon and horizontal line for bottom placement */}\n {resolvedLabelPlacement === 'bottom' ? (\n <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', width: '100%' }}>\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', flexShrink: 0 }}>\n <StepIconContainer status={status} size={size} variant={variant}>\n {iconContent}\n </StepIconContainer>\n <StepContent orientation={orientation} labelPlacement={resolvedLabelPlacement}>\n <StepTitle status={status}>{title}</StepTitle>\n {description && <StepDescription>{description}</StepDescription>}\n </StepContent>\n </div>\n {showHorizontalLine && (\n <StepConnector\n orientation=\"horizontal\"\n labelPlacement={resolvedLabelPlacement}\n isFinished={status === 'finish'}\n size={size}\n variant={variant}\n />\n )}\n </div>\n ) : (\n <>\n <StepIconContainer status={status} size={size} variant={variant}>\n {iconContent}\n </StepIconContainer>\n <StepContent orientation={orientation} labelPlacement={resolvedLabelPlacement}>\n <StepTitle status={status}>{title}</StepTitle>\n {description && <StepDescription>{description}</StepDescription>}\n </StepContent>\n {showHorizontalLine && (\n <StepConnector\n orientation=\"horizontal\"\n labelPlacement={resolvedLabelPlacement}\n isFinished={status === 'finish'}\n size={size}\n variant={variant}\n />\n )}\n </>\n )}\n </>\n )}\n </StepRoot>\n )\n})\n\nStep.displayName = 'Step'\n\n","/**\n * Progress 进度条样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const progressTypes = ['line', 'circle'] as const\nexport const progressSizes = ['sm', 'md', 'lg'] as const\nexport const progressStatuses = ['normal', 'error', 'warning', 'success'] as const\n\nexport type ProgressType = (typeof progressTypes)[number]\nexport type ProgressSize = (typeof progressSizes)[number]\nexport type ProgressStatus = (typeof progressStatuses)[number]\n\n// ============================================================================\n// 状态颜色映射\n// ============================================================================\n\nconst getStatusColor = (status: ProgressStatus, theme: AppTheme): string => {\n const colorMap = {\n normal: theme.semantic.colors.brand.primary, // 蓝色\n error: theme.semantic.colors.state.danger, // 红色\n warning: theme.semantic.colors.state.warning, // 橙色\n success: theme.semantic.colors.state.success, // 绿色\n }\n return colorMap[status]\n}\n\n// ============================================================================\n// 线型进度条样式\n// ============================================================================\n\n/**\n * 线型进度条容器\n */\nexport const LineProgressRoot = styled.div<{\n size: ProgressSize\n}>`\n display: flex;\n align-items: center;\n gap: 16px;\n width: 100%;\n`\n\n/**\n * 线型进度条轨道\n */\nexport const LineProgressTrack = styled.div<{\n size: ProgressSize\n}>`\n position: relative;\n flex: 1;\n background: ${({ theme }) => theme.semantic.colors.background.secondary};\n border-radius: 5px;\n overflow: hidden;\n \n ${({ size }) => {\n if (size === 'sm') {\n return css`\n height: 6px;\n `\n }\n // md 和 lg 都是 8px\n return css`\n height: 8px;\n `\n }}\n`\n\n/**\n * 线型进度条填充\n */\nexport const LineProgressBar = styled.div<{\n status: ProgressStatus\n percent: number\n}>`\n height: 100%;\n width: ${({ percent }) => percent}%;\n background: ${({ status, theme }) => getStatusColor(status, theme)};\n border-radius: 5px;\n transition: width 0.3s ease, background 0.3s ease;\n`\n\n/**\n * 进度百分比文字\n */\nexport const ProgressText = styled.span`\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 12px;\n line-height: 18px;\n color: ${({ theme }) => theme.semantic.colors.text.secondary};\n white-space: nowrap;\n flex-shrink: 0;\n`\n\n/**\n * 状态图标容器\n */\nexport const StatusIcon = styled.span<{\n status: ProgressStatus\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: ${({ status, theme }) => getStatusColor(status, theme)};\n \n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n/**\n * 线型进度条信息区域(百分比+图标)\n */\nexport const LineProgressInfo = styled.div`\n display: flex;\n align-items: center;\n gap: 10px;\n flex-shrink: 0;\n`\n\n// ============================================================================\n// 环形进度条样式\n// ============================================================================\n\n/**\n * 环形进度条容器\n */\nexport const CircleProgressRoot = styled.div<{\n size: ProgressSize\n}>`\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n \n ${({ size }) => {\n if (size === 'sm') {\n return css`\n width: 24px;\n height: 24px;\n `\n }\n if (size === 'md') {\n return css`\n width: 80px;\n height: 80px;\n `\n }\n // lg\n return css`\n width: 160px;\n height: 160px;\n `\n }}\n`\n\n/**\n * 环形进度条 SVG\n */\nexport const CircleProgressSvg = styled.svg`\n transform: rotate(-90deg);\n width: 100%;\n height: 100%;\n`\n\n/**\n * 环形进度条轨道圆\n */\nexport const CircleProgressTrack = styled.circle`\n fill: none;\n stroke: ${({ theme }) => theme.semantic.colors.background.secondary};\n`\n\n/**\n * 环形进度条填充圆\n */\nexport const CircleProgressBar = styled.circle<{\n status: ProgressStatus\n}>`\n fill: none;\n stroke: ${({ status, theme }) => getStatusColor(status, theme)};\n stroke-linecap: round;\n transition: stroke-dashoffset 0.3s ease, stroke 0.3s ease;\n`\n\n/**\n * 环形进度条内容(百分比文字或图标)\n */\nexport const CircleProgressContent = styled.div<{\n size: ProgressSize\n}>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n align-items: center;\n justify-content: center;\n \n ${({ size, theme }: { size: ProgressSize; theme: AppTheme }) => {\n if (size === 'sm') {\n return css`\n width: 16px;\n height: 16px;\n `\n }\n if (size === 'md') {\n return css`\n font-family: 'Barlow', ${theme.global.typography.fontFamily};\n font-size: 20px;\n font-weight: 500;\n line-height: 30px;\n color: ${theme.semantic.colors.text.secondary};\n `\n }\n // lg\n return css`\n font-family: 'Barlow', ${theme.global.typography.fontFamily};\n font-size: 36px;\n font-weight: 500;\n line-height: 54px;\n color: ${theme.semantic.colors.text.secondary};\n `\n }}\n`\n\n/**\n * 小号环形进度条的图标\n */\nexport const CircleProgressIcon = styled.span<{\n status: ProgressStatus\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: ${({ status, theme }) => getStatusColor(status, theme)};\n \n svg {\n width: 100%;\n height: 100%;\n }\n`\n\n","/**\n * Progress 进度条组件\n * \n * 基于 react-aria 实现无障碍访问的进度条组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * // 线型进度条\n * <Progress value={60} />\n * \n * // 环形进度条\n * <Progress type=\"circle\" value={80} />\n * \n * // 带状态的进度条\n * <Progress value={100} status=\"success\" />\n * \n * // 不显示百分比\n * <Progress value={60} showPercent={false} />\n * ```\n */\n\nimport { forwardRef } from 'react'\nimport { useProgressBar } from 'react-aria'\nimport type { AriaProgressBarProps } from 'react-aria'\nimport {\n LineProgressRoot,\n LineProgressTrack,\n LineProgressBar,\n LineProgressInfo,\n ProgressText,\n StatusIcon,\n CircleProgressRoot,\n CircleProgressSvg,\n CircleProgressTrack,\n CircleProgressBar,\n CircleProgressContent,\n CircleProgressIcon,\n progressTypes,\n progressSizes,\n progressStatuses,\n type ProgressType,\n type ProgressSize,\n type ProgressStatus,\n} from './Progress.style'\n\n// 导出常量供外部使用\nexport const TYPES = progressTypes\nexport const SIZES = progressSizes\nexport const STATUSES = progressStatuses\n\nexport type ProgressProps = Omit<AriaProgressBarProps, 'value'> & {\n /** 进度条类型:线型、环形 */\n type?: ProgressType\n /** 进度条尺寸:小号、中号、大号 */\n size?: ProgressSize\n /** 进度状态:进行中、失败、警示、成功 */\n status?: ProgressStatus\n /** 当前进度值(0-100) */\n value?: number\n /** 是否显示百分比文字 */\n showPercent?: boolean\n /** 是否显示状态图标(仅线型进度条) */\n showIcon?: boolean\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * 成功图标\n */\nconst SuccessIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path\n d=\"M11.3333 5.5L6.75 10.0833L4.66667 8\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n/**\n * 失败图标\n */\nconst ErrorIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path\n d=\"M10 6L6 10M6 6L10 10\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n)\n\n/**\n * 警示图标\n */\nconst WarningIcon = () => (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path\n d=\"M8 4.66667V8.66667M8 11.3333H8.00667\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n/**\n * 根据状态获取对应图标\n */\nconst getStatusIcon = (status: ProgressStatus) => {\n switch (status) {\n case 'success':\n return <SuccessIcon />\n case 'error':\n return <ErrorIcon />\n case 'warning':\n return <WarningIcon />\n default:\n return null\n }\n}\n\n/**\n * Progress 进度条组件\n * \n * 基于 Figma 设计规范实现的进度条组件,支持线型和环形两种类型\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n type = 'line',\n size = 'md',\n status = 'normal',\n value = 0,\n showPercent = true,\n showIcon = true,\n className,\n ...ariaProps\n },\n ref,\n ) => {\n // 限制进度值在 0-100 之间\n const percent = Math.min(Math.max(value, 0), 100)\n \n // 使用 react-aria 的 useProgressBar hook\n const { progressBarProps, labelProps } = useProgressBar({\n ...ariaProps,\n value: percent,\n minValue: 0,\n maxValue: 100,\n })\n\n // 根据状态显示图标\n const shouldShowIcon = showIcon && status !== 'normal'\n const icon = shouldShowIcon ? getStatusIcon(status) : null\n\n // 线型进度条\n if (type === 'line') {\n return (\n <LineProgressRoot\n {...progressBarProps}\n ref={ref}\n size={size}\n className={className}\n role=\"progressbar\"\n aria-valuenow={percent}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <LineProgressTrack size={size}>\n <LineProgressBar status={status} percent={percent} />\n </LineProgressTrack>\n \n <LineProgressInfo>\n {showPercent && (\n <ProgressText {...labelProps}>\n {Math.round(percent)}%\n </ProgressText>\n )}\n \n {shouldShowIcon && icon && (\n <StatusIcon status={status}>\n {icon}\n </StatusIcon>\n )}\n </LineProgressInfo>\n </LineProgressRoot>\n )\n }\n\n // 环形进度条\n // 根据尺寸计算圆的参数\n const getSizeConfig = () => {\n switch (size) {\n case 'sm':\n return { circleSize: 24, strokeWidth: 3 }\n case 'md':\n return { circleSize: 80, strokeWidth: 6 }\n case 'lg':\n return { circleSize: 160, strokeWidth: 8 }\n default:\n return { circleSize: 80, strokeWidth: 6 }\n }\n }\n \n const { circleSize, strokeWidth } = getSizeConfig()\n const radius = (circleSize - strokeWidth) / 2\n const circumference = 2 * Math.PI * radius\n const strokeDashoffset = circumference - (percent / 100) * circumference\n \n // 是否显示百分比文字(小号显示图标,中号和大号显示百分比)\n const showPercentInCircle = size !== 'sm'\n\n return (\n <CircleProgressRoot\n {...progressBarProps}\n ref={ref}\n size={size}\n className={className}\n role=\"progressbar\"\n aria-valuenow={percent}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <CircleProgressSvg>\n {/* 轨道 */}\n <CircleProgressTrack\n cx={circleSize / 2}\n cy={circleSize / 2}\n r={radius}\n strokeWidth={strokeWidth}\n />\n \n {/* 进度条 */}\n <CircleProgressBar\n status={status}\n cx={circleSize / 2}\n cy={circleSize / 2}\n r={radius}\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n />\n </CircleProgressSvg>\n \n {/* 中心内容 */}\n <CircleProgressContent size={size}>\n {showPercentInCircle ? (\n // 中号和大号显示百分比文字\n showPercent && <span {...labelProps}>{Math.round(percent)}%</span>\n ) : (\n // 小号显示状态图标\n shouldShowIcon && icon && (\n <CircleProgressIcon status={status}>\n {icon}\n </CircleProgressIcon>\n )\n )}\n </CircleProgressContent>\n </CircleProgressRoot>\n )\n },\n)\n\nProgress.displayName = 'Progress'\n\n","import {createContext as $69F46$createContext, useMemo as $69F46$useMemo, useContext as $69F46$useContext, useState as $69F46$useState, useRef as $69F46$useRef, useEffect as $69F46$useEffect} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $e5be200c675c3b3a$export$aca958c65c314e6c = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valueMissing: false,\n valid: true\n};\nconst $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE = {\n ...$e5be200c675c3b3a$export$aca958c65c314e6c,\n customError: true,\n valid: false\n};\nconst $e5be200c675c3b3a$export$dad6ae84456c676a = {\n isInvalid: false,\n validationDetails: $e5be200c675c3b3a$export$aca958c65c314e6c,\n validationErrors: []\n};\nconst $e5be200c675c3b3a$export$571b5131b7e65c11 = (0, $69F46$createContext)({});\nconst $e5be200c675c3b3a$export$a763b9476acd3eb = '__formValidationState' + Date.now();\nfunction $e5be200c675c3b3a$export$fc1a364ae1f3ff10(props) {\n // Private prop for parent components to pass state to children.\n if (props[$e5be200c675c3b3a$export$a763b9476acd3eb]) {\n let { realtimeValidation: realtimeValidation, displayValidation: displayValidation, updateValidation: updateValidation, resetValidation: resetValidation, commitValidation: commitValidation } = props[$e5be200c675c3b3a$export$a763b9476acd3eb];\n return {\n realtimeValidation: realtimeValidation,\n displayValidation: displayValidation,\n updateValidation: updateValidation,\n resetValidation: resetValidation,\n commitValidation: commitValidation\n };\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return $e5be200c675c3b3a$var$useFormValidationStateImpl(props);\n}\nfunction $e5be200c675c3b3a$var$useFormValidationStateImpl(props) {\n let { isInvalid: isInvalid, validationState: validationState, name: name, value: value, builtinValidation: builtinValidation, validate: validate, validationBehavior: validationBehavior = 'aria' } = props;\n // backward compatibility.\n if (validationState) isInvalid || (isInvalid = validationState === 'invalid');\n // If the isInvalid prop is controlled, update validation result in realtime.\n let controlledError = isInvalid !== undefined ? {\n isInvalid: isInvalid,\n validationErrors: [],\n validationDetails: $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE\n } : null;\n // Perform custom client side validation.\n let clientError = (0, $69F46$useMemo)(()=>{\n if (!validate || value == null) return null;\n let validateErrors = $e5be200c675c3b3a$var$runValidate(validate, value);\n return $e5be200c675c3b3a$var$getValidationResult(validateErrors);\n }, [\n validate,\n value\n ]);\n if (builtinValidation === null || builtinValidation === void 0 ? void 0 : builtinValidation.validationDetails.valid) builtinValidation = undefined;\n // Get relevant server errors from the form.\n let serverErrors = (0, $69F46$useContext)($e5be200c675c3b3a$export$571b5131b7e65c11);\n let serverErrorMessages = (0, $69F46$useMemo)(()=>{\n if (name) return Array.isArray(name) ? name.flatMap((name)=>$e5be200c675c3b3a$var$asArray(serverErrors[name])) : $e5be200c675c3b3a$var$asArray(serverErrors[name]);\n return [];\n }, [\n serverErrors,\n name\n ]);\n // Show server errors when the form gets a new value, and clear when the user changes the value.\n let [lastServerErrors, setLastServerErrors] = (0, $69F46$useState)(serverErrors);\n let [isServerErrorCleared, setServerErrorCleared] = (0, $69F46$useState)(false);\n if (serverErrors !== lastServerErrors) {\n setLastServerErrors(serverErrors);\n setServerErrorCleared(false);\n }\n let serverError = (0, $69F46$useMemo)(()=>$e5be200c675c3b3a$var$getValidationResult(isServerErrorCleared ? [] : serverErrorMessages), [\n isServerErrorCleared,\n serverErrorMessages\n ]);\n // Track the next validation state in a ref until commitValidation is called.\n let nextValidation = (0, $69F46$useRef)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let [currentValidity, setCurrentValidity] = (0, $69F46$useState)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let lastError = (0, $69F46$useRef)($e5be200c675c3b3a$export$dad6ae84456c676a);\n let commitValidation = ()=>{\n if (!commitQueued) return;\n setCommitQueued(false);\n let error = clientError || builtinValidation || nextValidation.current;\n if (!$e5be200c675c3b3a$var$isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n };\n let [commitQueued, setCommitQueued] = (0, $69F46$useState)(false);\n (0, $69F46$useEffect)(commitValidation);\n // realtimeValidation is used to update the native input element's state based on custom validation logic.\n // displayValidation is the currently displayed validation state that the user sees (e.g. on input change/form submit).\n // With validationBehavior=\"aria\", all errors are displayed in realtime rather than on submit.\n let realtimeValidation = controlledError || serverError || clientError || builtinValidation || $e5be200c675c3b3a$export$dad6ae84456c676a;\n let displayValidation = validationBehavior === 'native' ? controlledError || serverError || currentValidity : controlledError || serverError || clientError || builtinValidation || currentValidity;\n return {\n realtimeValidation: realtimeValidation,\n displayValidation: displayValidation,\n updateValidation (value) {\n // If validationBehavior is 'aria', update in realtime. Otherwise, store in a ref until commit.\n if (validationBehavior === 'aria' && !$e5be200c675c3b3a$var$isEqualValidation(currentValidity, value)) setCurrentValidity(value);\n else nextValidation.current = value;\n },\n resetValidation () {\n // Update the currently displayed validation state to valid on form reset,\n // even if the native validity says it isn't. It'll show again on the next form submit.\n let error = $e5be200c675c3b3a$export$dad6ae84456c676a;\n if (!$e5be200c675c3b3a$var$isEqualValidation(error, lastError.current)) {\n lastError.current = error;\n setCurrentValidity(error);\n }\n // Do not commit validation after the next render. This avoids a condition where\n // useSelect calls commitValidation inside an onReset handler.\n if (validationBehavior === 'native') setCommitQueued(false);\n setServerErrorCleared(true);\n },\n commitValidation () {\n // Commit validation state so the user sees it on blur/change/submit. Also clear any server errors.\n // Wait until after the next render to commit so that the latest value has been validated.\n if (validationBehavior === 'native') setCommitQueued(true);\n setServerErrorCleared(true);\n }\n };\n}\nfunction $e5be200c675c3b3a$var$asArray(v) {\n if (!v) return [];\n return Array.isArray(v) ? v : [\n v\n ];\n}\nfunction $e5be200c675c3b3a$var$runValidate(validate, value) {\n if (typeof validate === 'function') {\n let e = validate(value);\n if (e && typeof e !== 'boolean') return $e5be200c675c3b3a$var$asArray(e);\n }\n return [];\n}\nfunction $e5be200c675c3b3a$var$getValidationResult(errors) {\n return errors.length ? {\n isInvalid: true,\n validationErrors: errors,\n validationDetails: $e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE\n } : null;\n}\nfunction $e5be200c675c3b3a$var$isEqualValidation(a, b) {\n if (a === b) return true;\n return !!a && !!b && a.isInvalid === b.isInvalid && a.validationErrors.length === b.validationErrors.length && a.validationErrors.every((a, i)=>a === b.validationErrors[i]) && Object.entries(a.validationDetails).every(([k, v])=>b.validationDetails[k] === v);\n}\nfunction $e5be200c675c3b3a$export$75ee7c75d68f5b0e(...results) {\n let errors = new Set();\n let isInvalid = false;\n let validationDetails = {\n ...$e5be200c675c3b3a$export$aca958c65c314e6c\n };\n for (let v of results){\n var _validationDetails, _key;\n for (let e of v.validationErrors)errors.add(e);\n // Only these properties apply for checkboxes.\n isInvalid || (isInvalid = v.isInvalid);\n for(let key in validationDetails)(_validationDetails = validationDetails)[_key = key] || (_validationDetails[_key] = v.validationDetails[key]);\n }\n validationDetails.valid = !isInvalid;\n return {\n isInvalid: isInvalid,\n validationErrors: [\n ...errors\n ],\n validationDetails: validationDetails\n };\n}\n\n\nexport {$e5be200c675c3b3a$export$aca958c65c314e6c as VALID_VALIDITY_STATE, $e5be200c675c3b3a$export$dad6ae84456c676a as DEFAULT_VALIDATION_RESULT, $e5be200c675c3b3a$export$571b5131b7e65c11 as FormValidationContext, $e5be200c675c3b3a$export$a763b9476acd3eb as privateValidationStateProp, $e5be200c675c3b3a$export$fc1a364ae1f3ff10 as useFormValidationState, $e5be200c675c3b3a$export$75ee7c75d68f5b0e as mergeValidation};\n//# sourceMappingURL=useFormValidationState.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ class $a02d57049d202695$export$d085fb9e920b5ca7 {\n *[Symbol.iterator]() {\n yield* this.iterable;\n }\n get size() {\n return this._size;\n }\n getKeys() {\n return this.keyMap.keys();\n }\n getKeyBefore(key) {\n let node = this.keyMap.get(key);\n var _node_prevKey;\n return node ? (_node_prevKey = node.prevKey) !== null && _node_prevKey !== void 0 ? _node_prevKey : null : null;\n }\n getKeyAfter(key) {\n let node = this.keyMap.get(key);\n var _node_nextKey;\n return node ? (_node_nextKey = node.nextKey) !== null && _node_nextKey !== void 0 ? _node_nextKey : null : null;\n }\n getFirstKey() {\n return this.firstKey;\n }\n getLastKey() {\n return this.lastKey;\n }\n getItem(key) {\n var _this_keyMap_get;\n return (_this_keyMap_get = this.keyMap.get(key)) !== null && _this_keyMap_get !== void 0 ? _this_keyMap_get : null;\n }\n at(idx) {\n const keys = [\n ...this.getKeys()\n ];\n return this.getItem(keys[idx]);\n }\n getChildren(key) {\n let node = this.keyMap.get(key);\n return (node === null || node === void 0 ? void 0 : node.childNodes) || [];\n }\n constructor(nodes){\n this.keyMap = new Map();\n this.firstKey = null;\n this.lastKey = null;\n this.iterable = nodes;\n let visit = (node)=>{\n this.keyMap.set(node.key, node);\n if (node.childNodes && node.type === 'section') for (let child of node.childNodes)visit(child);\n };\n for (let node of nodes)visit(node);\n let last = null;\n let index = 0;\n let size = 0;\n for (let [key, node] of this.keyMap){\n if (last) {\n last.nextKey = key;\n node.prevKey = last.key;\n } else {\n this.firstKey = key;\n node.prevKey = undefined;\n }\n if (node.type === 'item') node.index = index++;\n // Only count sections and items when determining size so that\n // loaders and separators in RAC/S2 don't influence the emptyState determination\n if (node.type === 'section' || node.type === 'item') size++;\n last = node;\n // Set nextKey as undefined since this might be the last node\n // If it isn't the last node, last.nextKey will properly set at start of new loop\n last.nextKey = undefined;\n }\n this._size = size;\n var _last_key;\n this.lastKey = (_last_key = last === null || last === void 0 ? void 0 : last.key) !== null && _last_key !== void 0 ? _last_key : null;\n }\n}\n\n\nexport {$a02d57049d202695$export$d085fb9e920b5ca7 as ListCollection};\n//# sourceMappingURL=ListCollection.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ class $e40ea825a81a3709$export$52baac22726c72bf extends Set {\n constructor(keys, anchorKey, currentKey){\n super(keys);\n if (keys instanceof $e40ea825a81a3709$export$52baac22726c72bf) {\n this.anchorKey = anchorKey !== null && anchorKey !== void 0 ? anchorKey : keys.anchorKey;\n this.currentKey = currentKey !== null && currentKey !== void 0 ? currentKey : keys.currentKey;\n } else {\n this.anchorKey = anchorKey !== null && anchorKey !== void 0 ? anchorKey : null;\n this.currentKey = currentKey !== null && currentKey !== void 0 ? currentKey : null;\n }\n }\n}\n\n\nexport {$e40ea825a81a3709$export$52baac22726c72bf as Selection};\n//# sourceMappingURL=Selection.module.js.map\n","import {Selection as $e40ea825a81a3709$export$52baac22726c72bf} from \"./Selection.mjs\";\nimport {useControlledState as $6tM1y$useControlledState} from \"@react-stately/utils\";\nimport {useRef as $6tM1y$useRef, useState as $6tM1y$useState, useMemo as $6tM1y$useMemo, useEffect as $6tM1y$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\nfunction $7af3f5b51489e0b5$var$equalSets(setA, setB) {\n if (setA.size !== setB.size) return false;\n for (let item of setA){\n if (!setB.has(item)) return false;\n }\n return true;\n}\nfunction $7af3f5b51489e0b5$export$253fe78d46329472(props) {\n let { selectionMode: selectionMode = 'none', disallowEmptySelection: disallowEmptySelection = false, allowDuplicateSelectionEvents: allowDuplicateSelectionEvents, selectionBehavior: selectionBehaviorProp = 'toggle', disabledBehavior: disabledBehavior = 'all' } = props;\n // We want synchronous updates to `isFocused` and `focusedKey` after their setters are called.\n // But we also need to trigger a react re-render. So, we have both a ref (sync) and state (async).\n let isFocusedRef = (0, $6tM1y$useRef)(false);\n let [, setFocused] = (0, $6tM1y$useState)(false);\n let focusedKeyRef = (0, $6tM1y$useRef)(null);\n let childFocusStrategyRef = (0, $6tM1y$useRef)(null);\n let [, setFocusedKey] = (0, $6tM1y$useState)(null);\n let selectedKeysProp = (0, $6tM1y$useMemo)(()=>$7af3f5b51489e0b5$var$convertSelection(props.selectedKeys), [\n props.selectedKeys\n ]);\n let defaultSelectedKeys = (0, $6tM1y$useMemo)(()=>$7af3f5b51489e0b5$var$convertSelection(props.defaultSelectedKeys, new (0, $e40ea825a81a3709$export$52baac22726c72bf)()), [\n props.defaultSelectedKeys\n ]);\n let [selectedKeys, setSelectedKeys] = (0, $6tM1y$useControlledState)(selectedKeysProp, defaultSelectedKeys, props.onSelectionChange);\n let disabledKeysProp = (0, $6tM1y$useMemo)(()=>props.disabledKeys ? new Set(props.disabledKeys) : new Set(), [\n props.disabledKeys\n ]);\n let [selectionBehavior, setSelectionBehavior] = (0, $6tM1y$useState)(selectionBehaviorProp);\n // If the selectionBehavior prop is set to replace, but the current state is toggle (e.g. due to long press\n // to enter selection mode on touch), and the selection becomes empty, reset the selection behavior.\n if (selectionBehaviorProp === 'replace' && selectionBehavior === 'toggle' && typeof selectedKeys === 'object' && selectedKeys.size === 0) setSelectionBehavior('replace');\n // If the selectionBehavior prop changes, update the state as well.\n let lastSelectionBehavior = (0, $6tM1y$useRef)(selectionBehaviorProp);\n (0, $6tM1y$useEffect)(()=>{\n if (selectionBehaviorProp !== lastSelectionBehavior.current) {\n setSelectionBehavior(selectionBehaviorProp);\n lastSelectionBehavior.current = selectionBehaviorProp;\n }\n }, [\n selectionBehaviorProp\n ]);\n return {\n selectionMode: selectionMode,\n disallowEmptySelection: disallowEmptySelection,\n selectionBehavior: selectionBehavior,\n setSelectionBehavior: setSelectionBehavior,\n get isFocused () {\n return isFocusedRef.current;\n },\n setFocused (f) {\n isFocusedRef.current = f;\n setFocused(f);\n },\n get focusedKey () {\n return focusedKeyRef.current;\n },\n get childFocusStrategy () {\n return childFocusStrategyRef.current;\n },\n setFocusedKey (k, childFocusStrategy = 'first') {\n focusedKeyRef.current = k;\n childFocusStrategyRef.current = childFocusStrategy;\n setFocusedKey(k);\n },\n selectedKeys: selectedKeys,\n setSelectedKeys (keys) {\n if (allowDuplicateSelectionEvents || !$7af3f5b51489e0b5$var$equalSets(keys, selectedKeys)) setSelectedKeys(keys);\n },\n disabledKeys: disabledKeysProp,\n disabledBehavior: disabledBehavior\n };\n}\nfunction $7af3f5b51489e0b5$var$convertSelection(selection, defaultValue) {\n if (!selection) return defaultValue;\n return selection === 'all' ? 'all' : new (0, $e40ea825a81a3709$export$52baac22726c72bf)(selection);\n}\n\n\nexport {$7af3f5b51489e0b5$export$253fe78d46329472 as useMultipleSelectionState};\n//# sourceMappingURL=useMultipleSelectionState.module.js.map\n","import $6Fm0V$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $c1d7fb2ec91bae71$var$Item(props) {\n return null;\n}\n$c1d7fb2ec91bae71$var$Item.getCollectionNode = function* getCollectionNode(props, context) {\n let { childItems: childItems, title: title, children: children } = props;\n let rendered = props.title || props.children;\n let textValue = props.textValue || (typeof rendered === 'string' ? rendered : '') || props['aria-label'] || '';\n // suppressTextValueWarning is used in components like Tabs, which don't have type to select support.\n if (!textValue && !(context === null || context === void 0 ? void 0 : context.suppressTextValueWarning) && process.env.NODE_ENV !== 'production') console.warn('<Item> with non-plain text contents is unsupported by type to select for accessibility. Please add a `textValue` prop.');\n yield {\n type: 'item',\n props: props,\n rendered: rendered,\n textValue: textValue,\n 'aria-label': props['aria-label'],\n hasChildNodes: $c1d7fb2ec91bae71$var$hasChildItems(props),\n *childNodes () {\n if (childItems) for (let child of childItems)yield {\n type: 'item',\n value: child\n };\n else if (title) {\n let items = [];\n (0, $6Fm0V$react).Children.forEach(children, (child)=>{\n items.push({\n type: 'item',\n element: child\n });\n });\n yield* items;\n }\n }\n };\n};\nfunction $c1d7fb2ec91bae71$var$hasChildItems(props) {\n if (props.hasChildItems != null) return props.hasChildItems;\n if (props.childItems) return true;\n if (props.title && (0, $6Fm0V$react).Children.count(props.children) > 0) return true;\n return false;\n}\n// We don't want getCollectionNode to show up in the type definition\nlet $c1d7fb2ec91bae71$export$6d08773d2e66f8f2 = $c1d7fb2ec91bae71$var$Item;\n\n\nexport {$c1d7fb2ec91bae71$export$6d08773d2e66f8f2 as Item};\n//# sourceMappingURL=Item.module.js.map\n","import $gtysd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $9fc4852771d079eb$var$Section(props) {\n return null;\n}\n$9fc4852771d079eb$var$Section.getCollectionNode = function* getCollectionNode(props) {\n let { children: children, title: title, items: items } = props;\n yield {\n type: 'section',\n props: props,\n hasChildNodes: true,\n rendered: title,\n 'aria-label': props['aria-label'],\n *childNodes () {\n if (typeof children === 'function') {\n if (!items) throw new Error('props.children was a function but props.items is missing');\n for (let item of items)yield {\n type: 'item',\n value: item,\n renderer: children\n };\n } else {\n let items = [];\n (0, $gtysd$react).Children.forEach(children, (child)=>{\n items.push({\n type: 'item',\n element: child\n });\n });\n yield* items;\n }\n }\n };\n};\n// We don't want getCollectionNode to show up in the type definition\nlet $9fc4852771d079eb$export$6e2c8f0811a474ce = $9fc4852771d079eb$var$Section;\n\n\nexport {$9fc4852771d079eb$export$6e2c8f0811a474ce as Section};\n//# sourceMappingURL=Section.module.js.map\n","import $fzaAv$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nclass $eb2240fc39a57fa5$export$bf788dd355e3a401 {\n build(props, context) {\n this.context = context;\n return $eb2240fc39a57fa5$var$iterable(()=>this.iterateCollection(props));\n }\n *iterateCollection(props) {\n let { children: children, items: items } = props;\n if ((0, $fzaAv$react).isValidElement(children) && children.type === (0, $fzaAv$react).Fragment) yield* this.iterateCollection({\n children: children.props.children,\n items: items\n });\n else if (typeof children === 'function') {\n if (!items) throw new Error('props.children was a function but props.items is missing');\n let index = 0;\n for (let item of items){\n yield* this.getFullNode({\n value: item,\n index: index\n }, {\n renderer: children\n });\n index++;\n }\n } else {\n let items = [];\n (0, $fzaAv$react).Children.forEach(children, (child)=>{\n if (child) items.push(child);\n });\n let index = 0;\n for (let item of items){\n let nodes = this.getFullNode({\n element: item,\n index: index\n }, {});\n for (let node of nodes){\n index++;\n yield node;\n }\n }\n }\n }\n getKey(item, partialNode, state, parentKey) {\n if (item.key != null) return item.key;\n if (partialNode.type === 'cell' && partialNode.key != null) return `${parentKey}${partialNode.key}`;\n let v = partialNode.value;\n if (v != null) {\n var _v_key;\n let key = (_v_key = v.key) !== null && _v_key !== void 0 ? _v_key : v.id;\n if (key == null) throw new Error('No key found for item');\n return key;\n }\n return parentKey ? `${parentKey}.${partialNode.index}` : `$.${partialNode.index}`;\n }\n getChildState(state, partialNode) {\n return {\n renderer: partialNode.renderer || state.renderer\n };\n }\n *getFullNode(partialNode, state, parentKey, parentNode) {\n if ((0, $fzaAv$react).isValidElement(partialNode.element) && partialNode.element.type === (0, $fzaAv$react).Fragment) {\n let children = [];\n (0, $fzaAv$react).Children.forEach(partialNode.element.props.children, (child)=>{\n children.push(child);\n });\n var _partialNode_index;\n let index = (_partialNode_index = partialNode.index) !== null && _partialNode_index !== void 0 ? _partialNode_index : 0;\n for (const child of children)yield* this.getFullNode({\n element: child,\n index: index++\n }, state, parentKey, parentNode);\n return;\n }\n // If there's a value instead of an element on the node, and a parent renderer function is available,\n // use it to render an element for the value.\n let element = partialNode.element;\n if (!element && partialNode.value && state && state.renderer) {\n let cached = this.cache.get(partialNode.value);\n if (cached && (!cached.shouldInvalidate || !cached.shouldInvalidate(this.context))) {\n cached.index = partialNode.index;\n cached.parentKey = parentNode ? parentNode.key : null;\n yield cached;\n return;\n }\n element = state.renderer(partialNode.value);\n }\n // If there's an element with a getCollectionNode function on its type, then it's a supported component.\n // Call this function to get a partial node, and recursively build a full node from there.\n if ((0, $fzaAv$react).isValidElement(element)) {\n let type = element.type;\n if (typeof type !== 'function' && typeof type.getCollectionNode !== 'function') {\n let name = element.type;\n throw new Error(`Unknown element <${name}> in collection.`);\n }\n let childNodes = type.getCollectionNode(element.props, this.context);\n var _partialNode_index1;\n let index = (_partialNode_index1 = partialNode.index) !== null && _partialNode_index1 !== void 0 ? _partialNode_index1 : 0;\n let result = childNodes.next();\n while(!result.done && result.value){\n let childNode = result.value;\n partialNode.index = index;\n var _childNode_key;\n let nodeKey = (_childNode_key = childNode.key) !== null && _childNode_key !== void 0 ? _childNode_key : null;\n if (nodeKey == null) nodeKey = childNode.element ? null : this.getKey(element, partialNode, state, parentKey);\n let nodes = this.getFullNode({\n ...childNode,\n key: nodeKey,\n index: index,\n wrapper: $eb2240fc39a57fa5$var$compose(partialNode.wrapper, childNode.wrapper)\n }, this.getChildState(state, childNode), parentKey ? `${parentKey}${element.key}` : element.key, parentNode);\n let children = [\n ...nodes\n ];\n for (let node of children){\n var _childNode_value, _ref;\n // Cache the node based on its value\n node.value = (_ref = (_childNode_value = childNode.value) !== null && _childNode_value !== void 0 ? _childNode_value : partialNode.value) !== null && _ref !== void 0 ? _ref : null;\n if (node.value) this.cache.set(node.value, node);\n var _parentNode_type;\n // The partial node may have specified a type for the child in order to specify a constraint.\n // Verify that the full node that was built recursively matches this type.\n if (partialNode.type && node.type !== partialNode.type) throw new Error(`Unsupported type <${$eb2240fc39a57fa5$var$capitalize(node.type)}> in <${$eb2240fc39a57fa5$var$capitalize((_parentNode_type = parentNode === null || parentNode === void 0 ? void 0 : parentNode.type) !== null && _parentNode_type !== void 0 ? _parentNode_type : 'unknown parent type')}>. Only <${$eb2240fc39a57fa5$var$capitalize(partialNode.type)}> is supported.`);\n index++;\n yield node;\n }\n result = childNodes.next(children);\n }\n return;\n }\n // Ignore invalid elements\n if (partialNode.key == null || partialNode.type == null) return;\n // Create full node\n let builder = this;\n var _partialNode_value, _partialNode_textValue;\n let node = {\n type: partialNode.type,\n props: partialNode.props,\n key: partialNode.key,\n parentKey: parentNode ? parentNode.key : null,\n value: (_partialNode_value = partialNode.value) !== null && _partialNode_value !== void 0 ? _partialNode_value : null,\n level: parentNode ? parentNode.level + 1 : 0,\n index: partialNode.index,\n rendered: partialNode.rendered,\n textValue: (_partialNode_textValue = partialNode.textValue) !== null && _partialNode_textValue !== void 0 ? _partialNode_textValue : '',\n 'aria-label': partialNode['aria-label'],\n wrapper: partialNode.wrapper,\n shouldInvalidate: partialNode.shouldInvalidate,\n hasChildNodes: partialNode.hasChildNodes || false,\n childNodes: $eb2240fc39a57fa5$var$iterable(function*() {\n if (!partialNode.hasChildNodes || !partialNode.childNodes) return;\n let index = 0;\n for (let child of partialNode.childNodes()){\n // Ensure child keys are globally unique by prepending the parent node's key\n if (child.key != null) // TODO: Remove this line entirely and enforce that users always provide unique keys.\n // Currently this line will have issues when a parent has a key `a` and a child with key `bc`\n // but another parent has key `ab` and its child has a key `c`. The combined keys would result in both\n // children having a key of `abc`.\n child.key = `${node.key}${child.key}`;\n let nodes = builder.getFullNode({\n ...child,\n index: index\n }, builder.getChildState(state, child), node.key, node);\n for (let node of nodes){\n index++;\n yield node;\n }\n }\n })\n };\n yield node;\n }\n constructor(){\n this.cache = new WeakMap();\n }\n}\n// Wraps an iterator function as an iterable object, and caches the results.\nfunction $eb2240fc39a57fa5$var$iterable(iterator) {\n let cache = [];\n let iterable = null;\n return {\n *[Symbol.iterator] () {\n for (let item of cache)yield item;\n if (!iterable) iterable = iterator();\n for (let item of iterable){\n cache.push(item);\n yield item;\n }\n }\n };\n}\nfunction $eb2240fc39a57fa5$var$compose(outer, inner) {\n if (outer && inner) return (element)=>outer(inner(element));\n if (outer) return outer;\n if (inner) return inner;\n}\nfunction $eb2240fc39a57fa5$var$capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\n\nexport {$eb2240fc39a57fa5$export$bf788dd355e3a401 as CollectionBuilder};\n//# sourceMappingURL=CollectionBuilder.module.js.map\n","import {CollectionBuilder as $eb2240fc39a57fa5$export$bf788dd355e3a401} from \"./CollectionBuilder.mjs\";\nimport {useMemo as $lbNth$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $7613b1592d41b092$export$6cd28814d92fa9c9(props, factory, context) {\n let builder = (0, $lbNth$useMemo)(()=>new (0, $eb2240fc39a57fa5$export$bf788dd355e3a401)(), []);\n let { children: children, items: items, collection: collection } = props;\n let result = (0, $lbNth$useMemo)(()=>{\n if (collection) return collection;\n let nodes = builder.build({\n children: children,\n items: items\n }, context);\n return factory(nodes);\n }, [\n builder,\n children,\n items,\n collection,\n context,\n factory\n ]);\n return result;\n}\n\n\nexport {$7613b1592d41b092$export$6cd28814d92fa9c9 as useCollection};\n//# sourceMappingURL=useCollection.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c5a24bc478652b5f$export$1005530eda016c13(node, collection) {\n // New API: call collection.getChildren with the node key.\n if (typeof collection.getChildren === 'function') return collection.getChildren(node.key);\n // Old API: access childNodes directly.\n return node.childNodes;\n}\nfunction $c5a24bc478652b5f$export$fbdeaa6a76694f71(iterable) {\n return $c5a24bc478652b5f$export$5f3398f8733f90e2(iterable, 0);\n}\nfunction $c5a24bc478652b5f$export$5f3398f8733f90e2(iterable, index) {\n if (index < 0) return undefined;\n let i = 0;\n for (let item of iterable){\n if (i === index) return item;\n i++;\n }\n}\nfunction $c5a24bc478652b5f$export$7475b2c64539e4cf(iterable) {\n let lastItem = undefined;\n for (let value of iterable)lastItem = value;\n return lastItem;\n}\nfunction $c5a24bc478652b5f$export$8c434b3a7a4dad6(collection, a, b) {\n // If the two nodes have the same parent, compare their indices.\n if (a.parentKey === b.parentKey) return a.index - b.index;\n // Otherwise, collect all of the ancestors from each node, and find the first one that doesn't match starting from the root.\n // Include the base nodes in case we are comparing nodes of different levels so that we can compare the higher node to the lower level node's\n // ancestor of the same level\n let aAncestors = [\n ...$c5a24bc478652b5f$var$getAncestors(collection, a),\n a\n ];\n let bAncestors = [\n ...$c5a24bc478652b5f$var$getAncestors(collection, b),\n b\n ];\n let firstNonMatchingAncestor = aAncestors.slice(0, bAncestors.length).findIndex((a, i)=>a !== bAncestors[i]);\n if (firstNonMatchingAncestor !== -1) {\n // Compare the indices of two children within the common ancestor.\n a = aAncestors[firstNonMatchingAncestor];\n b = bAncestors[firstNonMatchingAncestor];\n return a.index - b.index;\n }\n // If there isn't a non matching ancestor, we might be in a case where one of the nodes is the ancestor of the other.\n if (aAncestors.findIndex((node)=>node === b) >= 0) return 1;\n else if (bAncestors.findIndex((node)=>node === a) >= 0) return -1;\n // 🤷\n return -1;\n}\nfunction $c5a24bc478652b5f$var$getAncestors(collection, node) {\n let parents = [];\n let currNode = node;\n while((currNode === null || currNode === void 0 ? void 0 : currNode.parentKey) != null){\n currNode = collection.getItem(currNode.parentKey);\n if (currNode) parents.unshift(currNode);\n }\n return parents;\n}\n\n\nexport {$c5a24bc478652b5f$export$1005530eda016c13 as getChildNodes, $c5a24bc478652b5f$export$fbdeaa6a76694f71 as getFirstItem, $c5a24bc478652b5f$export$5f3398f8733f90e2 as getNthItem, $c5a24bc478652b5f$export$7475b2c64539e4cf as getLastItem, $c5a24bc478652b5f$export$8c434b3a7a4dad6 as compareNodeOrder};\n//# sourceMappingURL=getChildNodes.module.js.map\n","import {Selection as $e40ea825a81a3709$export$52baac22726c72bf} from \"./Selection.mjs\";\nimport {compareNodeOrder as $jkhUT$compareNodeOrder, getFirstItem as $jkhUT$getFirstItem, getChildNodes as $jkhUT$getChildNodes} from \"@react-stately/collections\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nclass $d496c0a20b6e58ec$export$6c8a5aaad13c9852 {\n /**\n * The type of selection that is allowed in the collection.\n */ get selectionMode() {\n return this.state.selectionMode;\n }\n /**\n * Whether the collection allows empty selection.\n */ get disallowEmptySelection() {\n return this.state.disallowEmptySelection;\n }\n /**\n * The selection behavior for the collection.\n */ get selectionBehavior() {\n return this.state.selectionBehavior;\n }\n /**\n * Sets the selection behavior for the collection.\n */ setSelectionBehavior(selectionBehavior) {\n this.state.setSelectionBehavior(selectionBehavior);\n }\n /**\n * Whether the collection is currently focused.\n */ get isFocused() {\n return this.state.isFocused;\n }\n /**\n * Sets whether the collection is focused.\n */ setFocused(isFocused) {\n this.state.setFocused(isFocused);\n }\n /**\n * The current focused key in the collection.\n */ get focusedKey() {\n return this.state.focusedKey;\n }\n /** Whether the first or last child of the focused key should receive focus. */ get childFocusStrategy() {\n return this.state.childFocusStrategy;\n }\n /**\n * Sets the focused key.\n */ setFocusedKey(key, childFocusStrategy) {\n if (key == null || this.collection.getItem(key)) this.state.setFocusedKey(key, childFocusStrategy);\n }\n /**\n * The currently selected keys in the collection.\n */ get selectedKeys() {\n return this.state.selectedKeys === 'all' ? new Set(this.getSelectAllKeys()) : this.state.selectedKeys;\n }\n /**\n * The raw selection value for the collection.\n * Either 'all' for select all, or a set of keys.\n */ get rawSelection() {\n return this.state.selectedKeys;\n }\n /**\n * Returns whether a key is selected.\n */ isSelected(key) {\n if (this.state.selectionMode === 'none') return false;\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return false;\n return this.state.selectedKeys === 'all' ? this.canSelectItem(mappedKey) : this.state.selectedKeys.has(mappedKey);\n }\n /**\n * Whether the selection is empty.\n */ get isEmpty() {\n return this.state.selectedKeys !== 'all' && this.state.selectedKeys.size === 0;\n }\n /**\n * Whether all items in the collection are selected.\n */ get isSelectAll() {\n if (this.isEmpty) return false;\n if (this.state.selectedKeys === 'all') return true;\n if (this._isSelectAll != null) return this._isSelectAll;\n let allKeys = this.getSelectAllKeys();\n let selectedKeys = this.state.selectedKeys;\n this._isSelectAll = allKeys.every((k)=>selectedKeys.has(k));\n return this._isSelectAll;\n }\n get firstSelectedKey() {\n let first = null;\n for (let key of this.state.selectedKeys){\n let item = this.collection.getItem(key);\n if (!first || item && (0, $jkhUT$compareNodeOrder)(this.collection, item, first) < 0) first = item;\n }\n var _first_key;\n return (_first_key = first === null || first === void 0 ? void 0 : first.key) !== null && _first_key !== void 0 ? _first_key : null;\n }\n get lastSelectedKey() {\n let last = null;\n for (let key of this.state.selectedKeys){\n let item = this.collection.getItem(key);\n if (!last || item && (0, $jkhUT$compareNodeOrder)(this.collection, item, last) > 0) last = item;\n }\n var _last_key;\n return (_last_key = last === null || last === void 0 ? void 0 : last.key) !== null && _last_key !== void 0 ? _last_key : null;\n }\n get disabledKeys() {\n return this.state.disabledKeys;\n }\n get disabledBehavior() {\n return this.state.disabledBehavior;\n }\n /**\n * Extends the selection to the given key.\n */ extendSelection(toKey) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single') {\n this.replaceSelection(toKey);\n return;\n }\n let mappedToKey = this.getKey(toKey);\n if (mappedToKey == null) return;\n let selection;\n // Only select the one key if coming from a select all.\n if (this.state.selectedKeys === 'all') selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)([\n mappedToKey\n ], mappedToKey, mappedToKey);\n else {\n let selectedKeys = this.state.selectedKeys;\n var _selectedKeys_anchorKey;\n let anchorKey = (_selectedKeys_anchorKey = selectedKeys.anchorKey) !== null && _selectedKeys_anchorKey !== void 0 ? _selectedKeys_anchorKey : mappedToKey;\n selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)(selectedKeys, anchorKey, mappedToKey);\n var _selectedKeys_currentKey;\n for (let key of this.getKeyRange(anchorKey, (_selectedKeys_currentKey = selectedKeys.currentKey) !== null && _selectedKeys_currentKey !== void 0 ? _selectedKeys_currentKey : mappedToKey))selection.delete(key);\n for (let key of this.getKeyRange(mappedToKey, anchorKey))if (this.canSelectItem(key)) selection.add(key);\n }\n this.state.setSelectedKeys(selection);\n }\n getKeyRange(from, to) {\n let fromItem = this.collection.getItem(from);\n let toItem = this.collection.getItem(to);\n if (fromItem && toItem) {\n if ((0, $jkhUT$compareNodeOrder)(this.collection, fromItem, toItem) <= 0) return this.getKeyRangeInternal(from, to);\n return this.getKeyRangeInternal(to, from);\n }\n return [];\n }\n getKeyRangeInternal(from, to) {\n var _this_layoutDelegate;\n if ((_this_layoutDelegate = this.layoutDelegate) === null || _this_layoutDelegate === void 0 ? void 0 : _this_layoutDelegate.getKeyRange) return this.layoutDelegate.getKeyRange(from, to);\n let keys = [];\n let key = from;\n while(key != null){\n let item = this.collection.getItem(key);\n if (item && (item.type === 'item' || item.type === 'cell' && this.allowsCellSelection)) keys.push(key);\n if (key === to) return keys;\n key = this.collection.getKeyAfter(key);\n }\n return [];\n }\n getKey(key) {\n let item = this.collection.getItem(key);\n if (!item) // ¯\\_(ツ)_/¯\n return key;\n // If cell selection is allowed, just return the key.\n if (item.type === 'cell' && this.allowsCellSelection) return key;\n // Find a parent item to select\n while(item && item.type !== 'item' && item.parentKey != null)item = this.collection.getItem(item.parentKey);\n if (!item || item.type !== 'item') return null;\n return item.key;\n }\n /**\n * Toggles whether the given key is selected.\n */ toggleSelection(key) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single' && !this.isSelected(key)) {\n this.replaceSelection(key);\n return;\n }\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return;\n let keys = new (0, $e40ea825a81a3709$export$52baac22726c72bf)(this.state.selectedKeys === 'all' ? this.getSelectAllKeys() : this.state.selectedKeys);\n if (keys.has(mappedKey)) keys.delete(mappedKey);\n else if (this.canSelectItem(mappedKey)) {\n keys.add(mappedKey);\n keys.anchorKey = mappedKey;\n keys.currentKey = mappedKey;\n }\n if (this.disallowEmptySelection && keys.size === 0) return;\n this.state.setSelectedKeys(keys);\n }\n /**\n * Replaces the selection with only the given key.\n */ replaceSelection(key) {\n if (this.selectionMode === 'none') return;\n let mappedKey = this.getKey(key);\n if (mappedKey == null) return;\n let selection = this.canSelectItem(mappedKey) ? new (0, $e40ea825a81a3709$export$52baac22726c72bf)([\n mappedKey\n ], mappedKey, mappedKey) : new (0, $e40ea825a81a3709$export$52baac22726c72bf)();\n this.state.setSelectedKeys(selection);\n }\n /**\n * Replaces the selection with the given keys.\n */ setSelectedKeys(keys) {\n if (this.selectionMode === 'none') return;\n let selection = new (0, $e40ea825a81a3709$export$52baac22726c72bf)();\n for (let key of keys){\n let mappedKey = this.getKey(key);\n if (mappedKey != null) {\n selection.add(mappedKey);\n if (this.selectionMode === 'single') break;\n }\n }\n this.state.setSelectedKeys(selection);\n }\n getSelectAllKeys() {\n let keys = [];\n let addKeys = (key)=>{\n while(key != null){\n if (this.canSelectItem(key)) {\n var _getFirstItem;\n let item = this.collection.getItem(key);\n if ((item === null || item === void 0 ? void 0 : item.type) === 'item') keys.push(key);\n var _getFirstItem_key;\n // Add child keys. If cell selection is allowed, then include item children too.\n if ((item === null || item === void 0 ? void 0 : item.hasChildNodes) && (this.allowsCellSelection || item.type !== 'item')) addKeys((_getFirstItem_key = (_getFirstItem = (0, $jkhUT$getFirstItem)((0, $jkhUT$getChildNodes)(item, this.collection))) === null || _getFirstItem === void 0 ? void 0 : _getFirstItem.key) !== null && _getFirstItem_key !== void 0 ? _getFirstItem_key : null);\n }\n key = this.collection.getKeyAfter(key);\n }\n };\n addKeys(this.collection.getFirstKey());\n return keys;\n }\n /**\n * Selects all items in the collection.\n */ selectAll() {\n if (!this.isSelectAll && this.selectionMode === 'multiple') this.state.setSelectedKeys('all');\n }\n /**\n * Removes all keys from the selection.\n */ clearSelection() {\n if (!this.disallowEmptySelection && (this.state.selectedKeys === 'all' || this.state.selectedKeys.size > 0)) this.state.setSelectedKeys(new (0, $e40ea825a81a3709$export$52baac22726c72bf)());\n }\n /**\n * Toggles between select all and an empty selection.\n */ toggleSelectAll() {\n if (this.isSelectAll) this.clearSelection();\n else this.selectAll();\n }\n select(key, e) {\n if (this.selectionMode === 'none') return;\n if (this.selectionMode === 'single') {\n if (this.isSelected(key) && !this.disallowEmptySelection) this.toggleSelection(key);\n else this.replaceSelection(key);\n } else if (this.selectionBehavior === 'toggle' || e && (e.pointerType === 'touch' || e.pointerType === 'virtual')) // if touch or virtual (VO) then we just want to toggle, otherwise it's impossible to multi select because they don't have modifier keys\n this.toggleSelection(key);\n else this.replaceSelection(key);\n }\n /**\n * Returns whether the current selection is equal to the given selection.\n */ isSelectionEqual(selection) {\n if (selection === this.state.selectedKeys) return true;\n // Check if the set of keys match.\n let selectedKeys = this.selectedKeys;\n if (selection.size !== selectedKeys.size) return false;\n for (let key of selection){\n if (!selectedKeys.has(key)) return false;\n }\n for (let key of selectedKeys){\n if (!selection.has(key)) return false;\n }\n return true;\n }\n canSelectItem(key) {\n var _item_props;\n if (this.state.selectionMode === 'none' || this.state.disabledKeys.has(key)) return false;\n let item = this.collection.getItem(key);\n if (!item || (item === null || item === void 0 ? void 0 : (_item_props = item.props) === null || _item_props === void 0 ? void 0 : _item_props.isDisabled) || item.type === 'cell' && !this.allowsCellSelection) return false;\n return true;\n }\n isDisabled(key) {\n var _this_collection_getItem_props, _this_collection_getItem;\n return this.state.disabledBehavior === 'all' && (this.state.disabledKeys.has(key) || !!((_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : (_this_collection_getItem_props = _this_collection_getItem.props) === null || _this_collection_getItem_props === void 0 ? void 0 : _this_collection_getItem_props.isDisabled));\n }\n isLink(key) {\n var _this_collection_getItem_props, _this_collection_getItem;\n return !!((_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : (_this_collection_getItem_props = _this_collection_getItem.props) === null || _this_collection_getItem_props === void 0 ? void 0 : _this_collection_getItem_props.href);\n }\n getItemProps(key) {\n var _this_collection_getItem;\n return (_this_collection_getItem = this.collection.getItem(key)) === null || _this_collection_getItem === void 0 ? void 0 : _this_collection_getItem.props;\n }\n withCollection(collection) {\n return new $d496c0a20b6e58ec$export$6c8a5aaad13c9852(collection, this.state, {\n allowsCellSelection: this.allowsCellSelection,\n layoutDelegate: this.layoutDelegate || undefined\n });\n }\n constructor(collection, state, options){\n this.collection = collection;\n this.state = state;\n var _options_allowsCellSelection;\n this.allowsCellSelection = (_options_allowsCellSelection = options === null || options === void 0 ? void 0 : options.allowsCellSelection) !== null && _options_allowsCellSelection !== void 0 ? _options_allowsCellSelection : false;\n this._isSelectAll = null;\n this.layoutDelegate = (options === null || options === void 0 ? void 0 : options.layoutDelegate) || null;\n }\n}\n\n\nexport {$d496c0a20b6e58ec$export$6c8a5aaad13c9852 as SelectionManager};\n//# sourceMappingURL=SelectionManager.module.js.map\n","import {ListCollection as $a02d57049d202695$export$d085fb9e920b5ca7} from \"./ListCollection.mjs\";\nimport {useMultipleSelectionState as $d5vlZ$useMultipleSelectionState, SelectionManager as $d5vlZ$SelectionManager} from \"@react-stately/selection\";\nimport {useMemo as $d5vlZ$useMemo, useCallback as $d5vlZ$useCallback, useRef as $d5vlZ$useRef, useEffect as $d5vlZ$useEffect} from \"react\";\nimport {useCollection as $d5vlZ$useCollection} from \"@react-stately/collections\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\nfunction $e72dd72e1c76a225$export$2f645645f7bca764(props) {\n let { filter: filter, layoutDelegate: layoutDelegate } = props;\n let selectionState = (0, $d5vlZ$useMultipleSelectionState)(props);\n let disabledKeys = (0, $d5vlZ$useMemo)(()=>props.disabledKeys ? new Set(props.disabledKeys) : new Set(), [\n props.disabledKeys\n ]);\n let factory = (0, $d5vlZ$useCallback)((nodes)=>filter ? new (0, $a02d57049d202695$export$d085fb9e920b5ca7)(filter(nodes)) : new (0, $a02d57049d202695$export$d085fb9e920b5ca7)(nodes), [\n filter\n ]);\n let context = (0, $d5vlZ$useMemo)(()=>({\n suppressTextValueWarning: props.suppressTextValueWarning\n }), [\n props.suppressTextValueWarning\n ]);\n let collection = (0, $d5vlZ$useCollection)(props, factory, context);\n let selectionManager = (0, $d5vlZ$useMemo)(()=>new (0, $d5vlZ$SelectionManager)(collection, selectionState, {\n layoutDelegate: layoutDelegate\n }), [\n collection,\n selectionState,\n layoutDelegate\n ]);\n $e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager);\n return {\n collection: collection,\n disabledKeys: disabledKeys,\n selectionManager: selectionManager\n };\n}\nfunction $e72dd72e1c76a225$export$ba9d38c0f1bf2b36(state, filterFn) {\n let collection = (0, $d5vlZ$useMemo)(()=>filterFn ? state.collection.filter(filterFn) : state.collection, [\n state.collection,\n filterFn\n ]);\n let selectionManager = state.selectionManager.withCollection(collection);\n $e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager);\n return {\n collection: collection,\n selectionManager: selectionManager,\n disabledKeys: state.disabledKeys\n };\n}\nfunction $e72dd72e1c76a225$var$useFocusedKeyReset(collection, selectionManager) {\n // Reset focused key if that item is deleted from the collection.\n const cachedCollection = (0, $d5vlZ$useRef)(null);\n (0, $d5vlZ$useEffect)(()=>{\n if (selectionManager.focusedKey != null && !collection.getItem(selectionManager.focusedKey) && cachedCollection.current) {\n const startItem = cachedCollection.current.getItem(selectionManager.focusedKey);\n const cachedItemNodes = [\n ...cachedCollection.current.getKeys()\n ].map((key)=>{\n const itemNode = cachedCollection.current.getItem(key);\n return (itemNode === null || itemNode === void 0 ? void 0 : itemNode.type) === 'item' ? itemNode : null;\n }).filter((node)=>node !== null);\n const itemNodes = [\n ...collection.getKeys()\n ].map((key)=>{\n const itemNode = collection.getItem(key);\n return (itemNode === null || itemNode === void 0 ? void 0 : itemNode.type) === 'item' ? itemNode : null;\n }).filter((node)=>node !== null);\n var _cachedItemNodes_length, _itemNodes_length;\n const diff = ((_cachedItemNodes_length = cachedItemNodes === null || cachedItemNodes === void 0 ? void 0 : cachedItemNodes.length) !== null && _cachedItemNodes_length !== void 0 ? _cachedItemNodes_length : 0) - ((_itemNodes_length = itemNodes === null || itemNodes === void 0 ? void 0 : itemNodes.length) !== null && _itemNodes_length !== void 0 ? _itemNodes_length : 0);\n var _startItem_index, _startItem_index1, _itemNodes_length1;\n let index = Math.min(diff > 1 ? Math.max(((_startItem_index = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index !== void 0 ? _startItem_index : 0) - diff + 1, 0) : (_startItem_index1 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index1 !== void 0 ? _startItem_index1 : 0, ((_itemNodes_length1 = itemNodes === null || itemNodes === void 0 ? void 0 : itemNodes.length) !== null && _itemNodes_length1 !== void 0 ? _itemNodes_length1 : 0) - 1);\n let newNode = null;\n let isReverseSearching = false;\n while(index >= 0){\n if (!selectionManager.isDisabled(itemNodes[index].key)) {\n newNode = itemNodes[index];\n break;\n }\n // Find next, not disabled item.\n if (index < itemNodes.length - 1 && !isReverseSearching) index++;\n else {\n isReverseSearching = true;\n var _startItem_index2, _startItem_index3;\n if (index > ((_startItem_index2 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index2 !== void 0 ? _startItem_index2 : 0)) index = (_startItem_index3 = startItem === null || startItem === void 0 ? void 0 : startItem.index) !== null && _startItem_index3 !== void 0 ? _startItem_index3 : 0;\n index--;\n }\n }\n selectionManager.setFocusedKey(newNode ? newNode.key : null);\n }\n cachedCollection.current = collection;\n }, [\n collection,\n selectionManager\n ]);\n}\n\n\nexport {$e72dd72e1c76a225$export$2f645645f7bca764 as useListState, $e72dd72e1c76a225$export$ba9d38c0f1bf2b36 as UNSTABLE_useFilteredListState};\n//# sourceMappingURL=useListState.module.js.map\n","import {useCallback as $hnMvi$useCallback} from \"react\";\nimport {useControlledState as $hnMvi$useControlledState} from \"@react-stately/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $fc909762b330b746$export$61c6a8c84e605fb6(props) {\n let [isOpen, setOpen] = (0, $hnMvi$useControlledState)(props.isOpen, props.defaultOpen || false, props.onOpenChange);\n const open = (0, $hnMvi$useCallback)(()=>{\n setOpen(true);\n }, [\n setOpen\n ]);\n const close = (0, $hnMvi$useCallback)(()=>{\n setOpen(false);\n }, [\n setOpen\n ]);\n const toggle = (0, $hnMvi$useCallback)(()=>{\n setOpen(!isOpen);\n }, [\n setOpen,\n isOpen\n ]);\n return {\n isOpen: isOpen,\n setOpen: setOpen,\n open: open,\n close: close,\n toggle: toggle\n };\n}\n\n\nexport {$fc909762b330b746$export$61c6a8c84e605fb6 as useOverlayTriggerState};\n//# sourceMappingURL=useOverlayTriggerState.module.js.map\n","import {useFormValidationState as $6FfNf$useFormValidationState} from \"@react-stately/form\";\nimport {useListState as $6FfNf$useListState} from \"@react-stately/list\";\nimport {useOverlayTriggerState as $6FfNf$useOverlayTriggerState} from \"@react-stately/overlays\";\nimport {useControlledState as $6FfNf$useControlledState} from \"@react-stately/utils\";\nimport {useState as $6FfNf$useState, useMemo as $6FfNf$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\n\n\n\nfunction $2bc3a590c5373a4e$export$5159ec8b34d4ec12(props) {\n let { selectionMode: selectionMode = 'single' } = props;\n let triggerState = (0, $6FfNf$useOverlayTriggerState)(props);\n let [focusStrategy, setFocusStrategy] = (0, $6FfNf$useState)(null);\n let defaultValue = (0, $6FfNf$useMemo)(()=>{\n var _props_defaultSelectedKey;\n return props.defaultValue !== undefined ? props.defaultValue : selectionMode === 'single' ? (_props_defaultSelectedKey = props.defaultSelectedKey) !== null && _props_defaultSelectedKey !== void 0 ? _props_defaultSelectedKey : null : [];\n }, [\n props.defaultValue,\n props.defaultSelectedKey,\n selectionMode\n ]);\n let value = (0, $6FfNf$useMemo)(()=>{\n return props.value !== undefined ? props.value : selectionMode === 'single' ? props.selectedKey : undefined;\n }, [\n props.value,\n props.selectedKey,\n selectionMode\n ]);\n let [controlledValue, setControlledValue] = (0, $6FfNf$useControlledState)(value, defaultValue, props.onChange);\n // Only display the first selected item if in single selection mode but the value is an array.\n let displayValue = selectionMode === 'single' && Array.isArray(controlledValue) ? controlledValue[0] : controlledValue;\n let setValue = (value)=>{\n if (selectionMode === 'single') {\n var _props_onSelectionChange;\n var _value_;\n let key = Array.isArray(value) ? (_value_ = value[0]) !== null && _value_ !== void 0 ? _value_ : null : value;\n setControlledValue(key);\n if (key !== displayValue) (_props_onSelectionChange = props.onSelectionChange) === null || _props_onSelectionChange === void 0 ? void 0 : _props_onSelectionChange.call(props, key);\n } else {\n let keys = [];\n if (Array.isArray(value)) keys = value;\n else if (value != null) keys = [\n value\n ];\n setControlledValue(keys);\n }\n };\n let listState = (0, $6FfNf$useListState)({\n ...props,\n selectionMode: selectionMode,\n disallowEmptySelection: selectionMode === 'single',\n allowDuplicateSelectionEvents: true,\n selectedKeys: (0, $6FfNf$useMemo)(()=>$2bc3a590c5373a4e$var$convertValue(displayValue), [\n displayValue\n ]),\n onSelectionChange: (keys)=>{\n // impossible, but TS doesn't know that\n if (keys === 'all') return;\n if (selectionMode === 'single') {\n var _keys_values_next_value;\n let key = (_keys_values_next_value = keys.values().next().value) !== null && _keys_values_next_value !== void 0 ? _keys_values_next_value : null;\n setValue(key);\n triggerState.close();\n } else setValue([\n ...keys\n ]);\n validationState.commitValidation();\n }\n });\n let selectedKey = listState.selectionManager.firstSelectedKey;\n let selectedItems = (0, $6FfNf$useMemo)(()=>{\n return [\n ...listState.selectionManager.selectedKeys\n ].map((key)=>listState.collection.getItem(key)).filter((item)=>item != null);\n }, [\n listState.selectionManager.selectedKeys,\n listState.collection\n ]);\n let validationState = (0, $6FfNf$useFormValidationState)({\n ...props,\n value: Array.isArray(displayValue) && displayValue.length === 0 ? null : displayValue\n });\n let [isFocused, setFocused] = (0, $6FfNf$useState)(false);\n let [initialValue] = (0, $6FfNf$useState)(displayValue);\n var _selectedItems_, _props_defaultSelectedKey;\n return {\n ...validationState,\n ...listState,\n ...triggerState,\n value: displayValue,\n defaultValue: defaultValue !== null && defaultValue !== void 0 ? defaultValue : initialValue,\n setValue: setValue,\n selectedKey: selectedKey,\n setSelectedKey: setValue,\n selectedItem: (_selectedItems_ = selectedItems[0]) !== null && _selectedItems_ !== void 0 ? _selectedItems_ : null,\n selectedItems: selectedItems,\n defaultSelectedKey: (_props_defaultSelectedKey = props.defaultSelectedKey) !== null && _props_defaultSelectedKey !== void 0 ? _props_defaultSelectedKey : props.selectionMode === 'single' ? initialValue : null,\n focusStrategy: focusStrategy,\n open (focusStrategy = null) {\n // Don't open if the collection is empty.\n if (listState.collection.size !== 0) {\n setFocusStrategy(focusStrategy);\n triggerState.open();\n }\n },\n toggle (focusStrategy = null) {\n if (listState.collection.size !== 0) {\n setFocusStrategy(focusStrategy);\n triggerState.toggle();\n }\n },\n isFocused: isFocused,\n setFocused: setFocused\n };\n}\nfunction $2bc3a590c5373a4e$var$convertValue(value) {\n if (value === undefined) return undefined;\n if (value === null) return [];\n return Array.isArray(value) ? value : [\n value\n ];\n}\n\n\nexport {$2bc3a590c5373a4e$export$5159ec8b34d4ec12 as useSelectState};\n//# sourceMappingURL=useSelectState.module.js.map\n","/**\n * Tag 标签样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const tagVariants = ['default', 'checkable'] as const\nexport const tagSizes = ['sm', 'md', 'lg'] as const\nexport const tagColors = [\n 'default',\n 'red',\n 'orange', \n 'yellow',\n 'green',\n 'lavender',\n 'lilac',\n 'carmine',\n 'rose',\n 'mint',\n 'olive',\n 'blue'\n] as const\n\nexport type TagVariant = (typeof tagVariants)[number]\nexport type TagSize = (typeof tagSizes)[number]\nexport type TagColor = (typeof tagColors)[number]\n\n// ============================================================================\n// 变体样式生成器\n// ============================================================================\n\n/**\n * 获取 Tag 变体样式\n * 优先使用 Tier 3 组件层 Token\n */\nconst getVariantStyles = (\n variant: TagVariant,\n color: TagColor,\n bordered: boolean,\n checked: boolean,\n theme: AppTheme\n) => {\n // 获取颜色 Token\n const colorToken = theme.components.tag.colors[color]\n \n // 可选择标签样式\n if (variant === 'checkable') {\n if (checked) {\n return css`\n background: ${colorToken.background.checked};\n color: ${colorToken.text.checked};\n border-color: ${colorToken.border.checked};\n \n &:hover:not(:disabled) {\n background: ${colorToken.background.checkedHover};\n border-color: ${colorToken.border.checkedHover};\n }\n \n &:active:not(:disabled) {\n background: ${colorToken.background.checkedActive};\n border-color: ${colorToken.border.checkedActive};\n }\n `\n } else {\n return css`\n background: ${colorToken.background.default};\n color: ${colorToken.text.default};\n border-color: ${colorToken.border.default};\n cursor: pointer;\n \n &:hover:not(:disabled) {\n background: ${colorToken.background.hover};\n border-color: ${colorToken.border.hover};\n }\n \n &:active:not(:disabled) {\n background: ${colorToken.background.active};\n border-color: ${colorToken.border.active};\n }\n `\n }\n }\n \n // 默认标签样式\n if (bordered) {\n return css`\n background: ${colorToken.background.default};\n color: ${colorToken.text.default};\n border-color: ${colorToken.border.default};\n `\n } else {\n return css`\n background: ${colorToken.background.default};\n color: ${colorToken.text.default};\n border-color: transparent;\n `\n }\n}\n\n/**\n * 获取 Tag 尺寸样式\n * 使用 Tier 3 组件层尺寸 Token\n */\nconst getSizeStyles = (size: TagSize, theme: AppTheme) => {\n const sizeToken = theme.components.tag.size[size]\n\n return css`\n height: ${sizeToken.height};\n font-size: ${sizeToken.fontSize};\n line-height: ${sizeToken.lineHeight};\n padding-inline: ${sizeToken.paddingInline};\n gap: ${sizeToken.gap};\n\n /* 图标尺寸 */\n svg {\n width: ${sizeToken.iconSize};\n height: ${sizeToken.iconSize};\n }\n `\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Tag 根元素\n * \n * 特性:\n * - 基于三层 Token 设计\n * - 支持多种颜色和变体\n * - 完整的交互状态(hover, active, disabled)\n * - 支持边框和无边框模式\n */\nexport const TagRoot = styled.span<{\n variant: TagVariant\n size: TagSize\n color: TagColor\n bordered: boolean\n checked: boolean\n closable: boolean\n isDisabled: boolean\n}>`\n /* 基础样式 - 使用 Tier 3 组件层 Token */\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n \n /* 字体样式 */\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-weight: ${({ theme }) => theme.components.tag.fontWeight};\n white-space: nowrap;\n \n /* 边框样式 */\n border-width: 1px;\n border-style: solid;\n border-radius: ${({ theme }) => theme.components.tag.borderRadius};\n \n /* 交互样式 */\n user-select: none;\n outline: none;\n \n /* 过渡动画 */\n transition: \n background ${({ theme }) => theme.components.tag.transition},\n border-color ${({ theme }) => theme.components.tag.transition},\n color ${({ theme }) => theme.components.tag.transition},\n opacity ${({ theme }) => theme.components.tag.transition};\n\n /* 变体和颜色样式 */\n ${({ variant, color, bordered, checked, theme }) =>\n getVariantStyles(variant, color, bordered, checked, theme)}\n\n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n\n /* 可选择标签的 cursor */\n ${({ variant, checked }) =>\n variant === 'checkable' &&\n !checked &&\n css`\n cursor: pointer;\n `}\n\n /* 禁用状态 */\n &:disabled,\n &[data-disabled='true'] {\n cursor: not-allowed;\n opacity: ${({ theme }) => theme.components.tag.disabled.opacity};\n }\n\n /* Focus 可见状态 - 键盘导航时显示 */\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.components.tag.colors.default.border.checked};\n outline-offset: 2px;\n }\n`\n\n/**\n * Tag 内容容器\n * \n * 用于布局图标和文本\n */\nexport const TagContent = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: inherit;\n`\n\n/**\n * 图标包装器\n * \n * 特性:\n * - 保持布局稳定\n * - 支持前置图标\n */\nexport const IconWrapper = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: inherit;\n`\n\n/**\n * 关闭按钮\n * \n * 使用 span 而非 button,避免在 Select 等组件中嵌套 button 导致的 HTML 错误\n * \n * 特性:\n * - 独立的交互区域\n * - hover 时显示反馈\n */\nexport const CloseButton = styled.span<{\n size: TagSize\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n \n border: none;\n background: transparent;\n padding: 0;\n margin: 0;\n cursor: pointer;\n color: inherit;\n \n transition: opacity ${({ theme }) => theme.components.tag.transition};\n \n &:hover {\n opacity: 0.7;\n }\n \n &:active {\n opacity: 0.5;\n }\n \n /* 图标尺寸 */\n svg {\n width: ${({ size, theme }) => theme.components.tag.size[size].closeIconSize};\n height: ${({ size, theme }) => theme.components.tag.size[size].closeIconSize};\n }\n`\n\n/**\n * 添加按钮(New Tag)\n * \n * 专门用于添加新标签的按钮样式\n */\nexport const AddButton = styled.button<{\n size: TagSize\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n gap: ${({ size, theme }) => theme.components.tag.size[size].gap};\n \n height: ${({ size, theme }) => theme.components.tag.size[size].height};\n padding-inline: ${({ size, theme }) => theme.components.tag.size[size].paddingInline};\n \n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: ${({ size, theme }) => theme.components.tag.size[size].fontSize};\n line-height: ${({ size, theme }) => theme.components.tag.size[size].lineHeight};\n font-weight: ${({ theme }) => theme.components.tag.fontWeight};\n color: ${({ theme }) => theme.components.tag.colors.default.text.default};\n \n background: ${({ theme }) => theme.components.tag.colors.default.background.default};\n border: 1px solid ${({ theme }) => theme.components.tag.colors.default.border.default};\n border-radius: ${({ theme }) => theme.components.tag.borderRadius};\n \n cursor: pointer;\n user-select: none;\n white-space: nowrap;\n \n transition: \n background ${({ theme }) => theme.components.tag.transition},\n border-color ${({ theme }) => theme.components.tag.transition};\n \n &:hover:not(:disabled) {\n background: ${({ theme }) => theme.components.tag.colors.default.background.hover};\n border-color: ${({ theme }) => theme.components.tag.colors.default.border.hover};\n }\n \n &:active:not(:disabled) {\n background: ${({ theme }) => theme.components.tag.colors.default.background.active};\n border-color: ${({ theme }) => theme.components.tag.colors.default.border.active};\n }\n \n &:disabled {\n cursor: not-allowed;\n opacity: ${({ theme }) => theme.components.tag.disabled.opacity};\n }\n \n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.components.tag.colors.default.border.checked};\n outline-offset: 2px;\n }\n \n svg {\n width: ${({ size, theme }) => theme.components.tag.size[size].iconSize};\n height: ${({ size, theme }) => theme.components.tag.size[size].iconSize};\n }\n`\n\n","/**\n * Tag 标签组件\n * \n * 基于 react-aria 实现无障碍访问的标签组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * // 基础用法\n * <Tag>标签</Tag>\n * \n * // 可关闭\n * <Tag closable onClose={() => console.log('closed')}>标签</Tag>\n * \n * // 带图标\n * <Tag icon={<IconOutline />}>标签</Tag>\n * \n * // 可选择\n * <Tag checkable checked onChange={(checked) => console.log(checked)}>标签</Tag>\n * \n * // 彩色标签\n * <Tag color=\"red\">红色</Tag>\n * <Tag color=\"blue\" bordered>蓝色带边框</Tag>\n * ```\n */\n\nimport { forwardRef, useRef, type ReactNode } from 'react'\nimport { useButton } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport { mergeProps } from '@react-aria/utils'\nimport { CloseOutline, PlusOutline } from '@kingsoft-ai/icons'\nimport {\n TagRoot,\n TagContent,\n IconWrapper,\n CloseButton,\n AddButton,\n type TagVariant,\n type TagSize,\n type TagColor,\n} from './Tag.style'\n\n// 导出类型供外部使用\nexport type { TagVariant, TagSize, TagColor }\n\nexport interface TagProps {\n /** 标签变体:默认 | 可选择 */\n variant?: TagVariant\n /** 标签尺寸:小号(18px) | 中号(24px) | 大号(32px) */\n size?: TagSize\n /** 标签颜色 */\n color?: TagColor\n /** 是否显示边框(仅彩色标签适用) */\n bordered?: boolean\n /** 是否可关闭 */\n closable?: boolean\n /** 是否可选择(checkable 变体) */\n checkable?: boolean\n /** 是否已选中(checkable 变体) */\n checked?: boolean\n /** 前置图标 */\n icon?: ReactNode\n /** 是否禁用 */\n disabled?: boolean\n /** 自定义类名 */\n className?: string\n /** 子元素 */\n children?: ReactNode\n /** 关闭回调 */\n onClose?: () => void\n /** 选中状态变化回调(checkable 变体) */\n onChange?: (checked: boolean) => void\n /** 点击回调 */\n onClick?: () => void\n}\n\n/**\n * Tag 标签组件\n * \n * 基于 Figma 设计规范实现的标签组件,支持多种变体、颜色和尺寸\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(\n (\n {\n variant = 'default',\n size = 'md',\n color = 'default',\n bordered = false,\n closable = false,\n checkable = false,\n checked = false,\n icon,\n disabled = false,\n className,\n children,\n onClose,\n onChange,\n onClick,\n },\n forwardedRef,\n ) => {\n // 确定实际使用的变体\n const actualVariant: TagVariant = checkable ? 'checkable' : variant\n const isChecked = checkable ? checked : false\n\n // 处理点击事件\n const handleClick = () => {\n if (disabled) return\n \n if (checkable && onChange) {\n onChange(!isChecked)\n }\n \n if (onClick) {\n onClick()\n }\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (disabled) return\n\n if (actualVariant === 'checkable' && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n handleClick()\n }\n }\n\n // 处理关闭事件\n const handleClose = (e: React.MouseEvent) => {\n e.stopPropagation() // 防止触发标签的点击事件\n if (onClose && !disabled) {\n onClose()\n }\n }\n\n return (\n <TagRoot\n ref={forwardedRef}\n variant={actualVariant}\n size={size}\n color={color}\n bordered={bordered}\n checked={isChecked}\n closable={closable}\n isDisabled={disabled}\n className={className}\n onClick={actualVariant === 'checkable' ? handleClick : onClick}\n onKeyDown={handleKeyDown}\n data-variant={actualVariant}\n data-size={size}\n data-color={color}\n data-checked={isChecked ? 'true' : undefined}\n data-disabled={disabled ? 'true' : undefined}\n tabIndex={actualVariant === 'checkable' && !disabled ? 0 : undefined}\n role={actualVariant === 'checkable' ? 'checkbox' : undefined}\n aria-checked={actualVariant === 'checkable' ? isChecked : undefined}\n aria-disabled={disabled}\n >\n <TagContent>\n {/* 前置图标 */}\n {icon && (\n <IconWrapper aria-hidden=\"true\">\n {icon}\n </IconWrapper>\n )}\n\n {/* 标签文本 */}\n {children}\n\n {/* 关闭按钮 */}\n {closable && (\n <CloseButton\n size={size}\n onClick={handleClose}\n aria-label=\"关闭\"\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n handleClose(e as any)\n }\n }}\n aria-disabled={disabled}\n >\n <CloseOutline />\n </CloseButton>\n )}\n </TagContent>\n </TagRoot>\n )\n },\n)\n\nTag.displayName = 'Tag'\n\n// ============================================================================\n// 复合组件:Tag.Add\n// ============================================================================\n\nexport interface TagAddProps extends Omit<AriaButtonProps, 'elementType'> {\n /** 标签尺寸 */\n size?: TagSize\n /** 自定义类名 */\n className?: string\n /** 子元素 */\n children?: ReactNode\n}\n\n/**\n * Tag.Add 添加标签按钮\n * \n * 用于添加新标签的按钮组件\n */\nexport const TagAdd = forwardRef<HTMLButtonElement, TagAddProps>(\n ({ size = 'md', className, children = 'New Tag', ...ariaProps }, forwardedRef) => {\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef || innerRef\n\n const { buttonProps } = useButton(\n {\n ...ariaProps,\n elementType: 'button',\n },\n innerRef,\n )\n\n return (\n <AddButton\n {...mergeProps(buttonProps, {\n ref,\n className,\n })}\n size={size}\n data-size={size}\n >\n <PlusOutline />\n {children}\n </AddButton>\n )\n },\n)\n\nTagAdd.displayName = 'Tag.Add'\n\n// 将 Add 作为 Tag 的静态属性\n;(Tag as any).Add = TagAdd\n\n","/**\n * Select 样式组件\n * \n * 基于三层 Token 体系\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\nexport const selectSizes = ['sm', 'md', 'lg'] as const\nexport type SelectSize = (typeof selectSizes)[number]\n\n// ============================================================================\n// 样式辅助函数\n// ============================================================================\n\nconst getBorderColor = (\n isFocused: boolean,\n isError: boolean,\n isDisabled: boolean,\n isHovered: boolean,\n theme: AppTheme\n) => {\n if (isDisabled) return theme.components.select.border.disabled\n if (isError) return theme.components.select.border.error\n if (isFocused) return theme.components.select.border.focus\n if (isHovered) return theme.components.select.border.hover\n return theme.components.select.border.default\n}\n\nconst getSizeStyles = (size: SelectSize, isMultiple: boolean, theme: AppTheme) => {\n const sizeToken = theme.components.select.size[size]\n\n return css`\n ${isMultiple ? `min-height: ${sizeToken.height};` : `height: ${sizeToken.height};`}\n font-size: ${sizeToken.fontSize};\n padding-inline: ${sizeToken.paddingInline};\n ${isMultiple ? 'padding-block: 4px;' : ''}\n\n svg {\n /* No global svg sizing here to avoid affecting Tag icons */\n }\n `\n}\n\n// ============================================================================\n// Select Trigger Styles\n// ============================================================================\n\nexport const SelectWrapper = styled.div<{ fullWidth?: boolean }>`\n display: ${({ fullWidth }) => (fullWidth ? 'flex' : 'inline-flex')};\n flex-direction: column;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : '200px')};\n min-width: 120px;\n position: relative;\n box-sizing: border-box;\n`\n\nexport const SelectTrigger = styled.button<{\n size: SelectSize\n fullWidth?: boolean\n isFocused?: boolean\n isError?: boolean\n isDisabled?: boolean\n isHovered?: boolean\n isOpen?: boolean\n isMultiple?: boolean\n}>`\n /* 基础重置 */\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n \n /* 样式 */\n border: 1px solid;\n border-color: ${({ isFocused, isError, isDisabled, isHovered, isOpen, theme }) =>\n getBorderColor(isFocused || !!isOpen, !!isError, !!isDisabled, !!isHovered, theme)};\n border-radius: ${({ theme }) => theme.components.select.borderRadius};\n \n background: ${({ isDisabled, theme }) =>\n isDisabled\n ? theme.components.select.background.disabled\n : theme.components.select.background.default};\n \n color: ${({ isDisabled, isError, theme }) => {\n if (isDisabled) return theme.components.select.text.disabled\n if (isError) return theme.components.select.text.error\n return theme.components.select.text.default\n }};\n\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n outline: none;\n \n transition: all ${({ theme }) => theme.components.select.transition};\n\n /* 尺寸 */\n ${({ size, isMultiple, theme }) => getSizeStyles(size, !!isMultiple, theme)}\n \n /* 禁用状态 */\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n opacity: 0.6;\n `}\n`\n\nexport const SelectValue = styled.span<{ isPlaceholder?: boolean }>`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n margin-right: 8px;\n color: ${({ isPlaceholder, theme }) => \n isPlaceholder ? theme.components.select.text.placeholder : 'inherit'};\n`\n\nexport const SelectIcon = styled.span<{ isOpen?: boolean; size?: SelectSize }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n align-self: center;\n flex-shrink: 0;\n transition: transform 0.2s ease;\n transform: ${({ isOpen }) => (isOpen ? 'rotate(180deg)' : 'rotate(0deg)')};\n color: inherit;\n opacity: 0.5;\n \n svg {\n width: ${({ size, theme }) => size ? theme.components.select.size[size].iconSize : '16px'};\n height: ${({ size, theme }) => size ? theme.components.select.size[size].iconSize : '16px'};\n }\n`\n\n// ============================================================================\n// Popover/ListBox Styles\n// ============================================================================\n\nexport const ListBoxPopup = styled.div`\n background: ${({ theme }) => theme.components.select.popover.background};\n border: ${({ theme }) => theme.components.select.popover.border};\n border-radius: ${({ theme }) => theme.components.select.popover.borderRadius};\n box-shadow: ${({ theme }) => theme.components.select.popover.boxShadow};\n padding: ${({ theme }) => theme.components.select.popover.padding};\n overflow: hidden;\n min-width: 100%;\n max-height: 300px;\n display: flex;\n flex-direction: column;\n`\n\nexport const ListBoxContent = styled.ul`\n margin: 0;\n padding: 0;\n list-style: none;\n overflow-y: auto;\n outline: none;\n flex: 1;\n\n /* Scrollbar styling if needed */\n &::-webkit-scrollbar {\n width: 4px;\n }\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background: rgba(0,0,0,0.2);\n border-radius: 4px;\n }\n`\n\nexport const OptionItem = styled.li<{\n isSelected?: boolean\n isFocused?: boolean\n isDisabled?: boolean\n}>`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: ${({ theme }) => theme.components.select.option.height};\n padding-inline: ${({ theme }) => theme.components.select.option.paddingInline};\n margin-bottom: 2px;\n border-radius: ${({ theme }) => theme.components.select.option.borderRadius};\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n outline: none;\n user-select: none;\n font-size: ${({ theme }) => theme.components.select.option.fontSize};\n \n background: ${({ isSelected, isFocused, theme }) => {\n if (isSelected) return theme.components.select.option.background.selected\n if (isFocused) return theme.components.select.option.background.focused\n return theme.components.select.option.background.default\n }};\n \n color: ${({ isSelected, isDisabled, theme }) => {\n if (isDisabled) return theme.components.select.option.text.disabled\n if (isSelected) return theme.components.select.option.text.selected\n return theme.components.select.option.text.default\n }};\n\n &:hover {\n background: ${({ isSelected, isDisabled, theme }) => {\n if (isDisabled) return 'transparent'\n if (isSelected) return theme.components.select.option.background.selected\n return theme.components.select.option.background.hover\n }};\n }\n\n &:last-child {\n margin-bottom: 0;\n }\n`\n\nexport const OptionText = styled.span`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\nexport const OptionIcon = styled.span`\n margin-left: 8px;\n display: flex;\n align-items: center;\n color: ${({ theme }) => theme.components.select.option.text.selected};\n font-size: 14px;\n`\n\nexport const LoadingWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px;\n color: ${({ theme }) => theme.components.select.text.placeholder};\n font-size: ${({ theme }) => theme.global.typography.fontSize.xs};\n`\n\nexport const EmptyState = styled.div`\n padding: 8px 12px;\n color: ${({ theme }) => theme.components.select.text.disabled};\n font-size: ${({ theme }) => theme.global.typography.fontSize.xs};\n text-align: center;\n`\n\n// ============================================================================\n// Multiple Select Styles\n// ============================================================================\n\nexport const TagsContainer = styled.div`\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n align-items: center;\n min-height: 22px;\n padding-right: 4px;\n`\n\nexport const CheckboxWrapper = styled.span`\n display: inline-flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n pointer-events: none;\n`\n\n","import { useRef, useLayoutEffect, useState, useEffect, type ReactNode, type RefObject } from 'react'\nimport { useOverlay, Overlay, useOverlayPosition, type AriaPopoverProps, FocusScope, DismissButton } from 'react-aria'\nimport { ListBoxPopup } from './Select.style'\n\ninterface PopoverProps extends Omit<AriaPopoverProps, 'popoverRef'> {\n children: ReactNode\n state: any\n triggerRef: RefObject<Element>\n className?: string\n}\n\nexport function Popover({ children, state, offset = 4, triggerRef, placement = 'bottom start', ...props }: PopoverProps) {\n const popoverRef = useRef<HTMLDivElement>(null)\n const [triggerWidth, setTriggerWidth] = useState<number | undefined>(undefined)\n \n // 使用 useLayoutEffect 确保在渲染前获取正确的宽度\n useLayoutEffect(() => {\n if (triggerRef.current) {\n setTriggerWidth(triggerRef.current.getBoundingClientRect().width)\n }\n }, [triggerRef, state.isOpen])\n\n const { overlayProps: overlayPropsFromUseOverlay } = useOverlay(\n {\n ...props,\n shouldCloseOnBlur: false, // 禁用默认的 blur 关闭,使用自定义逻辑\n isDismissable: true,\n onClose: state.close\n },\n popoverRef\n )\n\n const { overlayProps, placement: resolvedPlacement } = useOverlayPosition({\n targetRef: triggerRef,\n overlayRef: popoverRef,\n placement,\n offset,\n isOpen: state.isOpen,\n onClose: state.close\n })\n\n // 全局事件监听:点击外部和焦点移出\n useEffect(() => {\n if (!state.isOpen) return\n\n const onInteractOutside = (event: Event) => {\n const target = event.target as Node\n const popover = popoverRef.current\n const trigger = triggerRef.current\n\n // 如果交互目标既不在弹窗内部也不是触发器,则关闭\n if (\n popover && \n !popover.contains(target) && \n trigger && \n !trigger.contains(target)\n ) {\n state.close()\n }\n }\n\n // mousedown 处理点击外部\n document.addEventListener('mousedown', onInteractOutside)\n // focusin 处理 Tab 键焦点移出 (focusin 支持冒泡,focus 不支持)\n document.addEventListener('focusin', onInteractOutside)\n\n return () => {\n document.removeEventListener('mousedown', onInteractOutside)\n document.removeEventListener('focusin', onInteractOutside)\n }\n }, [state.isOpen, state.close, triggerRef])\n\n return (\n <Overlay>\n <FocusScope restoreFocus>\n <ListBoxPopup\n {...overlayPropsFromUseOverlay}\n {...overlayProps}\n ref={popoverRef}\n data-placement={resolvedPlacement}\n style={{\n ...overlayProps.style,\n zIndex: 10000,\n width: triggerWidth ? `${triggerWidth}px` : 'auto',\n minWidth: triggerWidth ? `${triggerWidth}px` : '120px',\n }}\n >\n <DismissButton onDismiss={state.close} />\n {children}\n <DismissButton onDismiss={state.close} />\n </ListBoxPopup>\n </FocusScope>\n </Overlay>\n )\n}\n","import { useRef } from 'react'\nimport { useListBox, useOption, type AriaListBoxProps } from 'react-aria'\nimport { ListBoxContent, OptionItem, OptionText, OptionIcon, CheckboxWrapper } from './Select.style'\nimport { Checkbox } from '../checkbox'\nimport type { ListState } from '@react-stately/list'\nimport type { Node } from '@react-types/shared'\n\ninterface ListBoxProps extends Omit<AriaListBoxProps<unknown>, 'children'> {\n state: ListState<unknown>\n}\n\nexport function ListBox({ state, ...props }: ListBoxProps) {\n const ref = useRef<HTMLUListElement>(null)\n const { listBoxProps } = useListBox(props, state, ref)\n\n return (\n <ListBoxContent {...listBoxProps} ref={ref}>\n {[...state.collection].map((item) => (\n <Option key={item.key} item={item} state={state} />\n ))}\n </ListBoxContent>\n )\n}\n\ninterface OptionProps {\n item: Node<unknown>\n state: ListState<unknown>\n isMultiple?: boolean\n}\n\nfunction Option({ item, state, isMultiple }: OptionProps) {\n const ref = useRef<HTMLLIElement>(null)\n const { optionProps, isSelected, isFocused, isDisabled } = useOption(\n { key: item.key },\n state,\n ref\n )\n\n return (\n <OptionItem\n {...optionProps}\n ref={ref}\n isSelected={isSelected}\n isFocused={isFocused}\n isDisabled={isDisabled}\n >\n {isMultiple && (\n <CheckboxWrapper aria-hidden=\"true\" onClick={(e) => e.stopPropagation()}>\n <Checkbox checked={isSelected} disabled={isDisabled} tabIndex={-1} />\n </CheckboxWrapper>\n )}\n <OptionText>{item.rendered}</OptionText>\n {!isMultiple && isSelected && (\n <OptionIcon aria-hidden=\"true\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </OptionIcon>\n )}\n </OptionItem>\n )\n}\n\n// 多选模式 ListBox\ninterface MultiListBoxProps {\n state: ListState<unknown>\n}\n\nexport function MultiListBox({ state }: MultiListBoxProps) {\n const ref = useRef<HTMLUListElement>(null)\n const { listBoxProps } = useListBox(\n { selectionMode: 'multiple' },\n state,\n ref\n )\n\n return (\n <ListBoxContent {...listBoxProps} ref={ref}>\n {[...state.collection].map((item) => (\n <Option key={item.key} item={item} state={state} isMultiple />\n ))}\n </ListBoxContent>\n )\n}\n\n","import React, { forwardRef, useRef, useMemo, useState } from 'react'\nimport { useSelectState } from '@react-stately/select'\nimport { useListState } from '@react-stately/list'\nimport { useSelect, useButton, HiddenSelect, type AriaSelectProps } from 'react-aria'\nimport { Item, Section } from '@react-stately/collections'\nimport { focusWithoutScrolling } from '@react-aria/utils'\nimport type { PressEvent, Selection as SelectionType, Key } from '@react-types/shared'\n\n// Re-export Selection type for external use\nexport type { Selection } from '@react-types/shared'\nimport { ChevronDownOutline } from '@kingsoft-ai/icons'\nimport { Tag } from '../tag'\nimport { SelectTrigger, SelectValue, SelectIcon, LoadingWrapper, TagsContainer, SelectWrapper } from './Select.style'\nimport { Popover } from './Popover'\nimport { ListBox, MultiListBox } from './ListBox'\nimport type { SelectSize } from './Select.style'\n\nexport type SelectionMode = 'single' | 'multiple'\n\n/**\n * 选项类型定义\n * 推荐使用 options 属性传入选项数据\n */\nexport interface SelectOptionType {\n /** 选项值,作为唯一标识 */\n value: string | number\n /** 选项显示文本 */\n label: React.ReactNode\n /** 是否禁用该选项 */\n disabled?: boolean\n}\n\nexport interface SelectProps<T> extends Omit<AriaSelectProps<T>, 'errorMessage' | 'selectedKey' | 'defaultSelectedKey' | 'onSelectionChange' | 'selectionMode' | 'children' | 'isDisabled' | 'value' | 'defaultValue' | 'onChange'> {\n /** 选择模式:single 单选 | multiple 多选 */\n selectionMode?: SelectionMode\n /** 是否正在加载 */\n loading?: boolean\n /** 是否禁用 */\n disabled?: boolean\n /** 尺寸 */\n size?: SelectSize\n /** 是否全宽 */\n fullWidth?: boolean\n /** 宽度 */\n width?: string | number\n /** 自定义类名 */\n className?: string\n /** 自定义样式 */\n style?: React.CSSProperties\n /** 占位符 */\n placeholder?: string\n /** 错误信息 */\n errorMessage?: React.ReactNode\n /** 多选时最大展示的 Tag 数量 */\n maxTagCount?: number\n /** 受控值(统一 API,单选时为 Key,多选时为 Iterable<Key>,优先级高于 selectedKey/selectedKeys) */\n value?: React.Key | null | Iterable<React.Key>\n /** 默认值(统一 API,单选时为 Key,多选时为 Iterable<Key>,优先级高于 defaultSelectedKey/defaultSelectedKeys) */\n defaultValue?: React.Key | Iterable<React.Key>\n /** 值变化回调(统一 API,优先级高于 onSelectionChange) */\n onChange?: (value: SelectionType) => void\n /** 单选时选中的 key(兼容旧 API) */\n selectedKey?: React.Key | null\n /** 单选时默认选中的 key(兼容旧 API) */\n defaultSelectedKey?: React.Key\n /** 多选时选中的 keys(兼容旧 API) */\n selectedKeys?: Iterable<React.Key>\n /** 多选时默认选中的 keys(兼容旧 API) */\n defaultSelectedKeys?: Iterable<React.Key>\n /** 选择变化回调(兼容旧 API,单选返回 key,多选返回 Set) */\n onSelectionChange?: (keys: SelectionType) => void\n /**\n * 选项数据(推荐使用)\n * \n * 提供 options 时会自动渲染选项列表,无需手动编写 <Select.Item>\n * \n * @example\n * ```tsx\n * <Select\n * options={[\n * { value: 'apple', label: '苹果' },\n * { value: 'banana', label: '香蕉' },\n * { value: 'orange', label: '橙子', disabled: true },\n * ]}\n * />\n * ```\n */\n options?: SelectOptionType[]\n /**\n * 子元素(手动编写选项时使用)\n * \n * 推荐使用 options 属性代替 children\n * \n * @example\n * ```tsx\n * <Select>\n * <Select.Item key=\"apple\">苹果</Select.Item>\n * <Select.Item key=\"banana\">香蕉</Select.Item>\n * </Select>\n * ```\n */\n children?: React.ReactNode\n}\n\n// 内部使用的 Select 组件\nconst SelectInner = forwardRef(function Select<T extends object>(\n props: SelectProps<T>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n selectionMode = 'single',\n loading,\n disabled,\n size = 'md',\n fullWidth = false,\n width,\n className,\n style,\n placeholder = '请选择',\n label,\n description,\n errorMessage,\n maxTagCount,\n // 新统一 API\n value,\n defaultValue,\n onChange,\n // 旧兼容 API\n selectedKey,\n defaultSelectedKey,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n options,\n children,\n } = props\n\n const isMultiple = selectionMode === 'multiple'\n\n // 统一处理受控值:value 优先于 selectedKey/selectedKeys\n const finalSelectedKey = isMultiple ? undefined : (value as React.Key | null | undefined) ?? selectedKey\n const finalSelectedKeys = isMultiple ? (value as Iterable<React.Key> | undefined) ?? selectedKeys : undefined\n \n // 统一处理默认值:defaultValue 优先于 defaultSelectedKey/defaultSelectedKeys\n const finalDefaultSelectedKey = isMultiple ? undefined : (defaultValue as React.Key | undefined) ?? defaultSelectedKey\n const finalDefaultSelectedKeys = isMultiple ? (defaultValue as Iterable<React.Key> | undefined) ?? defaultSelectedKeys : undefined\n\n // 统一处理回调:onChange 和 onSelectionChange 都会被调用\n const handleSelectionChange = (keys: SelectionType) => {\n onChange?.(keys)\n onSelectionChange?.(keys)\n }\n\n // 根据 options 或 children 生成内容\n const renderItems = useMemo(() => {\n if (options && options.length > 0) {\n return options.map((option) => (\n <Item key={option.value} textValue={typeof option.label === 'string' ? option.label : String(option.value)}>\n {option.label}\n </Item>\n ))\n }\n return children\n }, [options, children])\n\n // 合并 props,将 children 替换为实际渲染内容,并使用统一后的属性\n const mergedProps = {\n ...props,\n children: renderItems,\n selectedKey: finalSelectedKey,\n defaultSelectedKey: finalDefaultSelectedKey,\n onSelectionChange: handleSelectionChange,\n }\n\n const innerRef = useRef<HTMLButtonElement>(null)\n const triggerRef = (ref as React.RefObject<HTMLButtonElement>) || innerRef\n const lastPointerTypeRef = useRef<PressEvent['pointerType'] | null>(null)\n\n // 单选模式状态\n const singleState = useSelectState(mergedProps as any)\n \n // 多选模式状态\n const multiState = useListState({\n ...mergedProps,\n selectionMode: 'multiple',\n selectedKeys: finalSelectedKeys,\n defaultSelectedKeys: finalDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n } as any)\n \n // 多选时的打开状态需要单独管理\n const [multiOpen, setMultiOpen] = useState(false)\n const effectiveOpen = isMultiple ? multiOpen : singleState.isOpen\n\n // 获取选中项用于渲染 Tags\n const selectedItems = useMemo(() => {\n if (!isMultiple) return []\n const items: Array<{ key: Key; rendered: React.ReactNode }> = []\n const selectedKeySet = multiState.selectionManager.selectedKeys\n for (const item of multiState.collection) {\n if (selectedKeySet.has(item.key)) {\n items.push({ key: item.key, rendered: item.rendered })\n }\n }\n return items\n }, [isMultiple, multiState.selectionManager.selectedKeys, multiState.collection])\n\n // 计算要展示的 Tags\n const { visibleTags, overflowCount } = useMemo(() => {\n if (!isMultiple || selectedItems.length === 0) {\n return { visibleTags: [], overflowCount: 0 }\n }\n if (maxTagCount !== undefined && selectedItems.length > maxTagCount) {\n return {\n visibleTags: selectedItems.slice(0, maxTagCount),\n overflowCount: selectedItems.length - maxTagCount,\n }\n }\n return { visibleTags: selectedItems, overflowCount: 0 }\n }, [isMultiple, selectedItems, maxTagCount])\n\n // 单选模式的 hooks\n const {\n labelProps,\n triggerProps,\n valueProps,\n menuProps,\n descriptionProps,\n errorMessageProps\n } = useSelect(mergedProps as any, singleState, triggerRef)\n\n const handlePressStart = (event: PressEvent) => {\n lastPointerTypeRef.current = event.pointerType\n if (event.pointerType !== 'touch' && event.pointerType !== 'keyboard' && triggerRef.current) {\n focusWithoutScrolling(triggerRef.current)\n }\n }\n\n const handlePress = (event: PressEvent) => {\n const pointerType = event.pointerType || lastPointerTypeRef.current\n if (pointerType === 'keyboard') return\n\n if (isMultiple) {\n setMultiOpen(!multiOpen)\n } else {\n const focusStrategy = pointerType === 'mouse' || pointerType === 'pen' ? null : 'first'\n singleState.toggle(focusStrategy)\n }\n }\n\n const { buttonProps } = useButton(\n {\n ...triggerProps,\n onPressStart: handlePressStart,\n onPress: handlePress\n },\n triggerRef\n )\n\n // 移除 Tag\n const handleRemoveTag = (key: Key) => {\n const newKeys = new Set(multiState.selectionManager.selectedKeys)\n newKeys.delete(key)\n multiState.selectionManager.setSelectedKeys(newKeys)\n handleSelectionChange(newKeys)\n }\n\n // 渲染触发器内容\n const renderTriggerContent = () => {\n if (isMultiple) {\n if (selectedItems.length === 0) {\n return <SelectValue isPlaceholder>{placeholder}</SelectValue>\n }\n return (\n <TagsContainer>\n {visibleTags.map((item) => (\n <Tag\n key={item.key}\n size=\"sm\"\n closable\n onClose={() => handleRemoveTag(item.key)}\n >\n {item.rendered}\n </Tag>\n ))}\n {overflowCount > 0 && <Tag size=\"sm\">+{overflowCount}</Tag>}\n </TagsContainer>\n )\n }\n return (\n <SelectValue {...valueProps} isPlaceholder={!singleState.selectedItem}>\n {singleState.selectedItem ? singleState.selectedItem.rendered : placeholder}\n </SelectValue>\n )\n }\n\n const popoverState = isMultiple \n ? { isOpen: multiOpen, close: () => setMultiOpen(false) }\n : singleState\n\n return (\n <SelectWrapper\n fullWidth={fullWidth}\n className={className}\n style={{\n width: width,\n ...style\n }}\n >\n {label && (\n <label \n {...labelProps} \n style={{ \n fontSize: '12px', \n marginBottom: '4px', \n display: 'block',\n color: 'inherit'\n }}\n >\n {label}\n </label>\n )}\n \n {!isMultiple && (\n <HiddenSelect\n state={singleState}\n triggerRef={triggerRef}\n label={label}\n name={props.name}\n isDisabled={disabled}\n />\n )}\n\n <SelectTrigger\n {...buttonProps}\n ref={triggerRef}\n size={size}\n fullWidth={fullWidth}\n isOpen={effectiveOpen}\n isDisabled={disabled}\n isError={!!errorMessage}\n isMultiple={isMultiple}\n >\n {renderTriggerContent()}\n <SelectIcon isOpen={effectiveOpen} aria-hidden=\"true\" size={size}>\n <ChevronDownOutline width={12} height={12} />\n </SelectIcon>\n </SelectTrigger>\n\n {effectiveOpen && (\n <Popover state={popoverState} triggerRef={triggerRef} placement=\"bottom start\" offset={4}>\n {loading ? (\n <LoadingWrapper>\n <svg \n width=\"16\" \n height=\"16\" \n viewBox=\"0 0 16 16\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ animation: 'spin 1s linear infinite', marginRight: 8 }}\n >\n <style>{`@keyframes spin { 100% { transform: rotate(360deg); } }`}</style>\n <path d=\"M8 1.5C4.41015 1.5 1.5 4.41015 1.5 8C1.5 11.5899 4.41015 14.5 8 14.5C11.5899 14.5 14.5 11.5899 14.5 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\"/>\n </svg>\n 加载中...\n </LoadingWrapper>\n ) : isMultiple ? (\n <MultiListBox state={multiState} />\n ) : (\n <ListBox {...menuProps} state={singleState} />\n )}\n </Popover>\n )}\n \n {/* Description & Error Message */}\n {description && (\n <div {...descriptionProps} style={{ fontSize: '12px', marginTop: '4px', opacity: 0.6 }}>\n {description}\n </div>\n )}\n {errorMessage && (\n <div {...errorMessageProps} style={{ fontSize: '12px', marginTop: '4px', color: '#ff4d4f' }}>\n {errorMessage}\n </div>\n )}\n </SelectWrapper>\n )\n}) as <T extends object>(props: SelectProps<T> & { ref?: React.Ref<HTMLButtonElement> }) => React.ReactElement\n\n// 为 Select 组件添加静态属性类型\ninterface SelectComponent {\n <T extends object>(props: SelectProps<T> & { ref?: React.Ref<HTMLButtonElement> }): React.ReactElement\n /**\n * 选项组件\n * \n * @example\n * ```tsx\n * <Select>\n * <Select.Item key=\"apple\">苹果</Select.Item>\n * <Select.Item key=\"banana\">香蕉</Select.Item>\n * </Select>\n * ```\n */\n Item: typeof Item\n /**\n * 分组组件\n * \n * @example\n * ```tsx\n * <Select>\n * <Select.Section title=\"水果\">\n * <Select.Item key=\"apple\">苹果</Select.Item>\n * </Select.Section>\n * </Select>\n * ```\n */\n Section: typeof Section\n}\n\n/**\n * Select 选择器组件\n * \n * 基于 react-aria 实现的无障碍选择器\n * 支持单选和多选模式\n * \n * @example 使用 options(推荐)\n * ```tsx\n * <Select\n * options={[\n * { value: 'apple', label: '苹果' },\n * { value: 'banana', label: '香蕉' },\n * ]}\n * onSelectionChange={(key) => console.log(key)}\n * />\n * ```\n * \n * @example 使用 Select.Item\n * ```tsx\n * const { Item } = Select\n * \n * <Select>\n * <Item key=\"apple\">苹果</Item>\n * <Item key=\"banana\">香蕉</Item>\n * </Select>\n * ```\n */\nexport const Select = SelectInner as SelectComponent\n\n// 挂载静态属性\nSelect.Item = Item\nSelect.Section = Section\n","/**\n * Table 样式定义\n * \n * 基于 Figma 设计稿的表格样式实现\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const tableSizes = ['sm', 'md', 'lg'] as const\nexport type TableSize = (typeof tableSizes)[number]\n\nexport const tableVariants = ['default', 'bordered', 'striped'] as const\nexport type TableVariant = (typeof tableVariants)[number]\n\nconst tableBorderRadiusMap: Record<TableSize, number> = {\n sm: 4,\n md: 4,\n lg: 6,\n}\n\nconst getTableRadius = (size?: TableSize) => `${tableBorderRadiusMap[size ?? 'md']}px`\n\n// ============================================================================\n// 容器样式\n// ============================================================================\n\nexport const TableContainer = styled.div<{\n size?: TableSize\n fullWidth?: boolean\n scrollX?: number | string\n scrollY?: number | string\n showScrollbar?: boolean\n}>`\n width: ${props => props.fullWidth ? '100%' : 'auto'};\n overflow: auto;\n /* 移除边框,设计稿中表格没有外围边框 */\n scrollbar-width: ${props => props.showScrollbar ? 'thin' : 'none'};\n scrollbar-color: ${({ theme }) => (theme as AppTheme).semantic.colors.border.primary} transparent;\n border-top-left-radius: ${props => getTableRadius(props.size)};\n border-top-right-radius: ${props => getTableRadius(props.size)};\n \n &::-webkit-scrollbar {\n width: ${props => props.showScrollbar ? '8px' : '0px'};\n height: ${props => props.showScrollbar ? '8px' : '0px'};\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: ${({ theme }) => (theme as AppTheme).semantic.colors.border.primary};\n border-radius: 999px;\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n \n ${props => props.scrollX && css`\n max-width: ${typeof props.scrollX === 'number' ? `${props.scrollX}px` : props.scrollX};\n `}\n \n ${props => props.scrollY && css`\n max-height: ${typeof props.scrollY === 'number' ? `${props.scrollY}px` : props.scrollY};\n `}\n`\n\n// ============================================================================\n// Table 根元素\n// ============================================================================\n\nexport const StyledTable = styled.table<{\n size?: TableSize\n variant?: TableVariant\n scrollX?: number | string\n}>`\n width: 100%;\n ${props => props.scrollX && css`\n min-width: ${typeof props.scrollX === 'number' ? `${props.scrollX}px` : props.scrollX};\n `}\n border-collapse: separate;\n border-spacing: 0;\n /* 调整基础字体为 12px */\n font-family: ${({ theme }) => (theme as AppTheme).semantic.typography.component.fontSizeSm};\n background-color: ${({ theme }) => (theme as AppTheme).semantic.colors.background.surface};\n \n ${props => props.variant === 'bordered' && css`\n border: 1px solid ${(props.theme as AppTheme).semantic.colors.border.primary};\n border-radius: ${getTableRadius(props.size)} ${getTableRadius(props.size)} 0 0;\n `}\n\n ${props => props.variant === 'striped' && css`\n tbody tr:nth-of-type(even) {\n --row-bg: ${(props.theme as AppTheme).semantic.colors.background.surfaceSubtle};\n }\n `}\n`\n\n// ============================================================================\n// 表头样式\n// ============================================================================\n\nexport const TableHeader = styled.thead`\n background-color: ${({ theme }) => (theme as AppTheme).semantic.colors.background.surfaceSubtle};\n position: sticky;\n top: 0;\n z-index: 10;\n`\n\nexport const TableHeaderRow = styled.tr`\n border-bottom: 1px solid ${({ theme }) => (theme as AppTheme).semantic.colors.border.primary};\n`\n\nexport const TableHeaderCell = styled.th<{\n size?: TableSize\n sortable?: boolean\n fixed?: 'left' | 'right'\n align?: 'left' | 'center' | 'right'\n width?: number | string\n}>`\n padding: ${props => {\n switch (props.size) {\n case 'sm': return '8px 12px'\n case 'lg': return '16px 16px'\n case 'md':\n default: return '12px 16px'\n }\n }};\n text-align: ${props => props.align || 'left'};\n font-weight: 400; /* Regular font weight based on design (H9/H11) */\n font-size: 12px; /* Explicitly 12px based on design */\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.caption}; /* Use caption color for headers */\n white-space: nowrap;\n user-select: none;\n position: ${props => props.fixed ? 'sticky' : 'static'};\n background-color: ${({ theme }) => (theme as AppTheme).semantic.colors.background.surfaceSubtle};\n \n ${props => props.width && css`\n width: ${typeof props.width === 'number' ? `${props.width}px` : props.width};\n `}\n\n ${props => props.fixed === 'left' && css`\n left: 0;\n z-index: 11;\n /* 调整固定列阴影,使其更柔和 */\n box-shadow: 4px 0 8px -4px rgba(0, 0, 0, 0.1);\n `}\n\n ${props => props.fixed === 'right' && css`\n right: 0;\n z-index: 11;\n box-shadow: -4px 0 8px -4px rgba(0, 0, 0, 0.1);\n `}\n\n ${props => props.sortable && css`\n cursor: pointer;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${(props.theme as AppTheme).semantic.colors.background.surfaceStrong};\n }\n `}\n\n &:first-of-type {\n border-top-left-radius: ${props => getTableRadius(props.size)};\n }\n\n &:last-of-type {\n border-top-right-radius: ${props => getTableRadius(props.size)};\n }\n`\n\nexport const SortIndicator = styled.span<{ direction?: 'asc' | 'desc' | null }>`\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin-left: 4px;\n line-height: 1;\n gap: 2px;\n\n svg {\n width: 12px;\n height: 12px;\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.disabled};\n transition: color 0.2s ease, opacity 0.2s ease;\n opacity: 0.4;\n }\n\n svg[data-active='true'] {\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.brand.primary};\n opacity: 1;\n }\n`\n\n// ============================================================================\n// 表体样式\n// ============================================================================\n\nexport const TableBody = styled.tbody``\n\nexport const TableRow = styled.tr<{\n selectable?: boolean\n selected?: boolean\n expandable?: boolean\n expanded?: boolean\n isSubRow?: boolean\n level?: number\n}>`\n /* 定义背景色变量,用于同步固定列的背景 */\n --row-bg: ${({ theme }) => (theme as AppTheme).semantic.colors.background.surface};\n\n ${props => props.isSubRow && css`\n --row-bg: ${(props.theme as AppTheme).semantic.colors.background.surfaceSubtle};\n `}\n\n ${props => props.selected && css`\n --row-bg: ${(props.theme as AppTheme).semantic.colors.brand.primarySubtle};\n `}\n\n background-color: var(--row-bg);\n transition: background-color 0.15s ease;\n\n /* 将边框移动到单元格上,确保在 separate 模式下显示且连续 */\n & > td {\n border-bottom: 1px solid ${({ theme }) => (theme as AppTheme).semantic.colors.border.primary};\n }\n\n &:last-of-type > td {\n border-bottom: none;\n }\n\n ${props => (props.selectable || props.expandable) && css`\n cursor: pointer;\n `}\n\n ${props => css`\n &:hover {\n --row-bg: ${props.selected\n ? ((props.theme as AppTheme).semantic.colors.brand.primarySubtle)\n : ((props.theme as AppTheme).semantic.colors.background.surfaceSubtle)};\n }\n\n &:active {\n --row-bg: ${props.selected\n ? ((props.theme as AppTheme).semantic.colors.brand.primarySubtle)\n : ((props.theme as AppTheme).semantic.colors.background.surfaceStrong)};\n }\n `}\n`\n\nexport const TableCell = styled.td<{\n size?: TableSize\n fixed?: 'left' | 'right'\n align?: 'left' | 'center' | 'right'\n width?: number | string\n level?: number\n}>`\n padding: ${props => {\n switch (props.size) {\n case 'sm': return '8px 12px'\n case 'lg': return '16px 16px'\n case 'md':\n default: return '12px 16px'\n }\n }};\n \n ${props => props.level && props.level > 0 && css`\n padding-left: ${16 + props.level * 24}px;\n `}\n \n text-align: ${props => props.align || 'left'};\n font-size: 12px; /* Explicitly 12px */\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.primary};\n position: ${props => props.fixed ? 'sticky' : 'static'};\n /* 使用变量确保固定列背景与行背景同步,且不透明 */\n background-color: ${props => props.fixed \n ? 'var(--row-bg, inherit)' \n : 'inherit'};\n transition: background-color 0.15s ease;\n \n ${props => props.width && css`\n width: ${typeof props.width === 'number' ? `${props.width}px` : props.width};\n `}\n\n ${props => props.fixed === 'left' && css`\n left: 0;\n z-index: 9;\n box-shadow: 4px 0 8px -4px rgba(0, 0, 0, 0.1);\n `}\n\n ${props => props.fixed === 'right' && css`\n right: 0;\n z-index: 9;\n box-shadow: -4px 0 8px -4px rgba(0, 0, 0, 0.1);\n `}\n`\n\n// ============================================================================\n// 辅助组件样式\n// ============================================================================\n\nexport const CheckboxCell = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n`\n\nexport const ExpandButton = styled.button<{ expanded?: boolean }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 0;\n margin-right: 8px;\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.tertiary};\n transition: transform 0.15s ease, color 0.15s ease;\n\n &:hover {\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.primary};\n }\n\n svg {\n width: 16px;\n height: 16px;\n transform: ${props => props.expanded ? 'rotate(90deg)' : 'none'};\n }\n`\n\nexport const EmptyState = styled.div`\n padding: 48px 24px;\n text-align: center;\n color: ${({ theme }) => (theme as AppTheme).semantic.colors.text.tertiary};\n font-size: 12px;\n`\n\nexport const CellContent = styled.div<{\n ellipsis?: boolean\n wrapText?: boolean\n}>`\n ${props => props.ellipsis && css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `}\n\n ${props => props.wrapText && css`\n white-space: normal;\n word-break: break-word;\n `}\n`\n","import { forwardRef, useState, useCallback, useMemo, useEffect, useRef, type ReactNode } from 'react'\nimport { Checkbox } from '../checkbox'\nimport { Radio } from '../radio'\nimport { ChevronUpOutline, ChevronDownOutline, ChevronRightOutline } from '@kingsoft-ai/icons'\nimport {\n TableContainer,\n StyledTable,\n TableHeader,\n TableHeaderRow,\n TableHeaderCell,\n TableBody,\n TableRow,\n TableCell,\n CheckboxCell,\n ExpandButton,\n EmptyState,\n CellContent,\n SortIndicator,\n tableSizes,\n tableVariants,\n type TableSize,\n type TableVariant,\n} from './Table.style'\n\n// 导出类型供外部使用\nexport type { TableSize, TableVariant } from './Table.style'\n\n// 导出常量供外部使用\nexport const SIZES = tableSizes\nexport const VARIANTS = tableVariants\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface TableColumn<T = any> {\n /** 列唯一标识 */\n key: string\n /** 列标题 */\n title?: ReactNode\n /** 列宽度 */\n width?: number | string\n /** 对齐方式 */\n align?: 'left' | 'center' | 'right'\n /** 是否可排序 */\n sortable?: boolean\n /** 固定列 */\n fixed?: 'left' | 'right'\n /** 自定义渲染 */\n render?: (value: any, record: T, index: number) => ReactNode\n /** 是否省略文本 */\n ellipsis?: boolean\n}\n\nexport interface TableDataSource<T = any> {\n /** 唯一标识 */\n id: string | number\n /** 子数据(用于树形结构) */\n children?: TableDataSource<T>[]\n /** 其他数据字段 */\n [key: string]: any\n}\n\nexport interface TableProps<T extends Record<string, any> = Record<string, any>> {\n /** 列配置 */\n columns: TableColumn<T>[]\n /** 数据源 */\n dataSource: T[]\n /** 表格尺寸 */\n size?: TableSize\n /** 表格变体 */\n variant?: TableVariant\n /** 是否显示边框 */\n bordered?: boolean\n /** 是否全宽 */\n fullWidth?: boolean\n /** 滚动配置 */\n scroll?: {\n /** 横向滚动宽度 */\n x?: number | string\n /** 纵向滚动高度 */\n y?: number | string\n }\n /** 是否可选择 */\n selectable?: boolean\n /** 选择类型 */\n selectionMode?: 'single' | 'multiple'\n /** 选中的行 */\n selectedKeys?: Set<string | number> | 'all'\n /** 选中行变化回调 */\n onSelectionChange?: (keys: Set<string | number> | 'all') => void\n /** 是否可展开 */\n expandable?: boolean\n /** 展开的行 */\n expandedKeys?: Set<string | number>\n /** 展开行变化回调 */\n onExpandChange?: (keys: Set<string | number>) => void\n /** 自定义展开内容 */\n expandedRowRender?: (record: T, index: number) => ReactNode\n /** 排序配置 */\n sortConfig?: {\n key: string\n direction: 'asc' | 'desc' | null\n }\n /** 排序变化回调 */\n onSortChange?: (key: string, direction: 'asc' | 'desc' | null) => void\n /** 行点击事件 */\n onRowClick?: (record: T, index: number) => void\n /** 空数据展示 */\n emptyText?: ReactNode\n /** 自定义类名 */\n className?: string\n /** 是否允许折行 */\n wrapText?: boolean\n /** Loading 状态 */\n loading?: boolean\n}\n\n// ============================================================================\n// Table 组件\n// ============================================================================\n\nfunction TableInner<T extends Record<string, any> = Record<string, any>>(\n {\n columns,\n dataSource,\n size = 'md',\n variant = 'default',\n bordered = false,\n fullWidth = true,\n scroll,\n selectable = false,\n selectionMode = 'multiple',\n selectedKeys: controlledSelectedKeys,\n onSelectionChange,\n expandable = false,\n expandedKeys: controlledExpandedKeys,\n onExpandChange,\n expandedRowRender,\n sortConfig,\n onSortChange,\n onRowClick,\n emptyText = '暂无数据',\n className,\n wrapText = false,\n loading = false,\n }: TableProps<T>,\n ref: React.ForwardedRef<HTMLTableElement>\n) {\n // 内部状态管理\n const [internalSelectedKeys, setInternalSelectedKeys] = useState<Set<string | number>>(new Set())\n const [internalExpandedKeys, setInternalExpandedKeys] = useState<Set<string | number>>(new Set())\n const [isScrollbarVisible, setIsScrollbarVisible] = useState(false)\n const containerRef = useRef<HTMLDivElement | null>(null)\n const scrollHideTimerRef = useRef<number | null>(null)\n\n // 选中状态\n const selectedKeys = controlledSelectedKeys ?? internalSelectedKeys\n const handleSelectionChange = useCallback((keys: Set<string | number> | 'all') => {\n // 总是将 'all' 转换为包含所有 ID 的 Set,确保外部接收到的是具体的 key 集合\n const newKeys = keys === 'all' ? new Set(dataSource.map(d => d.id)) : keys\n \n if (!controlledSelectedKeys) {\n setInternalSelectedKeys(newKeys)\n }\n onSelectionChange?.(newKeys)\n }, [controlledSelectedKeys, onSelectionChange, dataSource])\n\n // 展开状态\n const expandedKeys = controlledExpandedKeys ?? internalExpandedKeys\n const handleExpandChange = useCallback((key: string | number) => {\n const newKeys = new Set(expandedKeys)\n if (newKeys.has(key)) {\n newKeys.delete(key)\n } else {\n newKeys.add(key)\n }\n if (!controlledExpandedKeys) {\n setInternalExpandedKeys(newKeys)\n }\n onExpandChange?.(newKeys)\n }, [expandedKeys, controlledExpandedKeys, onExpandChange])\n\n // 排序处理\n const handleSort = useCallback((key: string) => {\n if (!onSortChange) return\n \n let newDirection: 'asc' | 'desc' | null = 'asc'\n \n // 如果当前是该列且正在排序\n if (sortConfig?.key === key) {\n if (sortConfig.direction === 'asc') {\n newDirection = 'desc'\n } else if (sortConfig.direction === 'desc') {\n // 从降序切换到取消排序\n newDirection = null\n }\n }\n \n onSortChange(key, newDirection)\n }, [sortConfig, onSortChange])\n\n // 全选状态计算\n const allSelected = useMemo(() => {\n if (!selectable || selectionMode === 'single') return false\n if (selectedKeys === 'all') return true\n if (dataSource.length === 0) return false\n return dataSource.every(record => selectedKeys.has(record.id))\n }, [selectable, selectionMode, selectedKeys, dataSource])\n\n const indeterminate = useMemo(() => {\n if (!selectable || selectionMode === 'single' || selectedKeys === 'all') return false\n if (dataSource.length === 0) return false\n const selectedCount = dataSource.filter(record => selectedKeys.has(record.id)).length\n return selectedCount > 0 && selectedCount < dataSource.length\n }, [selectable, selectionMode, selectedKeys, dataSource])\n\n // 滚动条显示/隐藏\n useEffect(() => {\n const container = containerRef.current\n if (!container) return\n\n const handleScroll = () => {\n setIsScrollbarVisible(true)\n if (scrollHideTimerRef.current) {\n window.clearTimeout(scrollHideTimerRef.current)\n }\n scrollHideTimerRef.current = window.setTimeout(() => {\n setIsScrollbarVisible(false)\n }, 800)\n }\n\n container.addEventListener('scroll', handleScroll, { passive: true })\n\n return () => {\n container.removeEventListener('scroll', handleScroll)\n if (scrollHideTimerRef.current) {\n window.clearTimeout(scrollHideTimerRef.current)\n }\n }\n }, [])\n\n // 渲染行数据(包含树形结构)\n const renderRows = useCallback((\n data: T[],\n level = 0\n ): React.ReactNode[] => {\n return data.flatMap((record, index) => {\n const isExpanded = expandedKeys.has(record.id)\n const isSelected = selectedKeys instanceof Set && selectedKeys.has(record.id)\n const hasChildren = record.children && record.children.length > 0\n\n const mainRow = (\n <TableRow\n key={record.id}\n selectable={selectable}\n selected={isSelected}\n expandable={expandable}\n expanded={isExpanded}\n level={level}\n onClick={() => {\n if (selectable && selectionMode === 'single') {\n handleSelectionChange(new Set([record.id]))\n }\n onRowClick?.(record, index)\n }}\n >\n {selectable && (\n <TableCell\n key=\"selection-column\"\n size={size}\n width={48}\n align=\"center\"\n >\n <CheckboxCell onClick={(e) => e.stopPropagation()}>\n {selectionMode === 'single' ? (\n <Radio\n checked={isSelected}\n onChange={() => {\n handleSelectionChange(new Set([record.id]))\n }}\n />\n ) : (\n <Checkbox\n checked={isSelected}\n onChange={(checked) => {\n const newKeys = new Set(selectedKeys === 'all' ? dataSource.map(d => d.id) : selectedKeys)\n if (checked) {\n newKeys.add(record.id)\n } else {\n newKeys.delete(record.id)\n }\n handleSelectionChange(newKeys)\n }}\n />\n )}\n </CheckboxCell>\n </TableCell>\n )}\n {columns.map((column, colIndex) => {\n const value = record[column.key]\n const isFirstColumn = colIndex === 0\n\n return (\n <TableCell\n key={column.key}\n size={size}\n fixed={column.fixed}\n align={column.align}\n width={column.width}\n level={isFirstColumn ? level : 0}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {isFirstColumn && expandable && hasChildren && (\n <ExpandButton\n expanded={isExpanded}\n onClick={(e) => {\n e.stopPropagation()\n handleExpandChange(record.id)\n }}\n aria-label={isExpanded ? '收起' : '展开'}\n >\n <ChevronRightOutline />\n </ExpandButton>\n )}\n \n <CellContent ellipsis={column.ellipsis} wrapText={wrapText}>\n {column.render ? column.render(value, record, index) : value}\n </CellContent>\n </div>\n </TableCell>\n )\n })}\n </TableRow>\n )\n\n const expandedRow = isExpanded && expandedRowRender && (\n <TableRow key={`${record.id}-expanded`} isSubRow>\n <TableCell colSpan={columns.length + (selectable ? 1 : 0)} size={size}>\n {expandedRowRender(record, index)}\n </TableCell>\n </TableRow>\n )\n\n const childRows = isExpanded && hasChildren\n ? renderRows(record.children as T[], level + 1)\n : []\n\n return [mainRow, expandedRow, ...childRows].filter(Boolean)\n })\n }, [\n columns,\n size,\n expandable,\n expandedKeys,\n selectedKeys,\n selectable,\n selectionMode,\n expandedRowRender,\n wrapText,\n handleExpandChange,\n handleSelectionChange,\n onRowClick,\n ])\n\n if (dataSource.length === 0 && !loading) {\n return (\n <TableContainer \n size={size}\n ref={containerRef}\n fullWidth={fullWidth} \n scrollX={scroll?.x}\n scrollY={scroll?.y}\n showScrollbar={isScrollbarVisible}\n className={className}\n >\n <EmptyState>{emptyText}</EmptyState>\n </TableContainer>\n )\n }\n\n return (\n <TableContainer \n size={size}\n ref={containerRef}\n fullWidth={fullWidth} \n scrollX={scroll?.x}\n scrollY={scroll?.y}\n showScrollbar={isScrollbarVisible}\n className={className}\n >\n <StyledTable \n ref={ref} \n size={size} \n variant={bordered ? 'bordered' : variant}\n scrollX={scroll?.x}\n >\n <TableHeader>\n <TableHeaderRow>\n {selectable && (\n <TableHeaderCell\n key=\"selection-column\"\n size={size}\n width={48}\n align=\"center\"\n >\n {selectionMode === 'multiple' && (\n <CheckboxCell>\n <Checkbox\n checked={allSelected}\n indeterminate={indeterminate}\n onChange={(checked) => {\n handleSelectionChange(checked ? 'all' : new Set())\n }}\n />\n </CheckboxCell>\n )}\n </TableHeaderCell>\n )}\n {columns.map((column) => (\n <TableHeaderCell\n key={column.key}\n size={size}\n fixed={column.fixed}\n align={column.align}\n width={column.width}\n sortable={column.sortable}\n onClick={() => column.sortable && handleSort(column.key)}\n >\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '8px' }}>\n <span>{column.title}</span>\n {column.sortable && (\n <SortIndicator\n direction={sortConfig?.key === column.key ? sortConfig.direction : undefined}\n >\n <ChevronUpOutline data-active={sortConfig?.key === column.key && sortConfig.direction === 'asc'} />\n <ChevronDownOutline data-active={sortConfig?.key === column.key && sortConfig.direction === 'desc'} />\n </SortIndicator>\n )}\n </div>\n </TableHeaderCell>\n ))}\n </TableHeaderRow>\n </TableHeader>\n\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell colSpan={columns.length + (selectable ? 1 : 0)} size={size}>\n <div style={{ textAlign: 'center', padding: '24px' }}>加载中...</div>\n </TableCell>\n </TableRow>\n ) : (\n renderRows(dataSource)\n )}\n </TableBody>\n </StyledTable>\n </TableContainer>\n )\n}\n\nconst TableWithRef = forwardRef(TableInner) as <T extends Record<string, any> = Record<string, any>>(\n props: TableProps<T> & { ref?: React.ForwardedRef<HTMLTableElement> }\n) => React.ReactElement\n\n;(TableWithRef as any).displayName = 'Table'\n\nexport const Table = TableWithRef\n","import {useControlledState as $d8rik$useControlledState} from \"@react-stately/utils\";\nimport {useState as $d8rik$useState} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $3017fa7ffdddec74$export$8042c6c013fd5226(props = {}) {\n let { isReadOnly: isReadOnly } = props;\n // have to provide an empty function so useControlledState doesn't throw a fit\n // can't use useControlledState's prop calling because we need the event object from the change\n let [isSelected, setSelected] = (0, $d8rik$useControlledState)(props.isSelected, props.defaultSelected || false, props.onChange);\n let [initialValue] = (0, $d8rik$useState)(isSelected);\n function updateSelected(value) {\n if (!isReadOnly) setSelected(value);\n }\n function toggleState() {\n if (!isReadOnly) setSelected(!isSelected);\n }\n var _props_defaultSelected;\n return {\n isSelected: isSelected,\n defaultSelected: (_props_defaultSelected = props.defaultSelected) !== null && _props_defaultSelected !== void 0 ? _props_defaultSelected : initialValue,\n setSelected: updateSelected,\n toggle: toggleState\n };\n}\n\n\nexport {$3017fa7ffdddec74$export$8042c6c013fd5226 as useToggleState};\n//# sourceMappingURL=useToggleState.module.js.map\n","/**\n * Switch 开关样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n * 支持带文字的开关组件(如 ON/OFF、开/关)\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\nimport type { AppTheme } from '@kingsoft-ai/theme'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const switchSizes = ['sm', 'md'] as const\nexport type SwitchSize = (typeof switchSizes)[number]\n\n// ============================================================================\n// 辅助函数\n// ============================================================================\n\n/**\n * 获取尺寸样式\n * 使用 Tier 3 组件层尺寸 Token\n */\nconst getSizeStyles = (size: SwitchSize, theme: AppTheme) => {\n const sizeToken = theme.components.switch.size[size]\n\n return css`\n /* 提供尺寸相关的 CSS 变量,方便内部元素计算占位 */\n --switch-thumb-size: ${sizeToken.thumbSize};\n --switch-inner-gap: ${theme.components.switch.gap};\n\n min-width: ${sizeToken.width};\n height: ${sizeToken.height};\n font-size: ${sizeToken.fontSize};\n\n /* 滑块尺寸 - 使用后代选择器 */\n & span[data-thumb] {\n width: ${sizeToken.thumbSize};\n height: ${sizeToken.thumbSize};\n }\n `\n}\n\n// ============================================================================\n// 样式组件\n// ============================================================================\n\n/**\n * Switch 根元素(label 标签)\n * \n * 特性:\n * - 基于三层 Token 设计\n * - 完整的交互状态(hover, focus, disabled)\n * - 支持带文字的开关\n * - 平滑的动画过渡\n */\nexport const SwitchRoot = styled.label<{\n size: SwitchSize\n isSelected: boolean\n isDisabled: boolean\n isFocusVisible: boolean\n hasInnerLabel: boolean\n}>`\n /* 基础布局 */\n position: relative;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n user-select: none;\n \n /* 背景和圆角 - 使用 Tier 3 Token */\n background: ${({ isSelected, isDisabled, theme }) =>\n isDisabled\n ? theme.components.switch.background.disabled\n : isSelected\n ? theme.components.switch.background.checked\n : theme.components.switch.background.unchecked};\n border-radius: ${({ theme }) => theme.components.switch.borderRadius};\n \n /* \n * 内边距 - 根据 Figma 设计:\n * - 有文字时:选中状态左8px右3px,未选中状态左3px右8px\n * - 无文字时:始终左右各3px\n * - 上下始终3px\n */\n padding: 3px;\n ${({ hasInnerLabel, isSelected }) => {\n if (!hasInnerLabel) {\n // 无文字时,左右都是 3px\n return css`\n padding-left: 3px;\n padding-right: 3px;\n `\n }\n // 有文字时,根据选中状态调整\n return css`\n padding-left: ${isSelected ? '8px' : '3px'};\n padding-right: ${isSelected ? '3px' : '8px'};\n `\n }}\n \n /* 过渡动画 - 只对背景色做动画,padding 瞬间切换以配合滑块动画 */\n transition: background-color ${({ theme }) => theme.components.switch.transition};\n \n /* 尺寸样式 */\n ${({ size, theme }) => getSizeStyles(size, theme)}\n \n /* Focus 可见状态 - 键盘导航时显示 */\n ${({ isFocusVisible, theme }) =>\n isFocusVisible &&\n css`\n outline: none;\n box-shadow: 0 0 0 ${theme.components.switch.focusRing.offset} ${theme.components.switch.focusRing.color};\n `}\n \n /* 禁用状态 */\n ${({ isDisabled, theme }) =>\n isDisabled &&\n css`\n opacity: ${theme.components.switch.disabled.opacity};\n cursor: not-allowed;\n `}\n`\n\n/**\n * Switch 内容容器\n * \n * 用于布局文字和滑块,确保正确的间距和对齐\n * 根据 Figma 设计,元素间距为 4px\n * \n * 布局策略:\n * - 文字使用相对定位,根据状态调整 justify-content\n * - 滑块使用绝对定位 + left/right 切换实现平滑动画\n */\nexport const SwitchContent = styled.span<{\n isSelected: boolean\n hasInnerLabel: boolean\n}>`\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n position: relative;\n z-index: 1;\n \n /* 当存在内部文字时,为滑块预留占位,避免文字与滑块重叠\n 预留尺寸 = 滑块尺寸 + 设计间距 */\n ${({ hasInnerLabel, isSelected, theme }) =>\n hasInnerLabel &&\n css`\n padding-right: ${isSelected\n ? `calc(var(--switch-thumb-size) + ${theme.components.switch.gap})`\n : '0'};\n padding-left: ${!isSelected\n ? `calc(var(--switch-thumb-size) + ${theme.components.switch.gap})`\n : '0'};\n `}\n \n /* 有文字时,根据选中状态调整文字位置 */\n ${({ hasInnerLabel, isSelected }) =>\n hasInnerLabel &&\n css`\n justify-content: ${isSelected ? 'flex-start' : 'flex-end'};\n `}\n`\n\n/**\n * Switch 文字标签\n * \n * 显示开关状态文字(如 ON/OFF、开/关)\n * 使用 Tier 3 组件层文字 Token\n * \n * 使用相对定位,不影响滑块的绝对定位计算\n */\nexport const SwitchLabel = styled.span<{\n isSelected: boolean\n}>`\n display: inline-flex;\n align-items: center;\n color: ${({ theme }) => theme.components.switch.text.color};\n font-size: ${({ theme }) => theme.components.switch.text.fontSize};\n font-weight: ${({ theme }) => theme.components.switch.text.fontWeight};\n line-height: 1.5;\n white-space: nowrap;\n user-select: none;\n position: relative;\n z-index: 2;\n`\n\n/**\n * Switch 滑块(Thumb)\n * \n * 白色圆形滑块,根据开关状态滑动\n * 使用 Tier 3 组件层滑块 Token\n * \n * 使用绝对定位 + transform 实现平滑的位置动画\n * 根据 Figma 设计:\n * - 未选中时:left: 0(紧贴左边缘,实际距离容器边缘 3px)\n * - 选中时:right: 0(紧贴右边缘,实际距离容器边缘 3px)\n */\nexport const SwitchThumb = styled.span<{\n isSelected: boolean\n}>`\n display: block;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n border-radius: 50%;\n background: ${({ theme }) => theme.components.switch.thumb.background};\n box-shadow: ${({ theme }) => theme.components.switch.thumb.shadow};\n \n /* 位置控制:未选中在左,选中在右 */\n ${({ isSelected }) =>\n isSelected\n ? css`\n right: 0;\n left: auto;\n `\n : css`\n left: 0;\n right: auto;\n `}\n \n /* 平滑的位置过渡动画 */\n transition: left ${({ theme }) => theme.components.switch.transition},\n right ${({ theme }) => theme.components.switch.transition};\n`\n\n/**\n * 外部标签容器\n * \n * 用于在 Switch 外部显示描述性标签\n */\nexport const SwitchLabelWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`\n\n/**\n * 外部标签文字\n * \n * Switch 旁边的描述性文字\n */\nexport const SwitchLabelText = styled.span<{\n isDisabled: boolean\n}>`\n font-size: ${({ theme }) => theme.global.typography.fontSize.sm};\n color: ${({ isDisabled, theme }) =>\n isDisabled\n ? theme.semantic.colors.text.disabled\n : theme.semantic.colors.text.primary};\n user-select: none;\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n`\n\n","/**\n * Switch 开关组件\n * \n * 基于 react-aria 实现无障碍访问的开关组件\n * 完全符合 Figma 设计稿规范\n * 支持带文字的开关(如 ON/OFF、开/关)\n * \n * @example\n * ```tsx\n * // 基础用法\n * <Switch>开启通知</Switch>\n * \n * // 带状态文字\n * <Switch \n * checkedLabel=\"开\" \n * uncheckedLabel=\"关\"\n * >\n * 夜间模式\n * </Switch>\n * \n * // 受控组件\n * <Switch \n * isSelected={enabled} \n * onChange={setEnabled}\n * >\n * 自动保存\n * </Switch>\n * ```\n */\n\nimport { forwardRef, useRef } from 'react'\nimport type { ReactNode } from 'react'\nimport { useSwitch, useFocusRing, VisuallyHidden } from 'react-aria'\nimport type { AriaSwitchProps } from 'react-aria'\nimport { useToggleState } from '@react-stately/toggle'\nimport type { ToggleProps } from '@react-types/checkbox'\nimport { mergeProps } from '@react-aria/utils'\nimport {\n SwitchRoot,\n SwitchContent,\n SwitchLabel,\n SwitchThumb,\n SwitchLabelWrapper,\n SwitchLabelText,\n switchSizes,\n type SwitchSize,\n} from './Switch.style'\n\n// 导出常量供外部使用\nexport const SIZES = switchSizes\n\nexport type SwitchProps = Omit<AriaSwitchProps, 'children' | 'isDisabled'> & \n Omit<ToggleProps, 'children' | 'isDisabled'> & {\n /** 开关尺寸:小号(20px)、标准(24px) */\n size?: SwitchSize\n /** 选中状态的文字标签(显示在开关内部) */\n checkedLabel?: string\n /** 未选中状态的文字标签(显示在开关内部) */\n uncheckedLabel?: string\n /** 是否禁用(替代 isDisabled) */\n disabled?: boolean\n /** 受控值(统一 API,优先级高于 isSelected) */\n value?: boolean\n /** 默认值(统一 API,优先级高于 defaultSelected) */\n defaultValue?: boolean\n /** 外部描述性标签(显示在开关旁边) */\n children?: ReactNode\n /** 自定义类名 */\n className?: string\n}\n\n/**\n * Switch 开关组件\n * \n * 基于 Figma 设计规范实现的开关组件,支持带文字的开关\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n size = 'md',\n checkedLabel,\n uncheckedLabel,\n disabled = false,\n value,\n defaultValue,\n children,\n className,\n isSelected,\n defaultSelected,\n ...props\n },\n forwardedRef,\n ) => {\n // 统一处理受控值:value 优先于 isSelected\n const finalIsSelected = value ?? isSelected\n // 统一处理默认值:defaultValue 优先于 defaultSelected\n const finalDefaultSelected = defaultValue ?? defaultSelected\n\n // 使用 react-stately 管理开关状态\n const state = useToggleState({\n ...props,\n isSelected: finalIsSelected,\n defaultSelected: finalDefaultSelected,\n })\n const innerRef = useRef<HTMLInputElement>(null)\n const ref = forwardedRef || innerRef\n\n // 使用 react-aria 的 useSwitch hook 获取无障碍属性\n const { inputProps } = useSwitch(\n {\n ...props,\n isDisabled: disabled,\n },\n state,\n innerRef,\n )\n\n // 使用 useFocusRing 处理键盘焦点样式\n const { isFocusVisible, focusProps } = useFocusRing()\n\n // 当前显示的标签文字\n const currentLabel = state.isSelected ? checkedLabel : uncheckedLabel\n \n // 是否有内部文字标签\n const hasInnerLabel = Boolean(checkedLabel || uncheckedLabel)\n\n // Switch 主体\n const switchElement = (\n <SwitchRoot\n size={size}\n isSelected={state.isSelected}\n isDisabled={disabled}\n isFocusVisible={isFocusVisible}\n hasInnerLabel={hasInnerLabel}\n className={className}\n data-selected={state.isSelected ? 'true' : undefined}\n data-disabled={disabled ? 'true' : undefined}\n >\n {/* 隐藏的原生 input,用于无障碍访问 */}\n <VisuallyHidden>\n <input\n {...mergeProps(inputProps, focusProps)}\n ref={ref}\n />\n </VisuallyHidden>\n\n {/* 开关内容:文字 + 滑块 */}\n <SwitchContent isSelected={state.isSelected} hasInnerLabel={hasInnerLabel}>\n {/* 滑块 - 使用绝对定位,始终渲染 */}\n <SwitchThumb\n isSelected={state.isSelected}\n data-thumb\n aria-hidden=\"true\"\n />\n \n {/* 内部状态文字(如果有) - 相对定位,在滑块上方 */}\n {hasInnerLabel && currentLabel && (\n <SwitchLabel isSelected={state.isSelected}>\n {currentLabel}\n </SwitchLabel>\n )}\n </SwitchContent>\n </SwitchRoot>\n )\n\n // 如果有外部标签,使用 wrapper 包装\n if (children) {\n return (\n <SwitchLabelWrapper>\n {switchElement}\n <SwitchLabelText\n isDisabled={disabled}\n onClick={() => {\n if (!disabled) {\n state.toggle()\n }\n }}\n >\n {children}\n </SwitchLabelText>\n </SwitchLabelWrapper>\n )\n }\n\n return switchElement\n },\n)\n\nSwitch.displayName = 'Switch'\n\n","/**\n * Transfer 样式组件\n * \n * 基于三层 Token 体系\n */\n\nimport styled from '@emotion/styled'\n\nexport const TransferRoot = styled.div`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.components.transfer.container.gap};\n`;\n\nexport const TransferPanel = styled.div`\n width: ${({ theme }) => theme.components.transfer.panel.width};\n height: ${({ theme }) => theme.components.transfer.panel.height};\n background: ${({ theme }) => theme.components.transfer.panel.background};\n border: ${({ theme }) => theme.components.transfer.panel.border};\n border-radius: ${({ theme }) => theme.components.transfer.panel.borderRadius};\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`;\n\nexport const TransferHeader = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: ${({ theme }) => theme.components.transfer.header.height};\n padding: ${({ theme }) => theme.components.transfer.header.padding};\n font-size: ${({ theme }) => theme.components.transfer.header.fontSize};\n color: ${({ theme }) => theme.components.transfer.header.color};\n background: ${({ theme }) => theme.components.transfer.header.background};\n flex-shrink: 0;\n`;\n\nexport const TransferTitle = styled.span`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\n\nexport const TransferCount = styled.span`\n color: ${({ theme }) => theme.semantic.colors.text.transferHeader};\n`;\n\nexport const TransferSearchWrapper = styled.div`\n padding: 10px 0;\n display: flex;\n flex-shrink: 0;\n width: 184px;\n margin: 0 auto;\n /* 设置子级 div 的宽度 */\n & > div {\n width: 100%;\n >div {\n min-width: 100%; /* 防止内容溢出 */\n }\n }\n`;\n\nexport const TransferList = styled.div`\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n padding: ${({ theme }) => theme.components.transfer.list.padding};\n /* 滚动条样式 */\n &::-webkit-scrollbar {\n width: 6px;\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.semantic.colors.border.divider};\n border-radius: 3px;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: ${({ theme }) => theme.semantic.colors.border.primary};\n }\n`;\n\nexport const TransferItem = styled.div<{\n disabled?: boolean;\n selected?: boolean;\n}>`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.components.transfer.item.height};\n font-size: ${({ theme }) => theme.components.transfer.item.fontSize};\n border-radius: ${({ theme }) => theme.components.transfer.item.borderRadius};\n gap: ${({ theme }) => theme.components.transfer.item.gap};\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n user-select: none;\n transition: ${({ theme }) => theme.components.transfer.transition};\n padding: ${({ theme }) => theme.components.transfer.item.padding};\n color: ${({ theme, selected, disabled }) =>\n disabled\n ? theme.components.transfer.item.text.disabled\n : selected\n ? theme.components.transfer.item.text.selected\n : theme.components.transfer.item.text.default};\n\n`;\n\nexport const TransferItemLabel = styled.span`\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const TransferItemContent = styled.div`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.components.transfer.item.gap};\n flex: 1;\n overflow: hidden;\n`;\n\nexport const TransferItemDeleteButton = styled.button<{ disabled?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n border: none;\n background: transparent;\n cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};\n opacity: ${({ disabled }) => (disabled ? 0.5 : 1)};\n color: ${({ theme }) => theme.semantic.colors.text.tertiary};\n transition: all 0.2s ease;\n padding: 0;\n margin-left: 8px;\n\n\n svg {\n width: 16px;\n height: 16px;\n }\n`;\n\nexport const TransferOperations = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${({ theme }) => theme.components.transfer.operations.gap};\n align-items: center;\n`;\n\nexport const TransferOperationButton = styled.div<{ disabled?: boolean; active?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${({ theme }) => theme.components.transfer.operations.width};\n height: ${({ theme }) => theme.components.transfer.operations.height};\n border-radius: 50%;\n border: 1px solid ${({ theme, disabled, active }) => {\n if (disabled) return theme.components.transfer.operations.borderColor.disabled;\n if (active) return theme.components.transfer.operations.borderColor.active;\n return theme.components.transfer.operations.borderColor.default;\n }};\n background: ${({ theme, disabled }) => \n disabled ? '#F0F0F0' : theme.semantic.colors.background.surface\n };\n cursor: ${({ disabled }) => disabled ? 'not-allowed' : 'pointer'};\n transition: all 0.2s ease;\n opacity: ${({ disabled }) => disabled ? 0.5 : 1};\n\n svg {\n width: ${({ theme }) => theme.components.transfer.operations.iconSize};\n height: ${({ theme }) => theme.components.transfer.operations.iconSize};\n color: ${({ theme, disabled, active }) => {\n if (disabled) return theme.components.transfer.operations.iconColor.disabled;\n if (active) return theme.components.transfer.operations.iconColor.active;\n return theme.components.transfer.operations.iconColor.default;\n }};\n }\n\n &:hover {\n border-color: ${({ theme, disabled }) => \n !disabled && theme.components.transfer.operations.borderColor.active\n };\n \n svg {\n color: ${({ theme, disabled }) => \n !disabled && theme.components.transfer.operations.iconColor.active\n };\n }\n }\n\n &:active {\n border-color: ${({ theme }) => theme.components.transfer.operations.borderColor.active};\n \n svg {\n color: ${({ theme }) => theme.components.transfer.operations.iconColor.active};\n }\n }\n`;\n\nexport const TransferFooter = styled.div`\n display: flex;\n align-items: center;\n height: ${({ theme }) => theme.components.transfer.footer.height};\n padding-inline: ${({ theme }) => theme.components.transfer.footer.paddingInline};\n font-size: ${({ theme }) => theme.components.transfer.footer.fontSize};\n color: ${({ theme }) => theme.components.transfer.footer.color};\n border-top: ${({ theme }) => theme.components.transfer.footer.borderTop};\n margin-top: ${({ theme }) => theme.components.transfer.footer.marginTop};\n flex-shrink: 0;\n`;\n\nexport const TransferEmpty = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: ${({ theme }) => theme.components.transfer.empty.color};\n font-size: ${({ theme }) => theme.components.transfer.empty.fontSize};\n`;\n\nexport const TransferPagination = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 16px;\n border-top: 1px solid ${({ theme }) => theme.semantic.colors.border.divider};\n flex-shrink: 0;\n font-size: 12px;\n color: ${({ theme }) => theme.semantic.colors.text.secondary};\n`;\n\nexport const TransferPaginationInfo = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\n\nexport const TransferPaginationControls = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n`;\n\nexport const TransferPaginationButton = styled.button<{ disabled?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: 1px solid ${({ theme }) => theme.semantic.colors.border.primary};\n border-radius: ${({ theme }) => theme.global.radii.r2};\n background: ${({ theme }) => theme.semantic.colors.background.surface};\n cursor: ${({ disabled }) => disabled ? 'not-allowed' : 'pointer'};\n opacity: ${({ disabled }) => disabled ? 0.5 : 1};\n transition: all 0.2s ease;\n\n &:hover:not(:disabled) {\n border-color: ${({ theme }) => theme.semantic.colors.brand.primary};\n color: ${({ theme }) => theme.semantic.colors.brand.primary};\n }\n\n svg {\n width: 14px;\n height: 14px;\n }\n`;\n\nexport const TransferPageSizeSelector = styled.select`\n height: 24px;\n padding: 0 20px 0 8px;\n border: 1px solid ${({ theme }) => theme.semantic.colors.border.primary};\n border-radius: ${({ theme }) => theme.global.radii.r2};\n background: ${({ theme }) => theme.semantic.colors.background.surface};\n font-size: 12px;\n color: ${({ theme }) => theme.semantic.colors.text.primary};\n cursor: pointer;\n outline: none;\n \n &:hover {\n border-color: ${({ theme }) => theme.semantic.colors.brand.primary};\n }\n`;\n","/**\n * Transfer 穿梭框组件\n * \n * 基于 react-aria 实现无障碍访问的穿梭框组件\n * 支持搜索、全选、自定义渲染等功能\n * \n * @example\n * ```tsx\n * const dataSource = [\n * { key: '1', title: '选项1', description: '描述1' },\n * { key: '2', title: '选项2' },\n * ];\n * \n * <Transfer\n * dataSource={dataSource}\n * targetKeys={['1']}\n * onChange={(keys) => console.log(keys)}\n * />\n * ```\n */\n\nimport React, { useState, useMemo, useCallback } from 'react';\nimport { useTheme } from '@emotion/react';\nimport { Checkbox } from '../checkbox';\nimport { Input } from '../input';\nimport { Select } from '../select';\nimport {\n ChevronRightOutline,\n ChevronLeftOutline,\n SearchOutline,\n DeleteOutline,\n} from '@kingsoft-ai/icons';\nimport {\n TransferRoot,\n TransferPanel,\n TransferHeader,\n TransferTitle,\n TransferCount,\n TransferSearchWrapper,\n TransferList as StyledTransferList,\n TransferItem,\n TransferItemLabel,\n TransferItemContent,\n TransferItemDeleteButton,\n TransferOperations,\n TransferOperationButton,\n TransferFooter,\n TransferEmpty,\n TransferPagination,\n TransferPaginationInfo,\n TransferPaginationControls,\n TransferPaginationButton,\n} from './Transfer.style';\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport interface TransferItem {\n /** 唯一标识 */\n key: string;\n /** 标题 */\n title: React.ReactNode;\n /** 描述 */\n description?: React.ReactNode;\n /** 是否禁用 */\n disabled?: boolean;\n /** 其他自定义数据 */\n [key: string]: any;\n}\n\nexport interface TransferHeaderProps {\n /** 方向 */\n direction: 'left' | 'right';\n /** 已选中数量 */\n selectedCount: number;\n /** 总数量 */\n totalCount: number;\n /** 选中的keys */\n selectedKeys: Set<string>;\n /** 全选回调 */\n onSelectAll: (checked: boolean) => void;\n /** 标题 */\n title?: React.ReactNode;\n /** 是否显示全选 */\n showSelectAll: boolean;\n /** 是否禁用 */\n disabled?: boolean;\n /** 清空所有选中项回调 */\n onClearAll?: () => void;\n /** 清空模式:'selected' | 'all' */\n clearMode?: 'selected' | 'all';\n}\n\nexport interface TransferActions {\n /** 左侧操作按钮,支持静态元素或动态函数 */\n left?: React.ReactNode | ((selectedKeys: string[]) => React.ReactNode);\n /** 右侧操作按钮,支持静态元素或动态函数 */\n right?: React.ReactNode | ((selectedKeys: string[]) => React.ReactNode);\n}\n\nexport interface TransferProps {\n /** 数据源 */\n dataSource: TransferItem[];\n /** 目标框数据的 key 集合 */\n targetKeys?: string[];\n /** 默认目标框数据的 key 集合 */\n defaultTargetKeys?: string[];\n /** 选中项变化的回调 */\n onChange?: (targetKeys: string[], direction: 'left' | 'right', moveKeys: string[]) => void;\n /** 源框标题 */\n titles?: [React.ReactNode, React.ReactNode];\n /** 是否显示搜索框 */\n showSearch?: boolean;\n /** 搜索框占位符 */\n searchPlaceholder?: [string, string];\n /** 自定义过滤方法 */\n filterOption?: (inputValue: string, item: TransferItem) => boolean;\n /** 自定义渲染每一项 */\n render?: (item: TransferItem) => React.ReactNode;\n /** 是否禁用 */\n disabled?: boolean;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 操作按钮文本 */\n operations?: [React.ReactNode, React.ReactNode];\n /** 是否显示全选 */\n showSelectAll?: boolean;\n /** 底部渲染函数 */\n footer?: (props: { direction: 'left' | 'right' }) => React.ReactNode;\n /** 列表为空时显示的内容 */\n locale?: {\n itemUnit?: string;\n itemsUnit?: string;\n notFoundContent?: React.ReactNode;\n searchPlaceholder?: string;\n };\n /** 自定义头部渲染 */\n header?: (props: TransferHeaderProps) => React.ReactNode;\n /** 单向模式 */\n oneWay?: boolean;\n /** 自定义操作按钮 */\n actions?: React.ReactNode[] | TransferActions;\n /** 使用分页样式,自定义渲染列表下无效 */\n pagination?: boolean | {\n pageSize?: number;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showPageInfo?: boolean;\n };\n}\n\ninterface TransferListProps {\n direction: 'left' | 'right';\n dataSource: TransferItem[];\n selectedKeys: Set<string>;\n disabled?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n filterOption?: (inputValue: string, item: TransferItem) => boolean;\n render?: (item: TransferItem) => React.ReactNode;\n onItemSelectChange: (keys: Set<string>) => void;\n title?: React.ReactNode;\n showSelectAll?: boolean;\n footer?: (props: { direction: 'left' | 'right' }) => React.ReactNode;\n locale?: TransferProps['locale'];\n header?: (props: TransferHeaderProps) => React.ReactNode;\n onClearAll?: () => void;\n clearMode?: 'selected' | 'all';\n oneWay?: boolean;\n onItemDelete?: (key: string) => void;\n pagination?: TransferProps['pagination'];\n}\n\n// ============================================================================\n// 穿梭框列表组件\n// ============================================================================\n\nconst TransferList: React.FC<TransferListProps> = ({\n direction,\n dataSource,\n selectedKeys,\n disabled,\n showSearch,\n searchPlaceholder,\n filterOption,\n render,\n onItemSelectChange,\n title,\n showSelectAll = true,\n footer,\n locale,\n header,\n onClearAll,\n clearMode = 'all',\n oneWay = false,\n onItemDelete,\n pagination,\n}) => {\n const theme = useTheme();\n const [searchValue, setSearchValue] = useState('');\n const [currentPage, setCurrentPage] = useState(1);\n const [pageSize, setPageSize] = useState(\n typeof pagination === 'object' && pagination.pageSize ? pagination.pageSize : 10\n );\n\n // 过滤数据\n const filteredData = useMemo(() => {\n if (!searchValue) return dataSource;\n if (filterOption) {\n return dataSource.filter((item) => filterOption(searchValue, item));\n }\n return dataSource.filter((item) => {\n const title = String(item.title || '');\n const description = String(item.description || '');\n return (\n title.toLowerCase().includes(searchValue.toLowerCase()) ||\n description.toLowerCase().includes(searchValue.toLowerCase())\n );\n });\n }, [dataSource, searchValue, filterOption]);\n\n // 可选择的项(排除禁用项)\n const selectableItems = useMemo(\n () => filteredData.filter((item) => !item.disabled),\n [filteredData]\n );\n\n // 是否启用分页(自定义render时禁用)\n const isPaginationEnabled = pagination && !render;\n\n // 分页后的数据\n const paginatedData = useMemo(() => {\n if (!isPaginationEnabled) return filteredData;\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n return filteredData.slice(startIndex, endIndex);\n }, [filteredData, currentPage, pageSize, isPaginationEnabled]);\n\n // 实际显示的数据\n const displayData = isPaginationEnabled ? paginatedData : filteredData;\n\n // 总页数\n const totalPages = useMemo(() => {\n if (!isPaginationEnabled) return 1;\n return Math.ceil(filteredData.length / pageSize);\n }, [filteredData.length, pageSize, isPaginationEnabled]);\n\n // 切换页码\n const handlePageChange = useCallback((page: number) => {\n setCurrentPage(page);\n }, []);\n\n // 切换每页条数\n const handlePageSizeChange = useCallback((size: number) => {\n setPageSize(size);\n setCurrentPage(1);\n }, []);\n\n // 检查是否全选\n const isAllSelected = useMemo(() => {\n if (selectableItems.length === 0) return false;\n return selectableItems.every((item) => selectedKeys.has(item.key));\n }, [selectableItems, selectedKeys]);\n\n // 是否部分选中\n const isIndeterminate = useMemo(() => {\n const selectedCount = selectableItems.filter((item) =>\n selectedKeys.has(item.key)\n ).length;\n return selectedCount > 0 && selectedCount < selectableItems.length;\n }, [selectableItems, selectedKeys]);\n\n // 全选/取消全选\n const handleSelectAll = useCallback(\n (checked: boolean) => {\n const newKeys = new Set(selectedKeys);\n selectableItems.forEach((item) => {\n if (checked) {\n newKeys.add(item.key);\n } else {\n newKeys.delete(item.key);\n }\n });\n onItemSelectChange(newKeys);\n },\n [selectableItems, selectedKeys, onItemSelectChange]\n );\n\n // 切换单项选中状态\n const handleItemToggle = useCallback(\n (key: string) => {\n const newKeys = new Set(selectedKeys);\n if (newKeys.has(key)) {\n newKeys.delete(key);\n } else {\n newKeys.add(key);\n }\n onItemSelectChange(newKeys);\n },\n [selectedKeys, onItemSelectChange]\n );\n\n // 渲染项\n const renderItem = (item: TransferItem) => {\n if (render) {\n return render(item);\n }\n return item.title;\n };\n\n const selectedCount = selectableItems.filter((item) =>\n selectedKeys.has(item.key)\n ).length;\n\n // 默认头部渲染\n const renderDefaultHeader = () => (\n <TransferHeader>\n <TransferTitle>\n {showSelectAll && selectableItems.length > 0 && (\n <Checkbox\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={handleSelectAll}\n disabled={disabled}\n />\n )}\n {title}\n </TransferTitle>\n <TransferCount>\n {selectedCount}/{dataSource.length}\n </TransferCount>\n </TransferHeader>\n );\n\n return (\n <TransferPanel>\n {/* 头部 */}\n {header ? (\n header({\n direction,\n selectedCount,\n totalCount: dataSource.length,\n selectedKeys,\n onSelectAll: handleSelectAll,\n title,\n showSelectAll,\n disabled,\n onClearAll,\n clearMode,\n })\n ) : (\n renderDefaultHeader()\n )}\n\n {/* 搜索框 */}\n {showSearch && (\n <TransferSearchWrapper>\n <Input\n suffix={<SearchOutline style={{color: (theme as any).components.transfer.search.iconColor}}/>}\n size=\"sm\"\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder={searchPlaceholder || locale?.searchPlaceholder || '请输入搜索内容'}\n disabled={disabled}\n aria-label=\"搜索输入框\"\n fullWidth\n />\n </TransferSearchWrapper>\n )}\n\n {/* 列表 */}\n <StyledTransferList>\n {displayData.length === 0 ? (\n <TransferEmpty>\n {locale?.notFoundContent || '暂无数据'}\n </TransferEmpty>\n ) : (\n displayData.map((item) => (\n <TransferItem\n key={item.key}\n disabled={disabled || item.disabled}\n selected={selectedKeys.has(item.key)}\n onClick={() => {\n if (!disabled && !item.disabled) {\n handleItemToggle(item.key);\n }\n }}\n >\n <TransferItemContent>\n {/* oneWay模式下,左侧显示checkbox,右侧不显示(右侧有删除按钮) */}\n {(!oneWay || direction === 'left') && (\n <Checkbox\n checked={selectedKeys.has(item.key)}\n disabled={disabled || item.disabled}\n onClick={(e) => {\n e.stopPropagation();\n }}\n />\n )}\n <TransferItemLabel>{renderItem(item)}</TransferItemLabel>\n </TransferItemContent>\n {oneWay && direction === 'right' && onItemDelete && (\n <TransferItemDeleteButton\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled && !item.disabled) {\n onItemDelete(item.key);\n }\n }}\n disabled={disabled || item.disabled}\n >\n <DeleteOutline />\n </TransferItemDeleteButton>\n )}\n </TransferItem>\n ))\n )}\n </StyledTransferList>\n\n {/* 分页 */}\n {isPaginationEnabled && filteredData.length > 0 && (\n <TransferPagination>\n <TransferPaginationInfo>\n {typeof pagination === 'object' && pagination.showPageInfo !== false && (\n <span>\n {(currentPage - 1) * pageSize + 1}-\n {Math.min(currentPage * pageSize, filteredData.length)} / {filteredData.length}\n </span>\n )}\n {typeof pagination === 'object' && pagination.showSizeChanger && (\n <Select\n value={pageSize.toString()}\n onChange={(value) => handlePageSizeChange(Number(value))}\n options={(pagination.pageSizeOptions || [10, 20, 50]).map((size) => ({\n value: size.toString(),\n label: `${size} 条/页`,\n }))}\n style={{ width: '80px', height: '24px', minWidth: '80px' }}\n disabled={disabled}\n />\n )}\n </TransferPaginationInfo>\n <TransferPaginationControls>\n <TransferPaginationButton\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={currentPage === 1}\n >\n <ChevronLeftOutline />\n </TransferPaginationButton>\n <span>\n {currentPage} / {totalPages}\n </span>\n <TransferPaginationButton\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n >\n <ChevronRightOutline />\n </TransferPaginationButton>\n </TransferPaginationControls>\n </TransferPagination>\n )}\n\n {/* 底部 */}\n {footer && <TransferFooter>{footer({ direction })}</TransferFooter>}\n </TransferPanel>\n );\n};\n\n// ============================================================================\n// Transfer 主组件\n// ============================================================================\n\nexport const Transfer: React.FC<TransferProps> = ({\n dataSource = [],\n targetKeys: controlledTargetKeys,\n defaultTargetKeys = [],\n onChange,\n titles = ['源列表', '目标列表'],\n showSearch = false,\n searchPlaceholder = ['搜索源列表', '搜索目标列表'],\n filterOption,\n render,\n disabled = false,\n className,\n style,\n operations,\n showSelectAll = true,\n footer,\n locale,\n header,\n oneWay = false,\n actions,\n pagination,\n}) => {\n // 内部状态管理(非受控)\n const [internalTargetKeys, setInternalTargetKeys] = useState<Set<string>>(\n new Set(defaultTargetKeys)\n );\n\n // 判断是否受控\n const isControlled = controlledTargetKeys !== undefined;\n const targetKeysSet = useMemo(\n () =>\n isControlled\n ? new Set(controlledTargetKeys)\n : internalTargetKeys,\n [isControlled, controlledTargetKeys, internalTargetKeys]\n );\n\n // 左侧选中的项\n const [leftSelectedKeys, setLeftSelectedKeys] = useState<Set<string>>(new Set());\n // 右侧选中的项\n const [rightSelectedKeys, setRightSelectedKeys] = useState<Set<string>>(new Set());\n\n // 左侧数据源(未选中的项)\n const leftDataSource = useMemo(\n () => dataSource.filter((item) => !targetKeysSet.has(item.key)),\n [dataSource, targetKeysSet]\n );\n\n // 右侧数据源(已选中的项)\n const rightDataSource = useMemo(\n () => dataSource.filter((item) => targetKeysSet.has(item.key)),\n [dataSource, targetKeysSet]\n );\n\n // 移动到右侧\n const moveToRight = useCallback(() => {\n const newTargetKeys = new Set(targetKeysSet);\n const moveKeys = Array.from(leftSelectedKeys);\n \n moveKeys.forEach((key) => {\n newTargetKeys.add(key);\n });\n\n if (!isControlled) {\n setInternalTargetKeys(newTargetKeys);\n }\n\n setLeftSelectedKeys(new Set());\n onChange?.(Array.from(newTargetKeys), 'right', moveKeys);\n }, [targetKeysSet, leftSelectedKeys, isControlled, onChange]);\n\n // 移动到左侧\n const moveToLeft = useCallback(() => {\n const newTargetKeys = new Set(targetKeysSet);\n const moveKeys = Array.from(rightSelectedKeys);\n \n moveKeys.forEach((key) => {\n newTargetKeys.delete(key);\n });\n\n if (!isControlled) {\n setInternalTargetKeys(newTargetKeys);\n }\n\n setRightSelectedKeys(new Set());\n onChange?.(Array.from(newTargetKeys), 'left', moveKeys);\n }, [targetKeysSet, rightSelectedKeys, isControlled, onChange]);\n\n // 清空左侧所有数据(移动到右侧)\n const clearAllLeftData = useCallback(() => {\n const newTargetKeys = new Set(targetKeysSet);\n const allLeftKeys = leftDataSource.filter(item => !item.disabled).map(item => item.key);\n \n allLeftKeys.forEach((key) => {\n newTargetKeys.add(key);\n });\n\n if (!isControlled) {\n setInternalTargetKeys(newTargetKeys);\n }\n\n setLeftSelectedKeys(new Set());\n onChange?.(Array.from(newTargetKeys), 'right', allLeftKeys);\n }, [targetKeysSet, leftDataSource, isControlled, onChange]);\n\n // 清空右侧所有数据(移动到左侧)\n const clearAllRightData = useCallback(() => {\n const newTargetKeys = new Set(targetKeysSet);\n const moveKeys = Array.from(targetKeysSet).filter(key => {\n const item = dataSource.find(item => item.key === key);\n return item && !item.disabled;\n });\n \n moveKeys.forEach((key) => {\n newTargetKeys.delete(key);\n });\n\n if (!isControlled) {\n setInternalTargetKeys(newTargetKeys);\n }\n\n setRightSelectedKeys(new Set());\n onChange?.(Array.from(newTargetKeys), 'left', moveKeys);\n }, [targetKeysSet, dataSource, isControlled, onChange]);\n\n // 删除单个项目\n const handleItemDelete = useCallback(\n (key: string) => {\n const newTargetKeys = new Set(targetKeysSet);\n newTargetKeys.delete(key);\n\n if (!isControlled) {\n setInternalTargetKeys(newTargetKeys);\n }\n\n onChange?.(Array.from(newTargetKeys), 'left', [key]);\n },\n [targetKeysSet, isControlled, onChange]\n );\n\n // 判断操作按钮是否可用\n const canMoveToRight = leftSelectedKeys.size > 0 && !disabled;\n const canMoveToLeft = rightSelectedKeys.size > 0 && !disabled;\n\n // 渲染操作按钮\n const renderActions = () => {\n // 处理对象格式的 actions\n if (actions && typeof actions === 'object' && !Array.isArray(actions)) {\n const { left, right } = actions as TransferActions;\n\n if (oneWay) {\n // 单向模式只显示右侧按钮\n if (right) {\n if (typeof right === 'function') {\n return <React.Fragment key=\"right\">{right(Array.from(leftSelectedKeys))}</React.Fragment>;\n }\n return <React.Fragment key=\"right\">{right}</React.Fragment>;\n }\n return (\n <TransferOperationButton\n onClick={moveToRight}\n disabled={!canMoveToRight}\n >\n <ChevronRightOutline />\n {operations?.[0]}\n </TransferOperationButton>\n );\n }\n\n // 双向模式\n return (\n <>\n {left ? (\n typeof left === 'function' ? (\n <React.Fragment key=\"left\">{left(Array.from(leftSelectedKeys))}</React.Fragment>\n ) : (\n <React.Fragment key=\"left\">{left}</React.Fragment>\n )\n ) : (\n <TransferOperationButton\n onClick={moveToRight}\n disabled={!canMoveToRight}\n >\n <ChevronRightOutline />\n {operations?.[0]}\n </TransferOperationButton>\n )}\n {right ? (\n typeof right === 'function' ? (\n <React.Fragment key=\"right\">{right(Array.from(rightSelectedKeys))}</React.Fragment>\n ) : (\n <React.Fragment key=\"right\">{right}</React.Fragment>\n )\n ) : (\n <TransferOperationButton\n onClick={moveToLeft}\n disabled={!canMoveToLeft}\n >\n <ChevronLeftOutline />\n {operations?.[1]}\n </TransferOperationButton>\n )}\n </>\n );\n }\n\n // 处理数组格式的 actions(向后兼容)\n if (actions && Array.isArray(actions)) {\n if (oneWay) {\n // 单向模式只显示第一个按钮\n const action = actions[0];\n if (!action) {\n return (\n <TransferOperationButton\n onClick={moveToRight}\n disabled={!canMoveToRight}\n >\n <ChevronRightOutline />\n {operations?.[0]}\n </TransferOperationButton>\n );\n }\n\n if (typeof action === 'string') {\n return (\n <TransferOperationButton\n onClick={moveToRight}\n disabled={!canMoveToRight}\n >\n {action}\n </TransferOperationButton>\n );\n } else if (React.isValidElement(action)) {\n return <React.Fragment key=\"action-0\">{action}</React.Fragment>;\n } else if (typeof action === 'function') {\n return <React.Fragment key=\"action-0\">{(action as any)(Array.from(leftSelectedKeys))}</React.Fragment>;\n }\n return <React.Fragment key=\"action-0\">{action}</React.Fragment>;\n }\n\n // 双向模式\n const leftAction = actions[0];\n const rightAction = actions[1];\n\n return (\n <>\n {leftAction ? (\n typeof leftAction === 'string' ? (\n <TransferOperationButton\n onClick={moveToRight}\n disabled={!canMoveToRight}\n >\n {leftAction}\n </TransferOperationButton>\n ) : React.isValidElement(leftAction) ? (\n <React.Fragment key=\"left\">{leftAction}</React.Fragment>\n ) : typeof leftAction === 'function' ? (\n <React.Fragment key=\"left\">{(leftAction as any)(Array.from(leftSelectedKeys))}</React.Fragment>\n ) : (\n <React.Fragment key=\"left\">{leftAction}</React.Fragment>\n )\n ) : (\n <TransferOperationButton\n onClick={moveToRight}\n disabled={!canMoveToRight}\n >\n <ChevronRightOutline />\n {operations?.[0]}\n </TransferOperationButton>\n )}\n {rightAction ? (\n typeof rightAction === 'string' ? (\n <TransferOperationButton\n onClick={moveToLeft}\n disabled={!canMoveToLeft}\n >\n {rightAction}\n </TransferOperationButton>\n ) : React.isValidElement(rightAction) ? (\n <React.Fragment key=\"right\">{rightAction}</React.Fragment>\n ) : typeof rightAction === 'function' ? (\n <React.Fragment key=\"right\">{(rightAction as any)(Array.from(rightSelectedKeys))}</React.Fragment>\n ) : (\n <React.Fragment key=\"right\">{rightAction}</React.Fragment>\n )\n ) : (\n <TransferOperationButton\n onClick={moveToLeft}\n disabled={!canMoveToLeft}\n >\n <ChevronLeftOutline />\n {operations?.[1]}\n </TransferOperationButton>\n )}\n </>\n );\n }\n\n // 默认按钮\n if (oneWay) {\n return (\n <TransferOperationButton\n onClick={moveToRight}\n disabled={!canMoveToRight}\n >\n <ChevronRightOutline />\n {operations?.[0]}\n </TransferOperationButton>\n );\n }\n\n return (\n <>\n <TransferOperationButton\n onClick={moveToRight}\n disabled={!canMoveToRight}\n >\n <ChevronRightOutline />\n {operations?.[0]}\n </TransferOperationButton>\n <TransferOperationButton\n onClick={moveToLeft}\n disabled={!canMoveToLeft}\n >\n <ChevronLeftOutline />\n {operations?.[1]}\n </TransferOperationButton>\n </>\n );\n };\n\n return (\n <TransferRoot className={className} style={style}>\n {/* 左侧列表 */}\n <TransferList\n direction=\"left\"\n dataSource={leftDataSource}\n selectedKeys={leftSelectedKeys}\n disabled={disabled}\n showSearch={showSearch}\n searchPlaceholder={searchPlaceholder[0]}\n filterOption={filterOption}\n render={render}\n onItemSelectChange={setLeftSelectedKeys}\n title={titles[0]}\n showSelectAll={showSelectAll}\n footer={footer}\n locale={locale}\n header={header}\n onClearAll={clearAllLeftData}\n clearMode=\"all\"\n oneWay={oneWay}\n pagination={pagination}\n />\n\n {/* 操作按钮 */}\n <TransferOperations>\n {renderActions()}\n </TransferOperations>\n\n {/* 右侧列表 */}\n <TransferList\n direction=\"right\"\n dataSource={rightDataSource}\n selectedKeys={rightSelectedKeys}\n disabled={disabled}\n showSearch={showSearch}\n searchPlaceholder={searchPlaceholder[1]}\n filterOption={filterOption}\n render={render}\n onItemSelectChange={setRightSelectedKeys}\n title={titles[1]}\n showSelectAll={showSelectAll}\n footer={footer}\n locale={locale}\n header={header}\n onClearAll={clearAllRightData}\n clearMode=\"all\"\n oneWay={oneWay}\n onItemDelete={oneWay ? handleItemDelete : undefined}\n pagination={pagination}\n />\n </TransferRoot>\n );\n};\n\nTransfer.displayName = 'Transfer';\n\nexport default Transfer;\n","/**\n * Upload 上传组件样式\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n * \n * 完全还原 Figma 设计稿规范\n */\n\nimport styled from '@emotion/styled'\nimport { css } from '@emotion/react'\n\n// ============================================================================\n// 类型定义\n// ============================================================================\n\nexport const uploadStatuses = ['idle', 'uploading', 'success', 'error'] as const\nexport type UploadStatus = (typeof uploadStatuses)[number]\n\n// ============================================================================\n// 上传区域样式\n// ============================================================================\n\n/**\n * 上传区域容器\n */\nexport const UploadRoot = styled.div`\n width: 100%;\n`\n\n/**\n * 拖拽区域\n */\nexport const UploadDropzone = styled.div<{\n isDragActive: boolean\n isDisabled: boolean\n}>`\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 24px;\n padding: 40px 0;\n border: 1px solid ${({ theme, isDragActive }) => \n isDragActive ? theme.semantic.colors.brand.primary : theme.semantic.colors.border.primary};\n border-radius: 16px;\n background: ${({ theme, isDragActive }) => \n isDragActive ? '#EEF6FD' : theme.semantic.colors.background.surface};\n cursor: ${({ isDisabled }) => (isDisabled ? 'not-allowed' : 'pointer')};\n transition: all 0.2s ease;\n outline: none;\n\n ${({ isDisabled, theme }) =>\n !isDisabled &&\n css`\n &:hover {\n border-color: ${theme.semantic.colors.brand.primary};\n }\n\n &:focus-visible {\n border-color: ${theme.semantic.colors.brand.primary};\n box-shadow: 0 0 0 4px rgba(44, 111, 231, 0.18);\n }\n `}\n\n ${({ isDisabled, theme }) =>\n isDisabled &&\n css`\n opacity: 0.5;\n background: ${theme.semantic.colors.background.secondary};\n `}\n`\n\n/**\n * 上传图标容器\n */\nexport const UploadIconWrapper = styled.div`\n width: 100px;\n height: 100px;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\n/**\n * 上传提示文本容器\n */\nexport const UploadTextWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n width: 100%;\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n`\n\n/**\n * 主要提示文本\n */\nexport const UploadMainText = styled.div`\n font-size: 14px;\n line-height: 20px;\n color: ${({ theme }) => theme.semantic.colors.text.primary};\n text-align: center;\n width: 100%;\n`\n\n/**\n * 次要提示文本\n */\nexport const UploadSecondaryText = styled.p`\n font-size: 12px;\n line-height: 18px;\n color: rgba(10, 24, 51, 0.4);\n margin: 0;\n white-space: pre;\n`\n\n/**\n * 链接文本\n */\nexport const UploadLink = styled.span`\n color: ${({ theme }) => theme.semantic.colors.brand.primary};\n cursor: pointer;\n \n &:hover {\n text-decoration: underline;\n }\n`\n\n// ============================================================================\n// 文件列表样式\n// ============================================================================\n\n/**\n * 文件列表容器\n */\nexport const FileList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 16px;\n margin-top: 16px;\n width: 100%;\n`\n\n/**\n * 文件项容器\n */\nexport const FileItem = styled.div<{\n status: UploadStatus\n}>`\n display: flex;\n flex-direction: column;\n gap: 0;\n width: 100%;\n`\n\n/**\n * 文件信息行\n */\nexport const FileInfoRow = styled.div<{\n status: UploadStatus\n}>`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 7px 8px;\n border-radius: 4px;\n background: ${({ status, theme }) => {\n if (status === 'success') return '#FAFAFB'\n if (status === 'error') return '#FEF6F1'\n return theme.semantic.colors.background.surface\n }};\n flex: 1;\n`\n\n/**\n * 文件图标\n */\nexport const FileIcon = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: ${({ theme }) => theme.semantic.colors.text.primary};\n`\n\n/**\n * 文件名\n */\nexport const FileName = styled.div<{\n status: UploadStatus\n}>`\n flex: 1;\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 12px;\n line-height: 18px;\n color: ${({ status, theme }) => {\n if (status === 'error') return theme.semantic.colors.state.danger\n return theme.semantic.colors.text.primary\n }};\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`\n\n/**\n * 状态图标\n */\nexport const StatusIcon = styled.span<{\n status: UploadStatus\n}>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: ${({ status, theme }) => {\n if (status === 'success') return theme.semantic.colors.state.success\n if (status === 'error') return theme.semantic.colors.state.danger\n return theme.semantic.colors.text.secondary\n }};\n`\n\n/**\n * 删除按钮\n */\nexport const DeleteButton = styled.button`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n border: none;\n background: transparent;\n color: ${({ theme }) => theme.semantic.colors.text.secondary};\n cursor: pointer;\n flex-shrink: 0;\n transition: color 0.2s ease;\n\n &:hover {\n color: ${({ theme }) => theme.semantic.colors.text.primary};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.semantic.colors.brand.primary};\n outline-offset: 2px;\n border-radius: 2px;\n }\n`\n\n/**\n * 进度条容器\n */\nexport const ProgressWrapper = styled.div`\n display: flex;\n align-items: center;\n gap: 16px;\n height: 16px;\n margin-top: 0;\n`\n\n/**\n * 进度条轨道\n */\nexport const ProgressTrack = styled.div`\n flex: 1;\n height: 6px;\n background: ${({ theme }) => theme.semantic.colors.background.secondary};\n border-radius: 5px;\n overflow: hidden;\n`\n\n/**\n * 进度条填充\n */\nexport const ProgressBar = styled.div<{\n percent: number\n}>`\n height: 100%;\n width: ${({ percent }) => percent}%;\n background: ${({ theme }) => theme.semantic.colors.brand.primary};\n border-radius: 12px;\n transition: width 0.3s ease;\n`\n\n/**\n * 进度百分比文本\n */\nexport const ProgressText = styled.span`\n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: 12px;\n line-height: 18px;\n color: ${({ theme }) => theme.semantic.colors.text.secondary};\n white-space: nowrap;\n flex-shrink: 0;\n width: 40px;\n text-align: right;\n`\n\n/**\n * 隐藏的文件输入框\n */\nexport const HiddenInput = styled.input`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n`\n\n","/**\n * Upload 上传组件\n * \n * 基于 react-aria 实现无障碍访问的上传组件\n * 完全符合 Figma 设计稿规范\n * \n * @example\n * ```tsx\n * <Upload\n * accept=\".xls,.xlsx\"\n * maxSize={5 * 1024 * 1024}\n * onChange={(files) => console.log(files)}\n * />\n * ```\n */\n\nimport { forwardRef, useRef, useState, type ReactNode, type ChangeEvent, type DragEvent } from 'react'\nimport { useButton } from 'react-aria'\nimport type { AriaButtonProps } from 'react-aria'\nimport {\n UploadRoot,\n UploadDropzone,\n UploadIconWrapper,\n UploadTextWrapper,\n UploadMainText,\n UploadSecondaryText,\n UploadLink,\n FileList,\n FileItem,\n FileInfoRow,\n FileIcon,\n FileName,\n StatusIcon,\n DeleteButton,\n ProgressWrapper,\n ProgressTrack,\n ProgressBar,\n ProgressText,\n HiddenInput,\n uploadStatuses,\n type UploadStatus,\n} from './Upload.style'\n\n// 导出常量供外部使用\nexport const STATUSES = uploadStatuses\n\nexport interface UploadFile {\n /** 文件唯一标识 */\n uid: string\n /** 文件名 */\n name: string\n /** 文件对象 */\n file?: File\n /** 上传状态 */\n status: UploadStatus\n /** 上传进度 (0-100) */\n percent?: number\n /** 错误信息 */\n error?: string\n}\n\nexport type UploadProps = {\n /** 接受的文件类型 */\n accept?: string\n /** 是否支持多选 */\n multiple?: boolean\n /** 最大文件大小(字节) */\n maxSize?: number\n /** 最大文件数量 */\n maxCount?: number\n /** 是否禁用 */\n disabled?: boolean\n /** 文件列表 */\n fileList?: UploadFile[]\n /** 默认文件列表 */\n defaultFileList?: UploadFile[]\n /** 文件变化回调 */\n onChange?: (fileList: UploadFile[]) => void\n /** 文件上传前的钩子 */\n beforeUpload?: (file: File) => boolean | Promise<boolean>\n /** 自定义上传逻辑 */\n customRequest?: (options: {\n file: File\n onProgress: (percent: number) => void\n onSuccess: () => void\n onError: (error: Error) => void\n }) => void\n /** 主要提示文本 */\n mainText?: ReactNode\n /** 次要提示文本 */\n secondaryText?: ReactNode\n /** 文件类型提示 */\n fileTypeHint?: ReactNode\n /** 下载模板文本 */\n downloadTemplateText?: ReactNode\n /** 下载模板回调 */\n onDownloadTemplate?: () => void\n /** 自定义类名 */\n className?: string\n /** 自定义上传图标 */\n icon?: ReactNode\n}\n\n/**\n * 默认上传图标\n */\nconst DefaultUploadIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" fill=\"none\">\n <g clipPath=\"url(#clip0_6955_14967)\">\n <path d=\"M6.25 63.1836L28.525 52.195C28.8475 52.0359 29.2023 51.9531 29.5619 51.9531H70.6424C71.0049 51.9531 71.3625 52.0372 71.687 52.1988L93.75 63.1836V91.4062C93.75 92.7007 92.7007 93.75 91.4062 93.75H8.59375C7.29932 93.75 6.25 92.7007 6.25 91.4062V63.1836Z\" fill=\"#F0F0F0\"/>\n <path d=\"M6.25 63.1836H34.4859C35.7804 63.1836 36.8297 64.2329 36.8297 65.5273V69.8906C36.8297 71.185 37.879 72.2344 39.1734 72.2344H60.7687C62.0632 72.2344 63.1125 71.185 63.1125 69.8906V65.5273C63.1125 64.2329 64.1618 63.1836 65.4562 63.1836H93.75V92.9688C93.75 93.176 93.6677 93.3747 93.5212 93.5212C93.3747 93.6677 93.1759 93.75 92.9688 93.75H7.03125C6.82405 93.75 6.62534 93.6677 6.47882 93.5212C6.33231 93.3747 6.25 93.176 6.25 92.9688V63.1836Z\" fill=\"#FAFAFB\"/>\n <path d=\"M19.1445 39.9733C19.3009 39.41 20.0994 39.41 20.2558 39.9733C20.797 41.9242 22.3218 43.449 24.2727 43.9902C24.836 44.1466 24.836 44.9451 24.2727 45.1015C22.3218 45.6427 20.797 47.1675 20.2558 49.1184C20.0994 49.6817 19.3009 49.6817 19.1445 49.1184C18.6033 47.1675 17.0785 45.6427 15.1276 45.1015C14.5642 44.9451 14.5643 44.1466 15.1276 43.9902C17.0785 43.449 18.6033 41.9242 19.1445 39.9733Z\" fill=\"#F0F0F0\"/>\n <path d=\"M78.1066 35.6488C78.3468 34.7837 79.573 34.7837 79.8132 35.6488C80.6443 38.6449 82.9858 40.9864 85.9819 41.8175C86.8469 42.0577 86.8469 43.2839 85.9819 43.5241C82.9858 44.3552 80.6443 46.6968 79.8132 49.6929C79.573 50.5579 78.3468 50.5579 78.1066 49.6929C77.2755 46.6968 74.9339 44.3552 71.9379 43.5241C71.0728 43.2839 71.0728 42.0577 71.9379 41.8175C74.9339 40.9864 77.2755 38.6449 78.1066 35.6488Z\" fill=\"#F0F0F0\"/>\n <path d=\"M49.0173 14.5685C49.733 13.8105 50.9389 13.8105 51.6547 14.5685L62.8375 26.4101C63.9294 27.5668 63.1096 29.469 61.5188 29.4691H57.591C56.0884 29.4691 54.8704 30.6871 54.8704 32.1897L54.8703 41C54.8703 41.5523 54.4226 42 53.8703 42H46.8015C46.2492 42 45.8015 41.5523 45.8015 41L45.8016 32.1897C45.8016 30.6871 44.5835 29.4691 43.0809 29.4691H39.1532C37.5623 29.4691 36.7424 27.5669 37.8345 26.4101L49.0173 14.5685Z\" fill=\"#F0F0F0\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_6955_14967\">\n <rect width=\"100\" height=\"100\" fill=\"white\"/>\n </clipPath>\n </defs>\n </svg>\n)\n\n/**\n * 文件图标\n */\nconst FileIconSvg = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 1H3.5C2.67157 1 2 1.67157 2 2.5V13.5C2 14.3284 2.67157 15 3.5 15H12.5C13.3284 15 14 14.3284 14 13.5V6M9 1L14 6M9 1V6H14\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M5 7H7\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n <path d=\"M5 10H11\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n)\n\n/**\n * 成功图标\n */\nconst SuccessIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path d=\"M11.3333 5.5L6.75 10.0833L4.66667 8\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\n/**\n * 错误图标\n */\nconst ErrorIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"currentColor\" />\n <path d=\"M10 6L6 10M6 6L10 10\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n)\n\n/**\n * 删除图标\n */\nconst DeleteIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3.5 4.5H12.5M6.5 7V11.5M9.5 7V11.5M10.5 4.5V2.5C10.5 2.22386 10.2761 2 10 2H6C5.72386 2 5.5 2.22386 5.5 2.5V4.5M4.5 4.5H11.5V13C11.5 13.2761 11.2761 13.5 11 13.5H5C4.72386 13.5 4.5 13.2761 4.5 13V4.5Z\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\n/**\n * 生成唯一 ID\n */\nconst generateUid = () => `upload-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`\n\n/**\n * Upload 上传组件\n * \n * 基于 Figma 设计规范实现的上传组件,支持拖拽上传和点击上传\n * 使用 react-aria 保证无障碍访问性\n */\nexport const Upload = forwardRef<HTMLDivElement, UploadProps>(\n (\n {\n accept,\n multiple = false,\n maxSize,\n maxCount,\n disabled = false,\n fileList: controlledFileList,\n defaultFileList = [],\n onChange,\n beforeUpload,\n customRequest,\n mainText,\n secondaryText,\n fileTypeHint,\n downloadTemplateText,\n onDownloadTemplate,\n className,\n icon,\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const dropzoneRef = useRef<HTMLDivElement>(null)\n\n // 内部文件列表状态\n const [internalFileList, setInternalFileList] = useState<UploadFile[]>(defaultFileList)\n const [isDragActive, setIsDragActive] = useState(false)\n\n // 判断是否受控\n const isControlled = controlledFileList !== undefined\n const fileList = isControlled ? controlledFileList : internalFileList\n\n // 更新文件列表\n const updateFileList = (newFileList: UploadFile[]) => {\n if (!isControlled) {\n setInternalFileList(newFileList)\n }\n onChange?.(newFileList)\n }\n\n // 处理文件选择\n const handleFiles = async (files: FileList | null) => {\n if (!files || files.length === 0) return\n\n const filesArray = Array.from(files)\n\n // 检查文件数量限制\n if (maxCount && fileList.length + filesArray.length > maxCount) {\n console.warn(`最多只能上传 ${maxCount} 个文件`)\n return\n }\n\n // 处理每个文件\n const newFiles: UploadFile[] = []\n \n for (const file of filesArray) {\n // 检查文件大小\n if (maxSize && file.size > maxSize) {\n console.warn(`文件 ${file.name} 超过大小限制`)\n continue\n }\n\n // 执行 beforeUpload 钩子\n if (beforeUpload) {\n try {\n const result = await beforeUpload(file)\n if (!result) continue\n } catch (error) {\n console.error('beforeUpload error:', error)\n continue\n }\n }\n\n const uploadFile: UploadFile = {\n uid: generateUid(),\n name: file.name,\n file,\n status: 'uploading',\n percent: 0,\n }\n\n newFiles.push(uploadFile)\n }\n\n if (newFiles.length === 0) return\n\n // 更新文件列表\n const updatedFileList = [...fileList, ...newFiles]\n updateFileList(updatedFileList)\n\n // 执行上传\n newFiles.forEach((uploadFile) => {\n if (customRequest) {\n customRequest({\n file: uploadFile.file!,\n onProgress: (percent) => {\n updateFileList(\n updatedFileList.map((f) =>\n f.uid === uploadFile.uid ? { ...f, percent } : f\n )\n )\n },\n onSuccess: () => {\n updateFileList(\n updatedFileList.map((f) =>\n f.uid === uploadFile.uid ? { ...f, status: 'success', percent: 100 } : f\n )\n )\n },\n onError: (error) => {\n updateFileList(\n updatedFileList.map((f) =>\n f.uid === uploadFile.uid\n ? { ...f, status: 'error', error: error.message }\n : f\n )\n )\n },\n })\n } else {\n // 默认模拟上传\n simulateUpload(uploadFile.uid, updatedFileList)\n }\n })\n }\n\n // 模拟上传进度\n const simulateUpload = (uid: string, currentFileList: UploadFile[]) => {\n let percent = 0\n const interval = setInterval(() => {\n percent += 10\n if (percent >= 100) {\n clearInterval(interval)\n updateFileList(\n currentFileList.map((f) =>\n f.uid === uid ? { ...f, status: 'success', percent: 100 } : f\n )\n )\n } else {\n updateFileList(\n currentFileList.map((f) =>\n f.uid === uid ? { ...f, percent } : f\n )\n )\n }\n }, 200)\n }\n\n // 处理文件输入变化\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n handleFiles(e.target.files)\n // 清空 input 值,允许重复选择同一文件\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n }\n\n // 处理拖拽进入\n const handleDragEnter = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) {\n setIsDragActive(true)\n }\n }\n\n // 处理拖拽离开\n const handleDragLeave = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragActive(false)\n }\n\n // 处理拖拽悬停\n const handleDragOver = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n // 处理文件放置\n const handleDrop = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragActive(false)\n\n if (disabled) return\n\n const files = e.dataTransfer.files\n handleFiles(files)\n }\n\n // 处理点击上传区域\n const handleClick = () => {\n if (!disabled) {\n inputRef.current?.click()\n }\n }\n\n // 处理删除文件\n const handleDelete = (uid: string) => {\n const newFileList = fileList.filter((f) => f.uid !== uid)\n updateFileList(newFileList)\n }\n\n // 使用 react-aria 的 useButton\n const { buttonProps } = useButton(\n {\n onPress: handleClick,\n isDisabled: disabled,\n } as AriaButtonProps,\n dropzoneRef\n )\n\n // 渲染状态图标\n const renderStatusIcon = (status: UploadStatus) => {\n switch (status) {\n case 'success':\n return <SuccessIcon />\n case 'error':\n return <ErrorIcon />\n default:\n return null\n }\n }\n\n return (\n <UploadRoot ref={ref} className={className}>\n <UploadDropzone\n {...buttonProps}\n ref={dropzoneRef}\n isDragActive={isDragActive}\n isDisabled={disabled}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-label=\"上传文件区域\"\n >\n <UploadIconWrapper>\n {icon || <DefaultUploadIcon />}\n </UploadIconWrapper>\n\n <UploadTextWrapper>\n <UploadMainText>\n {mainText || (\n <>\n 将文件拖到此处,或<UploadLink>点击上传</UploadLink>\n </>\n )}\n </UploadMainText>\n\n {secondaryText && (\n <UploadSecondaryText>{secondaryText}</UploadSecondaryText>\n )}\n\n {(fileTypeHint || downloadTemplateText) && (\n <UploadSecondaryText>\n {fileTypeHint}\n {downloadTemplateText && onDownloadTemplate && (\n <>\n {' '}\n <UploadLink onClick={(e) => {\n e.stopPropagation()\n onDownloadTemplate()\n }}>\n {downloadTemplateText}\n </UploadLink>\n </>\n )}\n </UploadSecondaryText>\n )}\n </UploadTextWrapper>\n\n <HiddenInput\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n disabled={disabled}\n aria-hidden=\"true\"\n />\n </UploadDropzone>\n\n {fileList.length > 0 && (\n <FileList>\n {fileList.map((file) => (\n <FileItem key={file.uid} status={file.status}>\n <FileInfoRow status={file.status}>\n <FileIcon>\n <FileIconSvg />\n </FileIcon>\n <FileName status={file.status}>{file.name}</FileName>\n {(file.status === 'success' || file.status === 'error') && (\n <>\n <StatusIcon status={file.status}>\n {renderStatusIcon(file.status)}\n </StatusIcon>\n <DeleteButton\n onClick={() => handleDelete(file.uid)}\n aria-label={`删除文件 ${file.name}`}\n >\n <DeleteIcon />\n </DeleteButton>\n </>\n )}\n </FileInfoRow>\n\n {file.status === 'uploading' && (\n <ProgressWrapper>\n <ProgressTrack>\n <ProgressBar percent={file.percent || 0} />\n </ProgressTrack>\n <ProgressText>{file.percent || 0}%</ProgressText>\n </ProgressWrapper>\n )}\n </FileItem>\n ))}\n </FileList>\n )}\n </UploadRoot>\n )\n }\n)\n\nUpload.displayName = 'Upload'\n\n","import styled from '@emotion/styled';\nimport { CardTokens } from '../types/component-tokens.types';\n\nexport const CardContainer = styled.div<{\n tokens: CardTokens;\n variant: 'elevated' | 'outlined' | 'filled';\n hoverable?: boolean;\n}>`\n background: ${({ tokens, variant }) => \n variant === 'filled' ? tokens.footer.background : tokens.container.background.default};\n border: ${({ tokens, variant }) => \n variant === 'outlined' ? `1px solid ${tokens.container.border.default}` : 'none'};\n box-shadow: ${({ tokens, variant }) => \n variant === 'elevated' ? tokens.container.shadow.elevated : 'none'};\n border-radius: ${({ tokens }) => tokens.container.radius};\n transition: ${({ tokens }) => tokens.container.transition};\n display: flex;\n flex-direction: column;\n overflow: hidden; /* Ensures content/images respect border radius */\n\n ${({ hoverable, tokens, variant }) =>\n hoverable &&\n `\n cursor: pointer;\n &:hover {\n box-shadow: ${variant === 'elevated' ? tokens.container.shadow.elevatedHover : 'none'};\n border-color: ${variant === 'outlined' ? tokens.container.border.hover : 'transparent'};\n }\n `}\n`;\n\nexport const CardHeader = styled.div<{ tokens: CardTokens }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ${({ tokens }) => tokens.header.padding};\n border-bottom: ${({ tokens }) => tokens.header.borderBottom};\n /* Removed min-height to allow content to dictate height */\n`;\n\nexport const CardTitle = styled.div<{ tokens: CardTokens }>`\n color: ${({ tokens }) => tokens.header.title.color};\n font-size: ${({ tokens }) => tokens.header.title.fontSize};\n font-weight: ${({ tokens }) => tokens.header.title.fontWeight};\n flex: 1;\n /* Allow title to wrap if needed, or keep ellipsis */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const CardExtra = styled.div<{ tokens: CardTokens }>`\n color: ${({ tokens }) => tokens.header.extra.color};\n font-size: ${({ tokens }) => tokens.header.extra.fontSize};\n margin-left: 16px;\n`;\n\nexport const CardBody = styled.div<{ tokens: CardTokens; padding?: string }>`\n padding: ${({ tokens, padding }) => padding || tokens.padding.md};\n flex: 1;\n /* Ensure text is legible */\n color: ${({ tokens }) => tokens.header.title.color}; \n font-size: 14px;\n line-height: 1.6;\n`;\n\nexport const CardCover = styled.div<{ tokens: CardTokens }>`\n width: 100%;\n position: relative;\n \n > * {\n display: block;\n width: 100%;\n /* Ensure image covers the area nicely */\n object-fit: cover;\n }\n \n img {\n /* If it's the first child, top radius matches card */\n &:first-of-type {\n border-radius: ${({ tokens }) => tokens.cover.radius};\n }\n }\n`;\n\nexport const CardFooter = styled.div<{ tokens: CardTokens }>`\n padding: ${({ tokens }) => tokens.footer.padding};\n background: ${({ tokens }) => tokens.footer.background};\n border-top: ${({ tokens }) => tokens.footer.borderTop};\n`;\n","import React, { ReactNode } from 'react';\nimport { useTheme } from '@emotion/react';\nimport type { AppTheme } from '@kingsoft-ai/theme';\nimport {\n CardContainer,\n CardHeader,\n CardTitle,\n CardExtra,\n CardBody,\n CardCover,\n CardFooter,\n} from './Card.style';\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /**\n * Card title\n */\n title?: ReactNode;\n /**\n * Content to render in the top-right corner of the card\n */\n extra?: ReactNode;\n /**\n * Card cover image\n */\n cover?: ReactNode;\n /**\n * Card footer content\n */\n footer?: ReactNode;\n /**\n * Lift up when hovering card\n */\n hoverable?: boolean;\n /**\n * Card variant\n * @default 'elevated'\n */\n variant?: 'elevated' | 'outlined' | 'filled';\n /**\n * Custom padding for body\n */\n bodyPadding?: string;\n children?: ReactNode;\n}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n title,\n extra,\n cover,\n footer,\n hoverable = false,\n variant = 'elevated',\n bodyPadding,\n children,\n className,\n ...rest\n },\n ref\n ) => {\n const theme = useTheme() as AppTheme;\n // Fallback to avoid crash if theme context is missing or card tokens undefined\n const tokens = theme?.components?.card;\n\n if (!tokens) {\n console.warn('Card: Theme tokens not found. Make sure Card is wrapped in DesignThemeProvider.');\n return null;\n }\n\n return (\n <CardContainer\n ref={ref}\n tokens={tokens}\n variant={variant}\n hoverable={hoverable}\n className={className}\n {...rest}\n >\n {cover && <CardCover tokens={tokens}>{cover}</CardCover>}\n {(title || extra) && (\n <CardHeader tokens={tokens}>\n {title && <CardTitle tokens={tokens}>{title}</CardTitle>}\n {extra && <CardExtra tokens={tokens}>{extra}</CardExtra>}\n </CardHeader>\n )}\n <CardBody tokens={tokens} padding={bodyPadding}>\n {children}\n </CardBody>\n {footer && <CardFooter tokens={tokens}>{footer}</CardFooter>}\n </CardContainer>\n );\n }\n);\n\nCard.displayName = 'Card';\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { CardTokens } from '../types/component-tokens.types';\n\nexport const getCardTokens: TokenGenerator<CardTokens> = ({ global, semantic }) => ({\n container: {\n background: {\n default: semantic.colors.background.surface,\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.border.strong,\n },\n shadow: {\n // Softer, more diffuse shadow for \"soft tech\" feel\n elevated: '0px 4px 24px 0px rgba(0, 0, 0, 0.04)',\n elevatedHover: '0px 8px 32px 0px rgba(0, 0, 0, 0.08)',\n outlined: 'none',\n filled: 'none',\n },\n // Increased radius for softer look\n radius: global.radii.r6, // 16px\n transition: 'all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1)',\n },\n padding: {\n sm: global.spacing.md,\n md: global.spacing.xl, // Increased to 24px for more breathing room\n lg: global.spacing.xxl,\n },\n header: {\n padding: `${global.spacing.lg} ${global.spacing.xl} ${global.spacing.md}`, // 16px 24px 12px\n borderBottom: 'none', // Removed hard border\n title: {\n color: semantic.colors.text.primary,\n fontSize: global.typography.fontSize.md, // Reduced to 16px\n fontWeight: global.typography.fontWeight.semibold,\n },\n extra: {\n color: semantic.colors.text.secondary,\n fontSize: global.typography.fontSize.sm,\n },\n },\n cover: {\n radius: `${global.radii.r6} ${global.radii.r6} 0 0`,\n },\n footer: {\n padding: `${global.spacing.md} ${global.spacing.xl}`, // Match horizontal padding of header/body\n background: 'transparent',\n borderTop: `1px solid ${semantic.colors.border.primary}`,\n },\n});\n","/**\n * Tooltip 样式\n *\n * 设计目标:\n * - 轻盈、极简的提示框\n * - 支持四个方向的箭头\n * - 流畅的进入/退出动画\n */\n\nimport styled from '@emotion/styled'\nimport { keyframes } from '@emotion/react'\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'\n\nconst fadeIn = keyframes`\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n`\n\ninterface TooltipContainerProps {\n placement: TooltipPlacement\n}\n\nexport const TooltipContainer = styled.div<TooltipContainerProps>`\n z-index: ${({ theme }) => theme.components.tooltip.zIndex};\n \n padding: ${({ theme }) => theme.components.tooltip.padding};\n max-width: ${({ theme }) => theme.components.tooltip.maxWidth};\n \n background: ${({ theme }) => theme.components.tooltip.background};\n color: ${({ theme }) => theme.components.tooltip.color};\n border-radius: ${({ theme }) => theme.components.tooltip.borderRadius};\n box-shadow: ${({ theme }) => theme.components.tooltip.boxShadow};\n \n font-family: ${({ theme }) => theme.global.typography.fontFamily};\n font-size: ${({ theme }) => theme.components.tooltip.fontSize};\n line-height: ${({ theme }) => theme.components.tooltip.lineHeight};\n \n animation: ${fadeIn} ${({ theme }) => theme.components.tooltip.animation.duration}\n ${({ theme }) => theme.components.tooltip.animation.easing} forwards;\n \n /* 根据 placement 设置 transform-origin */\n transform-origin: ${({ placement }) => {\n switch (placement) {\n case 'top':\n return 'bottom center'\n case 'bottom':\n return 'top center'\n case 'left':\n return 'right center'\n case 'right':\n return 'left center'\n default:\n return 'center'\n }\n }};\n\n /* 确保文字不会换行太频繁 */\n word-wrap: break-word;\n`\n\ninterface TooltipArrowProps {\n placement: TooltipPlacement\n}\n\nexport const TooltipArrow = styled.div<TooltipArrowProps>`\n position: absolute;\n width: ${({ theme }) => theme.components.tooltip.arrow.size};\n height: ${({ theme }) => theme.components.tooltip.arrow.size};\n \n &::before {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n background: ${({ theme }) => theme.components.tooltip.background};\n transform: rotate(45deg);\n }\n\n /* 根据 placement 定位箭头 */\n ${({ placement }) => {\n switch (placement) {\n case 'top':\n return `\n bottom: -4px;\n left: 50%;\n transform: translateX(-50%);\n `\n case 'bottom':\n return `\n top: -4px;\n left: 50%;\n transform: translateX(-50%);\n `\n case 'left':\n return `\n right: -4px;\n top: 50%;\n transform: translateY(-50%);\n `\n case 'right':\n return `\n left: -4px;\n top: 50%;\n transform: translateY(-50%);\n `\n default:\n return ''\n }\n }}\n`\n","/**\n * Tooltip 文字提示组件\n *\n * 基于 react-aria 实现无障碍访问的提示组件\n * 支持 hover/focus 触发,自定义位置与延迟\n *\n * @example\n * ```tsx\n * <Tooltip content=\"提示内容\">\n * <Button>悬停查看</Button>\n * </Tooltip>\n * ```\n */\n\nimport {\n forwardRef,\n useRef,\n useState,\n useCallback,\n useEffect,\n isValidElement,\n type ReactNode,\n type ReactElement,\n type CSSProperties,\n} from 'react'\n// @ts-ignore - react-dom type issue (workspace tsconfig)\nimport { createPortal } from 'react-dom'\nimport { mergeProps } from '@react-aria/utils'\nimport { useFocusWithin, useHover } from 'react-aria'\nimport {\n TooltipContainer,\n TooltipArrow,\n type TooltipPlacement,\n} from './Tooltip.style'\n\nexport type { TooltipPlacement }\n\nexport type TooltipProps = {\n /**\n * 触发 Tooltip 的子元素\n * 必须是可接受 ref 的单一 React 元素\n */\n children: ReactElement\n\n /**\n * Tooltip 显示的内容\n */\n content: ReactNode\n\n /**\n * 弹出位置\n * @default 'top'\n */\n placement?: TooltipPlacement\n\n /**\n * 距离触发元素的偏移量 (px)\n * @default 8\n */\n offset?: number\n\n /**\n * 打开延迟(毫秒)\n * @default 0\n */\n delay?: number\n\n /**\n * 关闭延迟(毫秒)\n * @default 0\n */\n closeDelay?: number\n\n /**\n * 是否禁用 Tooltip(统一 API,优先级高于 isDisabled)\n * @default false\n */\n disabled?: boolean\n\n /**\n * 是否显示箭头\n * @default true\n */\n showArrow?: boolean\n\n /**\n * 受控:是否打开(替代 isOpen,符合 Design System 规范)\n */\n open?: boolean\n\n /**\n * 非受控:默认是否打开\n * @default false\n */\n defaultOpen?: boolean\n\n /**\n * 打开状态变更回调\n */\n onOpenChange?: (open: boolean) => void\n\n /**\n * 自定义类名\n */\n className?: string\n\n /**\n * 自定义样式\n */\n style?: CSSProperties\n}\n\n/**\n * Tooltip 文字提示组件\n *\n * 基于 React Aria 实现的无障碍提示组件\n */\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n content,\n placement = 'top',\n offset = 8,\n delay = 0,\n closeDelay = 0,\n disabled = false,\n showArrow = true,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n className,\n style,\n },\n forwardedRef,\n ) => {\n // SSR-safe\n if (typeof document === 'undefined') return children\n\n // 内部状态管理\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n // Refs\n const triggerRef = useRef<HTMLElement>(null)\n const tooltipRef = useRef<HTMLDivElement>(null)\n const openTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // 位置状态\n const [position, setPosition] = useState<{ top: number; left: number }>({ top: 0, left: 0 })\n\n // 清除定时器\n const clearTimers = useCallback(() => {\n if (openTimerRef.current) {\n clearTimeout(openTimerRef.current)\n openTimerRef.current = null\n }\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current)\n closeTimerRef.current = null\n }\n }, [])\n\n // 更新打开状态\n const updateOpen = useCallback(\n (nextOpen: boolean) => {\n if (disabled) return\n if (!isControlled) {\n setInternalOpen(nextOpen)\n }\n onOpenChange?.(nextOpen)\n },\n [disabled, isControlled, onOpenChange],\n )\n\n // 打开 Tooltip\n const handleOpen = useCallback(() => {\n if (disabled) return\n clearTimers()\n\n if (delay > 0) {\n openTimerRef.current = setTimeout(() => {\n updateOpen(true)\n }, delay)\n } else {\n updateOpen(true)\n }\n }, [disabled, delay, clearTimers, updateOpen])\n\n // 关闭 Tooltip\n const handleClose = useCallback(() => {\n clearTimers()\n\n if (closeDelay > 0) {\n closeTimerRef.current = setTimeout(() => {\n updateOpen(false)\n }, closeDelay)\n } else {\n updateOpen(false)\n }\n }, [closeDelay, clearTimers, updateOpen])\n\n // Hover 交互\n const { hoverProps } = useHover({\n isDisabled: disabled,\n onHoverStart: handleOpen,\n onHoverEnd: handleClose,\n })\n\n // Focus 交互\n const { focusWithinProps } = useFocusWithin({\n isDisabled: disabled,\n onFocusWithin: () => handleOpen(),\n onBlurWithin: () => handleClose(),\n })\n\n // 计算 Tooltip 位置\n const updatePosition = useCallback(() => {\n if (!triggerRef.current || !tooltipRef.current) return\n\n const triggerRect = triggerRef.current.getBoundingClientRect()\n const tooltipRect = tooltipRef.current.getBoundingClientRect()\n const scrollX = window.scrollX\n const scrollY = window.scrollY\n\n let top = 0\n let left = 0\n\n switch (placement) {\n case 'top':\n top = triggerRect.top + scrollY - tooltipRect.height - offset\n left = triggerRect.left + scrollX + (triggerRect.width - tooltipRect.width) / 2\n break\n case 'bottom':\n top = triggerRect.bottom + scrollY + offset\n left = triggerRect.left + scrollX + (triggerRect.width - tooltipRect.width) / 2\n break\n case 'left':\n top = triggerRect.top + scrollY + (triggerRect.height - tooltipRect.height) / 2\n left = triggerRect.left + scrollX - tooltipRect.width - offset\n break\n case 'right':\n top = triggerRect.top + scrollY + (triggerRect.height - tooltipRect.height) / 2\n left = triggerRect.right + scrollX + offset\n break\n }\n\n setPosition({ top, left })\n }, [placement, offset])\n\n // 监听位置更新\n useEffect(() => {\n if (!isOpen) return\n\n // 初始计算位置\n updatePosition()\n\n // 监听滚动和窗口大小变化\n const handleUpdate = () => updatePosition()\n window.addEventListener('scroll', handleUpdate, true)\n window.addEventListener('resize', handleUpdate)\n\n return () => {\n window.removeEventListener('scroll', handleUpdate, true)\n window.removeEventListener('resize', handleUpdate)\n }\n }, [isOpen, updatePosition])\n\n // 清理定时器\n useEffect(() => {\n return () => clearTimers()\n }, [clearTimers])\n\n // 验证 children 是有效的 React 元素\n if (!isValidElement(children)) {\n console.warn('Tooltip: children must be a valid React element')\n return children\n }\n\n // 使用 wrapper 包裹 children,确保 hover 事件不被子组件内部实现覆盖\n const wrapperProps = mergeProps(hoverProps, focusWithinProps, {\n ref: triggerRef,\n 'aria-describedby': isOpen ? 'kai-tooltip' : undefined,\n })\n\n // 使用 span 作为 wrapper,设置 display: inline-block 保持布局\n const trigger = (\n <span \n {...wrapperProps}\n style={{ display: 'inline-block' }}\n >\n {children}\n </span>\n )\n\n // Tooltip 内容\n const tooltipContent = isOpen && !disabled && content ? (\n createPortal(\n <TooltipContainer\n ref={(node) => {\n tooltipRef.current = node\n if (typeof forwardedRef === 'function') {\n forwardedRef(node)\n } else if (forwardedRef) {\n forwardedRef.current = node\n }\n }}\n id=\"kai-tooltip\"\n role=\"tooltip\"\n placement={placement}\n className={className}\n style={{\n ...style,\n position: 'absolute',\n top: position.top,\n left: position.left,\n }}\n data-placement={placement}\n >\n {showArrow && <TooltipArrow placement={placement} />}\n {content}\n </TooltipContainer>,\n document.body,\n )\n ) : null\n\n return (\n <>\n {trigger}\n {tooltipContent}\n </>\n )\n },\n)\n\nTooltip.displayName = 'Tooltip'\n","import { TokenGenerator } from '../types/theme-utils';\nimport { ButtonTokens, IconButtonTokens } from '../types/component-tokens.types';\n\nexport const getButtonTokens: TokenGenerator<ButtonTokens> = ({ global, semantic }) => ({\n primary: {\n background: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n text: {\n default: semantic.colors.text.onBrand,\n },\n border: {\n default: 'transparent',\n },\n shadow: {\n default: 'none',\n hover: 'none',\n },\n },\n secondary: {\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n active: semantic.colors.background.surfaceSubtle,\n },\n text: {\n default: semantic.colors.brand.primary,\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.brand.primary,\n active: semantic.colors.brand.primaryActive,\n },\n shadow: {\n default: 'none',\n },\n },\n text: {\n background: {\n default: 'transparent',\n hover: semantic.colors.brand.primarySubtle,\n active: '#F0F0F0', // 文本按钮点击态背景 - note: this was hardcoded in original\n },\n text: {\n default: semantic.colors.brand.primary,\n },\n border: {\n default: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n },\n },\n danger: {\n background: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.dangerHover,\n active: semantic.colors.state.dangerActive,\n },\n text: {\n default: semantic.colors.state.dangerOn,\n },\n border: {\n default: 'transparent',\n },\n shadow: {\n default: 'none',\n hover: 'none',\n },\n },\n gradient: {\n background: {\n default: global.gradients.blueViolet,\n gradientFrom: '#0194FF',\n gradientTo: '#D581FF',\n },\n text: {\n default: global.colors.common.white,\n },\n border: {\n default: 'transparent',\n },\n shadow: {\n default: 'none',\n hover: 'none',\n },\n },\n disabled: {\n background: {\n default: semantic.colors.border.primary,\n },\n text: {\n default: semantic.colors.text.disabled,\n },\n opacity: 0.6,\n },\n size: {\n sm: {\n height: '24px',\n fontSize: global.typography.fontSize.sm, // 14px\n paddingInline: global.spacing.lg, // 16px\n iconSize: '16px',\n },\n md: {\n height: '32px',\n fontSize: global.typography.fontSize.sm, // 14px\n paddingInline: global.spacing.lg, // 16px\n iconSize: '16px',\n },\n lg: {\n height: '40px',\n fontSize: global.typography.fontSize.sm, // 14px\n paddingInline: global.spacing.lg, // 16px\n iconSize: '16px',\n },\n },\n borderRadius: global.radii.r3, // 6px - Figma 设计稿圆角\n fontWeight: global.typography.fontWeight.regular, // 400\n gap: global.spacing.sm, // 8px 图标和文字间距\n transition: '0.2s ease',\n});\n\nexport const getIconButtonTokens: TokenGenerator<IconButtonTokens> = ({ global, semantic }) => ({\n appearance: {\n solid: {\n primary: {\n background: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.text.onBrand,\n },\n },\n neutral: {\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n active: semantic.colors.background.surfaceStrong,\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.text.primary,\n },\n },\n danger: {\n background: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.dangerHover,\n active: semantic.colors.state.dangerActive,\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.state.dangerOn,\n },\n },\n },\n outline: {\n primary: {\n background: {\n default: 'transparent',\n hover: semantic.colors.brand.primarySubtle,\n active: 'rgba(44, 111, 231, 0.16)',\n },\n border: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primary,\n active: semantic.colors.brand.primary,\n },\n icon: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n },\n neutral: {\n background: {\n default: 'transparent',\n hover: semantic.colors.background.surfaceSubtle,\n active: semantic.colors.background.surfaceStrong,\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.border.strong,\n active: semantic.colors.border.strong,\n },\n icon: {\n default: semantic.colors.text.primary,\n hover: semantic.colors.text.primary,\n active: semantic.colors.text.primary,\n },\n },\n danger: {\n background: {\n default: 'transparent',\n hover: semantic.colors.state.dangerSubtle,\n active: 'rgba(237, 28, 28, 0.18)',\n },\n border: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.danger,\n active: semantic.colors.state.danger,\n },\n icon: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.dangerHover,\n active: semantic.colors.state.dangerActive,\n },\n },\n },\n ghost: {\n primary: {\n background: {\n default: 'transparent',\n hover: semantic.colors.brand.primarySubtle,\n active: 'rgba(44, 111, 231, 0.16)',\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n },\n neutral: {\n background: {\n default: 'transparent',\n hover: 'rgba(10, 24, 51, 0.05)',\n active: 'rgba(10, 24, 51, 0.1)',\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.text.primary,\n },\n },\n danger: {\n background: {\n default: 'transparent',\n hover: semantic.colors.state.dangerSubtle,\n active: 'rgba(237, 28, 28, 0.18)',\n },\n border: {\n default: 'transparent',\n },\n icon: {\n default: semantic.colors.state.danger,\n hover: semantic.colors.state.dangerHover,\n active: semantic.colors.state.dangerActive,\n },\n },\n },\n },\n disabled: {\n background: semantic.colors.background.surfaceSubtle,\n border: semantic.colors.border.primary,\n icon: semantic.colors.text.disabled,\n opacity: 0.6,\n },\n size: {\n sm: {\n edge: '24px',\n iconSize: '16px',\n },\n md: {\n edge: '32px',\n iconSize: '18px',\n },\n lg: {\n edge: '40px',\n iconSize: '20px',\n },\n },\n borderRadius: global.radii.r3,\n transition: '0.2s ease',\n focusRing: {\n color: 'rgba(44, 111, 231, 0.35)',\n offset: '2px',\n width: '2px',\n },\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { FloatButtonTokens } from '../types/component-tokens.types';\n\nexport const getFloatButtonTokens: TokenGenerator<FloatButtonTokens> = ({ global, semantic }) => ({\n default: {\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n active: semantic.colors.background.surfaceSubtle,\n },\n text: {\n default: semantic.colors.text.primary,\n },\n border: {\n default: semantic.colors.border.primary,\n },\n shadow: {\n default: global.shadows.l1,\n hover: global.shadows.l3,\n },\n },\n primary: {\n background: {\n default: semantic.colors.brand.primary,\n hover: semantic.colors.brand.primaryHover,\n active: semantic.colors.brand.primaryActive,\n },\n text: {\n default: semantic.colors.text.onBrand,\n },\n border: {\n default: 'transparent',\n },\n shadow: {\n default: global.shadows.l1,\n hover: global.shadows.l3,\n },\n },\n disabled: {\n background: {\n default: semantic.colors.border.primary,\n },\n text: {\n default: semantic.colors.text.disabled,\n },\n opacity: 0.6,\n },\n size: {\n sm: {\n size: '32px',\n },\n md: {\n size: '40px',\n },\n lg: {\n size: '48px',\n },\n },\n icon: {\n size: global.typography.fontSize.lg,\n },\n description: {\n fontSize: global.typography.fontSize.xs,\n lineHeight: `${global.typography.lineHeight.tight}`,\n },\n});\n","import { TokenGenerator } from '../types/theme-utils';\nimport { CheckboxTokens } from '../types/component-tokens.types';\n\nexport const getCheckboxTokens: TokenGenerator<CheckboxTokens> = ({ global, semantic }) => ({\n control: {\n size: \"16px\", // Checkbox 尺寸\n borderRadius: global.radii.r2, // 4px - 最小组件圆角\n borderWidth: \"1px\",\n background: {\n default: global.colors.common.white, // 未选中背景:白色\n checked: semantic.colors.brand.primary, // 选中背景:#2C6FE7\n disabled: global.colors.neutral[100], // 禁用未选中:#F0F2F4\n disabledChecked: global.colors.blue[200], // 禁用选中:#AAD1FC\n },\n borderColor: {\n default: global.colors.neutral[400], // 未选中边框:#C2C5CC\n hover: semantic.colors.brand.primary, // hover边框:#2C6FE7\n checked: semantic.colors.brand.primary, // 选中边框:#2C6FE7\n disabled: global.colors.neutral[400], // 禁用边框:#C2C5CC\n disabledChecked: global.colors.blue[200], // 禁用选中边框:#AAD1FC\n },\n icon: {\n color: global.colors.common.white, // 勾选图标颜色:白色\n size: \"10px\", // 图标大小\n },\n },\n focusRing: \"0 0 0 4px rgba(44, 111, 231, 0.18)\",\n gap: global.spacing.sm, // 8px - checkbox和文字间距\n text: {\n label: {\n fontSize: global.typography.fontSize.xs, // 12px\n lineHeight: \"18px\", // 行高18px\n color: global.colors.word[900], // #0A1833\n disabled: global.colors.word[300], // 禁用:#B6BEC2 (实际是#B5BAC2)\n fontWeight: global.typography.fontWeight.regular, // 400\n },\n },\n transition: \"0.16s ease\",\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { RadioTokens } from '../types/component-tokens.types';\n\nexport const getRadioTokens: TokenGenerator<RadioTokens> = ({ global }) => ({\n control: {\n size: \"16px\",\n borderRadius: \"999px\",\n borderWidth: \"1.5px\",\n background: global.colors.common.white,\n borderColor: {\n default: global.colors.neutral[300],\n hover: global.colors.blue[500],\n checked: global.colors.blue[500],\n disabled: global.colors.neutral[200],\n },\n indicator: {\n size: \"8px\",\n color: global.colors.blue[500],\n disabled: global.colors.word[300],\n },\n },\n focusRing: \"0 0 0 4px rgba(44, 111, 231, 0.18)\",\n gap: \"0.5rem\",\n text: {\n label: {\n fontSize: global.typography.fontSize.xs,\n color: global.colors.word[900],\n disabled: global.colors.word[300],\n fontWeight: global.typography.fontWeight.regular,\n },\n description: {\n color: global.colors.word[600],\n disabled: global.colors.word[300],\n fontSize: global.typography.fontSize.xs,\n },\n },\n disabled: {\n opacity: 0.55,\n },\n transition: \"0.16s ease\",\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { SwitchTokens } from '../types/component-tokens.types';\n\nexport const getSwitchTokens: TokenGenerator<SwitchTokens> = ({ global, semantic }) => ({\n size: {\n sm: {\n width: '36px', // 小尺寸开关宽度\n height: '20px', // 小尺寸开关高度\n thumbSize: '16px', // 小尺寸滑块\n fontSize: global.typography.fontSize.xs, // 12px\n paddingInline: '6px', // 左右内边距\n },\n md: {\n width: '44px', // 中等尺寸开关宽度(根据 Figma: 文字+滑块+间距)\n height: '24px', // 中等尺寸开关高度(Figma 设计)\n thumbSize: '18px', // 滑块尺寸(Figma 设计)\n fontSize: global.typography.fontSize.xs, // 12px(Figma 设计)\n paddingInline: '8px', // 左右内边距(左8px,右3px考虑滑块位置)\n },\n },\n background: {\n unchecked: global.colors.neutral[300], // 未选中状态:灰色 #D4D6D9\n checked: semantic.colors.brand.primary, // 选中状态:品牌蓝 #2C6FE7\n disabled: global.colors.neutral[200], // 禁用状态:浅灰\n },\n thumb: {\n background: global.colors.common.white, // 滑块:白色\n shadow: '0 1px 3px rgba(0, 0, 0, 0.12)', // 滑块阴影\n },\n text: {\n color: global.colors.common.white, // 文字颜色:白色\n fontSize: global.typography.fontSize.xs, // 12px\n fontWeight: global.typography.fontWeight.regular, // 400\n },\n borderRadius: global.radii.r5, // 12px - 中型容器圆角(Figma 设计)\n gap: global.spacing.xs, // 4px - 文字和滑块的间距(Figma 设计)\n transition: '0.2s cubic-bezier(0.4, 0, 0.2, 1)', // 平滑过渡动画\n disabled: {\n opacity: 0.5, // 禁用时的透明度\n },\n focusRing: {\n color: 'rgba(44, 111, 231, 0.3)', // Focus 环颜色\n offset: '2px', // Focus 环偏移\n },\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { InputTokens } from '../types/component-tokens.types';\n\nexport const getInputTokens: TokenGenerator<InputTokens> = ({ global, semantic }) => ({\n size: {\n sm: {\n height: '24px', // 小号输入框高度\n fontSize: global.typography.fontSize.xs, // 12px\n paddingInline: global.spacing.md, // 12px 左右内边距\n iconSize: '14px', // 小号图标尺寸\n },\n md: {\n height: '32px', // 标准输入框高度(Figma 设计)\n fontSize: global.typography.fontSize.xs, // 12px\n paddingInline: global.spacing.md, // 12px 左右内边距\n iconSize: '16px', // 标准图标尺寸\n },\n lg: {\n height: '40px', // 大号输入框高度\n fontSize: global.typography.fontSize.xs, // 12px\n paddingInline: global.spacing.md, // 12px 左右内边距\n iconSize: '18px', // 大号图标尺寸\n },\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.border.strong,\n focus: semantic.colors.brand.primary,\n error: semantic.colors.state.danger,\n disabled: semantic.colors.border.primary,\n },\n background: {\n default: semantic.colors.background.surface,\n disabled: semantic.colors.background.secondary,\n },\n text: {\n default: semantic.colors.text.primary,\n placeholder: semantic.colors.text.placeholder,\n disabled: semantic.colors.text.disabled,\n error: semantic.colors.state.danger,\n counter: semantic.colors.text.caption,\n },\n borderRadius: global.radii.r3, // 6px - 基础组件圆角\n gap: global.spacing.sm, // 8px - 图标与文字间距(Figma 设计)\n transition: '0.2s ease', // 过渡动画\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { SelectTokens } from '../types/component-tokens.types';\n\nexport const getSelectTokens: TokenGenerator<SelectTokens> = ({ global, semantic }) => ({\n size: {\n sm: {\n height: '24px',\n fontSize: global.typography.fontSize.xs,\n paddingInline: global.spacing.md,\n iconSize: '14px',\n },\n md: {\n height: '32px',\n fontSize: global.typography.fontSize.xs,\n paddingInline: global.spacing.md,\n iconSize: '16px',\n },\n lg: {\n height: '40px',\n fontSize: global.typography.fontSize.xs,\n paddingInline: global.spacing.md,\n iconSize: '18px',\n },\n },\n border: {\n default: semantic.colors.border.primary,\n hover: semantic.colors.border.strong,\n focus: semantic.colors.brand.primary,\n error: semantic.colors.state.danger,\n disabled: semantic.colors.border.primary,\n },\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surface,\n disabled: semantic.colors.background.secondary,\n },\n text: {\n default: semantic.colors.text.primary,\n placeholder: semantic.colors.text.placeholder,\n disabled: semantic.colors.text.disabled,\n error: semantic.colors.state.danger,\n },\n borderRadius: global.radii.r3,\n gap: global.spacing.sm,\n transition: '0.2s ease',\n popover: {\n background: semantic.colors.background.surface,\n border: `1px solid ${semantic.colors.border.primary}`,\n borderRadius: global.radii.r3,\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.08)',\n padding: '4px',\n },\n option: {\n height: '32px',\n paddingInline: '8px',\n fontSize: global.typography.fontSize.xs,\n borderRadius: global.radii.r2,\n gap: '8px',\n background: {\n default: 'transparent',\n hover: semantic.colors.background.surfaceSubtle,\n selected: semantic.colors.brand.primarySubtle,\n focused: semantic.colors.background.surfaceSubtle,\n },\n text: {\n default: semantic.colors.text.primary,\n hover: semantic.colors.text.primary,\n selected: semantic.colors.brand.primary,\n disabled: semantic.colors.text.disabled,\n },\n },\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { NumberFieldTokens } from '../types/component-tokens.types';\n\nexport const getNumberFieldTokens: TokenGenerator<NumberFieldTokens> = ({ global, semantic }) => ({\n controls: {\n default: 'buttons',\n },\n size: {\n md: {\n height: '24px',\n fontSize: global.typography.fontSize.xs,\n paddingInline: global.spacing.sm,\n },\n lg: {\n height: '32px',\n fontSize: global.typography.fontSize.sm,\n paddingInline: global.spacing.sm,\n },\n },\n input: {\n width: '40px',\n height: '18px',\n paddingInline: global.spacing.sm,\n fontSize: global.typography.fontSize.xs,\n fontWeight: global.typography.fontWeight.regular,\n lineHeight: '18px',\n fontFamily: global.typography.fontFamily,\n },\n control: {\n side: {\n buttonSizeSm: '20px',\n buttonSizeLg: '28px',\n inset: '1px',\n gap: '8px',\n iconSize: '12px',\n widthsm: '100px',\n widthLg: '116px',\n },\n arrows: {\n buttonSizeSm: '10px',\n buttonSizeLg: '14px',\n iconSize: '12px',\n gap: '0px',\n widthsm: '72px',\n widthLg: '80px',\n },\n },\n borderRadius: global.radii.r3,\n border: {\n default: semantic.colors.border.strong,\n hover: semantic.colors.brand.primaryHover,\n disabled: semantic.colors.border.strong,\n },\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n disabled: semantic.colors.background.secondary,\n },\n text: {\n default: semantic.colors.text.primary,\n placeholder: semantic.colors.text.placeholder,\n disabled: semantic.colors.text.disabled,\n },\n transition: '0.2s ease',\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { CollapseTokens } from '../types/component-tokens.types';\n\nexport const getCollapseTokens: TokenGenerator<CollapseTokens> = ({ global, semantic }) => ({\n border: {\n default: semantic.colors.border.primary,\n },\n background: {\n default: semantic.colors.background.surface,\n hover: semantic.colors.background.surfaceSubtle,\n },\n text: {\n default: semantic.colors.text.secondary, // Note: Light used 'rgba(10, 24, 51, 0.6)' (f5), Dark used text.secondary. Assuming text.secondary is correct abstraction.\n title: semantic.colors.text.primary, // Light: 'rgba(10, 24, 51, 0.7)' (f4), Dark: text.primary.\n },\n divider: semantic.colors.border.primary,\n arrow: {\n default: semantic.colors.text.secondary,\n },\n padding: {\n header: '12px 24px',\n content: '0 24px 12px 24px',\n },\n borderRadius: global.radii.r3,\n gap: global.spacing.sm,\n transition: '0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n arrowSize: '16px',\n});\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { TagTokens } from '../types/component-tokens.types';\n\nexport const getTagTokens: TokenGenerator<TagTokens> = ({ global, semantic, mode }) => {\n const isDark = mode === 'dark';\n\n return {\n colors: {\n // 默认颜色(灰色)\n default: {\n background: {\n default: isDark ? 'rgba(148, 163, 184, 0.15)' : global.colors.neutral[100],\n hover: isDark ? 'rgba(148, 163, 184, 0.2)' : global.colors.neutral[200],\n active: isDark ? 'rgba(148, 163, 184, 0.25)' : global.colors.neutral[300],\n checked: semantic.colors.brand.primary,\n checkedHover: semantic.colors.brand.primaryHover,\n checkedActive: semantic.colors.brand.primaryActive,\n },\n text: {\n default: isDark ? global.colors.word[100] : 'rgba(10, 24, 51, 0.7)',\n checked: global.colors.common.white,\n },\n border: {\n default: isDark ? 'rgba(148, 163, 184, 0.28)' : global.colors.neutral[400],\n hover: isDark ? 'rgba(148, 163, 184, 0.38)' : global.colors.neutral[500],\n active: isDark ? 'rgba(148, 163, 184, 0.48)' : global.colors.word[600],\n checked: semantic.colors.brand.primary,\n checkedHover: semantic.colors.brand.primaryHover,\n checkedActive: semantic.colors.brand.primaryActive,\n },\n },\n // 红色 Red\n red: {\n background: {\n default: isDark ? 'rgba(170, 14, 41, 0.12)' : 'rgba(170, 14, 41, 0.08)',\n hover: isDark ? 'rgba(170, 14, 41, 0.16)' : 'rgba(170, 14, 41, 0.12)',\n active: isDark ? 'rgba(170, 14, 41, 0.2)' : 'rgba(170, 14, 41, 0.16)',\n },\n text: {\n default: isDark ? global.colors.red[300] : global.colors.red[700],\n },\n border: {\n default: isDark ? 'rgba(170, 14, 41, 0.3)' : 'rgba(170, 14, 41, 0.25)',\n },\n },\n // 橙色 Orange\n orange: {\n background: {\n default: isDark ? 'rgba(237, 154, 0, 0.12)' : 'rgba(237, 154, 0, 0.08)',\n hover: isDark ? 'rgba(237, 154, 0, 0.16)' : 'rgba(237, 154, 0, 0.12)',\n active: isDark ? 'rgba(237, 154, 0, 0.2)' : 'rgba(237, 154, 0, 0.16)',\n },\n text: {\n default: isDark ? global.colors.orange[300] : global.colors.orange[500],\n },\n border: {\n default: isDark ? 'rgba(237, 154, 0, 0.3)' : 'rgba(237, 154, 0, 0.25)',\n },\n },\n // 黄色 Yellow\n yellow: {\n background: {\n default: isDark ? 'rgba(250, 208, 0, 0.12)' : 'rgba(250, 208, 0, 0.08)',\n hover: isDark ? 'rgba(250, 208, 0, 0.16)' : 'rgba(250, 208, 0, 0.12)',\n active: isDark ? 'rgba(250, 208, 0, 0.2)' : 'rgba(250, 208, 0, 0.16)',\n },\n text: {\n default: isDark ? global.colors.yellow[300] : global.colors.yellow[500],\n },\n border: {\n default: isDark ? 'rgba(250, 208, 0, 0.3)' : 'rgba(250, 208, 0, 0.25)',\n },\n },\n // 绿色 Green\n green: {\n background: {\n default: isDark ? 'rgba(51, 189, 72, 0.12)' : 'rgba(51, 189, 72, 0.08)',\n hover: isDark ? 'rgba(51, 189, 72, 0.16)' : 'rgba(51, 189, 72, 0.12)',\n active: isDark ? 'rgba(51, 189, 72, 0.2)' : 'rgba(51, 189, 72, 0.16)',\n },\n text: {\n default: isDark ? global.colors.green[300] : global.colors.green[500],\n },\n border: {\n default: isDark ? 'rgba(51, 189, 72, 0.3)' : 'rgba(51, 189, 72, 0.25)',\n },\n },\n // 薰衣草色 Lavender\n lavender: {\n background: {\n default: isDark ? 'rgba(99, 79, 214, 0.12)' : 'rgba(99, 79, 214, 0.08)',\n hover: isDark ? 'rgba(99, 79, 214, 0.16)' : 'rgba(99, 79, 214, 0.12)',\n active: isDark ? 'rgba(99, 79, 214, 0.2)' : 'rgba(99, 79, 214, 0.16)',\n },\n text: {\n default: isDark ? global.colors.lavender[300] : global.colors.lavender[500],\n },\n border: {\n default: isDark ? 'rgba(99, 79, 214, 0.3)' : 'rgba(99, 79, 214, 0.25)',\n },\n },\n // 丁香色 Lilac\n lilac: {\n background: {\n default: isDark ? 'rgba(159, 58, 214, 0.12)' : 'rgba(159, 58, 214, 0.08)',\n hover: isDark ? 'rgba(159, 58, 214, 0.16)' : 'rgba(159, 58, 214, 0.12)',\n active: isDark ? 'rgba(159, 58, 214, 0.2)' : 'rgba(159, 58, 214, 0.16)',\n },\n text: {\n default: isDark ? global.colors.lilac[300] : global.colors.lilac[500],\n },\n border: {\n default: isDark ? 'rgba(159, 58, 214, 0.3)' : 'rgba(159, 58, 214, 0.25)',\n },\n },\n // 胭脂红 Carmine\n carmine: {\n background: {\n default: isDark ? 'rgba(214, 58, 191, 0.12)' : 'rgba(214, 58, 191, 0.08)',\n hover: isDark ? 'rgba(214, 58, 191, 0.16)' : 'rgba(214, 58, 191, 0.12)',\n active: isDark ? 'rgba(214, 58, 191, 0.2)' : 'rgba(214, 58, 191, 0.16)',\n },\n text: {\n default: isDark ? global.colors.carmine[300] : global.colors.carmine[500],\n },\n border: {\n default: isDark ? 'rgba(214, 58, 191, 0.3)' : 'rgba(214, 58, 191, 0.25)',\n },\n },\n // 玫瑰色 Rose\n rose: {\n background: {\n default: isDark ? 'rgba(229, 30, 100, 0.12)' : 'rgba(229, 30, 100, 0.08)',\n hover: isDark ? 'rgba(229, 30, 100, 0.16)' : 'rgba(229, 30, 100, 0.12)',\n active: isDark ? 'rgba(229, 30, 100, 0.2)' : 'rgba(229, 30, 100, 0.16)',\n },\n text: {\n default: isDark ? global.colors.rose[300] : global.colors.rose[500],\n },\n border: {\n default: isDark ? 'rgba(229, 30, 100, 0.3)' : 'rgba(229, 30, 100, 0.25)',\n },\n },\n // 薄荷色 Mint\n mint: {\n background: {\n default: isDark ? 'rgba(71, 192, 214, 0.12)' : 'rgba(71, 192, 214, 0.08)',\n hover: isDark ? 'rgba(71, 192, 214, 0.16)' : 'rgba(71, 192, 214, 0.12)',\n active: isDark ? 'rgba(71, 192, 214, 0.2)' : 'rgba(71, 192, 214, 0.16)',\n },\n text: {\n default: isDark ? global.colors.mint[300] : global.colors.mint[500],\n },\n border: {\n default: isDark ? 'rgba(71, 192, 214, 0.3)' : 'rgba(71, 192, 214, 0.25)',\n },\n },\n // 橄榄色 Olive\n olive: {\n background: {\n default: isDark ? 'rgba(187, 214, 36, 0.12)' : 'rgba(187, 214, 36, 0.08)',\n hover: isDark ? 'rgba(187, 214, 36, 0.16)' : 'rgba(187, 214, 36, 0.12)',\n active: isDark ? 'rgba(187, 214, 36, 0.2)' : 'rgba(187, 214, 36, 0.16)',\n },\n text: {\n default: isDark ? global.colors.olive[300] : global.colors.olive[500],\n },\n border: {\n default: isDark ? 'rgba(187, 214, 36, 0.3)' : 'rgba(187, 214, 36, 0.25)',\n },\n },\n // 蓝色 Blue\n blue: {\n background: {\n default: isDark ? 'rgba(44, 111, 231, 0.12)' : 'rgba(44, 111, 231, 0.08)',\n hover: isDark ? 'rgba(44, 111, 231, 0.16)' : 'rgba(44, 111, 231, 0.12)',\n active: isDark ? 'rgba(44, 111, 231, 0.2)' : 'rgba(44, 111, 231, 0.16)',\n },\n text: {\n default: semantic.colors.brand.primary,\n },\n border: {\n default: isDark ? 'rgba(44, 111, 231, 0.3)' : 'rgba(44, 111, 231, 0.25)',\n },\n },\n },\n size: {\n sm: {\n height: '18px', // 小号标签高度(Figma 设计)\n fontSize: '10px', // H11-最小标签字号(Figma 设计)\n lineHeight: '16px', // 行高\n paddingInline: global.spacing.sm, // 8px 左右内边距\n gap: global.spacing.xs, // 4px 图标和文字间距\n iconSize: '12px', // 图标尺寸\n closeIconSize: '8px', // 关闭图标尺寸\n },\n md: {\n height: '24px', // 中号标签高度(Figma 设计)\n fontSize: '10px', // H11-最小标签字号(Figma 设计)\n lineHeight: '16px', // 行高\n paddingInline: global.spacing.sm, // 8px 左右内边距\n gap: global.spacing.xs, // 4px 图标和文字间距\n iconSize: '14px', // 图标尺寸\n closeIconSize: '10px', // 关闭图标尺寸\n },\n lg: {\n height: '32px',\n fontSize: global.typography.fontSize.xs, // 12px\n lineHeight: '20px',\n paddingInline: global.spacing.md, // 12px\n gap: global.spacing.sm, // 8px\n iconSize: '16px',\n closeIconSize: '12px',\n },\n },\n fontWeight: global.typography.fontWeight.regular, // 400\n borderRadius: global.radii.r2, // 4px - 最小组件圆角\n transition: '0.2s ease',\n disabled: {\n opacity: 0.5,\n },\n };\n};\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { SkeletonTokens } from '../types/component-tokens.types';\n\nexport const getSkeletonTokens: TokenGenerator<SkeletonTokens> = ({ global, mode }) => {\n const isDark = mode === 'dark';\n return {\n background: {\n base: isDark ? 'rgba(148, 163, 184, 0.12)' : 'rgba(10, 24, 51, 0.05)',\n highlight: isDark ? 'rgba(148, 163, 184, 0.22)' : 'rgba(10, 24, 51, 0.12)',\n },\n animation: {\n duration: '1.4s',\n easing: 'ease-in-out',\n },\n radius: {\n sm: global.radii.r2,\n md: global.radii.r3,\n lg: global.radii.r4,\n pill: global.radii.r5,\n circle: global.radii.r0,\n },\n block: {\n height: '16px',\n },\n text: {\n lineHeight: '12px',\n gap: global.spacing.sm,\n lastLineWidth: '62%',\n },\n circle: {\n size: '40px',\n },\n };\n};\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { StepperTokens } from '../types/component-tokens.types';\n\nexport const getStepperTokens: TokenGenerator<StepperTokens> = ({ global, semantic, mode }) => {\n const isDark = mode === 'dark';\n return {\n circle: {\n size: {\n md: '32px',\n sm: '24px',\n },\n fontSize: {\n md: global.typography.fontSize.sm,\n sm: global.typography.fontSize.xs,\n },\n iconSize: {\n md: '14px',\n sm: '10px',\n },\n },\n dot: {\n size: {\n md: '10px',\n sm: '8px',\n },\n pulseColor: isDark ? 'rgba(44, 111, 231, 0.35)' : 'rgba(44, 111, 231, 0.25)',\n },\n line: {\n color: {\n default: semantic.colors.border.primary,\n active: semantic.colors.brand.primary,\n },\n size: '1px',\n },\n text: {\n title: {\n color: {\n default: semantic.colors.text.primary,\n active: semantic.colors.brand.primary,\n error: semantic.colors.state.danger,\n waiting: semantic.colors.text.tertiary,\n },\n fontWeight: global.typography.fontWeight.medium,\n fontSize: global.typography.fontSize.sm,\n },\n description: {\n color: semantic.colors.text.secondary,\n fontSize: global.typography.fontSize.xs,\n },\n },\n state: {\n process: {\n color: semantic.colors.brand.primary,\n bg: semantic.colors.brand.primary,\n },\n wait: {\n color: semantic.colors.text.tertiary,\n bg: isDark ? 'rgba(148, 163, 184, 0.2)' : global.colors.neutral[200],\n },\n finish: {\n color: semantic.colors.brand.primary,\n bg: isDark ? 'rgba(44, 111, 231, 0.15)' : semantic.colors.brand.primarySubtle,\n },\n error: {\n color: semantic.colors.state.danger,\n bg: isDark ? 'rgba(170, 14, 41, 0.15)' : semantic.colors.state.dangerSubtle,\n },\n },\n gap: global.spacing.sm,\n };\n};\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { MenuTokens } from '../types/component-tokens.types';\n\nexport const getMenuTokens: TokenGenerator<MenuTokens> = ({ global, semantic, mode }) => {\n const isDark = mode === 'dark';\n return {\n container: {\n width: {\n expanded: '240px', // 展开宽度(Figma 设计)\n collapsed: '68px', // 折叠宽度(Figma 设计)\n },\n background: isDark ? semantic.colors.background.surface : global.colors.common.white,\n border: `1px solid ${semantic.colors.border.primary}`,\n padding: global.spacing.lg, // 16px 左右内边距\n },\n item: {\n height: '40px', // 菜单项高度(Figma 设计)\n paddingInline: global.spacing.lg, // 16px 左右内边距\n fontSize: global.typography.fontSize.sm, // 14px\n fontWeight: global.typography.fontWeight.regular, // 400\n iconSize: '20px', // 图标尺寸(Figma 设计)\n gap: global.spacing.sm, // 8px 图标和文字间距\n borderRadius: global.radii.r3, // 4px 圆角\n background: {\n default: 'transparent',\n hover: isDark ? semantic.colors.background.surfaceStrong : semantic.colors.background.surfaceSubtle, // hover 背景\n active: isDark ? 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.2) 100%)' \n : 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.15) 100%)', // 选中渐变背景\n },\n text: {\n default: semantic.colors.text.primary,\n hover: semantic.colors.text.primary,\n active: semantic.colors.text.primary,\n },\n transition: '0.2s ease',\n },\n subItem: {\n paddingLeft: '20px', // 子菜单左缩进(Figma 设计有4px额外缩进)\n background: {\n default: 'transparent',\n hover: isDark ? semantic.colors.background.surfaceStrong : semantic.colors.background.surfaceSubtle,\n active: isDark ? 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.2) 100%)' \n : 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.15) 100%)',\n },\n },\n group: {\n marginTop: global.spacing.xl, // 24px 分组上边距\n marginBottom: global.spacing.md, // 12px 分组下边距\n gap: global.spacing.xs, // 4px 项目间距\n },\n groupTitle: {\n height: '18px', // 标题高度(Figma 设计)\n fontSize: global.typography.fontSize.xs, // 12px\n fontWeight: global.typography.fontWeight.regular, // 400\n color: semantic.colors.text.secondary, // 辅助文字颜色\n paddingInline: '0',\n marginBottom: global.spacing.sm, // 8px 标题下边距\n },\n scrollbar: {\n width: '8px', // 滚动条宽度(Figma 设计)\n thumbColor: isDark ? 'rgba(255, 255, 255, 0.2)' : 'rgba(0, 0, 0, 0.2)', // 滑块颜色\n trackColor: 'transparent', // 轨道颜色\n },\n popover: {\n background: isDark ? semantic.colors.background.surface : global.colors.common.white,\n border: `1px solid ${semantic.colors.border.primary}`,\n borderRadius: global.radii.r4, // 8px 圆角\n boxShadow: isDark ? '0 4px 12px rgba(0, 0, 0, 0.4)' : '0 4px 12px rgba(0, 0, 0, 0.08)', // 悬浮层阴影\n padding: global.spacing.xs, // 4px 内边距\n item: {\n background: {\n default: 'transparent',\n hover: isDark ? semantic.colors.background.surfaceStrong : semantic.colors.background.surfaceSubtle,\n active: isDark ? 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.2) 100%)' \n : 'linear-gradient(90deg, rgba(1, 148, 255, 0) 0%, rgba(1, 148, 255, 0.15) 100%)',\n },\n text: {\n default: semantic.colors.text.primary,\n hover: semantic.colors.text.primary,\n active: semantic.colors.brand.primary,\n },\n },\n },\n };\n};\n\n","import { TokenGenerator } from '../types/theme-utils';\nimport { LinkTokens } from '../types/component-tokens.types';\n\nexport const getLinkTokens: TokenGenerator<LinkTokens> = ({ semantic }) => {\n return {\n variant: {\n primary: {\n text: {\n default: semantic.colors.brand.primary, // B5 #2c6fe7\n hover: '#2468f2', // Brand B6 (Brighter)\n active: '#2055c6', // Brand Click #2055c6\n disabled: semantic.colors.text.disabled, // F8\n },\n decoration: {\n default: 'none',\n hover: 'none',\n },\n },\n neutral: {\n text: {\n default: semantic.colors.text.primary, // F2 #0a1833e5\n hover: semantic.colors.brand.primary, // B5 #2c6fe7\n active: '#2055c6', // Brand Click\n disabled: semantic.colors.text.disabled,\n },\n decoration: {\n default: 'none',\n hover: 'none',\n },\n },\n },\n size: {\n sm: {\n fontSize: '12px',\n },\n md: {\n fontSize: '14px',\n },\n lg: {\n fontSize: '16px',\n },\n },\n transition: '0.2s ease',\n borderRadius: '4px',\n focusRing: {\n color: semantic.colors.brand.primary,\n offset: '2px',\n },\n };\n};\n","import { TokenGenerator } from '../types/theme-utils';\nimport { TransferTokens } from '../types/component-tokens.types';\n\n\nexport const getTransferTokens: TokenGenerator<TransferTokens> = ({ global, semantic }) => ({\n // 容器样式\n container: {\n gap: global.spacing.lg,\n },\n // 列表面板样式\n panel: {\n width: '204px',\n height: '240px',\n background: semantic.colors.background.surface,\n border: `1px solid ${semantic.colors.border.neutral}`,\n borderRadius: global.radii.r2,\n },\n // 头部样式\n header: {\n height: '40px',\n padding: '11px 16px',\n fontSize: global.typography.fontSize.xs,\n color: semantic.colors.text.transferHeader,\n background: semantic.colors.background.surfaceSubtle,\n },\n // 列表样式\n list: {\n height: 'calc(100% - 100px)',\n gap: global.spacing.sm,\n padding:'0px 16px 8px 16px',\n },\n // 列表项样式\n item: {\n height: global.spacing.xxl,\n fontSize:global.typography.fontSize.xs,\n borderRadius: global.radii.r2,\n gap: global.spacing.sm,\n padding: `${global.spacing.sm} 0px`,\n text: {\n default: semantic.colors.text.transferHeader,\n selected: semantic.colors.text.primary,\n disabled: semantic.colors.text.disabled,\n },\n checkboxSize: global.spacing.lg,\n },\n // 操作按钮区域\n operations: {\n gap: global.spacing.sm,\n borderRadius: global.radii.r2,\n borderColor: {\n default: semantic.colors.border.neutral,\n disabled: semantic.colors.border.neutral,\n active: semantic.colors.brand.primary,\n },\n backgroundColor: {\n default: semantic.colors.background.surface,\n disabled: global.colors.word[50],\n active: semantic.colors.background.surface,\n },\n width: global.spacing.xxl,\n height: global.spacing.xxl,\n iconSize: global.spacing.lg,\n iconColor: {\n default: global.colors.word[700],\n disabled: semantic.colors.text.transferOperationDisabled,\n active: global.colors.blue[500],\n },\n },\n // 底部样式\n footer: {\n height: global.spacing.xxl,\n paddingInline: global.spacing.sm,\n fontSize: global.typography.fontSize.xs,\n color: semantic.colors.text.secondary,\n borderTop: `1px solid ${semantic.colors.border.divider}`,\n marginTop: global.spacing.md,\n },\n // 空状态\n empty: {\n color: semantic.colors.text.tertiary,\n fontSize: global.typography.fontSize.sm,\n },\n // 搜索框样式\n search: {\n width: '184px',\n iconColor: `${global.colors.word[900]}66`,\n },\n // 过渡动画\n transition: 'all 0.2s ease',\n});\n","/**\n * Modal 组件 Token\n * \n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n */\n\nimport { TokenGenerator } from '../types/theme-utils';\nimport { ModalTokens } from '../types/component-tokens.types';\n\nexport const getModalTokens: TokenGenerator<ModalTokens> = ({ global, semantic, mode }) => ({\n // 尺寸配置\n size: {\n sm: {\n width: '400px',\n maxWidth: '90vw',\n padding: global.spacing.lg, // 16px\n headerPadding: `${global.spacing.lg} ${global.spacing.xl}`, // 16px 24px\n footerPadding: `${global.spacing.md} ${global.spacing.xl}`, // 12px 24px\n titleFontSize: global.typography.fontSize.md, // 16px\n },\n md: {\n width: '520px',\n maxWidth: '90vw',\n padding: global.spacing.xl, // 24px\n headerPadding: `${global.spacing.lg} ${global.spacing.xl}`, // 16px 24px\n footerPadding: `${global.spacing.md} ${global.spacing.xl}`, // 12px 24px\n titleFontSize: global.typography.fontSize.lg, // 18px\n },\n lg: {\n width: '720px',\n maxWidth: '90vw',\n padding: global.spacing.xl, // 24px\n headerPadding: `20px ${global.spacing.xl}`, // 20px 24px\n footerPadding: `${global.spacing.lg} ${global.spacing.xl}`, // 16px 24px\n titleFontSize: global.typography.fontSize.lg, // 18px\n },\n xl: {\n width: '920px',\n maxWidth: '90vw',\n padding: global.spacing.xxl, // 32px\n headerPadding: `${global.spacing.xl} ${global.spacing.xxl}`, // 24px 32px\n footerPadding: `${global.spacing.lg} ${global.spacing.xxl}`, // 16px 32px\n titleFontSize: global.typography.fontSize.lg, // 18px\n },\n fullscreen: {\n width: '100vw',\n maxWidth: '100vw',\n padding: global.spacing.xxl, // 32px\n headerPadding: `${global.spacing.xl} ${global.spacing.xxl}`, // 24px 32px\n footerPadding: `${global.spacing.lg} ${global.spacing.xxl}`, // 16px 32px\n titleFontSize: global.typography.fontSize.lg, // 18px\n },\n },\n\n // 遮罩层\n overlay: {\n background: mode === 'light'\n ? 'rgba(10, 24, 51, 0.38)' // 更轻的遮罩(科技、极简)\n : 'rgba(0, 0, 0, 0.55)', // 暗色主题降低厚重感\n backdropFilter: 'blur(4px)', // 轻量毛玻璃\n },\n\n // 容器样式\n container: {\n background: semantic.colors.background.surface,\n borderRadius: global.radii.r5, // 12px - 中型容器圆角\n // 更轻的投影,避免“厚重弹窗感”\n boxShadow: mode === 'light' ? global.shadows.l3 : semantic.shadows.elevation.medium,\n border: mode === 'light'\n ? 'none'\n : `1px solid ${semantic.colors.border.primary}`,\n maxHeight: '85vh',\n },\n\n // 头部样式\n header: {\n background: 'transparent',\n borderBottom: `1px solid ${semantic.colors.border.divider}`,\n minHeight: '56px',\n gap: global.spacing.sm, // 8px\n },\n\n // 标题样式\n title: {\n color: semantic.colors.text.primary,\n fontWeight: global.typography.fontWeight.semibold, // 600\n lineHeight: '1.4',\n },\n\n // 副标题/描述样式\n description: {\n color: semantic.colors.text.secondary,\n fontSize: global.typography.fontSize.sm, // 14px\n lineHeight: '1.5',\n marginTop: global.spacing.xs, // 4px\n },\n\n // 关闭按钮\n closeButton: {\n size: '32px',\n iconSize: '16px',\n color: semantic.colors.text.tertiary,\n hoverColor: semantic.colors.text.primary,\n hoverBackground: semantic.colors.background.surfaceStrong,\n borderRadius: global.radii.r3, // 6px\n },\n\n // 内容区域\n content: {\n color: semantic.colors.text.primary,\n fontSize: global.typography.fontSize.sm, // 14px\n lineHeight: '1.6',\n maxHeight: 'calc(85vh - 160px)', // 减去头部和底部高度\n },\n\n // 底部样式\n footer: {\n background: 'transparent',\n borderTop: `1px solid ${semantic.colors.border.divider}`,\n minHeight: '56px',\n gap: global.spacing.sm, // 8px\n justifyContent: 'flex-end',\n },\n\n // 动画配置\n animation: {\n duration: '0.22s',\n easing: 'cubic-bezier(0.22, 0.61, 0.36, 1)', // 更克制的科技曲线\n scaleFrom: '0.95',\n scaleTo: '1',\n },\n\n // 层级\n zIndex: {\n overlay: 1000,\n container: 1001,\n },\n\n // 过渡\n transition: '0.2s ease',\n});\n\n\n","/**\n * Tooltip 组件 Token\n *\n * 基于三层 Token 体系:\n * - Tier 1 (Global): 全局基础值\n * - Tier 2 (Semantic): 语义化映射\n * - Tier 3 (Component): 组件专用 Token\n */\n\nimport { TokenGenerator } from '../types/theme-utils'\nimport { TooltipTokens } from '../types/component-tokens.types'\n\nexport const getTooltipTokens: TokenGenerator<TooltipTokens> = ({ global, semantic, mode }) => ({\n // 背景与文字\n background: mode === 'light' \n ? 'rgba(10, 24, 51, 0.9)' \n : 'rgba(255, 255, 255, 0.92)',\n color: mode === 'light' \n ? '#ffffff' \n : semantic.colors.text.primary,\n \n // 边框与阴影\n borderRadius: global.radii.r3,\n boxShadow: mode === 'light'\n ? '0 4px 12px rgba(0, 0, 0, 0.15)'\n : '0 4px 12px rgba(0, 0, 0, 0.3)',\n \n // 尺寸\n padding: `${global.spacing.xs} ${global.spacing.sm}`,\n maxWidth: '280px',\n \n // 文字\n fontSize: global.typography.fontSize.sm,\n lineHeight: '1.5',\n \n // 箭头\n arrow: {\n size: '8px',\n },\n \n // 动画\n animation: {\n duration: '0.15s',\n easing: 'cubic-bezier(0.16, 1, 0.3, 1)',\n },\n \n // 层级\n zIndex: 1100,\n})\n","import {\n AppTheme,\n globalColors,\n globalSpacing,\n globalRadii,\n globalTypography,\n globalShadows,\n globalGradients,\n lightSemantic,\n darkSemantic,\n SemanticColors,\n SemanticSpacing,\n SemanticBorderRadius,\n SemanticTypography,\n SemanticShadows,\n} from '@kingsoft-ai/theme';\nimport { ThemeContext } from './types/theme-utils';\nimport { ComponentTokens } from './types/component-tokens.types';\n\nimport { getButtonTokens, getIconButtonTokens } from './button/tokens';\nimport { getFloatButtonTokens } from './floatButton/tokens';\nimport { getCheckboxTokens } from './checkbox/tokens';\nimport { getRadioTokens } from './radio/tokens';\nimport { getSwitchTokens } from './switch/tokens';\nimport { getInputTokens } from './input/tokens';\nimport { getSelectTokens } from './select/tokens';\nimport { getNumberFieldTokens } from './numberInput/tokens';\nimport { getCollapseTokens } from './collapse/tokens';\nimport { getTagTokens } from './tag/tokens';\nimport { getSkeletonTokens } from './skeleton/tokens';\nimport { getStepperTokens } from './stepper/tokens';\nimport { getMenuTokens } from './menu/tokens';\nimport { getLinkTokens } from './link/tokens';\nimport { getTransferTokens } from './transfer/tokens';\nimport { getModalTokens } from './modal/tokens';\nimport { getCardTokens } from './card/tokens';\nimport { getTooltipTokens } from './tooltip/tokens';\n\nexport const createComponentTokens = (context: ThemeContext): ComponentTokens => ({\n button: getButtonTokens(context),\n floatButton: getFloatButtonTokens(context),\n iconButton: getIconButtonTokens(context),\n checkbox: getCheckboxTokens(context),\n radio: getRadioTokens(context),\n switch: getSwitchTokens(context),\n input: getInputTokens(context),\n select: getSelectTokens(context),\n numberfield: getNumberFieldTokens(context),\n collapse: getCollapseTokens(context),\n tag: getTagTokens(context),\n skeleton: getSkeletonTokens(context),\n stepper: getStepperTokens(context),\n menu: getMenuTokens(context),\n link: getLinkTokens(context),\n transfer: getTransferTokens(context),\n modal: getModalTokens(context),\n card: getCardTokens(context),\n tooltip: getTooltipTokens(context),\n});\n\ninterface SemanticTheme {\n colors: SemanticColors;\n spacing: SemanticSpacing;\n borderRadius: SemanticBorderRadius;\n typography: SemanticTypography;\n shadows: SemanticShadows;\n}\n\nexport const createDesignTheme = (\n semantic: SemanticTheme,\n mode: 'light' | 'dark' = 'light'\n): AppTheme => {\n const global = {\n colors: globalColors,\n spacing: globalSpacing,\n radii: globalRadii,\n typography: globalTypography,\n shadows: globalShadows,\n gradients: globalGradients,\n };\n\n const context: ThemeContext = {\n global,\n semantic,\n mode,\n };\n\n return {\n global,\n semantic,\n components: createComponentTokens(context),\n };\n};\n\nexport const defaultLightDesignTheme = createDesignTheme(lightSemantic, 'light');\nexport const defaultDarkDesignTheme = createDesignTheme(darkSemantic, 'dark');\n\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/**\n * Design 组件的主题提供者\n * \n * 这是一个便捷的包装器,自动使用默认的设计主题\n * 用户可以直接使用而不需要手动导入 theme\n */\n\nimport type { ReactNode } from 'react'\nimport { useMemo } from 'react'\nimport { CustomThemeProvider } from '@kingsoft-ai/theme'\nimport { defaultLightDesignTheme, defaultDarkDesignTheme } from './theme'\nimport type { AppTheme } from '@kingsoft-ai/theme'\nimport type { DeepPartial } from './types/theme-utils'\nimport deepmerge from 'deepmerge'\nimport { OverlayProvider } from 'react-aria'\n\nexport interface DesignThemeProviderProps {\n /** 子组件 */\n children: ReactNode\n /** \n * 主题模式\n * @default 'light'\n */\n mode?: 'light' | 'dark'\n /**\n * 自定义主题对象(可选)\n * \n * 支持部分配置,会自动与默认主题进行深度合并。\n * 只需要提供你想要覆盖的部分即可。\n * \n * @example\n * ```tsx\n * // 只覆盖 card 组件的部分 token\n * const customTheme = {\n * components: {\n * card: {\n * container: {\n * background: { default: '#F0F4FF' },\n * radius: '24px',\n * }\n * }\n * }\n * }\n * \n * <DesignThemeProvider theme={customTheme}>\n * <Card>自定义样式的卡片</Card>\n * </DesignThemeProvider>\n * ```\n */\n theme?: DeepPartial<AppTheme>\n}\n\n/**\n * Design 组件主题提供者\n * \n * @example\n * ```tsx\n * // 使用默认亮色主题\n * <DesignThemeProvider>\n * <Button>点击我</Button>\n * </DesignThemeProvider>\n * \n * // 使用暗色主题\n * <DesignThemeProvider mode=\"dark\">\n * <Button>点击我</Button>\n * </DesignThemeProvider>\n * \n * // 使用部分自定义主题(自动与默认主题合并)\n * <DesignThemeProvider theme={{ components: { card: { container: { radius: '24px' } } } }}>\n * <Card>自定义圆角的卡片</Card>\n * </DesignThemeProvider>\n * ```\n */\nexport const DesignThemeProvider = ({ \n children, \n mode = 'light',\n theme \n}: DesignThemeProviderProps) => {\n // 根据 mode 选择基础主题\n const baseTheme = mode === 'dark' ? defaultDarkDesignTheme : defaultLightDesignTheme\n \n // 将用户的部分自定义配置与默认主题进行深度合并\n const mergedTheme = useMemo(() => {\n if (!theme) {\n return baseTheme\n }\n // deepmerge 默认会创建新对象,不会修改 baseTheme\n return deepmerge(baseTheme, theme as Partial<AppTheme>)\n }, [baseTheme, theme])\n \n return (\n <CustomThemeProvider theme={mergedTheme}>\n <OverlayProvider style={{ display: 'contents' }}>\n {children}\n </OverlayProvider>\n </CustomThemeProvider>\n )\n}\n\n"],"names":["$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c","$HgANd$react","$bdb11010cef70236$export$d41a04c74483c6ef","heldValue","$bdb11010cef70236$export$cd8c9cb68f842629","idA","idB","setIdsA","ref","setIdsB","$ff5963eb1fccf552$export$e08e3b67e392101e","callbacks","args","callback","$431fbd86ca7dc216$export$b204af158042fbac","el","_el_ownerDocument","$431fbd86ca7dc216$export$f21a1ffae260145a","$431fbd86ca7dc216$var$isNode","value","$431fbd86ca7dc216$export$af51f0f06c0f328a","node","$f4e2df6bd15f8569$var$_shadowDOM","$f4e2df6bd15f8569$export$98658e8c59125e6a","$d4ee10de306f2510$export$4282f70798064fe0","otherNode","$lcSu5$shadowDOM","currentNode","$d4ee10de306f2510$export$cd4e5573fbe2b576","doc","_activeElement_shadowRoot","activeElement","$d4ee10de306f2510$export$e58f029f0fbfdb29","event","$dfc540311bf7f109$export$63eb3ababa9c55c4","walkers","curNode","currentWalkerCurrentNode","shadowRoot","walker","newNode","nextNode","_this_filter","nodeResult","currentWalker","previousNode","root","whatToShow","filter","$dfc540311bf7f109$export$4d0f8be8b12a7ef6","$bJKXg$shadowDOM","r","f","n","o","clsx","$3ef42575df84b30b$export$9d1611c77c2fe928","result","i","props","key","a","b","$7jXr9$clsx","$7215afc6de606d6b$export$de79e2c695e052f3","element","$7215afc6de606d6b$var$supportsPreventScroll","scrollableElements","$7215afc6de606d6b$var$getScrollableElements","$7215afc6de606d6b$var$restoreScrollPosition","$7215afc6de606d6b$var$supportsPreventScrollCached","parent","rootScrollingElement","scrollTop","scrollLeft","$c87311424ea30a05$var$testUserAgent","re","_window_navigator_userAgentData","brands","brand","$c87311424ea30a05$var$testPlatform","$c87311424ea30a05$var$cached","fn","res","$c87311424ea30a05$export$9ac100e40613ea10","$c87311424ea30a05$export$186c6964ca17d99","$c87311424ea30a05$export$7bef049ce92e4224","$c87311424ea30a05$export$fedb369cb70207f1","$c87311424ea30a05$export$6446a186d09e379e","$c87311424ea30a05$export$a11b0059900ceec8","$bbed8b41f857bcc0$var$transitionsByElement","$bbed8b41f857bcc0$var$transitionCallbacks","$bbed8b41f857bcc0$var$setupGlobalEvents","isTransitionEvent","onTransitionStart","e","transitions","onTransitionEnd","properties","cb","$bbed8b41f857bcc0$var$cleanupDetachedElements","eventTarget","$bbed8b41f857bcc0$export$24490316f764c430","$6a7db85432448f7f$export$60278871457622de","$7d2416ea0959daaa$var$supportsCheckVisibility","$7d2416ea0959daaa$var$isStyleVisible","windowObject","display","visibility","isVisible","getComputedStyle","computedDisplay","computedVisibility","$7d2416ea0959daaa$var$isAttributeVisible","childElement","$7d2416ea0959daaa$export$e989c0fffaa6b27a","$b4b717babfbb907b$var$focusableElements","$b4b717babfbb907b$var$FOCUSABLE_ELEMENT_SELECTOR","$b4b717babfbb907b$var$TABBABLE_ELEMENT_SELECTOR","$b4b717babfbb907b$export$4c063cf1350e6fed","$b4b717babfbb907b$var$isInert","$b4b717babfbb907b$export$bebd5a1431fec25d","$458b0a5536c1a7cf$export$40bfa8c7b0832715","defaultValue","onChange","stateValue","setStateValue","$3whtM$useState","isControlledRef","$3whtM$useRef","isControlled","$3whtM$useEffect","wasControlled","currentValue","setValue","$3whtM$useCallback","onChangeCaller","onChangeArgs","oldValue","functionArgs","interceptedValue","buttonVariants","buttonSizes","getVariantStyles","variant","theme","variantToken","hasShadow","gradientToken","defaultShadow","hoverShadow","css","getStateValue","obj","state","getBorderColor","getBackground","getSizeStyles","size","sizeToken","ButtonRoot","styled","_b","_a","fullWidth","_d","_c","ButtonContent","IconWrapper","isLoading","Label","VARIANTS","SIZES","Button","forwardRef","icon","loading","disabled","isDisabled","className","children","ariaProps","forwardedRef","innerRef","useRef","finalDisabled","buttonProps","isPressed","useButton","jsx","mergeProps","iconButtonAppearances","iconButtonTones","iconButtonSizes","appearance","tone","tokens","resolve","defaultState","hoverState","activeState","IconButtonRoot","IconSlot","isHidden","LoadingSpinner","ICON_BUTTON_APPEARANCES","ICON_BUTTON_TONES","ICON_BUTTON_SIZES","IconButton","label","loadingLabel","isDevEnvironment","useMemo","ariaLabel","ariaLabelledby","jsxs","VisuallyHidden","sheetForTag","tag","createStyleElement","options","StyleSheet","_this","before","_proto","nodes","rule","sheet","_tag$parentNode","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","LAYER","abs","from","assign","hash","length","charat","trim","match","pattern","replace","replacement","indexof","search","index","substr","begin","end","strlen","sizeof","append","array","combine","line","column","position","character","characters","type","copy","char","prev","next","peek","caret","slice","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","compile","parse","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","j","k","x","z","serialize","output","stringify","middleware","collection","rulesheet","memoize","cache","arg","identifierWithPointTracking","toRules","parsed","getRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","prefix","prefixer","defaultStylisPlugins","createCache","ssrStyles","dataEmotionAttribute","stylisPlugins","inserted","container","nodesToHydrate","attrib","_insert","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","stylis","styles","selector","serialized","shouldCache","c","d","g","h","l","m","q","t","v","w","u","A","reactIs_production_min","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","object","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","require$$0","require$$1","reactIs","FORWARD_REF_STATICS","MEMO_STATICS","TYPE_STATICS","isBrowser","getRegisteredStyles","registered","registeredStyles","classNames","rawClassName","registerStyles","isStringTag","insertStyles","current","murmur2","str","len","unitlessKeys","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","cursor","unitless","handleInterpolation","mergedProps","interpolation","componentSelector","keyframes","serializedStyles","createStringFromObject","previousCursor","asString","string","_i","interpolated","labelPattern","serializeStyles","stringMode","strings","asTemplateStringsArr","templateStringsArr","identifierName","name","hashString","syncFallback","create","useInsertionEffect","React","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","withEmotionCache","func","useContext","ThemeContext","hasOwn","typePropName","createEmotionProps","newProps","_key","Insertion","_ref","Emotion","cssProp","WrappedComponent","_key2","Emotion$1","ReactJSXRuntime","checkboxContainer","checkboxControl","checkboxIcon","checkboxLabel","CheckIcon","checked","useTheme","IndeterminateIcon","Checkbox","controlledChecked","defaultChecked","indeterminate","style","inputProps","inputRef","hover","setHover","useState","internalChecked","setInternalChecked","useEffect","newChecked","s","C","L","p","M","R","O","H","V","y","Z","N","B","F","S","W","U","_","E","checkboxButtonSizeTokens","checkboxButtonContainer","checkboxButtonWrapper","checkboxButtonCheckmark","checkmarkSize","checkmarkIcon","CheckboxButton","handleChange","CheckOutline","slideDown","slideUp","CollapseRoot","CollapseItemWrapper","isLast","CollapseHeader","ArrowWrapper","isExpanded","TitleWrapper","TitleText","SuffixWrapper","CollapseContentWrapper","contentHeight","CollapseContentInner","ContentText","Collapse","activeKeyProp","defaultActiveKey","accordion","internalActiveKey","setInternalActiveKey","activeKey","activeKeys","itemKey","expanded","newActiveKey","currentKeys","items","Children","isValidElement","itemCount","child","last","cloneElement","CollapseItem","title","suffix","contentRef","setContentHeight","handleToggle","ChevronDownOutline","floatButtonTypes","floatButtonShapes","getTypeStyles","buttonType","typeToken","getShapeStyles","shape","FloatButtonRoot","$buttonType","$shape","$size","FloatButtonContent","Description","TooltipWrapper","getTooltipPosition","placement","TooltipCard","$color","$placement","getArrowPosition","TooltipArrow","TYPES","SHAPES","FloatButton","description","tooltip","showTooltip","setShowTooltip","isTooltipConfig","tooltipConfig","tooltipTitle","tooltipColor","tooltipPlacement","hasTooltip","isFocused","isError","isHovered","InputRoot","InputWrapper","StyledInput","ClearButton","Counter","CloseIcon","Input","clearable","error","errorMessage","showCounter","onFocus","onBlur","maxLength","id","ariaDescribedBy","restProps","generatedId","setIsFocused","setIsHovered","internalValue","setInternalValue","handleFocus","handleBlur","handleClear","nativeInputValueSetter","currentLength","showClearButton","inputId","descriptionId","errorId","describedBy","MenuContainer","collapsed","MenuContent","MenuItemContainer","isSubItem","active","MenuItemIcon","MenuItemLabel","MenuItemArrow","MenuGroupContainer","MenuGroupTitle","MenuGroupItems","SubMenuPopoverContainer","SubMenuPopoverContent","SubMenuPopoverItem","Menu","SubMenuPopover","visible","anchorRef","onClose","onMouseEnter","onMouseLeave","popoverRef","setPosition","updatePosition","rect","handleClickOutside","timer","createPortal","MenuItem","showArrow","arrowExpanded","subMenu","onClick","itemRef","showPopover","setShowPopover","hoverTimerRef","closeTimerRef","clearTimers","handleMouseEnter","handleMouseLeave","MenuGroup","SubMenuItem","LinkRoot","Link","linkProps","useLink","$8a9cb279dc87e130$export$fda7da73ab5d4c48","$507fabe10e71c6fb$var$currentModality","$507fabe10e71c6fb$var$changeHandlers","$507fabe10e71c6fb$export$d90243b58daecda7","$507fabe10e71c6fb$var$hasEventBeforeFocus","$507fabe10e71c6fb$var$hasBlurredWindowRecently","$507fabe10e71c6fb$var$triggerChangeHandlers","modality","handler","$507fabe10e71c6fb$var$isValidKey","$28AnR$isMac","$507fabe10e71c6fb$var$handleKeyboardEvent","$507fabe10e71c6fb$var$handlePointerEvent","$507fabe10e71c6fb$var$handleClickEvent","$28AnR$isVirtualClick","$507fabe10e71c6fb$var$handleFocusEvent","$507fabe10e71c6fb$var$handleWindowBlur","$507fabe10e71c6fb$var$setupGlobalFocusEvents","$28AnR$getOwnerWindow","documentObject","$28AnR$getOwnerDocument","focus","$507fabe10e71c6fb$var$tearDownWindowFocusTracking","loadListener","$507fabe10e71c6fb$export$2f1888112f558a7d","$507fabe10e71c6fb$export$630ff653c5ada6a9","$3ad3f6e1647bc98d$export$80f3e147d781571c","ownerDocument","$k50bp$getOwnerDocument","$k50bp$getActiveElement","lastFocusedElement","$k50bp$runAfterTransition","$k50bp$focusWithoutScrolling","$9bf71ea28793e738$var$FocusContext","$cgawC$react","$9bf71ea28793e738$var$RESTORE_FOCUS_EVENT","$9bf71ea28793e738$var$activeScope","$9bf71ea28793e738$export$20e40289641fbbb6","contain","restoreFocus","autoFocus","startRef","$cgawC$useRef","endRef","scopeRef","parentNode","$cgawC$useContext","$cgawC$useMemo","$9bf71ea28793e738$var$TreeNode","$cgawC$useLayoutEffect","$9bf71ea28793e738$export$d06fae2ee68b101e","$9bf71ea28793e738$var$isAncestorScope","activeNode","_startRef_current","stopPropagation","$9bf71ea28793e738$var$useActiveScopeTracker","$9bf71ea28793e738$var$useFocusContainment","$9bf71ea28793e738$var$useRestoreFocus","$9bf71ea28793e738$var$useAutoFocus","$cgawC$useEffect","$cgawC$getActiveElement","$cgawC$getOwnerDocument","scope","$9bf71ea28793e738$var$isElementInScope","_focusScopeTree_getTreeNode_parent","_focusScopeTree_getTreeNode","_focusScopeTree_getTreeNode_parent_scopeRef","parentScope","focusManager","$9bf71ea28793e738$var$createFocusManagerForScope","opts","tabbable","wrap","accept","_scope_","sentinel","scopeRoot","$9bf71ea28793e738$var$getScopeRoot","$9bf71ea28793e738$export$2d6ec8fc375ceafa","$9bf71ea28793e738$var$focusElement","$9bf71ea28793e738$var$shouldContainFocus","$9bf71ea28793e738$var$isTabbableRadio","radios","radio","_element_form_elements","_element_form","radioList","focusedNode","raf","onKeyDown","focusedElement","nextElement","$cgawC$getEventTarget","$9bf71ea28793e738$var$isElementInChildScope","$9bf71ea28793e738$var$focusFirstInScope","$cgawC$getInteractionModality","shouldSkipFocusRestore","$cgawC$isAndroid","$cgawC$isChrome","target","_focusedNode_current","$9bf71ea28793e738$var$isElementInAnyScope","ancestor","scroll","$cgawC$focusSafely","$9bf71ea28793e738$var$getFirstInScope","autoFocusRef","restore","$9bf71ea28793e738$var$shouldRestoreFocus","nodeToRestoreRef","treeNode","nodeToRestore","_nodeToRestoreRef_current","clonedTree","$9bf71ea28793e738$var$restoreFocusToElement","$cgawC$isTabbable","$cgawC$isFocusable","rootElement","$cgawC$createShadowTreeWalker","_opts_from","$9bf71ea28793e738$var$Tree","data","_node_parent","newTree","_node_parent_scopeRef","fadeIn","dialogIn","ModalPortalRoot","ModalBackdrop","ModalDialog","ModalDialogHeader","ModalDialogTitle","ModalCloseButton","ModalDialogBody","DefaultCloseIcon","setRef","Modal","open","onOpenChange","hideHeader","isDismissable","closeOnEsc","closeOnOverlay","closeOnOutside","shouldCloseOnInteractOutside","portalContainer","overlayClassName","overlayStyle","dialogClassName","dialogStyle","closeButtonClassName","closeButtonStyle","dialogRef","titleId","useId","requestClose","useCallback","_reason","mountContainer","usePreventScroll","allowUserDismiss","allowEsc","allowOutside","overlayProps","underlayProps","useOverlay","modalProps","useModal","dialogProps","titleProps","useDialog","handleCloseButton","mergedDialogProps","backdropProps","onPointerDown","onMouseDown","rest","content","FocusScope","getDisabledStyles","NumberRoot","NumberGroup","_f","_e","controls","_h","_g","_l","_k","_j","NumberField","ArrowGroup","ArrowButton","direction","SideButton","PlusIcon","PlusOutline","MinusIcon","MinusOutline","UpIcon","ChevronUpOutline","DownIcon","NumberInput","min","max","step","onValueChange","onChangeValue","internal","setInternal","clamp","triggerValueChange","nativeSetter","ev","handleInputChange","raw","final","increment","decrement","handleKeyDown","atMin","atMax","RadioWrapper","prop","RadioRoot","RadioNative","RadioIndicator","RadioText","RadioLabel","RadioDescription","Radio","skeletonVariants","skeletonRadii","shimmerKeyframes","shimmerMixin","SkeletonRoot","$variant","$radius","$width","$height","$animate","SkeletonStack","SkeletonLine","$customWidth","$isLast","toCssSize","Skeleton","width","height","lines","animate","radius","loaded","resolvedWidth","resolvedHeight","lineCount","shouldRenderStack","accessibilityProps","dotPulse","StepperRoot","orientation","StepRoot","labelPlacement","StepIconContainer","status","stepper","borderColor","bgColor","color","StepContent","StepTitle","titleColors","StepDescription","StepConnector","isFinished","iconSizeToken","topPos","Stepper","steps","stepProps","Step","renderIcon","CloseOutline","resolvedLabelPlacement","iconContent","showVerticalLine","showHorizontalLine","progressTypes","progressSizes","progressStatuses","getStatusColor","LineProgressRoot","LineProgressTrack","LineProgressBar","percent","ProgressText","StatusIcon","LineProgressInfo","CircleProgressRoot","CircleProgressSvg","CircleProgressTrack","CircleProgressBar","CircleProgressContent","CircleProgressIcon","STATUSES","SuccessIcon","ErrorIcon","WarningIcon","getStatusIcon","Progress","showPercent","showIcon","progressBarProps","labelProps","useProgressBar","shouldShowIcon","getSizeConfig","circleSize","strokeWidth","circumference","strokeDashoffset","showPercentInCircle","$e5be200c675c3b3a$export$aca958c65c314e6c","$e5be200c675c3b3a$var$CUSTOM_VALIDITY_STATE","$e5be200c675c3b3a$export$dad6ae84456c676a","$e5be200c675c3b3a$export$571b5131b7e65c11","$69F46$createContext","$e5be200c675c3b3a$export$a763b9476acd3eb","$e5be200c675c3b3a$export$fc1a364ae1f3ff10","realtimeValidation","displayValidation","updateValidation","resetValidation","commitValidation","$e5be200c675c3b3a$var$useFormValidationStateImpl","isInvalid","validationState","builtinValidation","validate","validationBehavior","controlledError","clientError","$69F46$useMemo","validateErrors","$e5be200c675c3b3a$var$runValidate","$e5be200c675c3b3a$var$getValidationResult","serverErrors","$69F46$useContext","serverErrorMessages","$e5be200c675c3b3a$var$asArray","lastServerErrors","setLastServerErrors","$69F46$useState","isServerErrorCleared","setServerErrorCleared","serverError","nextValidation","$69F46$useRef","currentValidity","setCurrentValidity","lastError","commitQueued","setCommitQueued","$e5be200c675c3b3a$var$isEqualValidation","$69F46$useEffect","errors","$a02d57049d202695$export$d085fb9e920b5ca7","_node_prevKey","_node_nextKey","_this_keyMap_get","idx","keys","visit","_last_key","$e40ea825a81a3709$export$52baac22726c72bf","anchorKey","currentKey","$7af3f5b51489e0b5$var$equalSets","setA","setB","item","$7af3f5b51489e0b5$export$253fe78d46329472","selectionMode","disallowEmptySelection","allowDuplicateSelectionEvents","selectionBehaviorProp","disabledBehavior","isFocusedRef","$6tM1y$useRef","setFocused","$6tM1y$useState","focusedKeyRef","childFocusStrategyRef","setFocusedKey","selectedKeysProp","$6tM1y$useMemo","$7af3f5b51489e0b5$var$convertSelection","defaultSelectedKeys","selectedKeys","setSelectedKeys","$6tM1y$useControlledState","disabledKeysProp","selectionBehavior","setSelectionBehavior","lastSelectionBehavior","$6tM1y$useEffect","childFocusStrategy","selection","$c1d7fb2ec91bae71$var$Item","context","childItems","rendered","textValue","$c1d7fb2ec91bae71$var$hasChildItems","$6Fm0V$react","$c1d7fb2ec91bae71$export$6d08773d2e66f8f2","$9fc4852771d079eb$var$Section","$gtysd$react","$9fc4852771d079eb$export$6e2c8f0811a474ce","$eb2240fc39a57fa5$export$bf788dd355e3a401","$eb2240fc39a57fa5$var$iterable","$fzaAv$react","partialNode","parentKey","_v_key","_partialNode_index","cached","childNodes","_partialNode_index1","childNode","_childNode_key","nodeKey","$eb2240fc39a57fa5$var$compose","_childNode_value","_parentNode_type","$eb2240fc39a57fa5$var$capitalize","builder","_partialNode_value","_partialNode_textValue","iterator","iterable","outer","inner","$7613b1592d41b092$export$6cd28814d92fa9c9","factory","$lbNth$useMemo","$c5a24bc478652b5f$export$1005530eda016c13","$c5a24bc478652b5f$export$fbdeaa6a76694f71","$c5a24bc478652b5f$export$5f3398f8733f90e2","$c5a24bc478652b5f$export$8c434b3a7a4dad6","aAncestors","$c5a24bc478652b5f$var$getAncestors","bAncestors","firstNonMatchingAncestor","parents","currNode","$d496c0a20b6e58ec$export$6c8a5aaad13c9852","mappedKey","allKeys","first","$jkhUT$compareNodeOrder","_first_key","toKey","mappedToKey","_selectedKeys_anchorKey","_selectedKeys_currentKey","to","fromItem","toItem","_this_layoutDelegate","addKeys","_getFirstItem","_getFirstItem_key","$jkhUT$getFirstItem","$jkhUT$getChildNodes","_item_props","_this_collection_getItem_props","_this_collection_getItem","_options_allowsCellSelection","$e72dd72e1c76a225$export$2f645645f7bca764","layoutDelegate","selectionState","$d5vlZ$useMultipleSelectionState","disabledKeys","$d5vlZ$useMemo","$d5vlZ$useCallback","$d5vlZ$useCollection","selectionManager","$d5vlZ$SelectionManager","$e72dd72e1c76a225$var$useFocusedKeyReset","cachedCollection","$d5vlZ$useRef","$d5vlZ$useEffect","startItem","cachedItemNodes","itemNode","itemNodes","_cachedItemNodes_length","_itemNodes_length","diff","_startItem_index","_startItem_index1","_itemNodes_length1","isReverseSearching","_startItem_index2","_startItem_index3","$fc909762b330b746$export$61c6a8c84e605fb6","isOpen","setOpen","$hnMvi$useControlledState","$hnMvi$useCallback","close","toggle","$2bc3a590c5373a4e$export$5159ec8b34d4ec12","triggerState","$6FfNf$useOverlayTriggerState","focusStrategy","setFocusStrategy","$6FfNf$useState","$6FfNf$useMemo","_props_defaultSelectedKey","controlledValue","setControlledValue","$6FfNf$useControlledState","displayValue","_props_onSelectionChange","_value_","listState","$6FfNf$useListState","$2bc3a590c5373a4e$var$convertValue","_keys_values_next_value","selectedKey","selectedItems","$6FfNf$useFormValidationState","initialValue","_selectedItems_","bordered","colorToken","TagRoot","TagContent","CloseButton","AddButton","Tag","closable","checkable","actualVariant","isChecked","handleClick","handleClose","TagAdd","selectSizes","isMultiple","SelectWrapper","SelectTrigger","SelectValue","isPlaceholder","SelectIcon","ListBoxPopup","ListBoxContent","OptionItem","isSelected","OptionText","OptionIcon","LoadingWrapper","EmptyState","TagsContainer","CheckboxWrapper","Popover","triggerRef","triggerWidth","setTriggerWidth","useLayoutEffect","overlayPropsFromUseOverlay","resolvedPlacement","useOverlayPosition","onInteractOutside","popover","trigger","Overlay","DismissButton","ListBox","listBoxProps","useListBox","Option","optionProps","useOption","MultiListBox","SelectInner","placeholder","maxTagCount","defaultSelectedKey","onSelectionChange","finalSelectedKey","finalSelectedKeys","finalDefaultSelectedKey","finalDefaultSelectedKeys","handleSelectionChange","renderItems","option","Item","lastPointerTypeRef","singleState","useSelectState","multiState","useListState","multiOpen","setMultiOpen","effectiveOpen","selectedKeySet","visibleTags","overflowCount","triggerProps","valueProps","menuProps","descriptionProps","errorMessageProps","useSelect","handlePressStart","focusWithoutScrolling","handlePress","pointerType","handleRemoveTag","newKeys","renderTriggerContent","popoverState","HiddenSelect","Select","Section","tableSizes","tableVariants","tableBorderRadiusMap","getTableRadius","TableContainer","StyledTable","TableHeader","TableHeaderRow","TableHeaderCell","SortIndicator","TableBody","TableRow","TableCell","CheckboxCell","ExpandButton","CellContent","TableInner","columns","dataSource","selectable","controlledSelectedKeys","expandable","controlledExpandedKeys","onExpandChange","expandedRowRender","sortConfig","onSortChange","onRowClick","emptyText","wrapText","internalSelectedKeys","setInternalSelectedKeys","internalExpandedKeys","setInternalExpandedKeys","isScrollbarVisible","setIsScrollbarVisible","containerRef","scrollHideTimerRef","expandedKeys","handleExpandChange","handleSort","newDirection","allSelected","record","selectedCount","handleScroll","renderRows","level","hasChildren","mainRow","colIndex","isFirstColumn","ChevronRightOutline","expandedRow","childRows","TableWithRef","Table","$3017fa7ffdddec74$export$8042c6c013fd5226","isReadOnly","setSelected","$d8rik$useControlledState","$d8rik$useState","updateSelected","toggleState","_props_defaultSelected","switchSizes","SwitchRoot","hasInnerLabel","isFocusVisible","SwitchContent","SwitchLabel","SwitchThumb","SwitchLabelWrapper","SwitchLabelText","Switch","checkedLabel","uncheckedLabel","defaultSelected","useToggleState","useSwitch","focusProps","useFocusRing","currentLabel","switchElement","TransferRoot","TransferPanel","TransferHeader","TransferTitle","TransferCount","TransferSearchWrapper","TransferList","TransferItem","selected","TransferItemLabel","TransferItemContent","TransferItemDeleteButton","TransferOperations","TransferOperationButton","TransferFooter","TransferEmpty","TransferPagination","TransferPaginationInfo","TransferPaginationControls","TransferPaginationButton","showSearch","searchPlaceholder","filterOption","render","onItemSelectChange","showSelectAll","footer","locale","header","onClearAll","clearMode","oneWay","onItemDelete","pagination","searchValue","setSearchValue","currentPage","setCurrentPage","pageSize","setPageSize","filteredData","selectableItems","isPaginationEnabled","paginatedData","startIndex","endIndex","displayData","totalPages","handlePageChange","page","handlePageSizeChange","isAllSelected","isIndeterminate","handleSelectAll","handleItemToggle","renderItem","SearchOutline","StyledTransferList","DeleteOutline","ChevronLeftOutline","Transfer","controlledTargetKeys","defaultTargetKeys","titles","operations","actions","internalTargetKeys","setInternalTargetKeys","targetKeysSet","leftSelectedKeys","setLeftSelectedKeys","rightSelectedKeys","setRightSelectedKeys","leftDataSource","rightDataSource","moveToRight","newTargetKeys","moveKeys","moveToLeft","clearAllLeftData","allLeftKeys","clearAllRightData","handleItemDelete","canMoveToRight","canMoveToLeft","renderActions","left","right","action","leftAction","rightAction","uploadStatuses","UploadRoot","UploadDropzone","isDragActive","UploadIconWrapper","UploadTextWrapper","UploadMainText","UploadSecondaryText","UploadLink","FileList","FileItem","FileInfoRow","FileIcon","FileName","DeleteButton","ProgressWrapper","ProgressTrack","ProgressBar","HiddenInput","DefaultUploadIcon","FileIconSvg","DeleteIcon","generateUid","Upload","multiple","maxSize","maxCount","controlledFileList","defaultFileList","beforeUpload","customRequest","mainText","secondaryText","fileTypeHint","downloadTemplateText","onDownloadTemplate","dropzoneRef","internalFileList","setInternalFileList","setIsDragActive","fileList","updateFileList","newFileList","handleFiles","files","filesArray","newFiles","file","uploadFile","updatedFileList","simulateUpload","uid","currentFileList","interval","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleDelete","renderStatusIcon","CardContainer","hoverable","CardHeader","CardTitle","CardExtra","CardBody","padding","CardCover","CardFooter","Card","extra","cover","bodyPadding","getCardTokens","global","semantic","TooltipContainer","Tooltip","delay","closeDelay","controlledOpen","defaultOpen","internalOpen","setInternalOpen","tooltipRef","openTimerRef","updateOpen","nextOpen","handleOpen","hoverProps","useHover","focusWithinProps","useFocusWithin","triggerRect","tooltipRect","scrollX","scrollY","top","handleUpdate","wrapperProps","tooltipContent","getButtonTokens","getIconButtonTokens","getFloatButtonTokens","getCheckboxTokens","getRadioTokens","getSwitchTokens","getInputTokens","getSelectTokens","getNumberFieldTokens","getCollapseTokens","getTagTokens","mode","isDark","getSkeletonTokens","getStepperTokens","getMenuTokens","getLinkTokens","getTransferTokens","getModalTokens","getTooltipTokens","createComponentTokens","createDesignTheme","globalColors","globalSpacing","globalRadii","globalTypography","globalShadows","globalGradients","defaultLightDesignTheme","lightSemantic","defaultDarkDesignTheme","darkSemantic","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","emptyTarget","val","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","source","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","deepmerge_1","cjs","DesignThemeProvider","baseTheme","mergedTheme","CustomThemeProvider","OverlayProvider"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,60,61,62,63,77,78,79,80,81,82,83,84,85,86,87,88,89,98,128]}
|