aha-components 1.8.1 → 1.8.2

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.
Files changed (92) hide show
  1. package/dist/Input.esm.js +1 -1
  2. package/dist/Input.esm.js.map +1 -1
  3. package/dist/Input.js +1 -1
  4. package/dist/Input.js.map +1 -1
  5. package/dist/Pagination.esm.js +1 -1
  6. package/dist/Pagination.esm.js.map +1 -1
  7. package/dist/Pagination.js +1 -1
  8. package/dist/Pagination.js.map +1 -1
  9. package/dist/Table.esm.js +1 -1
  10. package/dist/Table.esm.js.map +1 -1
  11. package/dist/Table.js +1 -1
  12. package/dist/Table.js.map +1 -1
  13. package/dist/Textarea.esm.js +1 -1
  14. package/dist/Textarea.esm.js.map +1 -1
  15. package/dist/Textarea.js +1 -1
  16. package/dist/Textarea.js.map +1 -1
  17. package/dist/components/Checkbox/Checkbox.stories 2.d.ts +12 -0
  18. package/dist/components/Checkbox/index 2.d.ts +12 -0
  19. package/dist/components/DatePicker/DatePicker.stories 2.d.ts +25 -0
  20. package/dist/components/DatePicker/index 2.d.ts +96 -0
  21. package/dist/components/Drawer/Drawer.stories 2.d.ts +9 -0
  22. package/dist/components/Drawer/index 2.d.ts +58 -0
  23. package/dist/components/Form/Form.stories 2.d.ts +15 -0
  24. package/dist/components/Form/FormContext 2.d.ts +41 -0
  25. package/dist/components/Form/FormItem 2.d.ts +58 -0
  26. package/dist/components/Form/index 2.d.ts +85 -0
  27. package/dist/components/Input/Input.stories 2.d.ts +16 -0
  28. package/dist/components/Input/Input.stories.d.ts +7 -4
  29. package/dist/components/Input/InputGroup.d.ts +25 -0
  30. package/dist/components/Input/InputTags.d.ts +17 -0
  31. package/dist/components/Input/index 2.d.ts +41 -0
  32. package/dist/components/Input/index.d.ts +7 -18
  33. package/dist/components/Loading/Loading.stories 2.d.ts +11 -0
  34. package/dist/components/Loading/index 2.d.ts +10 -0
  35. package/dist/components/MenuList/MenuList.stories 2.d.ts +17 -0
  36. package/dist/components/MenuList/MenuList.test 2.d.ts +1 -0
  37. package/dist/components/MenuList/index 2.d.ts +85 -0
  38. package/dist/components/Pagination/Pagination.stories 2.d.ts +16 -0
  39. package/dist/components/Pagination/index 2.d.ts +27 -0
  40. package/dist/components/Popover/Popover.stories 2.d.ts +11 -0
  41. package/dist/components/Popover/index 2.d.ts +31 -0
  42. package/dist/components/Progress/Progress.stories 2.d.ts +18 -0
  43. package/dist/components/Progress/Progress.test 2.d.ts +1 -0
  44. package/dist/components/Progress/index 2.d.ts +33 -0
  45. package/dist/components/Radio/Radio.stories 2.d.ts +10 -0
  46. package/dist/components/Radio/index 2.d.ts +13 -0
  47. package/dist/components/Select/Select.stories 2.d.ts +17 -0
  48. package/dist/components/Select/index 2.d.ts +74 -0
  49. package/dist/components/Switch/Switch.stories 2.d.ts +14 -0
  50. package/dist/components/Switch/index 2.d.ts +27 -0
  51. package/dist/components/Tab/Tab.stories 2.d.ts +19 -0
  52. package/dist/components/Tab/index 2.d.ts +26 -0
  53. package/dist/components/Table/Table.stories 2.d.ts +21 -0
  54. package/dist/components/Table/index 2.d.ts +167 -0
  55. package/dist/components/Textarea/Textarea.stories 2.d.ts +15 -0
  56. package/dist/components/Textarea/Textarea.stories.d.ts +3 -6
  57. package/dist/components/Textarea/TextareaTags.d.ts +8 -0
  58. package/dist/components/Textarea/index 2.d.ts +38 -0
  59. package/dist/components/Textarea/index.d.ts +6 -17
  60. package/dist/components/Tooltip/Tooltip.stories 2.d.ts +20 -0
  61. package/dist/components/Tooltip/index 2.d.ts +35 -0
  62. package/dist/icons/index 2.d.ts +33 -0
  63. package/dist/index.css +962 -1
  64. package/dist/index.d.ts +54 -36
  65. package/dist/index.esm.css +962 -1
  66. package/dist/index.esm.js +1 -1
  67. package/dist/index.esm.js.map +1 -1
  68. package/dist/index.js +1 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/stories/DesignTokens.stories 2.d.ts +5 -0
  71. package/dist/theme/Theme.stories 2.d.ts +10 -0
  72. package/dist/theme/ThemeContext 2.d.ts +11 -0
  73. package/dist/theme/utils 2.d.ts +10 -0
  74. package/dist/tokens.d.ts +2 -0
  75. package/package.json +1 -1
  76. package/dist/AlertComponent.esm.js +0 -2
  77. package/dist/AlertComponent.esm.js.map +0 -1
  78. package/dist/AlertComponent.js +0 -2
  79. package/dist/AlertComponent.js.map +0 -1
  80. package/dist/Card.esm.js +0 -2
  81. package/dist/Card.esm.js.map +0 -1
  82. package/dist/Card.js +0 -2
  83. package/dist/Card.js.map +0 -1
  84. package/dist/TestComponent.esm.js +0 -2
  85. package/dist/TestComponent.esm.js.map +0 -1
  86. package/dist/TestComponent.js +0 -2
  87. package/dist/TestComponent.js.map +0 -1
  88. package/dist/Toast.css +0 -1
  89. package/dist/Toast.esm.css +0 -1
  90. package/dist/components/AlertComponent/index.d.ts +0 -9
  91. package/dist/components/Card/index.d.ts +0 -10
  92. package/dist/components/TestComponent/index.d.ts +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../node_modules/tslib/tslib.es6.js","../src/theme/ThemeContext.tsx","../src/components/Button/index.tsx","../src/components/Input/index.tsx","../src/components/Select/index.tsx","../src/icons/index.tsx","../src/components/Pagination/index.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React, { createContext, useContext, useMemo } from 'react';\n\nexport interface ThemeConfig {\n primaryColor?: string;\n}\n\nconst defaultTheme: ThemeConfig = {\n primaryColor: '#FB6011',\n};\n\nconst ThemeContext = createContext<ThemeConfig>(defaultTheme);\n\nexport interface ThemeProviderProps {\n theme?: ThemeConfig;\n children: React.ReactNode;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({ theme, children }) => {\n const themeValue = useMemo(() => {\n return {\n ...defaultTheme,\n ...theme,\n };\n }, [theme]);\n\n return (\n <ThemeContext.Provider value={themeValue}>\n {children}\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeConfig => {\n const context = useContext(ThemeContext);\n if (!context) {\n // 如果没有 Provider,返回默认主题\n return defaultTheme;\n }\n return context;\n};\n\n// 导出默认主题色,供组件内部使用\nexport const getDefaultPrimaryColor = () => defaultTheme.primaryColor!;\n\n","import React, { useState } from 'react';\nimport { useTheme } from '../../theme/ThemeContext';\n\n/**\n * 对齐 Figma: Untitled UI v7 — Buttons\n * 维度:Size × Hierarchy × State × Icon only\n * Size: sm(36) / md(40) / lg(44) / xl(48)\n * Hierarchy: primary / secondary / tertiary / link-color / link-gray\n * State: default / hover / focused / disabled / loading\n * Icon only: boolean\n */\n\nexport type ButtonHierarchy =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'link-color'\n | 'link-gray'\n | 'destructive-primary'\n | 'destructive-secondary'\n | 'destructive-tertiary'\n | 'destructive-link'\n // legacy alias\n | 'default';\n\nexport type ButtonSize =\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n // legacy aliases\n | 'small'\n | 'mediumSmall'\n | 'medium'\n | 'large';\n\nexport type ButtonType = ButtonHierarchy;\n\nexport interface ButtonProps {\n children?: React.ReactNode;\n /** 按钮层级(对应 Figma Hierarchy)。`default` 为 `secondary` 的旧名 */\n type?: ButtonHierarchy;\n /** 按钮尺寸(对应 Figma Size)。旧名会映射到新尺寸 */\n size?: ButtonSize;\n disabled?: boolean;\n loading?: boolean;\n /** 仅图标按钮。不传 `children`、仅传 `icon` 时自动开启 */\n iconOnly?: boolean;\n /** 受控的 Focused 视觉态,用于 Storybook 预览设计稿;真实键盘焦点由 :focus-visible 处理 */\n focused?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n htmlType?: 'button' | 'submit' | 'reset';\n className?: string;\n style?: React.CSSProperties;\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n [key: string]: any;\n}\n\ntype NormalizedSize = 'sm' | 'md' | 'lg' | 'xl';\ntype NormalizedHierarchy = 'primary' | 'secondary' | 'tertiary' | 'link-color' | 'link-gray' | 'destructive-primary' | 'destructive-secondary' | 'destructive-tertiary' | 'destructive-link';\n\nconst SIZE_ALIAS: Record<ButtonSize, NormalizedSize> = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl',\n small: 'sm',\n mediumSmall: 'sm',\n medium: 'md',\n large: 'xl',\n};\n\nconst HIERARCHY_ALIAS: Record<ButtonHierarchy, NormalizedHierarchy> = {\n primary: 'primary',\n secondary: 'secondary',\n tertiary: 'tertiary',\n 'link-color': 'link-color',\n 'link-gray': 'link-gray',\n 'destructive-primary': 'destructive-primary',\n 'destructive-secondary': 'destructive-secondary',\n 'destructive-tertiary': 'destructive-tertiary',\n 'destructive-link': 'destructive-link',\n default: 'secondary',\n};\n\n/** Figma 标注的尺寸参数:高度、内边距、字号/行高、图标尺寸、间距 */\nconst SIZE_TOKENS: Record<\n NormalizedSize,\n {\n height: number;\n paddingX: number;\n paddingXLg: number; // lg/xl 大号内边距(与图标拼接时稍大)\n fontSize: number;\n lineHeight: number;\n iconSize: number;\n gap: number;\n iconOnlyPad: number;\n }\n> = {\n sm: { height: 36, paddingX: 12, paddingXLg: 12, fontSize: 14, lineHeight: 20, iconSize: 20, gap: 4, iconOnlyPad: 8 },\n md: { height: 40, paddingX: 14, paddingXLg: 14, fontSize: 14, lineHeight: 20, iconSize: 20, gap: 4, iconOnlyPad: 10 },\n lg: { height: 44, paddingX: 16, paddingXLg: 16, fontSize: 16, lineHeight: 24, iconSize: 20, gap: 6, iconOnlyPad: 12 },\n xl: { height: 48, paddingX: 18, paddingXLg: 18, fontSize: 16, lineHeight: 24, iconSize: 20, gap: 6, iconOnlyPad: 14 },\n};\n\nconst LoadingSpinner: React.FC<{ size: number; color: string }> = ({ size, color }) => (\n <>\n <style>{`@keyframes aha-button-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}`}</style>\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden\n style={{ animation: 'aha-button-spin 1s linear infinite', flexShrink: 0 }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke={color} strokeWidth=\"2\" opacity=\"0.25\" />\n <path\n d=\"M22 12a10 10 0 0 1-10 10\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n </svg>\n </>\n);\n\nconst Button: React.FC<ButtonProps> = ({\n children,\n type = 'secondary',\n size = 'md',\n disabled = false,\n loading = false,\n iconOnly,\n focused = false,\n onClick,\n htmlType = 'button',\n className = '',\n style,\n icon,\n iconPosition = 'left',\n ...rest\n}) => {\n const { primaryColor } = useTheme();\n const [isHovered, setIsHovered] = useState(false);\n const [isPressed, setIsPressed] = useState(false);\n\n const hierarchy = HIERARCHY_ALIAS[type] || 'secondary';\n const s = SIZE_TOKENS[SIZE_ALIAS[size] || 'md'];\n\n const isIconOnly = iconOnly ?? (!!icon && children == null);\n const isLink = hierarchy === 'link-color' || hierarchy === 'link-gray' || hierarchy === 'destructive-link';\n const isDisabled = disabled || loading;\n const showFocusRing = focused;\n\n const themeBrand = primaryColor; // 允许 ThemeProvider 覆盖主色\n\n /** 根据 hierarchy+state 计算视觉 token */\n const getVisuals = (): {\n bg: string;\n color: string;\n iconColor: string;\n border: string;\n boxShadow: string;\n textDecoration?: string;\n } => {\n // Disabled — 所有层级共享一套「灰态」,但 link/tertiary 无边框/阴影\n if (disabled) {\n if (hierarchy === 'primary' || hierarchy === 'secondary' || hierarchy === 'destructive-primary' || hierarchy === 'destructive-secondary') {\n return {\n bg: 'var(--color-bg-disabled, #f5f5f4)',\n color: 'var(--color-fg-disabled, #a9a29d)',\n iconColor: 'var(--color-fg-disabled, #a9a29d)',\n border: '1px solid var(--color-border-disabled_subtle, #e7e5e4)',\n boxShadow: 'none',\n };\n }\n return {\n bg: 'transparent',\n color: 'var(--color-fg-disabled, #a9a29d)',\n iconColor: 'var(--color-fg-disabled, #a9a29d)',\n border: 'none',\n boxShadow: 'none',\n };\n }\n\n const interactive = isHovered || isPressed;\n\n if (hierarchy === 'primary') {\n const bg = interactive\n ? 'var(--color-bg-brand-solid_hover, #ec470a)'\n : themeBrand || 'var(--color-bg-brand-solid, #fb6011)';\n return {\n bg,\n color: 'var(--color-text-white, #ffffff)',\n iconColor: 'var(--color-brand-300, #feb073)',\n border: 'none',\n boxShadow: 'var(--shadow-xs-skeuomorphic, 0 1px 2px 0 rgba(10,13,18,.05))',\n };\n }\n\n if (hierarchy === 'secondary') {\n return {\n bg: interactive\n ? 'var(--color-bg-primary_hover, #fafaf9)'\n : 'var(--color-bg-primary, #ffffff)',\n color: interactive\n ? 'var(--color-text-secondary_hover, #292524)'\n : 'var(--color-text-secondary, #44403c)',\n iconColor: interactive\n ? 'var(--color-fg-quaternary_hover, #79716b)'\n : 'var(--color-fg-quaternary, #a9a29d)',\n border: 'none',\n boxShadow: 'var(--shadow-xs-skeuomorphic)',\n };\n }\n\n if (hierarchy === 'tertiary') {\n return {\n bg: interactive ? 'var(--color-bg-primary_hover, #fafaf9)' : 'transparent',\n color: interactive\n ? 'var(--color-text-tertiary_hover, #44403c)'\n : 'var(--color-text-tertiary, #57534e)',\n iconColor: interactive\n ? 'var(--color-fg-quaternary_hover, #79716b)'\n : 'var(--color-fg-quaternary, #a9a29d)',\n border: 'none',\n boxShadow: 'none',\n };\n }\n\n if (hierarchy === 'link-color') {\n return {\n bg: 'transparent',\n color: interactive\n ? 'var(--color-text-brand-secondary_hover, #c4330a)'\n : 'var(--color-text-brand-secondary, #ec470a)',\n iconColor: 'var(--color-fg-brand-secondary_alt, #fb6011)',\n border: 'none',\n boxShadow: 'none',\n textDecoration: interactive ? 'underline' : 'none',\n };\n }\n\n if (hierarchy === 'link-gray') {\n return {\n bg: 'transparent',\n color: interactive\n ? 'var(--color-text-tertiary_hover, #44403c)'\n : 'var(--color-text-tertiary, #57534e)',\n iconColor: 'var(--color-fg-quaternary, #a9a29d)',\n border: 'none',\n boxShadow: 'none',\n textDecoration: interactive ? 'underline' : 'none',\n };\n }\n\n if (hierarchy === 'destructive-primary') {\n return {\n bg: interactive\n ? 'var(--color-error-600)'\n : 'var(--color-error-500)',\n color: 'var(--color-text-white)',\n iconColor: interactive\n ? 'var(--color-error-200)'\n : 'var(--color-error-300)',\n border: 'none',\n boxShadow: 'var(--shadow-xs-skeuomorphic)',\n };\n }\n\n if (hierarchy === 'destructive-secondary') {\n return {\n bg: interactive\n ? 'var(--color-bg-error-primary)'\n : 'var(--color-bg-primary)',\n color: 'var(--color-text-error-primary)',\n iconColor: 'var(--color-fg-error-secondary)',\n border: 'none',\n // 用 error border 色替换 skeuomorphic 中的暗色 inset,保持与 secondary 一致的 shadow 结构\n boxShadow: 'inset 0 0 0 1px var(--color-border-error_subtle), inset 0 -2px 0 0 rgba(10,13,18,0.05), 0 1px 2px 0 rgba(10,13,18,0.05)',\n };\n }\n\n if (hierarchy === 'destructive-tertiary') {\n return {\n bg: interactive ? 'var(--color-bg-error-primary)' : 'transparent',\n color: 'var(--color-text-error-primary)',\n iconColor: 'var(--color-fg-error-secondary)',\n border: 'none',\n boxShadow: 'none',\n };\n }\n\n // destructive-link\n return {\n bg: 'transparent',\n color: interactive\n ? 'var(--color-text-error-primary_hover)'\n : 'var(--color-text-error-primary)',\n iconColor: 'var(--color-fg-error-secondary)',\n border: 'none',\n boxShadow: 'none',\n textDecoration: interactive ? 'underline' : 'none',\n };\n };\n\n const visuals = getVisuals();\n\n /** focus ring: primary/secondary 使用 skeuomorphic 版本叠加基础阴影;其余使用纯环 */\n const focusShadow = (() => {\n if (!showFocusRing) return undefined;\n const isDestructive = hierarchy === 'destructive-primary' || hierarchy === 'destructive-secondary' || hierarchy === 'destructive-tertiary' || hierarchy === 'destructive-link';\n if (isDestructive) {\n if (hierarchy === 'destructive-primary' || hierarchy === 'destructive-secondary') {\n return 'var(--focus-ring-error-shadow-xs-skeuomorphic)';\n }\n return 'var(--focus-ring-error)';\n }\n if (hierarchy === 'primary' || hierarchy === 'secondary') {\n return 'var(--focus-ring-shadow-xs-skeuomorphic, 0 0 0 2px #fff, 0 0 0 4px #fb6011)';\n }\n return 'var(--focus-ring, 0 0 0 2px #fff, 0 0 0 4px #fb6011)';\n })();\n\n const buttonStyle: React.CSSProperties = {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: s.gap,\n fontFamily: 'var(--font-family-body, \"DM Sans\", system-ui, sans-serif)',\n fontWeight: 600,\n fontSize: s.fontSize,\n lineHeight: `${s.lineHeight}px`,\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n outline: 'none',\n transition: 'background-color .15s ease, color .15s ease, box-shadow .15s ease',\n userSelect: 'none',\n WebkitTapHighlightColor: 'transparent',\n whiteSpace: 'nowrap',\n backgroundColor: visuals.bg,\n color: visuals.color,\n border: visuals.border,\n boxShadow: focusShadow ?? visuals.boxShadow,\n textDecoration: visuals.textDecoration,\n ...style,\n };\n\n if (isLink) {\n // Link 类:保留与同尺寸按钮一致的高度和横向内边距,无背景、无边框\n buttonStyle.borderRadius = '4px';\n buttonStyle.overflow = 'hidden';\n if (isIconOnly) {\n buttonStyle.width = s.height;\n buttonStyle.height = s.height;\n buttonStyle.padding = 0;\n } else {\n buttonStyle.height = s.height;\n buttonStyle.paddingLeft = s.paddingX;\n buttonStyle.paddingRight = s.paddingX;\n }\n } else {\n buttonStyle.borderRadius = 'var(--radius-md, 8px)';\n if (isIconOnly) {\n buttonStyle.width = s.height;\n buttonStyle.height = s.height;\n buttonStyle.padding = 0;\n } else {\n buttonStyle.height = s.height;\n buttonStyle.paddingLeft = s.paddingX;\n buttonStyle.paddingRight = s.paddingX;\n }\n }\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n const renderIcon = () => {\n if (loading) {\n return <LoadingSpinner size={s.iconSize} color={visuals.iconColor} />;\n }\n if (!icon) return null;\n return (\n <span\n aria-hidden\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: s.iconSize,\n height: s.iconSize,\n color: visuals.iconColor,\n flexShrink: 0,\n }}\n >\n {icon}\n </span>\n );\n };\n\n const showLeftIcon = loading || (icon && iconPosition === 'left');\n const showRightIcon = !loading && icon && iconPosition === 'right';\n\n return (\n <button\n type={htmlType}\n className={[\n 'aha-button',\n `aha-button--${hierarchy}`,\n `aha-button--${SIZE_ALIAS[size] || 'md'}`,\n isIconOnly && 'aha-button--icon-only',\n isDisabled && 'aha-button--disabled',\n loading && 'aha-button--loading',\n showFocusRing && 'aha-button--focused',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={isDisabled}\n onClick={handleClick}\n onMouseEnter={() => !isDisabled && setIsHovered(true)}\n onMouseLeave={() => {\n setIsHovered(false);\n setIsPressed(false);\n }}\n onMouseDown={() => !isDisabled && setIsPressed(true)}\n onMouseUp={() => setIsPressed(false)}\n style={buttonStyle}\n {...rest}\n >\n {showLeftIcon && renderIcon()}\n {!isIconOnly && children}\n {showRightIcon && renderIcon()}\n {/* icon-only 且没传 icon 时,允许 children 作为图标 */}\n {isIconOnly && !icon && !loading && children}\n </button>\n );\n};\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import React, { forwardRef, useRef, useEffect } from 'react';\nimport { useTheme } from '../../theme/ThemeContext';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix' | 'suffix'> {\n /** 输入框大小 */\n size?: 'small' | 'mediumSmall' | 'medium' | 'large';\n /** 是否禁用 */\n disabled?: boolean;\n /** 是否显示错误状态 */\n error?: boolean;\n /** 是否只读 */\n readOnly?: boolean;\n /** 输入框前缀图标 */\n prefix?: React.ReactNode;\n /** 输入框后缀图标 */\n suffix?: React.ReactNode;\n /** 允许清除 */\n allowClear?: boolean;\n /** 清除回调 */\n onClear?: () => void;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 输入框类型 */\n type?: string;\n /** 占位符 */\n placeholder?: string;\n /** 值 */\n value?: string;\n /** 默认值 */\n defaultValue?: string;\n /** 变化回调 */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n /** 聚焦回调 */\n onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;\n /** 失焦回调 */\n onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;\n /** 按下回车回调 */\n onPressEnter?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'medium',\n disabled = false,\n error = false,\n readOnly = false,\n prefix,\n suffix,\n allowClear = false,\n onClear,\n className = '',\n style,\n type = 'text',\n placeholder,\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n onPressEnter,\n ...restProps\n },\n ref\n ) => {\n const { primaryColor = '#FB6011' } = useTheme();\n const inputRef = useRef<HTMLInputElement>(null);\n const [internalValue, setInternalValue] = React.useState(\n defaultValue || value || ''\n );\n const [focused, setFocused] = React.useState(false);\n\n // 合并 ref\n useEffect(() => {\n if (typeof ref === 'function') {\n ref(inputRef.current);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current =\n inputRef.current;\n }\n }, [ref]);\n\n // 受控/非受控处理\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n onBlur?.(e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && onPressEnter) {\n onPressEnter(e);\n }\n restProps.onKeyDown?.(e);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isControlled) {\n setInternalValue('');\n }\n // 创建一个清除事件\n const syntheticEvent = {\n target: { value: '' },\n currentTarget: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n onClear?.();\n inputRef.current?.focus();\n };\n\n const showClear = allowClear && currentValue && !disabled;\n\n // 尺寸样式 - 高度包含边框(1px),实际内容区域需要减去上下边框(2px)\n // 字体 16px,line-height 24px,需要计算合适的 padding\n const sizeStyles = {\n small: {\n height: '32px', // 包含边框的实际高度\n paddingTop: '3px',\n paddingBottom: '3px',\n },\n mediumSmall: {\n height: '36px', // 包含边框的实际高度\n paddingTop: '5px',\n paddingBottom: '5px',\n },\n medium: {\n height: '40px', // 包含边框的实际高度\n paddingTop: '7px',\n paddingBottom: '7px',\n },\n large: {\n height: '48px', // 包含边框的实际高度\n paddingTop: '11px',\n paddingBottom: '11px',\n },\n };\n\n // 计算 padding-right\n const hasRightContent = suffix || showClear;\n const paddingRight = hasRightContent ? '40px' : '12px'; // 如果有后缀或清除按钮,右边留出空间\n\n const baseStyles: React.CSSProperties = {\n width: '100%',\n boxSizing: 'border-box',\n fontFamily: \"DM Sans, sans-serif\",\n borderRadius: '8px', // rounded-md (0.5rem)\n border: `1px solid ${error ? '#F04438' : focused ? primaryColor : '#D7D3D0'}`,\n backgroundColor: disabled ? '#FAFAF9' : readOnly ? '#FAFAF9' : '#FFFFFF',\n color: disabled ? '#98A2B3' : '#1C1917',\n fontSize: '16px', // text-base - 至少 16px 避免 iOS Safari 自动缩放\n fontWeight: 400,\n lineHeight: '24px',\n paddingLeft: prefix ? '40px' : '12px', // 所有情况下,如果没有前缀,padding-left 都是 12px\n paddingRight,\n paddingTop: sizeStyles[size].paddingTop,\n paddingBottom: sizeStyles[size].paddingBottom,\n transition: 'all 0.2s',\n outline: 'none',\n WebkitAppearance: 'none', // 移除 iOS Safari 默认样式\n MozAppearance: 'textfield', // 移除 Firefox 数字输入框的上下箭头\n appearance: 'none',\n ...style,\n };\n\n // 占位符样式通过 CSS 类名处理\n const placeholderStyles = `\n .aha-input-wrapper input::placeholder {\n color: #D7D3D0;\n font-size: 16px;\n font-weight: 400;\n opacity: 1;\n }\n .aha-input-wrapper input::-webkit-input-placeholder {\n color: #D7D3D0;\n font-size: 16px;\n font-weight: 400;\n opacity: 1;\n }\n .aha-input-wrapper input::-moz-placeholder {\n color: #D7D3D0;\n font-size: 16px;\n font-weight: 400;\n opacity: 1;\n }\n .aha-input-wrapper input:-ms-input-placeholder {\n color: #D7D3D0;\n font-size: 16px;\n font-weight: 400;\n opacity: 1;\n }\n /* 移动端优化 */\n .aha-input-wrapper input {\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n touch-action: manipulation;\n }\n /* 移除数字输入框的上下箭头 */\n .aha-input-wrapper input[type=\"number\"]::-webkit-inner-spin-button,\n .aha-input-wrapper input[type=\"number\"]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n .aha-input-wrapper input[type=\"number\"] {\n -moz-appearance: textfield;\n }\n `;\n\n // 清除图标\n const ClearIcon = () => (\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 onClick={handleClear}\n style={{\n cursor: 'pointer',\n flexShrink: 0,\n color: '#78716C',\n }}\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 return (\n <>\n <style>{placeholderStyles}</style>\n <div\n className={`aha-input-wrapper ${className}`}\n style={{\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n width: '100%',\n }}\n >\n {prefix && (\n <span\n style={{\n position: 'absolute',\n left: '12px',\n display: 'flex',\n alignItems: 'center',\n color: disabled ? '#98A2B3' : '#78716C',\n zIndex: 1,\n pointerEvents: 'none',\n }}\n >\n {prefix}\n </span>\n )}\n <input\n ref={inputRef}\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n style={baseStyles}\n autoComplete={restProps.autoComplete || 'off'}\n autoCorrect={restProps.autoCorrect || 'off'}\n autoCapitalize={restProps.autoCapitalize || 'off'}\n spellCheck={restProps.spellCheck || false}\n {...restProps}\n />\n {(suffix || showClear) && (\n <span\n style={{\n position: 'absolute',\n right: '12px',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n color: disabled ? '#98A2B3' : '#78716C',\n zIndex: 1,\n }}\n >\n {showClear && <ClearIcon />}\n {suffix && <span style={{ pointerEvents: 'none' }}>{suffix}</span>}\n </span>\n )}\n </div>\n </>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n\n","import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from '../../theme/ThemeContext';\n\nexport interface SelectOption {\n label: React.ReactNode;\n value: string | number;\n disabled?: boolean;\n [key: string]: any;\n}\n\nexport interface SelectProps {\n /** 当前选中的值 */\n value?: string | number | (string | number)[];\n /** 默认选中的值 */\n defaultValue?: string | number | (string | number)[];\n /** 选项数据 */\n options?: SelectOption[];\n /** 是否支持多选 */\n mode?: 'multiple' | 'tags';\n /** 是否禁用 */\n disabled?: boolean;\n /** 是否显示错误状态 */\n error?: boolean;\n /** 占位符 */\n placeholder?: string;\n /** 尺寸 */\n size?: 'small' | 'mediumSmall' | 'medium' | 'large';\n /** 是否可搜索 */\n showSearch?: boolean;\n /** 搜索过滤函数 */\n filterOption?: boolean | ((input: string, option: SelectOption) => boolean);\n /** 是否允许清除 */\n allowClear?: boolean;\n /** 变化回调 */\n onChange?: (\n value: string | number | (string | number)[],\n option: SelectOption | SelectOption[]\n ) => void;\n /** 选择回调 */\n onSelect?: (value: string | number, option: SelectOption) => void;\n /** 取消选择回调 */\n onDeselect?: (value: string | number, option: SelectOption) => void;\n /** 搜索回调 */\n onSearch?: (value: string) => void;\n /** 聚焦回调 */\n onFocus?: (e: React.FocusEvent) => void;\n /** 失焦回调 */\n onBlur?: (e: React.FocusEvent) => void;\n /** 下拉框打开回调 */\n onDropdownVisibleChange?: (open: boolean) => void;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 下拉框类名 */\n dropdownClassName?: string;\n /** 下拉框样式 */\n dropdownStyle?: React.CSSProperties;\n /** 是否默认打开 */\n defaultOpen?: boolean;\n /** 是否打开(受控) */\n open?: boolean;\n /** 最大标签数量 */\n maxTagCount?: number | 'responsive';\n /** 标签渲染函数 */\n tagRender?: (props: {\n label: React.ReactNode;\n value: string | number;\n closable: boolean;\n onClose: () => void;\n }) => React.ReactNode;\n /** 选项渲染函数 */\n optionRender?: (option: SelectOption, info: {\n selected: boolean;\n focused: boolean;\n disabled: boolean;\n }) => React.ReactNode;\n}\n\nconst Select: React.FC<SelectProps> = ({\n value: controlledValue,\n defaultValue,\n options = [],\n mode,\n disabled = false,\n error = false,\n placeholder = 'Please select',\n size = 'medium',\n showSearch = false,\n filterOption = true,\n allowClear = false,\n onChange,\n onSelect,\n onDeselect,\n onSearch,\n onFocus,\n onBlur,\n onDropdownVisibleChange,\n className = '',\n style,\n dropdownClassName = '',\n dropdownStyle,\n defaultOpen = false,\n open: controlledOpen,\n maxTagCount,\n tagRender,\n optionRender,\n}) => {\n const { primaryColor = '#FB6011' } = useTheme();\n const [internalValue, setInternalValue] = useState<\n string | number | (string | number)[] | undefined\n >(defaultValue !== undefined ? defaultValue : (mode ? [] : undefined));\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [searchValue, setSearchValue] = useState('');\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n const selectRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const [dropdownPosition, setDropdownPosition] = useState<{\n top: number;\n left: number;\n width: number;\n placement: 'top' | 'bottom';\n } | null>(null);\n\n const isControlled = controlledValue !== undefined;\n const isOpenControlled = controlledOpen !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n const isOpen = isOpenControlled ? controlledOpen : internalOpen;\n const isMultiple = mode === 'multiple' || mode === 'tags';\n\n // 获取选中的选项\n const getSelectedOptions = useCallback((): SelectOption[] => {\n if (!currentValue) return [];\n const values = Array.isArray(currentValue) ? currentValue : [currentValue];\n return options.filter((opt) => values.includes(opt.value));\n }, [currentValue, options]);\n\n // 过滤选项\n const getFilteredOptions = useCallback((): SelectOption[] => {\n if (!showSearch || !searchValue) return options;\n\n if (filterOption === false) return options;\n\n if (typeof filterOption === 'function') {\n return options.filter((opt) => filterOption(searchValue, opt));\n }\n\n // 默认过滤:匹配 label\n return options.filter((opt) => {\n const label = String(opt.label || '').toLowerCase();\n const search = searchValue.toLowerCase();\n return label.includes(search);\n });\n }, [options, searchValue, showSearch, filterOption]);\n\n const filteredOptions = useMemo(() => getFilteredOptions(), [getFilteredOptions]);\n\n // 计算下拉框位置\n useEffect(() => {\n if (isOpen && selectRef.current) {\n const updatePosition = () => {\n if (selectRef.current) {\n const rect = selectRef.current.getBoundingClientRect();\n const estimatedDropdownHeight =\n dropdownRef.current?.offsetHeight ??\n Math.min(256, Math.max(40, filteredOptions.length * 40));\n const gap = 4;\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n const shouldOpenUp =\n spaceBelow < estimatedDropdownHeight + gap && spaceAbove > spaceBelow;\n const top = shouldOpenUp\n ? rect.top + window.scrollY - estimatedDropdownHeight - gap\n : rect.bottom + window.scrollY + gap;\n\n setDropdownPosition({\n top,\n left: rect.left + window.scrollX,\n width: rect.width,\n placement: shouldOpenUp ? 'top' : 'bottom',\n });\n }\n };\n\n updatePosition();\n requestAnimationFrame(updatePosition);\n\n // 监听窗口大小变化和滚动,更新位置\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n } else {\n setDropdownPosition(null);\n }\n }, [isOpen, filteredOptions.length]);\n\n // 点击外部关闭(支持鼠标和触摸事件)\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent | TouchEvent) => {\n const target = event.target as Node;\n if (\n selectRef.current &&\n !selectRef.current.contains(target) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(target)\n ) {\n if (!isOpenControlled) {\n setInternalOpen(false);\n }\n onDropdownVisibleChange?.(false);\n setSearchValue('');\n }\n };\n\n if (isOpen) {\n // 使用 capture 阶段确保能捕获到事件\n document.addEventListener('mousedown', handleClickOutside, true);\n document.addEventListener('touchstart', handleClickOutside, true);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside, true);\n document.removeEventListener('touchstart', handleClickOutside, true);\n };\n }\n }, [isOpen, isOpenControlled, onDropdownVisibleChange]);\n\n // 键盘导航\n useEffect(() => {\n if (!isOpen) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : prev\n );\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((prev) => (prev > 0 ? prev - 1 : 0));\n } else if (e.key === 'Enter' && focusedIndex >= 0) {\n e.preventDefault();\n const option = filteredOptions[focusedIndex];\n if (option && !option.disabled) {\n handleSelect(option);\n }\n } else if (e.key === 'Escape') {\n e.preventDefault();\n if (!isOpenControlled) {\n setInternalOpen(false);\n }\n onDropdownVisibleChange?.(false);\n selectRef.current?.focus();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [isOpen, filteredOptions, focusedIndex, isOpenControlled, onDropdownVisibleChange]);\n\n // 滚动到聚焦项\n useEffect(() => {\n if (focusedIndex >= 0 && dropdownRef.current) {\n const items = dropdownRef.current.querySelectorAll('.aha-select-option');\n const focusedItem = items[focusedIndex] as HTMLElement;\n if (focusedItem) {\n focusedItem.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }\n }, [focusedIndex]);\n\n const handleSelect = useCallback((option: SelectOption) => {\n if (option.disabled) return;\n\n if (isMultiple) {\n const currentValues = Array.isArray(currentValue) ? currentValue : [];\n const isSelected = currentValues.includes(option.value);\n\n let newValues: (string | number)[];\n if (isSelected) {\n newValues = currentValues.filter((v) => v !== option.value);\n onDeselect?.(option.value, option);\n } else {\n newValues = [...currentValues, option.value];\n onSelect?.(option.value, option);\n }\n\n if (!isControlled) {\n setInternalValue(newValues);\n }\n // 计算选中的选项\n const selectedOptions = options.filter((opt) => newValues.includes(opt.value));\n onChange?.(newValues, selectedOptions);\n } else {\n if (!isControlled) {\n setInternalValue(option.value);\n }\n onChange?.(option.value, option);\n onSelect?.(option.value, option);\n\n if (!isOpenControlled) {\n setInternalOpen(false);\n }\n onDropdownVisibleChange?.(false);\n setSearchValue('');\n selectRef.current?.focus();\n }\n }, [isMultiple, currentValue, isControlled, isOpenControlled, options, onChange, onSelect, onDeselect, onDropdownVisibleChange]);\n\n const handleRemoveTag = useCallback((e: React.MouseEvent, value: string | number) => {\n e.stopPropagation();\n if (isMultiple && Array.isArray(currentValue)) {\n const newValues = currentValue.filter((v) => v !== value);\n const option = options.find((opt) => opt.value === value);\n if (!isControlled) {\n setInternalValue(newValues);\n }\n onChange?.(newValues, getSelectedOptions());\n onDeselect?.(value, option!);\n }\n }, [isMultiple, currentValue, isControlled, options, onChange, onDeselect, getSelectedOptions]);\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n const newValue: string | number | (string | number)[] | undefined = isMultiple ? [] : undefined;\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue as any, []);\n setSearchValue('');\n };\n\n const handleToggle = () => {\n if (disabled) return;\n const newOpen = !isOpen;\n if (!isOpenControlled) {\n setInternalOpen(newOpen);\n }\n onDropdownVisibleChange?.(newOpen);\n if (newOpen && showSearch) {\n setTimeout(() => {\n inputRef.current?.focus();\n }, 0);\n } else {\n setSearchValue('');\n }\n };\n\n const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n setSearchValue(val);\n onSearch?.(val);\n setFocusedIndex(-1);\n };\n\n const handleFocus = (e: React.FocusEvent) => {\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent) => {\n onBlur?.(e);\n };\n\n // 尺寸样式 - 对齐 Input 组件\n const sizeStyles = {\n small: {\n height: '32px',\n paddingTop: '3px',\n paddingBottom: '3px',\n fontSize: '16px',\n lineHeight: '24px',\n },\n mediumSmall: {\n height: '36px',\n paddingTop: '5px',\n paddingBottom: '5px',\n fontSize: '16px',\n lineHeight: '24px',\n },\n medium: {\n height: '40px',\n paddingTop: '7px',\n paddingBottom: '7px',\n fontSize: '16px',\n lineHeight: '24px',\n },\n large: {\n height: '48px',\n paddingTop: '11px',\n paddingBottom: '11px',\n fontSize: '16px',\n lineHeight: '24px',\n },\n };\n\n const selectedOptions = useMemo(() => getSelectedOptions(), [getSelectedOptions]);\n const showClear = useMemo(() => allowClear && currentValue && !disabled, [allowClear, currentValue, disabled]);\n const hasValue = useMemo(() => \n isMultiple\n ? Array.isArray(currentValue) && currentValue.length > 0\n : currentValue !== undefined && currentValue !== null && currentValue !== '',\n [isMultiple, currentValue]\n );\n\n // 渲染标签 - 使用 useMemo 优化\n const renderTags = useMemo(() => {\n if (!isMultiple || !Array.isArray(currentValue) || currentValue.length === 0) {\n return null;\n }\n\n const tagsToShow =\n maxTagCount === 'responsive'\n ? selectedOptions.slice(0, 2) // 简化处理\n : maxTagCount\n ? selectedOptions.slice(0, maxTagCount)\n : selectedOptions;\n\n const remainingCount =\n maxTagCount && selectedOptions.length > tagsToShow.length\n ? selectedOptions.length - tagsToShow.length\n : 0;\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '4px',\n flex: 1,\n minWidth: 0,\n }}\n >\n {tagsToShow.map((option) => {\n const tagProps = {\n label: option.label,\n value: option.value,\n closable: !disabled,\n onClose: () => handleRemoveTag({} as any, option.value),\n };\n\n if (tagRender) {\n return <React.Fragment key={option.value}>{tagRender(tagProps)}</React.Fragment>;\n }\n\n return (\n <span\n key={option.value}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '2px 8px',\n backgroundColor: '#F5F5F4',\n borderRadius: '4px',\n fontSize: '12px',\n lineHeight: '18px',\n color: '#101828',\n fontFamily: \"DM Sans, sans-serif\",\n maxWidth: '100%',\n }}\n >\n <span\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {option.label}\n </span>\n {!disabled && (\n <span\n onClick={(e) => handleRemoveTag(e, option.value)}\n style={{\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n color: '#78716C',\n marginLeft: '4px',\n }}\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9 3L3 9M3 3L9 9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n </span>\n );\n })}\n {remainingCount > 0 && (\n <span\n style={{\n fontSize: '12px',\n lineHeight: '18px',\n color: '#78716C',\n fontFamily: \"DM Sans, sans-serif\",\n }}\n >\n +{remainingCount}\n </span>\n )}\n </div>\n );\n }, [isMultiple, currentValue, selectedOptions, maxTagCount, disabled, tagRender]);\n\n // 下拉箭头图标\n const ArrowIcon = ({ isOpen: open }: { isOpen: boolean }) => (\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 transform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n transition: 'transform 0.2s ease-in-out',\n flexShrink: 0,\n }}\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"#78716C\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n\n // 清除图标\n const ClearIcon = () => (\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 onClick={handleClear}\n style={{\n cursor: 'pointer',\n flexShrink: 0,\n color: '#78716C',\n }}\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 const dropdownAnimationStyles = `\n @keyframes dropdownFadeIn {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `;\n\n return (\n <>\n <style>{dropdownAnimationStyles}</style>\n <div\n ref={selectRef}\n className={`aha-select ${className}`}\n style={{\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n width: '100%',\n minWidth: '120px',\n boxSizing: 'border-box',\n fontFamily: \"DM Sans, sans-serif\",\n borderRadius: '8px', // rounded-md\n border: `1px solid ${error ? '#F04438' : isOpen ? primaryColor : '#D7D3D0'}`,\n backgroundColor: disabled ? '#FAFAF9' : '#FFFFFF',\n cursor: disabled ? 'not-allowed' : 'pointer',\n transition: 'all 0.2s',\n paddingLeft: '12px',\n paddingRight: '36px', // 为箭头和清除按钮留出空间(箭头16px + 右边距12px + 清除按钮8px)\n paddingTop: sizeStyles[size].paddingTop,\n paddingBottom: sizeStyles[size].paddingBottom,\n fontSize: sizeStyles[size].fontSize,\n lineHeight: sizeStyles[size].lineHeight,\n fontWeight: 400,\n WebkitTapHighlightColor: 'transparent', // 移动端移除点击高亮\n WebkitTouchCallout: 'none', // 禁用长按菜单\n touchAction: 'manipulation', // 优化触摸响应\n userSelect: 'none', // 禁用文本选择\n ...style,\n }}\n onClick={handleToggle}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onTouchStart={(e) => {\n // 移动端触摸优化\n if (!disabled) {\n e.currentTarget.style.opacity = '0.8';\n }\n }}\n onTouchEnd={(e) => {\n e.currentTarget.style.opacity = '1';\n }}\n tabIndex={disabled ? -1 : 0}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n minWidth: 0,\n gap: '8px',\n }}\n >\n {isMultiple ? (\n (renderTags || (placeholder ? (\n <span\n style={{\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n color: '#79716B',\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: 400,\n }}\n >\n {placeholder}\n </span>\n ) : (\n <span style={{ flex: 1, minHeight: '24px' }} />\n )))) : showSearch && isOpen ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={searchValue}\n onChange={handleSearch}\n onClick={(e) => e.stopPropagation()}\n onFocus={(e) => e.stopPropagation()}\n style={{\n flex: 1,\n border: 'none',\n outline: 'none',\n background: 'transparent',\n fontSize: '16px', // 至少 16px 避免 iOS Safari 自动缩放\n lineHeight: '24px',\n fontWeight: 400,\n color: disabled ? '#98A2B3' : '#1C1917',\n fontFamily: \"DM Sans, sans-serif\",\n minWidth: 0,\n WebkitAppearance: 'none',\n appearance: 'none',\n }}\n placeholder={hasValue ? undefined : placeholder}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck={false}\n />\n ) : (\n <span\n style={{\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n color: hasValue\n ? disabled\n ? '#98A2B3'\n : '#1C1917'\n : '#79716B',\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: 400,\n minHeight: '24px',\n display: 'inline-block',\n }}\n >\n {hasValue\n ? selectedOptions[0]?.label || currentValue\n : placeholder || '\\u00A0'}\n </span>\n )}\n </div>\n\n <div\n style={{\n position: 'absolute',\n right: '12px',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}\n >\n {showClear && <ClearIcon />}\n <ArrowIcon isOpen={isOpen} />\n </div>\n </div>\n\n {isOpen && dropdownPosition && createPortal(\n <div\n ref={dropdownRef}\n className={`aha-select-dropdown ${dropdownClassName}`}\n style={{\n position: 'absolute',\n top: `${dropdownPosition.top}px`,\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n zIndex: 1050,\n backgroundColor: '#FFFFFF',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n border: '1px solid #E7E5E4',\n maxHeight: '256px',\n overflow: 'auto',\n opacity: 0,\n transform:\n dropdownPosition.placement === 'top'\n ? 'translateY(8px)'\n : 'translateY(-8px)',\n animation: 'dropdownFadeIn 0.2s ease-out forwards',\n transformOrigin:\n dropdownPosition.placement === 'top'\n ? 'bottom center'\n : 'top center',\n WebkitOverflowScrolling: 'touch', // iOS 平滑滚动\n overscrollBehavior: 'contain', // 防止滚动穿透\n ...dropdownStyle,\n }}\n >\n {filteredOptions.length === 0 ? (\n <div\n style={{\n padding: '8px 16px',\n textAlign: 'center',\n color: '#78716C',\n fontSize: '14px',\n fontFamily: \"DM Sans, sans-serif\",\n }}\n >\n No data\n </div>\n ) : (\n filteredOptions.map((option, index) => {\n const isSelected = isMultiple\n ? Array.isArray(currentValue) && currentValue.includes(option.value)\n : currentValue === option.value;\n const isFocused = index === focusedIndex;\n\n // 如果提供了自定义渲染函数,使用自定义渲染\n if (optionRender) {\n return (\n <div\n key={option.value}\n className={`aha-select-option ${!option.disabled ? 'hover:bg-[#FAFAF9]' : ''} ${isSelected ? 'bg-[#FAFAF9]' : ''}`}\n onClick={() => !option.disabled && handleSelect(option)}\n style={{\n cursor: option.disabled ? 'not-allowed' : 'pointer',\n transition: 'background-color 0.2s',\n }}\n >\n {optionRender(option, {\n selected: isSelected,\n focused: isFocused,\n disabled: option.disabled || false,\n })}\n </div>\n );\n }\n\n // 默认渲染\n return (\n <div\n key={option.value}\n className={`aha-select-option ${!option.disabled ? 'hover:bg-[#FAFAF9]' : ''} ${isSelected ? 'bg-[#FAFAF9]' : ''}`}\n onClick={() => handleSelect(option)}\n style={{\n padding: '8px 16px',\n cursor: option.disabled ? 'not-allowed' : 'pointer',\n color: option.disabled ? '#98A2B3' : '#101828',\n fontSize: '14px',\n lineHeight: '20px',\n fontFamily: \"DM Sans, sans-serif\",\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n transition: 'background-color 0.2s',\n }}\n >\n <span>{option.label}</span>\n {/* 只有选中时才显示标识 */}\n {isSelected && (\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 className={isFocused ? 'hidden' : ''}\n >\n <path\n d=\"M13.3333 4L6 11.3333L2.66667 8\"\n stroke={primaryColor}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n })\n )}\n </div>,\n document.body\n )}\n </>\n );\n};\n\nSelect.displayName = 'Select';\n\nexport default Select;\n\n","import React from \"react\";\n\n// Checkbox 选中图标\nexport const CheckIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\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 className={className}\n style={style}\n >\n <path\n d=\"M11.6666 3.5L5.24992 9.91667L2.33325 7\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// Checkbox 半选中图标(减号)\nexport const MinusIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\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 className={className}\n style={style}\n >\n <path\n d=\"M3.5 7H10.5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// Sort 图标\nexport const SortIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M3.5 7.5L6 10L8.5 7.5M3.5 4.5L6 2L8.5 4.5\"\n stroke=\"#A9A29D\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// Sort 图标 降序\nexport const SortDescIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M3.5 4.5L6 2L8.5 4.5\"\n stroke=\"#A9A29D\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.5 7.5L6 10L8.5 7.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// Sort 图标 升序\nexport const SortAscIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M8.5 7.5L6 10L3.5 7.5\"\n stroke=\"#A9A29D\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8.5 4.5L6 2L3.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n// 向左的箭头\nexport const LeftArrowIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M15.8334 10H4.16675M4.16675 10L10.0001 15.8334M4.16675 10L10.0001 4.16669\"\n stroke=\"currentColor\"\n strokeWidth=\"1.66667\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n// 向右的箭头\nexport const RightArrowIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M4.16675 10H15.8334M15.8334 10L10.0001 4.16669M15.8334 10L10.0001 15.8334\"\n stroke=\"currentColor\"\n strokeWidth=\"1.66667\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n// 提示信息图标\nexport const TooltipIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\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 className={className}\n style={style}\n >\n <g clipPath=\"url(#clip0_54_1653)\">\n <path\n d=\"M6.06 6C6.21674 5.55444 6.5261 5.17873 6.9333 4.93942C7.34051 4.7001 7.81926 4.61262 8.28479 4.69247C8.75031 4.77232 9.17255 5.01434 9.47672 5.37568C9.78089 5.73702 9.94737 6.19434 9.94667 6.66666C9.94667 8 7.94667 8.66666 7.94667 8.66666M8 11.3333H8.00667M14.6667 8C14.6667 11.6819 11.6819 14.6667 8 14.6667C4.3181 14.6667 1.33333 11.6819 1.33333 8C1.33333 4.3181 4.3181 1.33333 8 1.33333C11.6819 1.33333 14.6667 4.3181 14.6667 8Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_54_1653\">\n <rect width=\"16\" height=\"16\" fill=\"currentColor\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { useTheme } from \"../../theme/ThemeContext\";\nimport Button from \"../Button\";\nimport Input from \"../Input\";\nimport Select from \"../Select\";\nimport { LeftArrowIcon, RightArrowIcon } from \"../../icons\";\n\nexport interface PaginationProps {\n current?: number;\n defaultCurrent?: number;\n total?: number;\n pageSize?: number;\n defaultPageSize?: number;\n showSizeChanger?: boolean;\n pageSizeOptions?: string[];\n showQuickJumper?: boolean | { goButton?: React.ReactNode };\n showTotal?: (total: number, range: [number, number]) => React.ReactNode;\n onChange?: (page: number, pageSize?: number) => void;\n onShowSizeChange?: (current: number, size: number) => void;\n simple?: boolean;\n disabled?: boolean;\n hideOnSinglePage?: boolean;\n className?: string;\n style?: React.CSSProperties;\n size?: \"default\" | \"small\";\n responsive?: boolean;\n showLessItems?: boolean;\n itemRender?: (\n page: number,\n type: \"page\" | \"prev\" | \"next\" | \"jump-prev\" | \"jump-next\",\n originalElement: React.ReactNode\n ) => React.ReactNode;\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n current: controlledCurrent,\n defaultCurrent = 1,\n total = 0,\n pageSize: controlledPageSize,\n defaultPageSize = 10,\n showSizeChanger = false,\n pageSizeOptions = [\"10\", \"20\", \"50\", \"100\"],\n showQuickJumper = false,\n showTotal,\n onChange,\n onShowSizeChange,\n simple = false,\n disabled = false,\n hideOnSinglePage = false,\n className = \"\",\n style,\n size = \"default\",\n responsive = false,\n showLessItems = false,\n itemRender,\n}) => {\n const { primaryColor = \"#FB6011\" } = useTheme();\n const [internalCurrent, setInternalCurrent] = useState(defaultCurrent);\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);\n const [jumpToPage, setJumpToPage] = useState(\"\");\n\n const current = controlledCurrent ?? internalCurrent;\n const pageSize = controlledPageSize ?? internalPageSize;\n\n const totalPages = useMemo(\n () => Math.ceil(total / pageSize),\n [total, pageSize]\n );\n\n useEffect(() => {\n if (controlledCurrent !== undefined) {\n setInternalCurrent(controlledCurrent);\n }\n }, [controlledCurrent]);\n\n useEffect(() => {\n if (controlledPageSize !== undefined) {\n setInternalPageSize(controlledPageSize);\n }\n }, [controlledPageSize]);\n\n const handlePageChange = (page: number) => {\n if (page < 1 || page > totalPages || page === current || disabled) return;\n\n if (controlledCurrent === undefined) {\n setInternalCurrent(page);\n }\n onChange?.(page, pageSize);\n };\n\n const handlePageSizeChange = (newPageSize: number) => {\n const newTotalPages = Math.ceil(total / newPageSize);\n const newCurrent = current > newTotalPages ? newTotalPages : current;\n\n if (controlledPageSize === undefined) {\n setInternalPageSize(newPageSize);\n }\n if (controlledCurrent === undefined) {\n setInternalCurrent(newCurrent);\n }\n\n onShowSizeChange?.(newCurrent, newPageSize);\n onChange?.(newCurrent, newPageSize);\n };\n\n const handleJumpTo = () => {\n const page = parseInt(jumpToPage, 10);\n if (page >= 1 && page <= totalPages) {\n handlePageChange(page);\n setJumpToPage(\"\");\n }\n };\n\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= 7) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | string)[] = [];\n\n if (current <= 4) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i);\n }\n pages.push(\"jump-next\");\n pages.push(totalPages);\n } else if (current >= totalPages - 3) {\n pages.push(1);\n pages.push(\"jump-prev\");\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push(\"jump-prev\");\n for (let i = current - 1; i <= current + 1; i++) {\n pages.push(i);\n }\n pages.push(\"jump-next\");\n pages.push(totalPages);\n }\n\n return pages;\n };\n\n const renderItem = (item: number | string): React.ReactNode => {\n if (typeof item === \"number\") {\n const isActive = item === current;\n const element = (\n <Button\n key={item}\n onClick={() => handlePageChange(item)}\n disabled={disabled}\n type={isActive ? \"primary\" : \"default\"}\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n minWidth: size === \"small\" ? \"32px\" : \"36px\",\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n margin: 0,\n fontWeight: isActive ? 500 : 400,\n border: isActive ? `1px solid ${primaryColor}` : undefined,\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n {item}\n </Button>\n );\n\n return itemRender ? itemRender(item, \"page\", element) : element;\n }\n\n if (item === \"jump-prev\") {\n const element = (\n <Button\n key=\"jump-prev\"\n onClick={() => handlePageChange(Math.max(1, current - 5))}\n disabled={disabled}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n minWidth: size === \"small\" ? \"32px\" : \"36px\",\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n margin: 0,\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n •••\n </Button>\n );\n\n return itemRender\n ? itemRender(current - 5, \"jump-prev\", element)\n : element;\n }\n\n if (item === \"jump-next\") {\n const element = (\n <Button\n key=\"jump-next\"\n onClick={() => handlePageChange(Math.min(totalPages, current + 5))}\n disabled={disabled}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n minWidth: size === \"small\" ? \"32px\" : \"36px\",\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n margin: 0,\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n •••\n </Button>\n );\n\n return itemRender\n ? itemRender(current + 5, \"jump-next\", element)\n : element;\n }\n\n return null;\n };\n\n if (hideOnSinglePage && totalPages <= 1) {\n return null;\n }\n\n if (simple) {\n return (\n <div\n className={`aha-pagination aha-pagination-simple ${className}`}\n style={style}\n >\n <Button\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n marginRight: \"8px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <LeftArrowIcon />\n </Button>\n <span\n style={{\n margin: \"0 8px\",\n fontSize: \"14px\",\n lineHeight: \"20px\",\n color: \"#475467\",\n fontFamily: \"DM Sans, sans-serif\",\n }}\n >\n {current} / {totalPages}\n </span>\n <Button\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n marginLeft: \"8px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <RightArrowIcon />\n </Button>\n </div>\n );\n }\n\n const start = (current - 1) * pageSize + 1;\n const end = Math.min(current * pageSize, total);\n\n return (\n <div\n className={`aha-pagination w-full ${className}`}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexWrap: responsive ? \"wrap\" : \"nowrap\",\n fontFamily: \"DM Sans, sans-serif\",\n ...style,\n }}\n >\n {showTotal && (\n <div className=\"justify-start text-Text-text-secondary text-sm font-medium font-['DM_Sans'] leading-5\">\n {showTotal(total, [start, end])}\n </div>\n )}\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n }}\n >\n {total > 0 && (\n <>\n {itemRender ? (\n itemRender(\n current - 1,\n \"prev\",\n <Button\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n gap: \"4px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <LeftArrowIcon />\n </Button>\n )\n ) : (\n <Button\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n gap: \"4px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <LeftArrowIcon />\n </Button>\n )}\n </>\n )}\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n {getPageNumbers().map((item) => renderItem(item))}\n </div>\n\n {total > 0 && (\n <>\n {itemRender ? (\n itemRender(\n current + 1,\n \"next\",\n <Button\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n gap: \"4px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <RightArrowIcon />\n </Button>\n )\n ) : (\n <Button\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n gap: \"4px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <RightArrowIcon />\n </Button>\n )}\n </>\n )}\n\n {showSizeChanger && (\n <Select\n value={pageSize}\n options={pageSizeOptions.map((s) => ({\n label: `${s} / page`,\n value: Number(s),\n }))}\n onChange={(val) => handlePageSizeChange(Number(val))}\n disabled={disabled}\n size={size === \"small\" ? \"small\" : \"medium\"}\n style={{ minWidth: size === \"small\" ? 80 : 96 }}\n />\n )}\n\n {showQuickJumper && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n fontFamily: \"DM Sans, sans-serif\",\n }}\n >\n <span\n style={{\n fontSize: \"14px\",\n lineHeight: \"20px\",\n color: \"#475467\",\n }}\n >\n Go to\n </span>\n <Input\n type=\"number\"\n min={1}\n value={jumpToPage}\n onChange={(e) => setJumpToPage(e.target.value)}\n onPressEnter={handleJumpTo}\n disabled={disabled}\n size={size === \"small\" ? \"small\" : \"medium\"}\n style={{ width: 56, minWidth: 56 }}\n />\n <span\n style={{\n fontSize: \"14px\",\n lineHeight: \"20px\",\n color: \"#475467\",\n }}\n >\n page\n </span>\n {typeof showQuickJumper === \"object\" && showQuickJumper.goButton ? (\n <Button\n onClick={handleJumpTo}\n disabled={disabled}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n {showQuickJumper.goButton}\n </Button>\n ) : (\n <Button\n onClick={handleJumpTo}\n disabled={disabled}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n OK\n </Button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default Pagination;\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__spreadArray","to","from","pack","ar","l","Array","slice","concat","SuppressedError","defaultTheme","primaryColor","ThemeContext","createContext","useTheme","context","useContext","SIZE_ALIAS","sm","md","lg","xl","small","mediumSmall","medium","large","HIERARCHY_ALIAS","primary","secondary","tertiary","default","SIZE_TOKENS","height","paddingX","paddingXLg","fontSize","lineHeight","iconSize","gap","iconOnlyPad","LoadingSpinner","_a","size","color","_jsxs","jsxs","_Fragment","Fragment","children","_jsx","jsx","width","viewBox","fill","style","animation","flexShrink","cx","cy","r","stroke","strokeWidth","opacity","d","strokeLinecap","Button","_b","type","_c","_d","disabled","_e","loading","iconOnly","_f","focused","onClick","_g","htmlType","_h","className","icon","_j","iconPosition","rest","_k","useState","isHovered","setIsHovered","_l","isPressed","setIsPressed","hierarchy","isIconOnly","isLink","isDisabled","showFocusRing","themeBrand","visuals","bg","iconColor","border","boxShadow","interactive","textDecoration","getVisuals","focusShadow","buttonStyle","position","display","alignItems","justifyContent","fontFamily","fontWeight","cursor","outline","transition","userSelect","WebkitTapHighlightColor","whiteSpace","backgroundColor","borderRadius","overflow","padding","paddingLeft","paddingRight","renderIcon","showLeftIcon","showRightIcon","filter","Boolean","join","preventDefault","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","displayName","Input","forwardRef","ref","error","readOnly","prefix","suffix","allowClear","onClear","placeholder","value","defaultValue","onChange","onFocus","onBlur","onPressEnter","restProps","inputRef","useRef","React","internalValue","setInternalValue","setFocused","useEffect","current","isControlled","undefined","currentValue","handleClear","stopPropagation","target","currentTarget","focus","showClear","sizeStyles","paddingTop","paddingBottom","baseStyles","boxSizing","WebkitAppearance","MozAppearance","appearance","left","zIndex","pointerEvents","onKeyDown","key","autoComplete","autoCorrect","autoCapitalize","spellCheck","right","xmlns","strokeLinejoin","Select","controlledValue","options","mode","showSearch","filterOption","onSelect","onDeselect","onSearch","onDropdownVisibleChange","_m","dropdownClassName","dropdownStyle","_o","defaultOpen","controlledOpen","open","maxTagCount","tagRender","optionRender","_p","_q","_r","internalOpen","setInternalOpen","_s","searchValue","setSearchValue","_t","focusedIndex","setFocusedIndex","selectRef","dropdownRef","_u","dropdownPosition","setDropdownPosition","isOpenControlled","isOpen","isMultiple","getSelectedOptions","useCallback","values","isArray","opt","includes","getFilteredOptions","label","String","toLowerCase","search","filteredOptions","useMemo","updatePosition_1","rect","getBoundingClientRect","estimatedDropdownHeight","offsetHeight","Math","min","max","spaceBelow","window","innerHeight","bottom","spaceAbove","top","shouldOpenUp","top_1","scrollY","scrollX","placement","requestAnimationFrame","addEventListener","removeEventListener","handleClickOutside","event","contains","document","handleKeyDown","prev","option","handleSelect","focusedItem","querySelectorAll","scrollIntoView","block","behavior","newValues_1","currentValues","v","selectedOptions_1","handleRemoveTag","newValues","find","newValue","selectedOptions","hasValue","renderTags","tagsToShow","remainingCount","flexWrap","flex","minWidth","map","tagProps","closable","onClose","maxWidth","textOverflow","marginLeft","WebkitTouchCallout","touchAction","newOpen","setTimeout","onTouchStart","onTouchEnd","tabIndex","minHeight","val","background","transform","createPortal","maxHeight","transformOrigin","WebkitOverflowScrolling","overscrollBehavior","textAlign","index","isSelected","isFocused","selected","body","LeftArrowIcon","RightArrowIcon","controlledCurrent","defaultCurrent","total","controlledPageSize","pageSize","defaultPageSize","showSizeChanger","pageSizeOptions","showQuickJumper","showTotal","onShowSizeChange","simple","hideOnSinglePage","responsive","showLessItems","itemRender","internalCurrent","setInternalCurrent","internalPageSize","setInternalPageSize","jumpToPage","setJumpToPage","totalPages","ceil","handlePageChange","page","handleJumpTo","parseInt","marginRight","margin","start","end","_","pages","push","getPageNumbers","item","isActive","element","renderItem","Number","newPageSize","newTotalPages","newCurrent","goButton"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"Pagination.js","sources":["../node_modules/tslib/tslib.es6.js","../src/theme/ThemeContext.tsx","../src/components/Button/index.tsx","../src/components/Input/InputGroup.tsx","../src/components/Input/index.tsx","../src/components/Select/index.tsx","../src/icons/index.tsx","../src/components/Pagination/index.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React, { createContext, useContext, useMemo } from 'react';\n\nexport interface ThemeConfig {\n primaryColor?: string;\n}\n\nconst defaultTheme: ThemeConfig = {\n primaryColor: '#FB6011',\n};\n\nconst ThemeContext = createContext<ThemeConfig>(defaultTheme);\n\nexport interface ThemeProviderProps {\n theme?: ThemeConfig;\n children: React.ReactNode;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({ theme, children }) => {\n const themeValue = useMemo(() => {\n return {\n ...defaultTheme,\n ...theme,\n };\n }, [theme]);\n\n return (\n <ThemeContext.Provider value={themeValue}>\n {children}\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeConfig => {\n const context = useContext(ThemeContext);\n if (!context) {\n // 如果没有 Provider,返回默认主题\n return defaultTheme;\n }\n return context;\n};\n\n// 导出默认主题色,供组件内部使用\nexport const getDefaultPrimaryColor = () => defaultTheme.primaryColor!;\n\n","import React, { useState } from 'react';\nimport { useTheme } from '../../theme/ThemeContext';\n\n/**\n * 对齐 Figma: Untitled UI v7 — Buttons\n * 维度:Size × Hierarchy × State × Icon only\n * Size: sm(36) / md(40) / lg(44) / xl(48)\n * Hierarchy: primary / secondary / tertiary / link-color / link-gray\n * State: default / hover / focused / disabled / loading\n * Icon only: boolean\n */\n\nexport type ButtonHierarchy =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'link-color'\n | 'link-gray'\n | 'destructive-primary'\n | 'destructive-secondary'\n | 'destructive-tertiary'\n | 'destructive-link'\n // legacy alias\n | 'default';\n\nexport type ButtonSize =\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n // legacy aliases\n | 'small'\n | 'mediumSmall'\n | 'medium'\n | 'large';\n\nexport type ButtonType = ButtonHierarchy;\n\nexport interface ButtonProps {\n children?: React.ReactNode;\n /** 按钮层级(对应 Figma Hierarchy)。`default` 为 `secondary` 的旧名 */\n type?: ButtonHierarchy;\n /** 按钮尺寸(对应 Figma Size)。旧名会映射到新尺寸 */\n size?: ButtonSize;\n disabled?: boolean;\n loading?: boolean;\n /** 仅图标按钮。不传 `children`、仅传 `icon` 时自动开启 */\n iconOnly?: boolean;\n /** 受控的 Focused 视觉态,用于 Storybook 预览设计稿;真实键盘焦点由 :focus-visible 处理 */\n focused?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n htmlType?: 'button' | 'submit' | 'reset';\n className?: string;\n style?: React.CSSProperties;\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n [key: string]: any;\n}\n\ntype NormalizedSize = 'sm' | 'md' | 'lg' | 'xl';\ntype NormalizedHierarchy = 'primary' | 'secondary' | 'tertiary' | 'link-color' | 'link-gray' | 'destructive-primary' | 'destructive-secondary' | 'destructive-tertiary' | 'destructive-link';\n\nconst SIZE_ALIAS: Record<ButtonSize, NormalizedSize> = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl',\n small: 'sm',\n mediumSmall: 'sm',\n medium: 'md',\n large: 'xl',\n};\n\nconst HIERARCHY_ALIAS: Record<ButtonHierarchy, NormalizedHierarchy> = {\n primary: 'primary',\n secondary: 'secondary',\n tertiary: 'tertiary',\n 'link-color': 'link-color',\n 'link-gray': 'link-gray',\n 'destructive-primary': 'destructive-primary',\n 'destructive-secondary': 'destructive-secondary',\n 'destructive-tertiary': 'destructive-tertiary',\n 'destructive-link': 'destructive-link',\n default: 'secondary',\n};\n\n/** Figma 标注的尺寸参数:高度、内边距、字号/行高、图标尺寸、间距 */\nconst SIZE_TOKENS: Record<\n NormalizedSize,\n {\n height: number;\n paddingX: number;\n paddingXLg: number; // lg/xl 大号内边距(与图标拼接时稍大)\n fontSize: number;\n lineHeight: number;\n iconSize: number;\n gap: number;\n iconOnlyPad: number;\n }\n> = {\n sm: { height: 36, paddingX: 12, paddingXLg: 12, fontSize: 14, lineHeight: 20, iconSize: 20, gap: 4, iconOnlyPad: 8 },\n md: { height: 40, paddingX: 14, paddingXLg: 14, fontSize: 14, lineHeight: 20, iconSize: 20, gap: 4, iconOnlyPad: 10 },\n lg: { height: 44, paddingX: 16, paddingXLg: 16, fontSize: 16, lineHeight: 24, iconSize: 20, gap: 6, iconOnlyPad: 12 },\n xl: { height: 48, paddingX: 18, paddingXLg: 18, fontSize: 16, lineHeight: 24, iconSize: 20, gap: 6, iconOnlyPad: 14 },\n};\n\nconst LoadingSpinner: React.FC<{ size: number; color: string }> = ({ size, color }) => (\n <>\n <style>{`@keyframes aha-button-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}`}</style>\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden\n style={{ animation: 'aha-button-spin 1s linear infinite', flexShrink: 0 }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke={color} strokeWidth=\"2\" opacity=\"0.25\" />\n <path\n d=\"M22 12a10 10 0 0 1-10 10\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n </svg>\n </>\n);\n\nconst Button: React.FC<ButtonProps> = ({\n children,\n type = 'secondary',\n size = 'md',\n disabled = false,\n loading = false,\n iconOnly,\n focused = false,\n onClick,\n htmlType = 'button',\n className = '',\n style,\n icon,\n iconPosition = 'left',\n ...rest\n}) => {\n const { primaryColor } = useTheme();\n const [isHovered, setIsHovered] = useState(false);\n const [isPressed, setIsPressed] = useState(false);\n\n const hierarchy = HIERARCHY_ALIAS[type] || 'secondary';\n const s = SIZE_TOKENS[SIZE_ALIAS[size] || 'md'];\n\n const isIconOnly = iconOnly ?? (!!icon && children == null);\n const isLink = hierarchy === 'link-color' || hierarchy === 'link-gray' || hierarchy === 'destructive-link';\n const isDisabled = disabled || loading;\n const showFocusRing = focused;\n\n const themeBrand = primaryColor; // 允许 ThemeProvider 覆盖主色\n\n /** 根据 hierarchy+state 计算视觉 token */\n const getVisuals = (): {\n bg: string;\n color: string;\n iconColor: string;\n border: string;\n boxShadow: string;\n textDecoration?: string;\n } => {\n // Disabled — 所有层级共享一套「灰态」,但 link/tertiary 无边框/阴影\n if (disabled) {\n if (hierarchy === 'primary' || hierarchy === 'secondary' || hierarchy === 'destructive-primary' || hierarchy === 'destructive-secondary') {\n return {\n bg: 'var(--color-bg-disabled, #f5f5f4)',\n color: 'var(--color-fg-disabled, #a9a29d)',\n iconColor: 'var(--color-fg-disabled, #a9a29d)',\n border: '1px solid var(--color-border-disabled_subtle, #e7e5e4)',\n boxShadow: 'none',\n };\n }\n return {\n bg: 'transparent',\n color: 'var(--color-fg-disabled, #a9a29d)',\n iconColor: 'var(--color-fg-disabled, #a9a29d)',\n border: 'none',\n boxShadow: 'none',\n };\n }\n\n const interactive = isHovered || isPressed;\n\n if (hierarchy === 'primary') {\n const bg = interactive\n ? 'var(--color-bg-brand-solid_hover, #ec470a)'\n : themeBrand || 'var(--color-bg-brand-solid, #fb6011)';\n return {\n bg,\n color: 'var(--color-text-white, #ffffff)',\n iconColor: 'var(--color-brand-300, #feb073)',\n border: 'none',\n boxShadow: 'var(--shadow-xs-skeuomorphic, 0 1px 2px 0 rgba(10,13,18,.05))',\n };\n }\n\n if (hierarchy === 'secondary') {\n return {\n bg: interactive\n ? 'var(--color-bg-primary_hover, #fafaf9)'\n : 'var(--color-bg-primary, #ffffff)',\n color: interactive\n ? 'var(--color-text-secondary_hover, #292524)'\n : 'var(--color-text-secondary, #44403c)',\n iconColor: interactive\n ? 'var(--color-fg-quaternary_hover, #79716b)'\n : 'var(--color-fg-quaternary, #a9a29d)',\n border: 'none',\n boxShadow: 'var(--shadow-xs-skeuomorphic)',\n };\n }\n\n if (hierarchy === 'tertiary') {\n return {\n bg: interactive ? 'var(--color-bg-primary_hover, #fafaf9)' : 'transparent',\n color: interactive\n ? 'var(--color-text-tertiary_hover, #44403c)'\n : 'var(--color-text-tertiary, #57534e)',\n iconColor: interactive\n ? 'var(--color-fg-quaternary_hover, #79716b)'\n : 'var(--color-fg-quaternary, #a9a29d)',\n border: 'none',\n boxShadow: 'none',\n };\n }\n\n if (hierarchy === 'link-color') {\n return {\n bg: 'transparent',\n color: interactive\n ? 'var(--color-text-brand-secondary_hover, #c4330a)'\n : 'var(--color-text-brand-secondary, #ec470a)',\n iconColor: 'var(--color-fg-brand-secondary_alt, #fb6011)',\n border: 'none',\n boxShadow: 'none',\n textDecoration: interactive ? 'underline' : 'none',\n };\n }\n\n if (hierarchy === 'link-gray') {\n return {\n bg: 'transparent',\n color: interactive\n ? 'var(--color-text-tertiary_hover, #44403c)'\n : 'var(--color-text-tertiary, #57534e)',\n iconColor: 'var(--color-fg-quaternary, #a9a29d)',\n border: 'none',\n boxShadow: 'none',\n textDecoration: interactive ? 'underline' : 'none',\n };\n }\n\n if (hierarchy === 'destructive-primary') {\n return {\n bg: interactive\n ? 'var(--color-error-600)'\n : 'var(--color-error-500)',\n color: 'var(--color-text-white)',\n iconColor: interactive\n ? 'var(--color-error-200)'\n : 'var(--color-error-300)',\n border: 'none',\n boxShadow: 'var(--shadow-xs-skeuomorphic)',\n };\n }\n\n if (hierarchy === 'destructive-secondary') {\n return {\n bg: interactive\n ? 'var(--color-bg-error-primary)'\n : 'var(--color-bg-primary)',\n color: 'var(--color-text-error-primary)',\n iconColor: 'var(--color-fg-error-secondary)',\n border: 'none',\n // 用 error border 色替换 skeuomorphic 中的暗色 inset,保持与 secondary 一致的 shadow 结构\n boxShadow: 'inset 0 0 0 1px var(--color-border-error_subtle), inset 0 -2px 0 0 rgba(10,13,18,0.05), 0 1px 2px 0 rgba(10,13,18,0.05)',\n };\n }\n\n if (hierarchy === 'destructive-tertiary') {\n return {\n bg: interactive ? 'var(--color-bg-error-primary)' : 'transparent',\n color: 'var(--color-text-error-primary)',\n iconColor: 'var(--color-fg-error-secondary)',\n border: 'none',\n boxShadow: 'none',\n };\n }\n\n // destructive-link\n return {\n bg: 'transparent',\n color: interactive\n ? 'var(--color-text-error-primary_hover)'\n : 'var(--color-text-error-primary)',\n iconColor: 'var(--color-fg-error-secondary)',\n border: 'none',\n boxShadow: 'none',\n textDecoration: interactive ? 'underline' : 'none',\n };\n };\n\n const visuals = getVisuals();\n\n /** focus ring: primary/secondary 使用 skeuomorphic 版本叠加基础阴影;其余使用纯环 */\n const focusShadow = (() => {\n if (!showFocusRing) return undefined;\n const isDestructive = hierarchy === 'destructive-primary' || hierarchy === 'destructive-secondary' || hierarchy === 'destructive-tertiary' || hierarchy === 'destructive-link';\n if (isDestructive) {\n if (hierarchy === 'destructive-primary' || hierarchy === 'destructive-secondary') {\n return 'var(--focus-ring-error-shadow-xs-skeuomorphic)';\n }\n return 'var(--focus-ring-error)';\n }\n if (hierarchy === 'primary' || hierarchy === 'secondary') {\n return 'var(--focus-ring-shadow-xs-skeuomorphic, 0 0 0 2px #fff, 0 0 0 4px #fb6011)';\n }\n return 'var(--focus-ring, 0 0 0 2px #fff, 0 0 0 4px #fb6011)';\n })();\n\n const buttonStyle: React.CSSProperties = {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: s.gap,\n fontFamily: 'var(--font-family-body, \"DM Sans\", system-ui, sans-serif)',\n fontWeight: 600,\n fontSize: s.fontSize,\n lineHeight: `${s.lineHeight}px`,\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n outline: 'none',\n transition: 'background-color .15s ease, color .15s ease, box-shadow .15s ease',\n userSelect: 'none',\n WebkitTapHighlightColor: 'transparent',\n whiteSpace: 'nowrap',\n backgroundColor: visuals.bg,\n color: visuals.color,\n border: visuals.border,\n boxShadow: focusShadow ?? visuals.boxShadow,\n textDecoration: visuals.textDecoration,\n ...style,\n };\n\n if (isLink) {\n // Link 类:保留与同尺寸按钮一致的高度和横向内边距,无背景、无边框\n buttonStyle.borderRadius = '4px';\n buttonStyle.overflow = 'hidden';\n if (isIconOnly) {\n buttonStyle.width = s.height;\n buttonStyle.height = s.height;\n buttonStyle.padding = 0;\n } else {\n buttonStyle.height = s.height;\n buttonStyle.paddingLeft = s.paddingX;\n buttonStyle.paddingRight = s.paddingX;\n }\n } else {\n buttonStyle.borderRadius = 'var(--radius-md, 8px)';\n if (isIconOnly) {\n buttonStyle.width = s.height;\n buttonStyle.height = s.height;\n buttonStyle.padding = 0;\n } else {\n buttonStyle.height = s.height;\n buttonStyle.paddingLeft = s.paddingX;\n buttonStyle.paddingRight = s.paddingX;\n }\n }\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n const renderIcon = () => {\n if (loading) {\n return <LoadingSpinner size={s.iconSize} color={visuals.iconColor} />;\n }\n if (!icon) return null;\n return (\n <span\n aria-hidden\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: s.iconSize,\n height: s.iconSize,\n color: visuals.iconColor,\n flexShrink: 0,\n }}\n >\n {icon}\n </span>\n );\n };\n\n const showLeftIcon = loading || (icon && iconPosition === 'left');\n const showRightIcon = !loading && icon && iconPosition === 'right';\n\n return (\n <button\n type={htmlType}\n className={[\n 'aha-button',\n `aha-button--${hierarchy}`,\n `aha-button--${SIZE_ALIAS[size] || 'md'}`,\n isIconOnly && 'aha-button--icon-only',\n isDisabled && 'aha-button--disabled',\n loading && 'aha-button--loading',\n showFocusRing && 'aha-button--focused',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n disabled={isDisabled}\n onClick={handleClick}\n onMouseEnter={() => !isDisabled && setIsHovered(true)}\n onMouseLeave={() => {\n setIsHovered(false);\n setIsPressed(false);\n }}\n onMouseDown={() => !isDisabled && setIsPressed(true)}\n onMouseUp={() => setIsPressed(false)}\n style={buttonStyle}\n {...rest}\n >\n {showLeftIcon && renderIcon()}\n {!isIconOnly && children}\n {showRightIcon && renderIcon()}\n {/* icon-only 且没传 icon 时,允许 children 作为图标 */}\n {isIconOnly && !icon && !loading && children}\n </button>\n );\n};\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import React, { forwardRef, useRef, useEffect, useState } from 'react';\nimport { InputProps } from './index';\n\nexport interface InputGroupProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix' | 'suffix'> {\n size?: 'small' | 'mediumSmall' | 'medium' | 'large';\n error?: boolean;\n readOnly?: boolean;\n disabled?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n /** Text addon on the left (e.g. \"https://\") — auto-styled with correct padding */\n leadingText?: React.ReactNode;\n /** Text addon on the right (e.g. \"USD\") — auto-styled with correct padding */\n trailingText?: React.ReactNode;\n /** Raw ReactNode on the left (dropdown, icon button, etc.) — no padding added */\n leadingAddon?: React.ReactNode;\n /** Raw ReactNode on the right (button, select, etc.) — no padding added */\n trailingAddon?: React.ReactNode;\n onPressEnter?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n className?: string;\n style?: React.CSSProperties;\n label?: string;\n required?: boolean;\n hintText?: string;\n}\n\nconst SHADOW_XS = 'var(--shadow-xs)';\n\nconst sizeMap: Record<NonNullable<InputGroupProps['size']>, { pt: string; pb: string }> = {\n small: { pt: '5px', pb: '5px' },\n mediumSmall: { pt: '7px', pb: '7px' },\n medium: { pt: '9px', pb: '9px' },\n large: { pt: '11px', pb: '11px' },\n};\n\nconst InputGroup = forwardRef<HTMLInputElement, InputGroupProps>(({\n size = 'mediumSmall',\n error = false,\n disabled = false,\n readOnly = false,\n prefix,\n suffix,\n leadingText,\n trailingText,\n leadingAddon,\n trailingAddon,\n className = '',\n style,\n onFocus,\n onBlur,\n onKeyDown,\n onPressEnter,\n value,\n defaultValue,\n onChange,\n placeholder,\n type = 'text',\n label,\n required,\n hintText,\n ...restProps\n}, ref) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [focused, setFocused] = useState(false);\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n\n useEffect(() => {\n if (typeof ref === 'function') ref(inputRef.current);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = inputRef.current;\n }, [ref]);\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInternalValue(e.target.value);\n onChange?.(e);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n onBlur?.(e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && onPressEnter) onPressEnter(e);\n onKeyDown?.(e);\n };\n\n const getFocusStyles = (): React.CSSProperties => {\n if (disabled) return { border: '1px solid var(--color-border-disabled)', boxShadow: SHADOW_XS, outline: 'none' };\n if (error && focused) return { border: '1px solid var(--color-border-error)', boxShadow: SHADOW_XS, outline: '2px solid var(--color-border-error)', outlineOffset: '-2px' };\n if (error) return { border: '1px solid var(--color-border-error_subtle)', boxShadow: SHADOW_XS, outline: 'none' };\n if (focused) return { border: '1px solid var(--color-border-brand)', boxShadow: SHADOW_XS, outline: '2px solid var(--color-border-brand)', outlineOffset: '-2px' };\n return { border: '1px solid var(--color-border-primary)', boxShadow: SHADOW_XS, outline: 'none' };\n };\n\n const { border, boxShadow, outline, outlineOffset } = getFocusStyles();\n const { pt, pb } = sizeMap[size];\n const dividerColor = disabled ? 'var(--color-border-disabled)' : 'var(--color-border-primary)';\n const iconColor = disabled ? 'var(--color-fg-disabled)' : 'var(--color-fg-quaternary)';\n const hasPrefixIcon = !!prefix;\n const hasSuffixIcon = !!suffix;\n\n const iconSlotStyle: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'flex',\n alignItems: 'center',\n color: iconColor,\n zIndex: 1,\n pointerEvents: 'none',\n };\n\n const addonTextStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n paddingTop: pt,\n paddingBottom: pb,\n paddingLeft: '14px',\n paddingRight: '12px',\n color: 'var(--color-text-tertiary)',\n fontFamily: 'var(--font-family-body)',\n fontSize: 'var(--font-size-text-md)',\n lineHeight: 'var(--line-height-text-md)',\n whiteSpace: 'nowrap',\n flexShrink: 0,\n backgroundColor: disabled ? 'var(--color-bg-disabled_subtle)' : 'transparent',\n };\n\n const groupEl = (\n <div\n className={`aha-input-group ${className}`}\n style={{\n display: 'flex',\n alignItems: 'stretch',\n width: '100%',\n border,\n boxShadow,\n outline,\n outlineOffset,\n borderRadius: 'var(--radius-md)',\n backgroundColor: disabled || readOnly ? 'var(--color-bg-disabled_subtle)' : 'var(--color-bg-primary)',\n overflow: 'hidden',\n boxSizing: 'border-box',\n transition: 'border-color 0.15s ease, box-shadow 0.15s ease',\n ...style,\n }}\n >\n {/* Leading text addon (auto-padded) */}\n {leadingText !== undefined && (\n <div style={{ ...addonTextStyle, borderRight: `1px solid ${dividerColor}` }}>\n {leadingText}\n </div>\n )}\n {/* Leading raw addon (no auto-padding) */}\n {leadingAddon !== undefined && (\n <div style={{ display: 'flex', alignItems: 'stretch', flexShrink: 0, borderRight: `1px solid ${dividerColor}` }}>\n {leadingAddon}\n </div>\n )}\n\n {/* Input area */}\n <div style={{ flex: 1, position: 'relative', display: 'flex', alignItems: 'stretch', minWidth: 0 }}>\n {hasPrefixIcon && (\n <span style={{ ...iconSlotStyle, left: '14px' }}>{prefix}</span>\n )}\n <input\n ref={inputRef}\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n style={{\n flex: 1,\n border: 'none',\n outline: 'none',\n width: '100%',\n boxSizing: 'border-box',\n fontFamily: 'var(--font-family-body)',\n fontSize: 'var(--font-size-text-md)',\n fontWeight: 400,\n lineHeight: 'var(--line-height-text-md)',\n backgroundColor: 'transparent',\n color: disabled ? 'var(--color-text-disabled)' : 'var(--color-text-primary)',\n paddingTop: pt,\n paddingBottom: pb,\n paddingLeft: hasPrefixIcon ? '40px' : '14px',\n paddingRight: hasSuffixIcon ? '40px' : '14px',\n }}\n autoComplete={restProps.autoComplete || 'off'}\n {...restProps}\n />\n {hasSuffixIcon && (\n <span style={{ ...iconSlotStyle, right: '14px' }}>{suffix}</span>\n )}\n </div>\n\n {/* Trailing text addon (auto-padded) */}\n {trailingText !== undefined && (\n <div style={{ ...addonTextStyle, paddingLeft: '12px', paddingRight: '14px', borderLeft: `1px solid ${dividerColor}` }}>\n {trailingText}\n </div>\n )}\n {/* Trailing raw addon (no auto-padding) */}\n {trailingAddon !== undefined && (\n <div style={{ display: 'flex', alignItems: 'stretch', flexShrink: 0, borderLeft: `1px solid ${dividerColor}` }}>\n {trailingAddon}\n </div>\n )}\n </div>\n );\n\n if (!label && !hintText) return groupEl;\n\n const labelStyle: React.CSSProperties = {\n fontFamily: 'var(--font-family-body)',\n fontSize: 'var(--font-size-text-sm)',\n fontWeight: 500,\n lineHeight: '20px',\n color: 'var(--color-text-secondary)',\n };\n\n const hintStyle: React.CSSProperties = {\n margin: 0,\n fontFamily: 'var(--font-family-body)',\n fontSize: 'var(--font-size-text-sm)',\n fontWeight: 400,\n lineHeight: '20px',\n color: error ? 'var(--color-error-600)' : 'var(--color-text-tertiary)',\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '6px', width: '100%' }}>\n {label && (\n <label style={labelStyle}>\n {label}\n {required && <span style={{ color: 'var(--color-error-600)', marginLeft: '2px' }}>*</span>}\n </label>\n )}\n {groupEl}\n {hintText && <p style={hintStyle}>{hintText}</p>}\n </div>\n );\n});\n\nInputGroup.displayName = 'InputGroup';\n\nexport default InputGroup;\n","import React, { forwardRef, useRef, useEffect } from 'react';\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix' | 'suffix'> {\n size?: 'small' | 'mediumSmall' | 'medium' | 'large';\n disabled?: boolean;\n error?: boolean;\n readOnly?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n allowClear?: boolean;\n onClear?: () => void;\n className?: string;\n style?: React.CSSProperties;\n type?: string;\n placeholder?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;\n onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;\n onPressEnter?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n label?: string;\n required?: boolean;\n hintText?: string;\n}\n\n// sm=36px, mediumSmall=40px, md=44px (matches Figma md), lg=48px\n// With box-sizing:border-box: height = 1px border × 2 + paddingTop + 24px lineHeight + paddingBottom\nconst sizeStyles: Record<NonNullable<InputProps['size']>, React.CSSProperties> = {\n small: { height: '36px', paddingTop: '5px', paddingBottom: '5px' },\n mediumSmall: { height: '40px', paddingTop: '7px', paddingBottom: '7px' },\n medium: { height: '44px', paddingTop: '9px', paddingBottom: '9px' },\n large: { height: '48px', paddingTop: '11px', paddingBottom: '11px' },\n};\n\nconst SHADOW_XS = 'var(--shadow-xs)';\n\nconst ClearIcon: React.FC<{ onClick: (e: React.MouseEvent) => void }> = ({ onClick }) => (\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 onClick={onClick}\n style={{ cursor: 'pointer', flexShrink: 0 }}\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\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'mediumSmall',\n disabled = false,\n error = false,\n readOnly = false,\n prefix,\n suffix,\n allowClear = false,\n onClear,\n className = '',\n style,\n type = 'text',\n placeholder,\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n onPressEnter,\n label,\n required,\n hintText,\n ...restProps\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [internalValue, setInternalValue] = React.useState(defaultValue || value || '');\n const [focused, setFocused] = React.useState(false);\n\n useEffect(() => {\n if (typeof ref === 'function') {\n ref(inputRef.current);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = inputRef.current;\n }\n }, [ref]);\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInternalValue(e.target.value);\n onChange?.(e);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n onBlur?.(e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && onPressEnter) onPressEnter(e);\n restProps.onKeyDown?.(e);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isControlled) setInternalValue('');\n const syntheticEvent = {\n target: { value: '' },\n currentTarget: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n onClear?.();\n inputRef.current?.focus();\n };\n\n const showClear = allowClear && currentValue && !disabled;\n\n const getFocusStyles = (): React.CSSProperties => {\n if (disabled) return {\n border: '1px solid var(--color-border-disabled)',\n boxShadow: SHADOW_XS,\n outline: 'none',\n };\n if (error && focused) return {\n border: '1px solid var(--color-border-error)',\n boxShadow: SHADOW_XS,\n outline: '2px solid var(--color-border-error)',\n outlineOffset: '-2px',\n };\n if (error) return {\n border: '1px solid var(--color-border-error_subtle)',\n boxShadow: SHADOW_XS,\n outline: 'none',\n };\n if (focused) return {\n border: '1px solid var(--color-border-brand)',\n boxShadow: SHADOW_XS,\n outline: '2px solid var(--color-border-brand)',\n outlineOffset: '-2px',\n };\n return {\n border: '1px solid var(--color-border-primary)',\n boxShadow: SHADOW_XS,\n outline: 'none',\n };\n };\n\n const { border, boxShadow, outline, outlineOffset } = getFocusStyles();\n const { height, paddingTop, paddingBottom } = sizeStyles[size];\n\n const hasRightContent = suffix || showClear;\n const paddingLeft = prefix ? '40px' : '14px';\n const paddingRight = hasRightContent ? '40px' : '14px';\n\n const baseStyles: React.CSSProperties = {\n width: '100%',\n height,\n boxSizing: 'border-box',\n fontFamily: 'var(--font-family-body)',\n fontSize: 'var(--font-size-text-md)',\n fontWeight: 400,\n lineHeight: 'var(--line-height-text-md)',\n borderRadius: 'var(--radius-md)',\n border,\n boxShadow,\n backgroundColor:\n disabled || readOnly\n ? 'var(--color-bg-disabled_subtle)'\n : 'var(--color-bg-primary)',\n color: disabled ? 'var(--color-text-disabled)' : 'var(--color-text-primary)',\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n transition: 'border-color 0.15s ease, box-shadow 0.15s ease, outline-color 0.15s ease',\n outline,\n outlineOffset,\n WebkitAppearance: 'none',\n MozAppearance: 'textfield',\n appearance: 'none',\n ...style,\n };\n\n const placeholderStyles = `\n .aha-input-wrapper input::placeholder {\n color: var(--color-text-placeholder);\n font-size: var(--font-size-text-md);\n font-weight: 400;\n opacity: 1;\n }\n .aha-input-wrapper input::-webkit-input-placeholder { color: var(--color-text-placeholder); }\n .aha-input-wrapper input::-moz-placeholder { color: var(--color-text-placeholder); }\n .aha-input-wrapper input:-ms-input-placeholder { color: var(--color-text-placeholder); }\n .aha-input-wrapper input {\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n touch-action: manipulation;\n }\n .aha-input-wrapper input[type=\"number\"]::-webkit-inner-spin-button,\n .aha-input-wrapper input[type=\"number\"]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n .aha-input-wrapper input[type=\"number\"] { -moz-appearance: textfield; }\n `;\n\n const iconColor = disabled\n ? 'var(--color-fg-disabled)'\n : 'var(--color-fg-quaternary)';\n\n const iconSlotStyle: React.CSSProperties = {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'flex',\n alignItems: 'center',\n color: iconColor,\n zIndex: 1,\n };\n\n const inputEl = (\n <>\n <style>{placeholderStyles}</style>\n <div\n className={`aha-input-wrapper ${className}`}\n style={{ position: 'relative', display: 'block', width: '100%' }}\n >\n {prefix && (\n <span style={{ ...iconSlotStyle, left: '14px', pointerEvents: 'none' }}>\n {prefix}\n </span>\n )}\n <input\n ref={inputRef}\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n style={baseStyles}\n autoComplete={restProps.autoComplete || 'off'}\n autoCorrect={restProps.autoCorrect || 'off'}\n autoCapitalize={restProps.autoCapitalize || 'off'}\n spellCheck={restProps.spellCheck || false}\n {...restProps}\n />\n {(suffix || showClear) && (\n <span style={{ ...iconSlotStyle, right: '14px', gap: 'var(--spacing-xs)' }}>\n {showClear && <ClearIcon onClick={handleClear} />}\n {suffix}\n </span>\n )}\n </div>\n </>\n );\n\n if (!label && !hintText) return inputEl;\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '6px', width: '100%' }}>\n {label && (\n <label style={{\n fontFamily: 'var(--font-family-body)',\n fontSize: 'var(--font-size-text-sm)',\n fontWeight: 500,\n lineHeight: '20px',\n color: 'var(--color-text-secondary)',\n }}>\n {label}\n {required && (\n <span style={{ color: 'var(--color-error-600)', marginLeft: '2px' }}>*</span>\n )}\n </label>\n )}\n {inputEl}\n {hintText && (\n <p style={{\n margin: 0,\n fontFamily: 'var(--font-family-body)',\n fontSize: 'var(--font-size-text-sm)',\n fontWeight: 400,\n lineHeight: '20px',\n color: error ? 'var(--color-error-600)' : 'var(--color-text-tertiary)',\n }}>\n {hintText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n\nexport { default as InputGroup } from './InputGroup';\nexport type { InputGroupProps } from './InputGroup';\nexport { default as InputTags } from './InputTags';\nexport type { InputTagsProps } from './InputTags';\n","import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTheme } from '../../theme/ThemeContext';\n\nexport interface SelectOption {\n label: React.ReactNode;\n value: string | number;\n disabled?: boolean;\n [key: string]: any;\n}\n\nexport interface SelectProps {\n /** 当前选中的值 */\n value?: string | number | (string | number)[];\n /** 默认选中的值 */\n defaultValue?: string | number | (string | number)[];\n /** 选项数据 */\n options?: SelectOption[];\n /** 是否支持多选 */\n mode?: 'multiple' | 'tags';\n /** 是否禁用 */\n disabled?: boolean;\n /** 是否显示错误状态 */\n error?: boolean;\n /** 占位符 */\n placeholder?: string;\n /** 尺寸 */\n size?: 'small' | 'mediumSmall' | 'medium' | 'large';\n /** 是否可搜索 */\n showSearch?: boolean;\n /** 搜索过滤函数 */\n filterOption?: boolean | ((input: string, option: SelectOption) => boolean);\n /** 是否允许清除 */\n allowClear?: boolean;\n /** 变化回调 */\n onChange?: (\n value: string | number | (string | number)[],\n option: SelectOption | SelectOption[]\n ) => void;\n /** 选择回调 */\n onSelect?: (value: string | number, option: SelectOption) => void;\n /** 取消选择回调 */\n onDeselect?: (value: string | number, option: SelectOption) => void;\n /** 搜索回调 */\n onSearch?: (value: string) => void;\n /** 聚焦回调 */\n onFocus?: (e: React.FocusEvent) => void;\n /** 失焦回调 */\n onBlur?: (e: React.FocusEvent) => void;\n /** 下拉框打开回调 */\n onDropdownVisibleChange?: (open: boolean) => void;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 下拉框类名 */\n dropdownClassName?: string;\n /** 下拉框样式 */\n dropdownStyle?: React.CSSProperties;\n /** 是否默认打开 */\n defaultOpen?: boolean;\n /** 是否打开(受控) */\n open?: boolean;\n /** 最大标签数量 */\n maxTagCount?: number | 'responsive';\n /** 标签渲染函数 */\n tagRender?: (props: {\n label: React.ReactNode;\n value: string | number;\n closable: boolean;\n onClose: () => void;\n }) => React.ReactNode;\n /** 选项渲染函数 */\n optionRender?: (option: SelectOption, info: {\n selected: boolean;\n focused: boolean;\n disabled: boolean;\n }) => React.ReactNode;\n}\n\nconst Select: React.FC<SelectProps> = ({\n value: controlledValue,\n defaultValue,\n options = [],\n mode,\n disabled = false,\n error = false,\n placeholder = 'Please select',\n size = 'medium',\n showSearch = false,\n filterOption = true,\n allowClear = false,\n onChange,\n onSelect,\n onDeselect,\n onSearch,\n onFocus,\n onBlur,\n onDropdownVisibleChange,\n className = '',\n style,\n dropdownClassName = '',\n dropdownStyle,\n defaultOpen = false,\n open: controlledOpen,\n maxTagCount,\n tagRender,\n optionRender,\n}) => {\n const { primaryColor = '#FB6011' } = useTheme();\n const [internalValue, setInternalValue] = useState<\n string | number | (string | number)[] | undefined\n >(defaultValue !== undefined ? defaultValue : (mode ? [] : undefined));\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [searchValue, setSearchValue] = useState('');\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n const selectRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const [dropdownPosition, setDropdownPosition] = useState<{\n top: number;\n left: number;\n width: number;\n placement: 'top' | 'bottom';\n } | null>(null);\n\n const isControlled = controlledValue !== undefined;\n const isOpenControlled = controlledOpen !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n const isOpen = isOpenControlled ? controlledOpen : internalOpen;\n const isMultiple = mode === 'multiple' || mode === 'tags';\n\n // 获取选中的选项\n const getSelectedOptions = useCallback((): SelectOption[] => {\n if (!currentValue) return [];\n const values = Array.isArray(currentValue) ? currentValue : [currentValue];\n return options.filter((opt) => values.includes(opt.value));\n }, [currentValue, options]);\n\n // 过滤选项\n const getFilteredOptions = useCallback((): SelectOption[] => {\n if (!showSearch || !searchValue) return options;\n\n if (filterOption === false) return options;\n\n if (typeof filterOption === 'function') {\n return options.filter((opt) => filterOption(searchValue, opt));\n }\n\n // 默认过滤:匹配 label\n return options.filter((opt) => {\n const label = String(opt.label || '').toLowerCase();\n const search = searchValue.toLowerCase();\n return label.includes(search);\n });\n }, [options, searchValue, showSearch, filterOption]);\n\n const filteredOptions = useMemo(() => getFilteredOptions(), [getFilteredOptions]);\n\n // 计算下拉框位置\n useEffect(() => {\n if (isOpen && selectRef.current) {\n const updatePosition = () => {\n if (selectRef.current) {\n const rect = selectRef.current.getBoundingClientRect();\n const estimatedDropdownHeight =\n dropdownRef.current?.offsetHeight ??\n Math.min(256, Math.max(40, filteredOptions.length * 40));\n const gap = 4;\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n const shouldOpenUp =\n spaceBelow < estimatedDropdownHeight + gap && spaceAbove > spaceBelow;\n const top = shouldOpenUp\n ? rect.top + window.scrollY - estimatedDropdownHeight - gap\n : rect.bottom + window.scrollY + gap;\n\n setDropdownPosition({\n top,\n left: rect.left + window.scrollX,\n width: rect.width,\n placement: shouldOpenUp ? 'top' : 'bottom',\n });\n }\n };\n\n updatePosition();\n requestAnimationFrame(updatePosition);\n\n // 监听窗口大小变化和滚动,更新位置\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n } else {\n setDropdownPosition(null);\n }\n }, [isOpen, filteredOptions.length]);\n\n // 点击外部关闭(支持鼠标和触摸事件)\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent | TouchEvent) => {\n const target = event.target as Node;\n if (\n selectRef.current &&\n !selectRef.current.contains(target) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(target)\n ) {\n if (!isOpenControlled) {\n setInternalOpen(false);\n }\n onDropdownVisibleChange?.(false);\n setSearchValue('');\n }\n };\n\n if (isOpen) {\n // 使用 capture 阶段确保能捕获到事件\n document.addEventListener('mousedown', handleClickOutside, true);\n document.addEventListener('touchstart', handleClickOutside, true);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside, true);\n document.removeEventListener('touchstart', handleClickOutside, true);\n };\n }\n }, [isOpen, isOpenControlled, onDropdownVisibleChange]);\n\n // 键盘导航\n useEffect(() => {\n if (!isOpen) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : prev\n );\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((prev) => (prev > 0 ? prev - 1 : 0));\n } else if (e.key === 'Enter' && focusedIndex >= 0) {\n e.preventDefault();\n const option = filteredOptions[focusedIndex];\n if (option && !option.disabled) {\n handleSelect(option);\n }\n } else if (e.key === 'Escape') {\n e.preventDefault();\n if (!isOpenControlled) {\n setInternalOpen(false);\n }\n onDropdownVisibleChange?.(false);\n selectRef.current?.focus();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [isOpen, filteredOptions, focusedIndex, isOpenControlled, onDropdownVisibleChange]);\n\n // 滚动到聚焦项\n useEffect(() => {\n if (focusedIndex >= 0 && dropdownRef.current) {\n const items = dropdownRef.current.querySelectorAll('.aha-select-option');\n const focusedItem = items[focusedIndex] as HTMLElement;\n if (focusedItem) {\n focusedItem.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n }\n }, [focusedIndex]);\n\n const handleSelect = useCallback((option: SelectOption) => {\n if (option.disabled) return;\n\n if (isMultiple) {\n const currentValues = Array.isArray(currentValue) ? currentValue : [];\n const isSelected = currentValues.includes(option.value);\n\n let newValues: (string | number)[];\n if (isSelected) {\n newValues = currentValues.filter((v) => v !== option.value);\n onDeselect?.(option.value, option);\n } else {\n newValues = [...currentValues, option.value];\n onSelect?.(option.value, option);\n }\n\n if (!isControlled) {\n setInternalValue(newValues);\n }\n // 计算选中的选项\n const selectedOptions = options.filter((opt) => newValues.includes(opt.value));\n onChange?.(newValues, selectedOptions);\n } else {\n if (!isControlled) {\n setInternalValue(option.value);\n }\n onChange?.(option.value, option);\n onSelect?.(option.value, option);\n\n if (!isOpenControlled) {\n setInternalOpen(false);\n }\n onDropdownVisibleChange?.(false);\n setSearchValue('');\n selectRef.current?.focus();\n }\n }, [isMultiple, currentValue, isControlled, isOpenControlled, options, onChange, onSelect, onDeselect, onDropdownVisibleChange]);\n\n const handleRemoveTag = useCallback((e: React.MouseEvent, value: string | number) => {\n e.stopPropagation();\n if (isMultiple && Array.isArray(currentValue)) {\n const newValues = currentValue.filter((v) => v !== value);\n const option = options.find((opt) => opt.value === value);\n if (!isControlled) {\n setInternalValue(newValues);\n }\n onChange?.(newValues, getSelectedOptions());\n onDeselect?.(value, option!);\n }\n }, [isMultiple, currentValue, isControlled, options, onChange, onDeselect, getSelectedOptions]);\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n const newValue: string | number | (string | number)[] | undefined = isMultiple ? [] : undefined;\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue as any, []);\n setSearchValue('');\n };\n\n const handleToggle = () => {\n if (disabled) return;\n const newOpen = !isOpen;\n if (!isOpenControlled) {\n setInternalOpen(newOpen);\n }\n onDropdownVisibleChange?.(newOpen);\n if (newOpen && showSearch) {\n setTimeout(() => {\n inputRef.current?.focus();\n }, 0);\n } else {\n setSearchValue('');\n }\n };\n\n const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n setSearchValue(val);\n onSearch?.(val);\n setFocusedIndex(-1);\n };\n\n const handleFocus = (e: React.FocusEvent) => {\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent) => {\n onBlur?.(e);\n };\n\n // 尺寸样式 - 对齐 Input 组件\n const sizeStyles = {\n small: {\n height: '32px',\n paddingTop: '3px',\n paddingBottom: '3px',\n fontSize: '16px',\n lineHeight: '24px',\n },\n mediumSmall: {\n height: '36px',\n paddingTop: '5px',\n paddingBottom: '5px',\n fontSize: '16px',\n lineHeight: '24px',\n },\n medium: {\n height: '40px',\n paddingTop: '7px',\n paddingBottom: '7px',\n fontSize: '16px',\n lineHeight: '24px',\n },\n large: {\n height: '48px',\n paddingTop: '11px',\n paddingBottom: '11px',\n fontSize: '16px',\n lineHeight: '24px',\n },\n };\n\n const selectedOptions = useMemo(() => getSelectedOptions(), [getSelectedOptions]);\n const showClear = useMemo(() => allowClear && currentValue && !disabled, [allowClear, currentValue, disabled]);\n const hasValue = useMemo(() => \n isMultiple\n ? Array.isArray(currentValue) && currentValue.length > 0\n : currentValue !== undefined && currentValue !== null && currentValue !== '',\n [isMultiple, currentValue]\n );\n\n // 渲染标签 - 使用 useMemo 优化\n const renderTags = useMemo(() => {\n if (!isMultiple || !Array.isArray(currentValue) || currentValue.length === 0) {\n return null;\n }\n\n const tagsToShow =\n maxTagCount === 'responsive'\n ? selectedOptions.slice(0, 2) // 简化处理\n : maxTagCount\n ? selectedOptions.slice(0, maxTagCount)\n : selectedOptions;\n\n const remainingCount =\n maxTagCount && selectedOptions.length > tagsToShow.length\n ? selectedOptions.length - tagsToShow.length\n : 0;\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '4px',\n flex: 1,\n minWidth: 0,\n }}\n >\n {tagsToShow.map((option) => {\n const tagProps = {\n label: option.label,\n value: option.value,\n closable: !disabled,\n onClose: () => handleRemoveTag({} as any, option.value),\n };\n\n if (tagRender) {\n return <React.Fragment key={option.value}>{tagRender(tagProps)}</React.Fragment>;\n }\n\n return (\n <span\n key={option.value}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '2px 8px',\n backgroundColor: '#F5F5F4',\n borderRadius: '4px',\n fontSize: '12px',\n lineHeight: '18px',\n color: '#101828',\n fontFamily: \"DM Sans, sans-serif\",\n maxWidth: '100%',\n }}\n >\n <span\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {option.label}\n </span>\n {!disabled && (\n <span\n onClick={(e) => handleRemoveTag(e, option.value)}\n style={{\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n color: '#78716C',\n marginLeft: '4px',\n }}\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9 3L3 9M3 3L9 9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n </span>\n );\n })}\n {remainingCount > 0 && (\n <span\n style={{\n fontSize: '12px',\n lineHeight: '18px',\n color: '#78716C',\n fontFamily: \"DM Sans, sans-serif\",\n }}\n >\n +{remainingCount}\n </span>\n )}\n </div>\n );\n }, [isMultiple, currentValue, selectedOptions, maxTagCount, disabled, tagRender]);\n\n // 下拉箭头图标\n const ArrowIcon = ({ isOpen: open }: { isOpen: boolean }) => (\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 transform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n transition: 'transform 0.2s ease-in-out',\n flexShrink: 0,\n }}\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"#78716C\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n\n // 清除图标\n const ClearIcon = () => (\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 onClick={handleClear}\n style={{\n cursor: 'pointer',\n flexShrink: 0,\n color: '#78716C',\n }}\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 const dropdownAnimationStyles = `\n @keyframes dropdownFadeIn {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `;\n\n return (\n <>\n <style>{dropdownAnimationStyles}</style>\n <div\n ref={selectRef}\n className={`aha-select ${className}`}\n style={{\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n width: '100%',\n minWidth: '120px',\n boxSizing: 'border-box',\n fontFamily: \"DM Sans, sans-serif\",\n borderRadius: '8px', // rounded-md\n border: `1px solid ${error ? '#F04438' : isOpen ? primaryColor : '#D7D3D0'}`,\n backgroundColor: disabled ? '#FAFAF9' : '#FFFFFF',\n cursor: disabled ? 'not-allowed' : 'pointer',\n transition: 'all 0.2s',\n paddingLeft: '12px',\n paddingRight: '36px', // 为箭头和清除按钮留出空间(箭头16px + 右边距12px + 清除按钮8px)\n paddingTop: sizeStyles[size].paddingTop,\n paddingBottom: sizeStyles[size].paddingBottom,\n fontSize: sizeStyles[size].fontSize,\n lineHeight: sizeStyles[size].lineHeight,\n fontWeight: 400,\n WebkitTapHighlightColor: 'transparent', // 移动端移除点击高亮\n WebkitTouchCallout: 'none', // 禁用长按菜单\n touchAction: 'manipulation', // 优化触摸响应\n userSelect: 'none', // 禁用文本选择\n ...style,\n }}\n onClick={handleToggle}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onTouchStart={(e) => {\n // 移动端触摸优化\n if (!disabled) {\n e.currentTarget.style.opacity = '0.8';\n }\n }}\n onTouchEnd={(e) => {\n e.currentTarget.style.opacity = '1';\n }}\n tabIndex={disabled ? -1 : 0}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n minWidth: 0,\n gap: '8px',\n }}\n >\n {isMultiple ? (\n (renderTags || (placeholder ? (\n <span\n style={{\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n color: '#79716B',\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: 400,\n }}\n >\n {placeholder}\n </span>\n ) : (\n <span style={{ flex: 1, minHeight: '24px' }} />\n )))) : showSearch && isOpen ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={searchValue}\n onChange={handleSearch}\n onClick={(e) => e.stopPropagation()}\n onFocus={(e) => e.stopPropagation()}\n style={{\n flex: 1,\n border: 'none',\n outline: 'none',\n background: 'transparent',\n fontSize: '16px', // 至少 16px 避免 iOS Safari 自动缩放\n lineHeight: '24px',\n fontWeight: 400,\n color: disabled ? '#98A2B3' : '#1C1917',\n fontFamily: \"DM Sans, sans-serif\",\n minWidth: 0,\n WebkitAppearance: 'none',\n appearance: 'none',\n }}\n placeholder={hasValue ? undefined : placeholder}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck={false}\n />\n ) : (\n <span\n style={{\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n color: hasValue\n ? disabled\n ? '#98A2B3'\n : '#1C1917'\n : '#79716B',\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: 400,\n minHeight: '24px',\n display: 'inline-block',\n }}\n >\n {hasValue\n ? selectedOptions[0]?.label || currentValue\n : placeholder || '\\u00A0'}\n </span>\n )}\n </div>\n\n <div\n style={{\n position: 'absolute',\n right: '12px',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}\n >\n {showClear && <ClearIcon />}\n <ArrowIcon isOpen={isOpen} />\n </div>\n </div>\n\n {isOpen && dropdownPosition && createPortal(\n <div\n ref={dropdownRef}\n className={`aha-select-dropdown ${dropdownClassName}`}\n style={{\n position: 'absolute',\n top: `${dropdownPosition.top}px`,\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n zIndex: 1050,\n backgroundColor: '#FFFFFF',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n border: '1px solid #E7E5E4',\n maxHeight: '256px',\n overflow: 'auto',\n opacity: 0,\n transform:\n dropdownPosition.placement === 'top'\n ? 'translateY(8px)'\n : 'translateY(-8px)',\n animation: 'dropdownFadeIn 0.2s ease-out forwards',\n transformOrigin:\n dropdownPosition.placement === 'top'\n ? 'bottom center'\n : 'top center',\n WebkitOverflowScrolling: 'touch', // iOS 平滑滚动\n overscrollBehavior: 'contain', // 防止滚动穿透\n ...dropdownStyle,\n }}\n >\n {filteredOptions.length === 0 ? (\n <div\n style={{\n padding: '8px 16px',\n textAlign: 'center',\n color: '#78716C',\n fontSize: '14px',\n fontFamily: \"DM Sans, sans-serif\",\n }}\n >\n No data\n </div>\n ) : (\n filteredOptions.map((option, index) => {\n const isSelected = isMultiple\n ? Array.isArray(currentValue) && currentValue.includes(option.value)\n : currentValue === option.value;\n const isFocused = index === focusedIndex;\n\n // 如果提供了自定义渲染函数,使用自定义渲染\n if (optionRender) {\n return (\n <div\n key={option.value}\n className={`aha-select-option ${!option.disabled ? 'hover:bg-[#FAFAF9]' : ''} ${isSelected ? 'bg-[#FAFAF9]' : ''}`}\n onClick={() => !option.disabled && handleSelect(option)}\n style={{\n cursor: option.disabled ? 'not-allowed' : 'pointer',\n transition: 'background-color 0.2s',\n }}\n >\n {optionRender(option, {\n selected: isSelected,\n focused: isFocused,\n disabled: option.disabled || false,\n })}\n </div>\n );\n }\n\n // 默认渲染\n return (\n <div\n key={option.value}\n className={`aha-select-option ${!option.disabled ? 'hover:bg-[#FAFAF9]' : ''} ${isSelected ? 'bg-[#FAFAF9]' : ''}`}\n onClick={() => handleSelect(option)}\n style={{\n padding: '8px 16px',\n cursor: option.disabled ? 'not-allowed' : 'pointer',\n color: option.disabled ? '#98A2B3' : '#101828',\n fontSize: '14px',\n lineHeight: '20px',\n fontFamily: \"DM Sans, sans-serif\",\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n transition: 'background-color 0.2s',\n }}\n >\n <span>{option.label}</span>\n {/* 只有选中时才显示标识 */}\n {isSelected && (\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 className={isFocused ? 'hidden' : ''}\n >\n <path\n d=\"M13.3333 4L6 11.3333L2.66667 8\"\n stroke={primaryColor}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n })\n )}\n </div>,\n document.body\n )}\n </>\n );\n};\n\nSelect.displayName = 'Select';\n\nexport default Select;\n\n","import React from \"react\";\n\n// Checkbox 选中图标\nexport const CheckIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\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 className={className}\n style={style}\n >\n <path\n d=\"M11.6666 3.5L5.24992 9.91667L2.33325 7\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// Checkbox 半选中图标(减号)\nexport const MinusIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\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 className={className}\n style={style}\n >\n <path\n d=\"M3.5 7H10.5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// Sort 图标\nexport const SortIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M3.5 7.5L6 10L8.5 7.5M3.5 4.5L6 2L8.5 4.5\"\n stroke=\"#A9A29D\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// Sort 图标 降序\nexport const SortDescIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M3.5 4.5L6 2L8.5 4.5\"\n stroke=\"#A9A29D\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3.5 7.5L6 10L8.5 7.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\n// Sort 图标 升序\nexport const SortAscIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M8.5 7.5L6 10L3.5 7.5\"\n stroke=\"#A9A29D\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8.5 4.5L6 2L3.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n// 向左的箭头\nexport const LeftArrowIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M15.8334 10H4.16675M4.16675 10L10.0001 15.8334M4.16675 10L10.0001 4.16669\"\n stroke=\"currentColor\"\n strokeWidth=\"1.66667\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n// 向右的箭头\nexport const RightArrowIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n style={style}\n >\n <path\n d=\"M4.16675 10H15.8334M15.8334 10L10.0001 4.16669M15.8334 10L10.0001 15.8334\"\n stroke=\"currentColor\"\n strokeWidth=\"1.66667\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n// 提示信息图标\nexport const TooltipIcon: React.FC<{\n className?: string;\n style?: React.CSSProperties;\n}> = ({ className, style }) => (\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 className={className}\n style={style}\n >\n <g clipPath=\"url(#clip0_54_1653)\">\n <path\n d=\"M6.06 6C6.21674 5.55444 6.5261 5.17873 6.9333 4.93942C7.34051 4.7001 7.81926 4.61262 8.28479 4.69247C8.75031 4.77232 9.17255 5.01434 9.47672 5.37568C9.78089 5.73702 9.94737 6.19434 9.94667 6.66666C9.94667 8 7.94667 8.66666 7.94667 8.66666M8 11.3333H8.00667M14.6667 8C14.6667 11.6819 11.6819 14.6667 8 14.6667C4.3181 14.6667 1.33333 11.6819 1.33333 8C1.33333 4.3181 4.3181 1.33333 8 1.33333C11.6819 1.33333 14.6667 4.3181 14.6667 8Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_54_1653\">\n <rect width=\"16\" height=\"16\" fill=\"currentColor\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React, { useState, useEffect, useMemo } from \"react\";\nimport { useTheme } from \"../../theme/ThemeContext\";\nimport Button from \"../Button\";\nimport Input from \"../Input\";\nimport Select from \"../Select\";\nimport { LeftArrowIcon, RightArrowIcon } from \"../../icons\";\n\nexport interface PaginationProps {\n current?: number;\n defaultCurrent?: number;\n total?: number;\n pageSize?: number;\n defaultPageSize?: number;\n showSizeChanger?: boolean;\n pageSizeOptions?: string[];\n showQuickJumper?: boolean | { goButton?: React.ReactNode };\n showTotal?: (total: number, range: [number, number]) => React.ReactNode;\n onChange?: (page: number, pageSize?: number) => void;\n onShowSizeChange?: (current: number, size: number) => void;\n simple?: boolean;\n disabled?: boolean;\n hideOnSinglePage?: boolean;\n className?: string;\n style?: React.CSSProperties;\n size?: \"default\" | \"small\";\n responsive?: boolean;\n showLessItems?: boolean;\n itemRender?: (\n page: number,\n type: \"page\" | \"prev\" | \"next\" | \"jump-prev\" | \"jump-next\",\n originalElement: React.ReactNode\n ) => React.ReactNode;\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n current: controlledCurrent,\n defaultCurrent = 1,\n total = 0,\n pageSize: controlledPageSize,\n defaultPageSize = 10,\n showSizeChanger = false,\n pageSizeOptions = [\"10\", \"20\", \"50\", \"100\"],\n showQuickJumper = false,\n showTotal,\n onChange,\n onShowSizeChange,\n simple = false,\n disabled = false,\n hideOnSinglePage = false,\n className = \"\",\n style,\n size = \"default\",\n responsive = false,\n showLessItems = false,\n itemRender,\n}) => {\n const { primaryColor = \"#FB6011\" } = useTheme();\n const [internalCurrent, setInternalCurrent] = useState(defaultCurrent);\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);\n const [jumpToPage, setJumpToPage] = useState(\"\");\n\n const current = controlledCurrent ?? internalCurrent;\n const pageSize = controlledPageSize ?? internalPageSize;\n\n const totalPages = useMemo(\n () => Math.ceil(total / pageSize),\n [total, pageSize]\n );\n\n useEffect(() => {\n if (controlledCurrent !== undefined) {\n setInternalCurrent(controlledCurrent);\n }\n }, [controlledCurrent]);\n\n useEffect(() => {\n if (controlledPageSize !== undefined) {\n setInternalPageSize(controlledPageSize);\n }\n }, [controlledPageSize]);\n\n const handlePageChange = (page: number) => {\n if (page < 1 || page > totalPages || page === current || disabled) return;\n\n if (controlledCurrent === undefined) {\n setInternalCurrent(page);\n }\n onChange?.(page, pageSize);\n };\n\n const handlePageSizeChange = (newPageSize: number) => {\n const newTotalPages = Math.ceil(total / newPageSize);\n const newCurrent = current > newTotalPages ? newTotalPages : current;\n\n if (controlledPageSize === undefined) {\n setInternalPageSize(newPageSize);\n }\n if (controlledCurrent === undefined) {\n setInternalCurrent(newCurrent);\n }\n\n onShowSizeChange?.(newCurrent, newPageSize);\n onChange?.(newCurrent, newPageSize);\n };\n\n const handleJumpTo = () => {\n const page = parseInt(jumpToPage, 10);\n if (page >= 1 && page <= totalPages) {\n handlePageChange(page);\n setJumpToPage(\"\");\n }\n };\n\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= 7) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | string)[] = [];\n\n if (current <= 4) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i);\n }\n pages.push(\"jump-next\");\n pages.push(totalPages);\n } else if (current >= totalPages - 3) {\n pages.push(1);\n pages.push(\"jump-prev\");\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push(\"jump-prev\");\n for (let i = current - 1; i <= current + 1; i++) {\n pages.push(i);\n }\n pages.push(\"jump-next\");\n pages.push(totalPages);\n }\n\n return pages;\n };\n\n const renderItem = (item: number | string): React.ReactNode => {\n if (typeof item === \"number\") {\n const isActive = item === current;\n const element = (\n <Button\n key={item}\n onClick={() => handlePageChange(item)}\n disabled={disabled}\n type={isActive ? \"primary\" : \"default\"}\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n minWidth: size === \"small\" ? \"32px\" : \"36px\",\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n margin: 0,\n fontWeight: isActive ? 500 : 400,\n border: isActive ? `1px solid ${primaryColor}` : undefined,\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n {item}\n </Button>\n );\n\n return itemRender ? itemRender(item, \"page\", element) : element;\n }\n\n if (item === \"jump-prev\") {\n const element = (\n <Button\n key=\"jump-prev\"\n onClick={() => handlePageChange(Math.max(1, current - 5))}\n disabled={disabled}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n minWidth: size === \"small\" ? \"32px\" : \"36px\",\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n margin: 0,\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n •••\n </Button>\n );\n\n return itemRender\n ? itemRender(current - 5, \"jump-prev\", element)\n : element;\n }\n\n if (item === \"jump-next\") {\n const element = (\n <Button\n key=\"jump-next\"\n onClick={() => handlePageChange(Math.min(totalPages, current + 5))}\n disabled={disabled}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n minWidth: size === \"small\" ? \"32px\" : \"36px\",\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n margin: 0,\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n •••\n </Button>\n );\n\n return itemRender\n ? itemRender(current + 5, \"jump-next\", element)\n : element;\n }\n\n return null;\n };\n\n if (hideOnSinglePage && totalPages <= 1) {\n return null;\n }\n\n if (simple) {\n return (\n <div\n className={`aha-pagination aha-pagination-simple ${className}`}\n style={style}\n >\n <Button\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n marginRight: \"8px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <LeftArrowIcon />\n </Button>\n <span\n style={{\n margin: \"0 8px\",\n fontSize: \"14px\",\n lineHeight: \"20px\",\n color: \"#475467\",\n fontFamily: \"DM Sans, sans-serif\",\n }}\n >\n {current} / {totalPages}\n </span>\n <Button\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n marginLeft: \"8px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <RightArrowIcon />\n </Button>\n </div>\n );\n }\n\n const start = (current - 1) * pageSize + 1;\n const end = Math.min(current * pageSize, total);\n\n return (\n <div\n className={`aha-pagination w-full ${className}`}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexWrap: responsive ? \"wrap\" : \"nowrap\",\n fontFamily: \"DM Sans, sans-serif\",\n ...style,\n }}\n >\n {showTotal && (\n <div className=\"justify-start text-Text-text-secondary text-sm font-medium font-['DM_Sans'] leading-5\">\n {showTotal(total, [start, end])}\n </div>\n )}\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n }}\n >\n {total > 0 && (\n <>\n {itemRender ? (\n itemRender(\n current - 1,\n \"prev\",\n <Button\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n gap: \"4px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <LeftArrowIcon />\n </Button>\n )\n ) : (\n <Button\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n gap: \"4px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <LeftArrowIcon />\n </Button>\n )}\n </>\n )}\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n {getPageNumbers().map((item) => renderItem(item))}\n </div>\n\n {total > 0 && (\n <>\n {itemRender ? (\n itemRender(\n current + 1,\n \"next\",\n <Button\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n gap: \"4px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <RightArrowIcon />\n </Button>\n )\n ) : (\n <Button\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n height: size === \"small\" ? \"32px\" : \"36px\",\n padding: \"0 12px\",\n gap: \"4px\",\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n <RightArrowIcon />\n </Button>\n )}\n </>\n )}\n\n {showSizeChanger && (\n <Select\n value={pageSize}\n options={pageSizeOptions.map((s) => ({\n label: `${s} / page`,\n value: Number(s),\n }))}\n onChange={(val) => handlePageSizeChange(Number(val))}\n disabled={disabled}\n size={size === \"small\" ? \"small\" : \"medium\"}\n style={{ minWidth: size === \"small\" ? 80 : 96 }}\n />\n )}\n\n {showQuickJumper && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n fontFamily: \"DM Sans, sans-serif\",\n }}\n >\n <span\n style={{\n fontSize: \"14px\",\n lineHeight: \"20px\",\n color: \"#475467\",\n }}\n >\n Go to\n </span>\n <Input\n type=\"number\"\n min={1}\n value={jumpToPage}\n onChange={(e) => setJumpToPage(e.target.value)}\n onPressEnter={handleJumpTo}\n disabled={disabled}\n size={size === \"small\" ? \"small\" : \"medium\"}\n style={{ width: 56, minWidth: 56 }}\n />\n <span\n style={{\n fontSize: \"14px\",\n lineHeight: \"20px\",\n color: \"#475467\",\n }}\n >\n page\n </span>\n {typeof showQuickJumper === \"object\" && showQuickJumper.goButton ? (\n <Button\n onClick={handleJumpTo}\n disabled={disabled}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n {showQuickJumper.goButton}\n </Button>\n ) : (\n <Button\n onClick={handleJumpTo}\n disabled={disabled}\n type=\"default\"\n size={size === \"default\" ? \"medium\" : \"small\"}\n style={{\n border: \"1px solid #EAECF0\",\n boxShadow: \"none\",\n borderRadius: \"8px\",\n }}\n >\n OK\n </Button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default Pagination;\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__spreadArray","to","from","pack","ar","l","Array","slice","concat","SuppressedError","defaultTheme","primaryColor","ThemeContext","createContext","useTheme","context","useContext","SIZE_ALIAS","sm","md","lg","xl","small","mediumSmall","medium","large","HIERARCHY_ALIAS","primary","secondary","tertiary","default","SIZE_TOKENS","height","paddingX","paddingXLg","fontSize","lineHeight","iconSize","gap","iconOnlyPad","LoadingSpinner","_a","size","color","_jsxs","jsxs","_Fragment","Fragment","children","_jsx","jsx","width","viewBox","fill","style","animation","flexShrink","cx","cy","r","stroke","strokeWidth","opacity","d","strokeLinecap","Button","_b","type","_c","_d","disabled","_e","loading","iconOnly","_f","focused","onClick","_g","htmlType","_h","className","icon","_j","iconPosition","rest","_k","useState","isHovered","setIsHovered","_l","isPressed","setIsPressed","hierarchy","isIconOnly","isLink","isDisabled","showFocusRing","themeBrand","visuals","bg","iconColor","border","boxShadow","interactive","textDecoration","getVisuals","focusShadow","buttonStyle","position","display","alignItems","justifyContent","fontFamily","fontWeight","cursor","outline","transition","userSelect","WebkitTapHighlightColor","whiteSpace","backgroundColor","borderRadius","overflow","padding","paddingLeft","paddingRight","renderIcon","showLeftIcon","showRightIcon","filter","Boolean","join","preventDefault","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","displayName","SHADOW_XS","sizeMap","pt","pb","forwardRef","ref","error","readOnly","prefix","suffix","leadingText","trailingText","leadingAddon","trailingAddon","onFocus","onBlur","onKeyDown","onPressEnter","value","defaultValue","onChange","placeholder","label","required","hintText","restProps","inputRef","useRef","setFocused","internalValue","setInternalValue","useEffect","current","isControlled","undefined","currentValue","outlineOffset","dividerColor","hasPrefixIcon","hasSuffixIcon","iconSlotStyle","top","transform","zIndex","pointerEvents","addonTextStyle","paddingTop","paddingBottom","groupEl","boxSizing","borderRight","flex","minWidth","left","target","key","autoComplete","right","borderLeft","hintStyle","margin","flexDirection","marginLeft","sizeStyles","ClearIcon","xmlns","strokeLinejoin","Input","allowClear","onClear","React","showClear","_m","baseStyles","WebkitAppearance","MozAppearance","appearance","inputEl","autoCorrect","autoCapitalize","spellCheck","stopPropagation","currentTarget","focus","Select","controlledValue","options","mode","showSearch","filterOption","onSelect","onDeselect","onSearch","onDropdownVisibleChange","dropdownClassName","dropdownStyle","_o","defaultOpen","controlledOpen","open","maxTagCount","tagRender","optionRender","_p","_q","_r","internalOpen","setInternalOpen","_s","searchValue","setSearchValue","_t","focusedIndex","setFocusedIndex","selectRef","dropdownRef","_u","dropdownPosition","setDropdownPosition","isOpenControlled","isOpen","isMultiple","getSelectedOptions","useCallback","values","isArray","opt","includes","getFilteredOptions","String","toLowerCase","search","filteredOptions","useMemo","updatePosition_1","rect","getBoundingClientRect","estimatedDropdownHeight","offsetHeight","Math","min","max","spaceBelow","window","innerHeight","bottom","spaceAbove","shouldOpenUp","top_1","scrollY","scrollX","placement","requestAnimationFrame","addEventListener","removeEventListener","handleClickOutside","event","contains","document","handleKeyDown","prev","option","handleSelect","focusedItem","querySelectorAll","scrollIntoView","block","behavior","newValues_1","currentValues","v","selectedOptions_1","handleRemoveTag","newValues","find","handleClear","newValue","selectedOptions","hasValue","renderTags","tagsToShow","remainingCount","flexWrap","map","tagProps","closable","onClose","maxWidth","textOverflow","WebkitTouchCallout","touchAction","newOpen","setTimeout","onTouchStart","onTouchEnd","tabIndex","minHeight","val","background","createPortal","maxHeight","transformOrigin","WebkitOverflowScrolling","overscrollBehavior","textAlign","index","isSelected","isFocused","selected","body","LeftArrowIcon","RightArrowIcon","controlledCurrent","defaultCurrent","total","controlledPageSize","pageSize","defaultPageSize","showSizeChanger","pageSizeOptions","showQuickJumper","showTotal","onShowSizeChange","simple","hideOnSinglePage","responsive","showLessItems","itemRender","internalCurrent","setInternalCurrent","internalPageSize","setInternalPageSize","jumpToPage","setJumpToPage","totalPages","ceil","handlePageChange","page","handleJumpTo","parseInt","marginRight","start","end","_","pages","push","getPageNumbers","item","isActive","element","renderItem","Number","newPageSize","newTotalPages","newCurrent","goButton"],"mappings":"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","x_google_ignoreList":[0]}