@neuctra/ui 0.2.6 → 0.2.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/eye-off.js","../node_modules/lucide-react/dist/esm/icons/eye.js","../node_modules/lucide-react/dist/esm/icons/heart.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/maximize.js","../node_modules/lucide-react/dist/esm/icons/minimize.js","../node_modules/lucide-react/dist/esm/icons/music.js","../node_modules/lucide-react/dist/esm/icons/pause.js","../node_modules/lucide-react/dist/esm/icons/play.js","../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js","../node_modules/lucide-react/dist/esm/icons/shuffle.js","../node_modules/lucide-react/dist/esm/icons/skip-back.js","../node_modules/lucide-react/dist/esm/icons/skip-forward.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/volume-2.js","../node_modules/lucide-react/dist/esm/icons/volume-x.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/basic/Alert.tsx","../src/components/basic/Accordation.tsx","../src/components/basic/Avatar.tsx","../src/components/basic/AudioPlayer.tsx","../src/components/basic/AudioGallery.tsx","../node_modules/clsx/dist/clsx.mjs","../src/components/basic/Badge.tsx","../src/components/basic/Button.tsx","../src/components/basic/CheckboxGroup.tsx","../src/components/basic/RadioGroup.tsx","../src/components/basic/SwitchGroup.tsx","../src/components/basic/Container.tsx","../src/components/basic/FlexView.tsx","../src/components/basic/Stack.tsx","../src/components/basic/GridView.tsx","../src/components/basic/Drawer.tsx","../src/components/basic/DropDown.tsx","../src/components/basic/Input.tsx","../src/components/basic/Image.tsx","../src/components/basic/List.tsx","../src/components/basic/Modal.tsx","../src/components/basic/Table.tsx","../src/components/basic/Tabs.tsx","../src/components/basic/Text.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\"path\", { d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\", key: \"151rxh\" }],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst EyeOff = createLucideIcon(\"eye-off\", __iconNode);\n\nexport { __iconNode, EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\n key: \"mvr1a0\"\n }\n ]\n];\nconst Heart = createLucideIcon(\"heart\", __iconNode);\n\nexport { __iconNode, Heart as default };\n//# sourceMappingURL=heart.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3H5a2 2 0 0 0-2 2v3\", key: \"1dcmit\" }],\n [\"path\", { d: \"M21 8V5a2 2 0 0 0-2-2h-3\", key: \"1e4gt3\" }],\n [\"path\", { d: \"M3 16v3a2 2 0 0 0 2 2h3\", key: \"wsl5sc\" }],\n [\"path\", { d: \"M16 21h3a2 2 0 0 0 2-2v-3\", key: \"18trek\" }]\n];\nconst Maximize = createLucideIcon(\"maximize\", __iconNode);\n\nexport { __iconNode, Maximize as default };\n//# sourceMappingURL=maximize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3v3a2 2 0 0 1-2 2H3\", key: \"hohbtr\" }],\n [\"path\", { d: \"M21 8h-3a2 2 0 0 1-2-2V3\", key: \"5jw1f3\" }],\n [\"path\", { d: \"M3 16h3a2 2 0 0 1 2 2v3\", key: \"198tvr\" }],\n [\"path\", { d: \"M16 21v-3a2 2 0 0 1 2-2h3\", key: \"ph8mxp\" }]\n];\nconst Minimize = createLucideIcon(\"minimize\", __iconNode);\n\nexport { __iconNode, Minimize as default };\n//# sourceMappingURL=minimize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 18V5l12-2v13\", key: \"1jmyc2\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"circle\", { cx: \"18\", cy: \"16\", r: \"3\", key: \"1hluhg\" }]\n];\nconst Music = createLucideIcon(\"music\", __iconNode);\n\nexport { __iconNode, Music as default };\n//# sourceMappingURL=music.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m18 14 4 4-4 4\", key: \"10pe0f\" }],\n [\"path\", { d: \"m18 2 4 4-4 4\", key: \"pucp1d\" }],\n [\"path\", { d: \"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22\", key: \"1ailkh\" }],\n [\"path\", { d: \"M2 6h1.972a4 4 0 0 1 3.6 2.2\", key: \"km57vx\" }],\n [\"path\", { d: \"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45\", key: \"os18l9\" }]\n];\nconst Shuffle = createLucideIcon(\"shuffle\", __iconNode);\n\nexport { __iconNode, Shuffle as default };\n//# sourceMappingURL=shuffle.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z\",\n key: \"15892j\"\n }\n ],\n [\"path\", { d: \"M3 20V4\", key: \"1ptbpl\" }]\n];\nconst SkipBack = createLucideIcon(\"skip-back\", __iconNode);\n\nexport { __iconNode, SkipBack as default };\n//# sourceMappingURL=skip-back.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 4v16\", key: \"7j8fe9\" }],\n [\n \"path\",\n {\n d: \"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z\",\n key: \"zs4d6\"\n }\n ]\n];\nconst SkipForward = createLucideIcon(\"skip-forward\", __iconNode);\n\nexport { __iconNode, SkipForward as default };\n//# sourceMappingURL=skip-forward.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"path\", { d: \"M16 9a5 5 0 0 1 0 6\", key: \"1q6k2b\" }],\n [\"path\", { d: \"M19.364 18.364a9 9 0 0 0 0-12.728\", key: \"ijwkga\" }]\n];\nconst Volume2 = createLucideIcon(\"volume-2\", __iconNode);\n\nexport { __iconNode, Volume2 as default };\n//# sourceMappingURL=volume-2.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"9\", y2: \"15\", key: \"1ewh16\" }],\n [\"line\", { x1: \"16\", x2: \"22\", y1: \"9\", y2: \"15\", key: \"5ykzw1\" }]\n];\nconst VolumeX = createLucideIcon(\"volume-x\", __iconNode);\n\nexport { __iconNode, VolumeX as default };\n//# sourceMappingURL=volume-x.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","\"use client\";\n\nimport React, { createContext, useContext, useState, ReactNode, useCallback } from \"react\";\nimport { X, Info, CheckCircle, AlertCircle, AlertTriangle } from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\n\ninterface Toast {\n id: number;\n title?: string;\n description?: string;\n type?: AlertType;\n duration?: number;\n}\n\ninterface ToastContextProps {\n addToast: (toast: Omit<Toast, \"id\">) => void;\n}\n\nconst ToastContext = createContext<ToastContextProps | undefined>(undefined);\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) throw new Error(\"useToast must be used within ToastProvider\");\n return context;\n};\n\nexport const ToastProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const removeToast = useCallback((id: number) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const addToast = useCallback((toast: Omit<Toast, \"id\">) => {\n const id = Date.now() + Math.random();\n setToasts((prev) => [...prev, { ...toast, id }]);\n if (toast.duration !== 0) {\n setTimeout(() => removeToast(id), toast.duration ?? 4000);\n }\n }, [removeToast]);\n\n return (\n <ToastContext.Provider value={{ addToast }}>\n {children}\n {/* Toast container */}\n <div className=\"fixed top-5 right-5 flex flex-col gap-3 z-50\">\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onClose={() => removeToast(toast.id)} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n};\n\nconst typeStyles: Record<AlertType, { bg: string; border: string; icon: ReactNode }> = {\n success: { bg: \"bg-green-50\", border: \"border-green-400\", icon: <CheckCircle size={20} className=\"text-green-600\" /> },\n error: { bg: \"bg-red-50\", border: \"border-red-400\", icon: <AlertCircle size={20} className=\"text-red-600\" /> },\n warning: { bg: \"bg-yellow-50\", border: \"border-yellow-400\", icon: <AlertTriangle size={20} className=\"text-yellow-600\" /> },\n info: { bg: \"bg-blue-50\", border: \"border-blue-400\", icon: <Info size={20} className=\"text-blue-600\" /> },\n};\n\nconst ToastItem: React.FC<{ toast: Toast; onClose: () => void }> = ({ toast, onClose }) => {\n const { title, description, type = \"info\" } = toast;\n const { bg, border, icon } = typeStyles[type];\n\n return (\n <div\n className={`flex items-start gap-3 p-4 border-l-4 rounded shadow ${bg} ${border} animate-slide-in-right`}\n role=\"alert\"\n >\n <div>{icon}</div>\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"font-semibold text-sm mb-1\">{title}</div>}\n {description && <div className=\"text-sm text-gray-700\">{description}</div>}\n </div>\n <button onClick={onClose} className=\"text-gray-500 hover:text-gray-700\">\n <X size={16} />\n </button>\n </div>\n );\n};\n\n// Add this animation to your global CSS (Tailwind + @layer utilities)\n// @keyframes slide-in-right {\n// 0% { transform: translateX(100%); opacity: 0; }\n// 100% { transform: translateX(0); opacity: 1; }\n// }\n// .animate-slide-in-right { animation: slide-in-right 0.3s ease forwards; }","\"use client\";\nimport React, {\n useState,\n useRef,\n useEffect,\n memo,\n ReactNode,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\n\nexport interface AccordionItem {\n title: string | ReactNode;\n content: ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n allowMultiple?: boolean;\n defaultOpen?: number[];\n\n /** Appearance */\n borderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverBgColor?: string;\n hoverTextColor?: string;\n contentBgColor?: string;\n contentTextColor?: string;\n\n /** Layout & spacing */\n paddingY?: string | number;\n paddingX?: string | number;\n marginY?: string | number;\n borderRadius?: string | number;\n contentPadding?: string | number;\n\n /** Typography */\n fontSize?: string | number;\n fontWeight?: string | number;\n contentFontSize?: string | number;\n contentFontWeight?: string | number;\n\n /** Icon */\n iconOpen?: ReactNode;\n iconClose?: ReactNode;\n iconSize?: string | number;\n\n /** Motion */\n transitionDuration?: string;\n shadow?: string;\n\n /** Class overrides */\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Accordion: React.FC<AccordionProps> = memo(\n ({\n items,\n allowMultiple = false,\n defaultOpen = [],\n borderColor = \"#e5e7eb\",\n backgroundColor = \"#fff\",\n textColor = \"#111827\",\n hoverBgColor = \"#f3f4f6\",\n hoverTextColor = \"#111827\",\n contentBgColor = \"#fff\",\n contentTextColor = \"#374151\",\n paddingY = \"1rem\",\n paddingX = \"1rem\",\n marginY = \"0.5rem\",\n borderRadius = \"0.5rem\",\n contentPadding = \"1rem\",\n fontSize = \"1rem\",\n fontWeight = 600,\n contentFontSize = \"0.95rem\",\n contentFontWeight = 400,\n iconOpen,\n iconClose,\n iconSize = \"1.25rem\",\n transitionDuration = \"300ms\",\n shadow = \"0 1px 4px rgba(0,0,0,0.08)\",\n className = \"\",\n style,\n }) => {\n const [openIndexes, setOpenIndexes] = useState<number[]>(defaultOpen);\n const contentRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n useEffect(() => {\n contentRefs.current.forEach((el, index) => {\n if (el) {\n el.style.maxHeight = openIndexes.includes(index)\n ? `${el.scrollHeight}px`\n : \"0px\";\n }\n });\n }, [openIndexes]);\n\n const toggleItem = (index: number) => {\n setOpenIndexes((prev) =>\n allowMultiple\n ? prev.includes(index)\n ? prev.filter((i) => i !== index)\n : [...prev, index]\n : prev.includes(index)\n ? []\n : [index],\n );\n };\n\n // Helper to normalize CSS values (number -> px)\n const toCssValue = (value: string | number | undefined) =>\n value !== undefined\n ? typeof value === \"number\"\n ? `${value}px`\n : value\n : undefined;\n\n return (\n <div\n className={`space-y-2 ${className}`}\n style={{ width: \"100%\", ...style }}\n >\n {items.map((item, index) => {\n const isOpen = openIndexes.includes(index);\n\n return (\n <div\n key={index}\n className=\"border shadow-sm overflow-hidden transition-all duration-300\"\n style={{\n borderColor,\n borderRadius: toCssValue(borderRadius),\n margin: `${toCssValue(marginY)} 0`,\n boxShadow: shadow,\n }}\n >\n {/* Header */}\n <button\n onClick={() => toggleItem(index)}\n className=\"w-full flex justify-between items-center transition-colors duration-300\"\n style={{\n backgroundColor,\n color: textColor,\n padding: `${toCssValue(paddingY)} ${toCssValue(paddingX)}`,\n fontWeight,\n fontSize: toCssValue(fontSize),\n cursor: \"pointer\",\n border: \"none\",\n outline: \"none\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = hoverBgColor;\n e.currentTarget.style.color = hoverTextColor;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = backgroundColor;\n e.currentTarget.style.color = textColor;\n }}\n >\n <span>{item.title}</span>\n <span style={{ fontSize: toCssValue(iconSize) }}>\n {isOpen\n ? iconOpen || <ChevronUp size={16} />\n : iconClose || <ChevronDown size={16} />}\n </span>\n </button>\n\n {/* Content */}\n <div\n ref={(el) => {\n contentRefs.current[index] = el;\n }}\n className=\"overflow-hidden transition-all duration-300\"\n style={{\n maxHeight: isOpen\n ? `${contentRefs.current[index]?.scrollHeight ?? 0}px`\n : \"0px\",\n transition: `max-height ${transitionDuration} ease-in-out`,\n }}\n >\n <div\n style={{\n borderTop: `1px solid ${borderColor}`,\n backgroundColor: contentBgColor,\n color: contentTextColor,\n padding: toCssValue(contentPadding),\n fontSize: toCssValue(contentFontSize),\n fontWeight: contentFontWeight,\n }}\n >\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n\nAccordion.displayName = \"Accordion\";\n","\"use client\";\n\nimport React, { useState, CSSProperties } from \"react\";\nimport { User } from \"lucide-react\";\n\ntype AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"responsive\";\ntype AvatarVariant = \"circular\" | \"rounded\" | \"square\";\ntype StatusPosition = \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n\ninterface AvatarProps {\n src?: string;\n alt?: string;\n size?: AvatarSize;\n variant?: AvatarVariant;\n isOnline?: boolean;\n isOffline?: boolean;\n ring?: boolean;\n ringColor?: string;\n fallback?: string;\n onClick?: () => void;\n statusPosition?: StatusPosition;\n className?: string;\n statusClassName?: string;\n style?: CSSProperties;\n statusStyle?: CSSProperties;\n}\n\n// --- Base maps ---\nconst sizeMap: Record<Exclude<AvatarSize, \"responsive\">, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 64,\n};\n\nconst fontSizeMap: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"text-[10px]\",\n sm: \"text-[12px]\",\n md: \"text-[14px]\",\n lg: \"text-[16px]\",\n xl: \"text-[18px]\",\n \"2xl\": \"text-[20px]\",\n};\n\nconst dimensionMap: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"w-6 h-6\",\n sm: \"w-8 h-8\",\n md: \"w-10 h-10\",\n lg: \"w-12 h-12\",\n xl: \"w-14 h-14\",\n \"2xl\": \"w-16 h-16\",\n};\n\nconst variantMap: Record<AvatarVariant, string> = {\n circular: \"rounded-full\",\n rounded: \"rounded-lg\",\n square: \"rounded-none\",\n};\n\nconst statusPositionMap: Record<StatusPosition, string> = {\n \"top-left\": \"top-0 left-0\",\n \"top-right\": \"top-0 right-0\",\n \"bottom-left\": \"bottom-0 left-0\",\n \"bottom-right\": \"bottom-0 right-0\",\n};\n\n// --- Avatar Component ---\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"User avatar\",\n size = \"md\",\n variant = \"circular\",\n isOnline = false,\n isOffline = false,\n fallback,\n ring = false,\n ringColor = \"#3b82f6\",\n onClick,\n statusPosition = \"bottom-right\",\n className = \"\",\n statusClassName = \"\",\n style,\n statusStyle,\n}) => {\n const [imageError, setImageError] = useState(false);\n const clickable = !!onClick;\n\n const initials =\n fallback ||\n alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const statusColor = isOnline ? \"bg-green-500\" : isOffline ? \"bg-gray-400\" : \"\";\n\n // Width/height for inline styles\n const dimensionPx = sizeMap[size as Exclude<AvatarSize, \"responsive\">];\n\n return (\n <div\n role={clickable ? \"button\" : \"img\"}\n tabIndex={clickable ? 0 : -1}\n aria-label={alt}\n onClick={onClick}\n className={`relative inline-flex items-center justify-center overflow-hidden ${dimensionMap[size as Exclude<AvatarSize, \"responsive\">]} ${variantMap[variant]} transition-all duration-200 ${\n clickable ? \"cursor-pointer hover:scale-105\" : \"\"\n } ${ring ? \"ring-2\" : \"\"} ${className}`}\n style={{\n ...style,\n ...(ring ? { boxShadow: `0 0 0 2px ${ringColor}` } : {}),\n }}\n onKeyDown={(e) => {\n if (clickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {src && !imageError ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n className={`w-full h-full object-cover ${variantMap[variant]} transition-opacity duration-300`}\n />\n ) : (\n <div\n className={`w-full h-full flex items-center justify-center bg-gradient-to-tr from-purple-500 to-blue-500 text-white font-semibold ${fontSizeMap[size as Exclude<AvatarSize, \"responsive\">]} ${variantMap[variant]}`}\n >\n {initials || <User className=\"text-white\" />}\n </div>\n )}\n\n {(isOnline || isOffline) && (\n <span\n aria-label={isOnline ? \"Online\" : \"Offline\"}\n title={isOnline ? \"Online\" : \"Offline\"}\n className={`absolute ${statusPositionMap[statusPosition]} ${statusColor} border-2 border-white rounded-full shadow-sm ${statusClassName}`}\n style={{\n width: dimensionPx / 3,\n height: dimensionPx / 3,\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};","\"use client\";\n\nimport React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n} from \"lucide-react\";\n\ninterface AudioPlayerProps {\n src: string;\n thumbnail?: string;\n autoPlay?: boolean;\n loop?: boolean;\n backgroundColor?: string;\n primaryColor?: string;\n secondaryColor?: string;\n borderRadius?: string;\n className?: string;\n padding?: string;\n width?: string;\n}\n\nexport const AudioPlayer: React.FC<AudioPlayerProps> = ({\n src,\n thumbnail,\n autoPlay = false,\n loop = false,\n backgroundColor = \"#0a0a0a\",\n primaryColor = \"#10b981\",\n secondaryColor = \"#ffffff\",\n borderRadius = \"12px\",\n padding = \"12px\",\n width = \"100%\",\n className,\n}) => {\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const [isPlaying, setIsPlaying] = useState(autoPlay);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.volume = volume;\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.loop = isLooping;\n }, [isLooping]);\n\n const togglePlayPause = () => {\n if (!audioRef.current) return;\n isPlaying ? audioRef.current.pause() : audioRef.current.play();\n setIsPlaying(!isPlaying);\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n setDuration(audioRef.current.duration);\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n audioRef.current.currentTime = percent * duration;\n setCurrentTime(percent * duration);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current) audioRef.current.currentTime += seconds;\n };\n\n const toggleFullscreen = () => {\n if (!playerRef.current) return;\n isFullscreen\n ? document.exitFullscreen?.()\n : playerRef.current.requestFullscreen?.();\n setIsFullscreen(!isFullscreen);\n };\n\n const formatTime = (time: number) => {\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n return (\n <div\n ref={playerRef}\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n width,\n backgroundColor,\n borderRadius,\n padding,\n boxSizing: \"border-box\",\n color: secondaryColor,\n boxShadow: \"0 6px 16px rgba(0,0,0,0.2)\",\n flexWrap: \"wrap\",\n }}\n >\n <audio\n ref={audioRef}\n src={src}\n autoPlay={autoPlay}\n loop={loop}\n onTimeUpdate={handleTimeUpdate}\n onLoadedMetadata={handleTimeUpdate}\n />\n\n {/* Thumbnail / Avatar */}\n {thumbnail && (\n <img\n src={thumbnail}\n alt=\"Audio Thumbnail\"\n style={{\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n />\n )}\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n flex: 1,\n minWidth: \"0\",\n }}\n >\n <button\n onClick={() => skip(-10)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: secondaryColor,\n cursor: \"pointer\",\n }}\n aria-label=\"Skip Back 10s\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={togglePlayPause}\n style={{\n background: primaryColor,\n borderRadius: \"50%\",\n padding: \"10px\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={20} /> : <Play size={20} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: secondaryColor,\n cursor: \"pointer\",\n }}\n aria-label=\"Skip Forward 10s\"\n >\n <SkipForward size={20} />\n </button>\n\n {/* Seek Bar */}\n <div\n onClick={handleSeek}\n style={{\n flex: 1,\n height: \"6px\",\n background: \"#444\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"3px\",\n }}\n />\n </div>\n\n {/* Time */}\n <div style={{ minWidth: \"70px\", textAlign: \"right\", fontSize: \"0.8rem\" }}>\n {formatTime(currentTime)} / {formatTime(duration)}\n </div>\n\n {/* Extra Controls */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: isLooping ? primaryColor : secondaryColor,\n }}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={18} />\n </button>\n\n <button\n onClick={() => setVolume(volume > 0 ? 0 : 0.7)}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: secondaryColor,\n }}\n aria-label=\"Toggle Mute\"\n >\n {volume > 0 ? <Volume2 size={18} /> : <VolumeX size={18} />}\n </button>\n\n <button\n onClick={toggleFullscreen}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: secondaryColor,\n }}\n aria-label=\"Toggle Fullscreen\"\n >\n {isFullscreen ? <Minimize size={18} /> : <Maximize size={18} />}\n </button>\n </div>\n </div>\n </div>\n );\n};","import React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n Download,\n Heart,\n Share2,\n Music,\n Shuffle,\n} from \"lucide-react\";\n\ninterface AudioTrack {\n src: string;\n title: string;\n artist?: string;\n thumbnail?: string;\n duration?: string;\n}\n\ninterface AudioGalleryProps {\n tracks?: AudioTrack[];\n className?: string;\n galleryTitle?: string;\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n secondaryColor?: string;\n autoplay?: boolean;\n borderColor?: string;\n border?: number;\n maxWidth?: number;\n loop?: boolean;\n}\n\nconst defaultTracks: AudioTrack[] = [\n {\n src: \"https://www.soundjay.com/misc/sounds/bell-ringing-05.wav\",\n title: \"Morning Bell\",\n artist: \"Nature Sounds\",\n duration: \"0:15\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-4.wav\",\n title: \"Digital Click\",\n artist: \"Tech Audio\",\n duration: \"0:05\",\n thumbnail:\n \"https://images.unsplash.com/photo-1514525253161-7a46d19cd819?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-10.wav\",\n title: \"Soft Chime\",\n artist: \"Ambient Studio\",\n duration: \"0:08\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n];\n\nexport function AudioGallery({\n tracks = defaultTracks,\n className = \"\",\n galleryTitle = \"Audio Gallery\",\n primaryColor = \"#8b5cf6\",\n backgroundColor = \"#0f0f23\",\n textColor = \"#e4e4e7\",\n secondaryColor = \"#1a1a2e\",\n border = 0,\n borderColor,\n maxWidth = 420,\n autoplay = false,\n loop = false,\n}: AudioGalleryProps) {\n const [currentTrackIndex, setCurrentTrackIndex] = useState<number | null>(\n null\n );\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n const [isShuffle, setIsShuffle] = useState(false);\n const [isLiked, setIsLiked] = useState(false);\n const [showVolumeSlider, setShowVolumeSlider] = useState(false);\n\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const volumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.volume = volume;\n }\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.loop = isLooping;\n }\n }, [isLooping]);\n\n useEffect(() => {\n if (currentTrackIndex === null && audioRef.current) {\n audioRef.current.pause();\n setIsPlaying(false);\n setCurrentTime(0);\n setDuration(0);\n }\n }, [currentTrackIndex]);\n\n const playPauseTrack = (index: number) => {\n if (currentTrackIndex === index) {\n if (!audioRef.current) return;\n if (audioRef.current.paused) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n } else {\n audioRef.current.pause();\n setIsPlaying(false);\n }\n } else {\n setCurrentTrackIndex(index);\n setTimeout(() => {\n if (audioRef.current) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }, 100);\n }\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n if (audioRef.current.duration) {\n setDuration(audioRef.current.duration);\n }\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current || !duration) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const seekTime = percent * duration;\n audioRef.current.currentTime = seekTime;\n setCurrentTime(seekTime);\n };\n\n const handleVolumeChange = (e: React.MouseEvent<HTMLDivElement>) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const newVolume = Math.max(0, Math.min(1, percent));\n setVolume(newVolume);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current && duration) {\n let newTime = audioRef.current.currentTime + seconds;\n newTime = Math.min(Math.max(newTime, 0), duration);\n audioRef.current.currentTime = newTime;\n setCurrentTime(newTime);\n }\n };\n\n const nextTrack = () => {\n if (currentTrackIndex === null) return;\n let nextIndex;\n if (isShuffle) {\n nextIndex = Math.floor(Math.random() * tracks.length);\n } else {\n nextIndex = (currentTrackIndex + 1) % tracks.length;\n }\n playPauseTrack(nextIndex);\n };\n\n const prevTrack = () => {\n if (currentTrackIndex === null) return;\n let prevIndex;\n if (isShuffle) {\n prevIndex = Math.floor(Math.random() * tracks.length);\n } else {\n prevIndex = (currentTrackIndex - 1 + tracks.length) % tracks.length;\n }\n playPauseTrack(prevIndex);\n };\n\n const toggleMute = () => {\n setVolume((prev) => (prev > 0 ? 0 : 0.7));\n };\n\n const showVolume = () => {\n setShowVolumeSlider(true);\n if (volumeTimeoutRef.current) {\n clearTimeout(volumeTimeoutRef.current);\n }\n volumeTimeoutRef.current = setTimeout(() => {\n setShowVolumeSlider(false);\n }, 3000);\n };\n\n const formatTime = (time: number) => {\n if (isNaN(time)) return \"0:00\";\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n const currentTrack =\n currentTrackIndex !== null ? tracks[currentTrackIndex] : null;\n\n return (\n <div\n className={className}\n style={{\n maxWidth: `${maxWidth}px`,\n margin: \"20px auto\",\n background: `linear-gradient(145deg, ${backgroundColor}, ${secondaryColor})`,\n color: textColor,\n borderRadius: \"24px\",\n padding: \"24px 16px\",\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n userSelect: \"none\",\n backdropFilter: \"blur(20px)\",\n border: `${border}px solid ${borderColor}40`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"12px\",\n background: `linear-gradient(135deg, ${primaryColor}, ${secondaryColor})`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Music size={20} color=\"white\" />\n </div>\n <div>\n <h2\n style={{\n margin: 0,\n fontSize: \"1.25rem\",\n fontWeight: \"700\",\n color: primaryColor, // fallback for browsers without WebkitTextFillColor\n }}\n >\n {galleryTitle}\n </h2>\n <p style={{ margin: 0, fontSize: \"0.875rem\", opacity: 0.7 }}>\n {tracks.length} tracks\n </p>\n </div>\n </div>\n\n <button\n onClick={() => setIsShuffle(!isShuffle)}\n style={{\n background: isShuffle ? primaryColor : \"transparent\",\n border: \"none\",\n borderRadius: \"12px\",\n padding: \"8px\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n opacity: isShuffle ? 1 : 0.6,\n }}\n aria-label=\"Toggle Shuffle\"\n >\n <Shuffle size={18} color={isShuffle ? \"white\" : textColor} />\n </button>\n </div>\n\n {/* Track List */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n marginBottom: \"20px\",\n maxHeight: \"240px\",\n overflowY: \"auto\",\n paddingRight: \"4px\",\n }}\n >\n {tracks.map((track, index) => {\n const isActive = currentTrackIndex === index;\n const isCurrentlyPlaying = isActive && isPlaying;\n\n return (\n <div\n key={index}\n onClick={() => playPauseTrack(index)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"12px 16px\",\n borderRadius: \"16px\",\n background: isActive\n ? `linear-gradient(135deg, ${primaryColor}20, ${primaryColor}10)`\n : \"rgba(255,255,255,0.05)\",\n border: isActive\n ? `1px solid ${primaryColor}40`\n : \"1px solid transparent\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n backdropFilter: isActive ? `blur(20px)` : \"none\",\n }}\n >\n {/* Thumbnail */}\n <div\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"12px\",\n background: track.thumbnail\n ? `url(${track.thumbnail}) center/cover`\n : primaryColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"12px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {!track.thumbnail && <Music size={20} color=\"white\" />}\n {isCurrentlyPlaying && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n width: \"16px\",\n height: \"16px\",\n display: \"flex\",\n gap: \"2px\",\n alignItems: \"end\",\n justifyContent: \"center\",\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n style={{\n width: \"3px\",\n background: \"white\",\n borderRadius: \"2px\",\n animation: `equalizer 1s ease-in-out infinite ${\n i * 0.2\n }s`,\n height: \"12px\",\n }}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Track Info */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontWeight: \"600\",\n fontSize: \"0.95rem\",\n color: isActive ? primaryColor : textColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.title}\n </div>\n {track.artist && (\n <div\n style={{\n fontSize: \"0.8rem\",\n opacity: 0.7,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.artist}\n </div>\n )}\n </div>\n\n {/* Duration & Play Button */}\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n >\n {track.duration && (\n <span style={{ fontSize: \"0.8rem\", opacity: 0.6 }}>\n {track.duration}\n </span>\n )}\n <div\n style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"8px\",\n background: isActive\n ? primaryColor\n : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n }}\n >\n {isCurrentlyPlaying ? (\n <Pause size={16} color=\"white\" />\n ) : (\n <Play size={16} color=\"white\" />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Current Track Display & Controls */}\n {currentTrack && (\n <div\n ref={playerRef}\n style={{\n background: `linear-gradient(135deg, ${secondaryColor}, ${backgroundColor})`,\n borderRadius: \"20px\",\n padding: \"20px\",\n border: `1px solid ${primaryColor}40`,\n backdropFilter: \"blur(20px)\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {/* Background Blur Effect */}\n {currentTrack.thumbnail && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundImage: `url(${currentTrack.thumbnail})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n filter: \"blur(60px) opacity(0.1)\",\n transform: \"scale(1.1)\",\n }}\n />\n )}\n\n {/* Content */}\n <div style={{ position: \"relative\", zIndex: 1 }}>\n {/* Track Info */}\n <div style={{ textAlign: \"center\", marginBottom: \"20px\" }}>\n <h3\n style={{\n margin: \"0 0 4px 0\",\n fontSize: \"1.1rem\",\n fontWeight: \"700\",\n color: primaryColor,\n }}\n >\n {currentTrack.title}\n </h3>\n {currentTrack.artist && (\n <p style={{ margin: 0, opacity: 0.7, fontSize: \"0.9rem\" }}>\n {currentTrack.artist}\n </p>\n )}\n </div>\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"20px\",\n marginBottom: \"20px\",\n }}\n >\n <button\n onClick={prevTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Previous Track\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={() => skip(-10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip back 10 seconds\"\n >\n <SkipBack size={16} />\n <span style={{ fontSize: \"0.7rem\", marginLeft: \"2px\" }}>\n 10\n </span>\n </button>\n\n <button\n onClick={() => {\n if (!audioRef.current) return;\n if (isPlaying) {\n audioRef.current.pause();\n setIsPlaying(false);\n } else {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }}\n style={{\n ...controlButtonStyle(\"#fff\", primaryColor),\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n boxShadow: `0 8px 25px ${primaryColor}40`,\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={24} /> : <Play size={24} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip forward 10 seconds\"\n >\n <span style={{ fontSize: \"0.7rem\", marginRight: \"2px\" }}>\n 10\n </span>\n <SkipForward size={16} />\n </button>\n\n <button\n onClick={nextTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Next Track\"\n >\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Progress Bar */}\n <div style={{ marginBottom: \"16px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"8px\",\n fontSize: \"0.8rem\",\n opacity: 0.7,\n }}\n >\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n\n <div\n onClick={handleSeek}\n style={{\n height: \"6px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: `linear-gradient(90deg, ${primaryColor}, #ec4899)`,\n borderRadius: \"3px\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n right: \"-6px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: \"12px\",\n height: \"12px\",\n background: primaryColor,\n borderRadius: \"50%\",\n boxShadow: `0 2px 8px ${primaryColor}60`,\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Additional Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLiked(!isLiked)}\n style={controlButtonStyle(\n isLiked ? \"#ec4899\" : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Like\"\n >\n <Heart size={16} fill={isLiked ? \"#ec4899\" : \"none\"} />\n </button>\n\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={controlButtonStyle(\n isLooping ? primaryColor : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={16} />\n </button>\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n position: \"relative\",\n }}\n >\n {showVolumeSlider && (\n <div\n onClick={handleVolumeChange}\n style={{\n width: \"80px\",\n height: \"4px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"2px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${volume * 100}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"2px\",\n }}\n />\n </div>\n )}\n\n <button\n onClick={toggleMute}\n onMouseEnter={showVolume}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label={volume > 0 ? \"Mute\" : \"Unmute\"}\n >\n {volume > 0 ? <Volume2 size={16} /> : <VolumeX size={16} />}\n </button>\n </div>\n </div>\n </div>\n\n <audio\n ref={audioRef}\n src={currentTrack.src}\n autoPlay={autoplay}\n loop={isLooping}\n onTimeUpdate={handleTimeUpdate}\n onEnded={() => {\n setIsPlaying(false);\n if (!isLooping) {\n nextTrack();\n }\n }}\n onLoadedMetadata={handleTimeUpdate}\n preload=\"metadata\"\n style={{ display: \"none\" }}\n />\n </div>\n )}\n\n <style>{`\n @keyframes equalizer {\n 0%, 100% { height: 4px; }\n 50% { height: 12px; }\n }\n \n /* Custom Scrollbar */\n div::-webkit-scrollbar {\n width: 4px;\n }\n \n div::-webkit-scrollbar-track {\n background: rgba(255,255,255,0.1);\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb {\n background: ${primaryColor};\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb:hover {\n background: ${primaryColor}dd;\n }\n `}</style>\n </div>\n );\n}\n\nfunction controlButtonStyle(\n color: string,\n backgroundColor: string\n): React.CSSProperties {\n return {\n border: \"none\",\n backgroundColor,\n color,\n cursor: \"pointer\",\n padding: \"10px\",\n borderRadius: \"12px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n backdropFilter: \"blur(10px)\",\n };\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport React, { memo } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface BadgeProps {\n text?: string;\n\n icon?: React.ReactNode;\n iconPosition?: \"left\" | \"right\";\n\n /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n /** Shape */\n rounded?: boolean;\n\n /** Notification */\n notificationDot?: boolean;\n dotColor?: string;\n count?: number | string;\n pulse?: boolean;\n\n className?: string;\n onClick?: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🏷 Badge */\n/* -------------------------------------------------------------------------- */\n\nexport const Badge: React.FC<BadgeProps> = memo(\n ({\n text,\n icon,\n iconPosition = \"left\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n rounded = true,\n\n notificationDot = false,\n dotColor = \"#ef4444\",\n count,\n pulse = false,\n\n className,\n onClick,\n }) => {\n /** 📏 Sizes */\n const sizes = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-3 py-1 text-xs\",\n lg: \"px-4 py-1.5 text-sm\",\n };\n\n /** 🎨 Theme */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white\"\n : \"\";\n\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <span\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"relative inline-flex items-center justify-center gap-1 font-medium\",\n \"transition-all duration-200 select-none\",\n rounded ? \"rounded-full\" : \"rounded-md\",\n sizes[size],\n themeClasses,\n onClick && \"cursor-pointer hover:opacity-90\",\n className\n )}\n >\n {/* 🔴 Dot */}\n {notificationDot && (\n <span\n style={!primaryTheme ? { backgroundColor: dotColor } : undefined}\n className={clsx(\n \"absolute -top-1 -right-1 w-2 h-2 rounded-full\",\n pulse && \"animate-ping\",\n primaryTheme ? \"bg-red-500\" : \"\"\n )}\n />\n )}\n\n {/* 🔢 Count */}\n {count !== undefined && (\n <span\n style={!primaryTheme ? { backgroundColor: dotColor } : undefined}\n className={clsx(\n \"absolute -top-2 -right-2 min-w-[18px] h-[18px] px-1 text-[10px]\",\n \"flex items-center justify-center rounded-full text-white\",\n primaryTheme ? \"bg-red-500\" : \"\"\n )}\n >\n {count}\n </span>\n )}\n\n {/* Icon Left */}\n {icon && iconPosition === \"left\" && (\n <span className=\"flex items-center\">{icon}</span>\n )}\n\n {/* Text */}\n {text && <span>{text}</span>}\n\n {/* Icon Right */}\n {icon && iconPosition === \"right\" && (\n <span className=\"flex items-center\">{icon}</span>\n )}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n\n iconBefore?: React.ReactNode;\n iconAfter?: React.ReactNode;\n\n loading?: boolean;\n loadingText?: string;\n\n fullWidth?: boolean;\n\n /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🔘 Button */\n/* -------------------------------------------------------------------------- */\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n iconBefore,\n iconAfter,\n loading = false,\n loadingText = \"Loading...\",\n fullWidth = false,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n /** 📏 Sizes */\n const sizeClasses = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-5 py-2.5 text-sm\",\n lg: \"px-6 py-3 text-base\",\n };\n\n /** 🎨 Theme styles */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white hover:bg-[var(--primary)]/90 focus:ring-[var(--primary)]/30\"\n : \"\";\n\n /** 🎨 Dynamic fallback for non-primary theme */\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"inline-flex items-center justify-center gap-2 font-medium rounded-lg transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-1\",\n sizeClasses[size],\n themeClasses,\n fullWidth && \"w-full\",\n (disabled || loading) && \"opacity-60 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {loading ? (\n <>\n <span className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\" />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && (\n <span className=\"flex items-center justify-center\">{iconBefore}</span>\n )}\n <span>{children}</span>\n {iconAfter && (\n <span className=\"flex items-center justify-center\">{iconAfter}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface CheckboxGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n customIcon?: (checked: boolean) => React.ReactNode;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n customIcon,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation (space/enter toggle)\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n if (focusedIndex === null) return;\n\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n setFocusedIndex((currentIndex + 1) % options.length);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n setFocusedIndex((currentIndex - 1 + options.length) % options.length);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Custom or default icon */}\n {customIcon ? (\n customIcon(isChecked)\n ) : (\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: 4,\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ width: iconSize * 0.6, height: iconSize * 0.6 }}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n name?: string;\n options: Option[];\n selectedValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n selectedValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n const currentIndex = focusedIndex ?? options.findIndex((o) => o.value === selectedValue) ?? 0;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n onChange && onChange(options[nextIndex].value);\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n onChange && onChange(options[prevIndex].value);\n setFocusedIndex(prevIndex);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValue, onChange, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"radiogroup\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n tabIndex={0} // allow keyboard focus\n >\n {options.map((option, index) => {\n const isChecked = selectedValue === option.value;\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none gap-2\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\",\n )}\n style={{ ...labelStyle }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => onChange && onChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n <span\n className={clsx(\"inline-flex items-center justify-center rounded-full transition-all\")}\n style={{\n width: iconSize,\n height: iconSize,\n border: `2px solid ${isChecked ? iconCheckedBgColor : iconUncheckedBorderColor}`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.2s ease\",\n }}\n >\n {isChecked && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: darkMode ? \"#fff\" : \"#fff\",\n }}\n />\n )}\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface SwitchGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const SwitchGroup: React.FC<SwitchGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n switchBgColor = \"#d1d5db\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (focusedIndex === null) return;\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n setFocusedIndex(prevIndex);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Switch */}\n <span\n className={clsx(\"relative inline-flex rounded-full transition-colors\")}\n style={{\n width: iconSize * 2,\n height: iconSize * 1.1,\n backgroundColor: isChecked\n ? iconCheckedBgColor\n : switchBgColor,\n transition: \"background-color 0.25s ease\",\n borderRadius: 9999,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: isChecked\n ? `calc(100% - ${iconSize - 4}px - 2px)`\n : \"2px\",\n transform: \"translateY(-50%)\",\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.3)\",\n transition: \"left 0.25s ease\",\n }}\n />\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n size?: ContainerSize;\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n center?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nconst sizeMap: Record<ContainerSize, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n \"2xl\": \"max-w-2xl\",\n full: \"w-full\",\n};\n\nconst paddingMap: Record<NonNullable<ContainerProps[\"padding\"]>, string> = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n/**\n * 🧱 Container Component\n * Fully responsive, Tailwind-first layout wrapper\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = \"md\",\n center = true,\n className = \"\",\n children,\n}) => {\n const classes = clsx(\n \"w-full box-border\",\n sizeMap[size],\n paddingMap[padding],\n center && \"mx-auto\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\nexport default Container;","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexViewProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n margin?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const FlexView: React.FC<FlexViewProps> = ({\n direction = { sm: \"column\", md: \"row\" },\n align = \"center\",\n justify = \"between\",\n wrap = \"wrap\",\n gap,\n padding,\n margin,\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction),\n toResponsiveClass(\"items\", align),\n toResponsiveClass(\"justify\", justify),\n toResponsiveClass(\"flex\", wrap), // wrap classes: flex-wrap, flex-nowrap, flex-wrap-reverse\n gap ? toResponsiveClass(\"gap\", gap) : \"\",\n padding ? toResponsiveClass(\"p\", padding) : \"\",\n margin ? toResponsiveClass(\"m\", margin) : \"\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface StackProps {\n direction?: ResponsiveValue<\"vertical\" | \"horizontal\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n align?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Convert responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\" },\n gap = 4,\n align = \"center\",\n justify = \"start\",\n wrap = \"nowrap\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction), // flex-col or flex-row\n toResponsiveClass(\"gap\", gap),\n align !== \"stretch\" ? `items-${align}` : \"items-stretch\",\n justify !== \"start\" ? `justify-${justify}` : \"justify-start\",\n wrap !== \"nowrap\" ? `flex-${wrap}` : \"flex-nowrap\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\n/** Shortcuts for horizontal & vertical stacks */\nexport const HStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"horizontal\" {...props} />\n);\n\nexport const VStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"vertical\" {...props} />\n);","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\nexport interface GridProps {\n columns?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6>;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 4,\n padding = 4,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"grid\",\n toResponsiveClass(\"grid-cols\", columns),\n toResponsiveClass(\"gap\", gap),\n toResponsiveClass(\"p\", padding),\n alignItems !== \"stretch\" ? `items-${alignItems}` : \"items-stretch\",\n justifyItems !== \"stretch\" ? `justify-items-${justifyItems}` : \"justify-items-stretch\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","\"use client\";\nimport React, { useState, useEffect, useMemo, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\ninterface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n className = \"\",\n}) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`inline-flex items-center justify-center gap-2 px-4 py-2 rounded-md font-medium text-white bg-blue-600 hover:bg-blue-700 transition-colors focus:outline-none focus:ring-2 focus:ring-blue-400 ${className}`}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n );\n};\n\n/* ---------------- 🧱 Drawer ---------------- */\ninterface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n size?: string; // width for left/right, height for top/bottom\n className?: string;\n overlayClassName?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeButtonClassName?: string;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n size = \"320px\",\n children,\n showCloseButton = true,\n className = \"\",\n overlayClassName = \"\",\n closeButtonClassName = \"\",\n}) => {\n const [mounted, setMounted] = useState(open);\n\n useEffect(() => {\n if (open) setMounted(true);\n else setTimeout(() => setMounted(false), 300); // smooth exit\n }, [open]);\n\n const transform = useMemo(() => {\n if (open) return \"translate(0,0)\";\n switch (position) {\n case \"left\":\n return \"translateX(-100%)\";\n case \"right\":\n return \"translateX(100%)\";\n case \"top\":\n return \"translateY(-100%)\";\n case \"bottom\":\n return \"translateY(100%)\";\n default:\n return \"translate(0,0)\";\n }\n }, [open, position]);\n\n if (!mounted && !open) return null;\n\n return (\n <>\n {/* Overlay */}\n <div\n onClick={onClose}\n className={`fixed inset-0 bg-black/50 transition-opacity ${\n open ? \"opacity-100\" : \"opacity-0\"\n } ${overlayClassName}`}\n />\n\n {/* Drawer Panel */}\n <div\n className={`fixed bg-white shadow-lg flex flex-col transition-transform duration-300 ${className}`}\n style={{\n width: position === \"left\" || position === \"right\" ? size : \"100%\",\n height: position === \"top\" || position === \"bottom\" ? size : \"100%\",\n top: position === \"bottom\" || position === \"top\" ? (position === \"bottom\" ? \"auto\" : 0) : 0,\n bottom: position === \"bottom\" ? 0 : \"auto\",\n left: position === \"left\" ? 0 : position === \"right\" ? \"auto\" : 0,\n right: position === \"right\" ? 0 : position === \"left\" ? \"auto\" : 0,\n transform,\n }}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n className={`absolute top-4 right-4 p-1 rounded-full hover:bg-gray-200 transition-colors ${closeButtonClassName}`}\n aria-label=\"Close drawer\"\n >\n <X size={20} />\n </button>\n )}\n\n <div className=\"flex-1 overflow-auto p-4\">{children}</div>\n </div>\n </>\n );\n};","\"use client\";\n\nimport React, {\n useEffect,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n label?: string;\n name?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n options?: SelectOption[];\n\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n labelIcon?: React.ElementType;\n prefixIcon?: React.ElementType;\n\n variant?: \"dark\" | \"light\";\n\n /** 🔥 THEME SYSTEM */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n containerClassName?: string;\n labelClassName?: string;\n triggerClassName?: string;\n dropdownClassName?: string;\n optionClassName?: string;\n\n className?: string;\n}\n\nexport const Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (props, ref) => {\n const {\n label,\n name = \"\",\n value,\n defaultValue,\n onChange,\n options = [],\n placeholder = \"Select an option\",\n required,\n disabled,\n error,\n success,\n helperText,\n\n labelIcon: LabelIcon,\n prefixIcon: PrefixIcon,\n\n variant = \"dark\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n containerClassName = \"\",\n labelClassName = \"\",\n triggerClassName = \"\",\n dropdownClassName = \"\",\n optionClassName = \"\",\n\n className = \"\",\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => containerRef.current!);\n\n const [open, setOpen] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n\n const currentValue = value !== undefined ? value : localValue;\n const selectedOption = options.find((o) => o.value === currentValue);\n\n /** Close outside */\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const handleSelect = (option: SelectOption) => {\n setLocalValue(option.value);\n onChange?.(name, option.value);\n setOpen(false);\n };\n\n /** 🎨 Theme base */\n const theme = {\n dark: {\n bg: \"bg-zinc-900\",\n text: \"text-white\",\n border: \"border-zinc-800\",\n dropdown: \"bg-black border-zinc-800\",\n option: \"text-zinc-300 hover:bg-zinc-800\",\n },\n light: {\n bg: \"bg-white\",\n text: \"text-gray-900\",\n border: \"border-gray-300\",\n dropdown: \"bg-white border-gray-200\",\n option: \"text-gray-700 hover:bg-gray-100\",\n },\n }[variant];\n\n /** 🎨 Dynamic styles */\n const dynamicPrimary: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const dynamicBorder: CSSProperties = !primaryTheme\n ? { borderColor: primaryColor }\n : {};\n\n const dynamicBgActive: CSSProperties = !primaryTheme\n ? { backgroundColor: `${primaryColor}20` } // light tint\n : {};\n\n /** Border state */\n const borderState = error\n ? \"border-rose-500\"\n : success\n ? \"border-emerald-500\"\n : theme.border;\n\n const paddingLeft = PrefixIcon ? \"pl-12 pr-10\" : \"px-4\";\n\n return (\n <div\n ref={containerRef}\n className={`w-full space-y-1 ${containerClassName} ${className}`}\n >\n {/* Label */}\n {label && (\n <label\n className={`flex items-center gap-2 text-[13px] font-medium ${labelClassName}`}\n >\n {LabelIcon && (\n <LabelIcon\n className={\n primaryTheme ? \"w-4 h-4 text-[var(--primary)]\" : \"w-4 h-4\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-rose-500\">*</span>}\n </label>\n )}\n\n <div className=\"relative group\">\n {/* Prefix Icon */}\n {PrefixIcon && (\n <div className=\"absolute left-4 top-1/2 -translate-y-1/2 z-10\">\n <PrefixIcon\n className={\n primaryTheme\n ? \"w-4 h-4 text-zinc-500 group-focus-within:text-[var(--primary)]\"\n : \"w-4 h-4 text-zinc-500\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n </div>\n )}\n\n {/* Trigger */}\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setOpen((p) => !p)}\n style={!primaryTheme ? dynamicBorder : undefined}\n className={`\n w-full py-2.5 rounded-lg text-left text-sm\n border transition-all duration-200\n ${theme.bg} ${theme.text}\n ${paddingLeft}\n ${borderState}\n focus:ring-2\n ${\n primaryTheme\n ? \"focus:ring-[var(--primary)]/30 focus:border-[var(--primary)]\"\n : \"\"\n }\n disabled:opacity-50 disabled:cursor-not-allowed\n ${triggerClassName}\n `}\n >\n <span className={selectedOption ? theme.text : \"text-zinc-500\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n\n <ChevronDown\n className={`absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 transition-transform ${\n open ? \"rotate-180\" : \"\"\n } text-zinc-400`}\n />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div\n className={`\n absolute z-50 mt-2 w-full rounded-xl border shadow-xl overflow-hidden\n ${theme.dropdown}\n ${dropdownClassName}\n `}\n >\n <ul className=\"max-h-60 overflow-y-auto\">\n {options.map((opt) => {\n const isActive = currentValue === opt.value;\n\n return (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n style={\n !primaryTheme && isActive ? dynamicBgActive : undefined\n }\n className={`\n px-4 py-3 cursor-pointer text-sm flex items-center gap-2\n ${\n isActive\n ? primaryTheme\n ? \"bg-[var(--primary)]/15 text-[var(--primary)]\"\n : \"\"\n : theme.option\n }\n ${optionClassName}\n `}\n >\n {opt.icon && <span>{opt.icon}</span>}\n {opt.label}\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n\n {/* Helper */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-rose-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";","\"use client\";\n\nimport React, {\n forwardRef,\n useState,\n useImperativeHandle,\n useRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputFieldProps {\n label?: string;\n name?: string;\n type?: \"text\" | \"password\" | \"email\" | \"number\" | \"textarea\";\n placeholder?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n /** Icons */\n icon?: React.ElementType;\n prefix?: string;\n prefixIcon?: React.ElementType;\n suffixIcon?: React.ReactNode;\n\n /** Number props */\n min?: number;\n max?: number;\n step?: number;\n\n /** Textarea */\n rows?: number;\n\n /** 🔥 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** Styling */\n className?: string;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputFieldProps\n>((props, ref) => {\n const {\n label,\n name = \"\",\n type = \"text\",\n placeholder = \"\",\n value,\n defaultValue,\n onChange,\n required,\n disabled,\n readOnly,\n\n error,\n success,\n helperText,\n\n icon: LabelIcon,\n prefix,\n prefixIcon: PrefixIcon,\n suffixIcon,\n\n min,\n max,\n step,\n\n rows = 4,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className = \"\",\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n useImperativeHandle(ref, () => inputRef.current!);\n\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n const hasPrefixIcon = Boolean(PrefixIcon);\n const hasPrefixText = Boolean(prefix);\n const hasPrefix = hasPrefixIcon || hasPrefixText;\n\n const currentValue = value !== undefined ? value : localValue;\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const val = e.target.value;\n setLocalValue(val);\n onChange?.(name, val);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === \"number\" && e.key === \"-\") e.preventDefault();\n };\n\n /** Padding logic */\n const getPadding = () => {\n if (!hasPrefix) return \"px-4\";\n if (hasPrefixIcon && hasPrefixText) return \"pl-20 pr-4\";\n if (hasPrefixText) return \"pl-14 pr-4\";\n if (hasPrefixIcon) return \"pl-10 pr-4\";\n return \"px-4\";\n };\n\n /** 🔥 Theme Styles */\n const dynamicFocusStyle: CSSProperties = !primaryTheme\n ? {\n borderColor: primaryColor,\n boxShadow: `0 0 0 1px ${primaryColor}`,\n }\n : {};\n\n const dynamicColorStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n /** Border */\n const borderStyle = error\n ? \"border-red-500\"\n : success\n ? \"border-emerald-500\"\n : \"border-zinc-300 dark:border-zinc-800\";\n\n return (\n <div className={`w-full space-y-1 ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"flex items-center gap-2 text-[12px] font-medium text-gray-700 dark:text-zinc-100\">\n {LabelIcon && (\n <LabelIcon\n size={16}\n className={primaryTheme ? \"text-[var(--primary)]\" : \"\"}\n style={!primaryTheme ? dynamicColorStyle : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-red-500\">*</span>}\n </label>\n )}\n\n {/* Input Wrapper */}\n <div className=\"relative\">\n {/* Prefix */}\n {hasPrefix && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3 gap-2 text-sm text-zinc-400 pointer-events-none\">\n {PrefixIcon && <PrefixIcon size={14} />}\n {hasPrefixText && (\n <>\n <span className=\"font-medium text-zinc-600 dark:text-zinc-200\">\n {prefix}\n </span>\n <span className=\"h-4 w-px bg-zinc-300 dark:bg-zinc-700\" />\n </>\n )}\n </div>\n )}\n\n {/* Input / Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n min={type === \"number\" ? min ?? 0 : undefined}\n max={max}\n step={step}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n disabled:opacity-50 disabled:cursor-not-allowed\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n )}\n\n {/* Password toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\"\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Suffix */}\n {suffixIcon && type !== \"password\" && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\">\n {suffixIcon}\n </span>\n )}\n </div>\n\n {/* Helper / Error */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-red-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {error && typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n});","\"use client\";\n\nimport React, { useMemo } from \"react\";\n\ninterface ImageProps {\n src?: string;\n alt?: string;\n title?: string;\n /** Tailwind width/height classes or numbers */\n width?: string | number;\n height?: string | number;\n /** Tailwind rounded classes */\n rounded?: string;\n borderColor?: string;\n borderWidth?: string | number;\n shadow?: boolean;\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n responsive?: boolean;\n p?: string;\n m?: string;\n /** Hover Effects */\n hoverScale?: number;\n hoverRotate?: number;\n hoverOpacity?: number;\n hoverShadow?: boolean;\n transitionDuration?: string;\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Custom Tailwind classes */\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"w-full\",\n height = \"h-auto\",\n rounded = \"rounded-lg\",\n borderColor = \"transparent\",\n borderWidth = \"0\",\n shadow = false,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n p,\n m,\n hoverScale = 1.05,\n hoverRotate = 0,\n hoverOpacity,\n hoverShadow = false,\n transitionDuration = \"300ms\",\n overflow = \"hidden\",\n className = \"\",\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n /** Base Tailwind classes */\n const baseClasses = useMemo(() => {\n const classes = [\n \"relative inline-block transition-all\",\n shadow ? \"shadow-md\" : \"\",\n rounded,\n p ?? \"\",\n m ?? \"\",\n responsive ? \"w-full h-auto\" : \"\",\n className,\n ];\n return classes.join(\" \");\n }, [shadow, rounded, p, m, responsive, className]);\n\n /** Inline styles for custom widths, hover, borders, etc. */\n const inlineStyles: React.CSSProperties = useMemo(\n () => ({\n width: typeof width === \"number\" ? width : undefined,\n height: typeof height === \"number\" ? height : undefined,\n objectFit,\n opacity,\n borderColor,\n borderWidth,\n transition: `all ${transitionDuration} ease`,\n ...style,\n }),\n [width, height, objectFit, opacity, borderColor, borderWidth, transitionDuration, style]\n );\n\n /** Overflow handling */\n const overflowStyles: React.CSSProperties = useMemo(() => {\n switch (overflow) {\n case \"x\":\n return { overflowX: \"hidden\" };\n case \"y\":\n return { overflowY: \"hidden\" };\n default:\n return { overflow };\n }\n }, [overflow]);\n\n /** Hover effects */\n const handleMouseEnter = (e: React.MouseEvent<HTMLImageElement>) => {\n if (hoverOpacity !== undefined) e.currentTarget.style.opacity = hoverOpacity.toString();\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n if (hoverShadow) e.currentTarget.style.boxShadow = \"0 8px 20px rgba(0,0,0,0.3)\";\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = opacity.toString();\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n if (hoverShadow) e.currentTarget.style.boxShadow = \"\";\n };\n\n return (\n <div\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n className={baseClasses}\n style={{ position: \"relative\", cursor: onClick ? \"pointer\" : \"default\", ...overflowStyles }}\n >\n {/* SVG fallback */}\n {svgIcon ? (\n <div className=\"w-full h-full flex items-center justify-center\">{svgIcon}</div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading=\"lazy\"\n style={inlineStyles}\n className=\"block\"\n onLoad={onLoad}\n onError={onError}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n />\n )}\n\n {/* Overlay */}\n {overlayText && (\n <div\n style={{ backgroundColor: overlayColor }}\n className=\"absolute inset-0 flex items-center justify-center text-white font-bold text-center p-4\"\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};","import React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemType {\n text: string;\n icon?: ReactNode;\n onClick?: () => void;\n subItems?: ListItemType[];\n}\n\nexport interface ListProps {\n title?: string;\n titleIcon?: ReactNode;\n items: ListItemType[];\n\n type?: \"unordered\" | \"ordered\" | \"inline\";\n\n // 🔥 THEME CONTROL\n primaryTheme?: boolean; // use CSS var\n primaryColor?: string; // fallback color\n\n className?: string;\n itemClassName?: string;\n titleClassName?: string;\n bulletClassName?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\ninterface ListItemProps extends ListItemType {\n isInline?: boolean;\n isOrdered?: boolean;\n\n primaryTheme?: boolean;\n primaryColor?: string;\n\n itemClassName?: string;\n bulletClassName?: string;\n}\n\nconst ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n isInline,\n isOrdered,\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n itemClassName,\n bulletClassName,\n}) => {\n // ✅ Dynamic style for primary color\n const dynamicStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const bulletStyle: CSSProperties = !primaryTheme\n ? { backgroundColor: primaryColor }\n : {};\n\n return (\n <li className={clsx(!isInline && \"mb-3\")}>\n <div\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"flex items-center gap-2 text-sm text-zinc-800 dark:text-zinc-200 transition-all\",\n onClick &&\n (primaryTheme\n ? \"cursor-pointer hover:text-[var(--primary)]\"\n : \"cursor-pointer\"),\n itemClassName\n )}\n >\n {/* ICON */}\n {icon ? (\n <span className=\"text-base\">{icon}</span>\n ) : (\n !isInline &&\n !isOrdered && (\n <span\n style={!primaryTheme ? bulletStyle : undefined}\n className={clsx(\n \"w-2 h-2 rounded-full\",\n primaryTheme && \"bg-[var(--primary)]\",\n bulletClassName\n )}\n />\n )\n )}\n\n <span>{text}</span>\n </div>\n\n {/* Nested */}\n {subItems && subItems.length > 0 && (\n <ul\n className={clsx(\n \"pl-5 mt-2 space-y-2\",\n isOrdered ? \"list-decimal\" : \"list-none\"\n )}\n >\n {subItems.map((sub, i) => (\n <ListItem\n key={i}\n {...sub}\n isInline={false}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\n/* -------------------------------------------------------------------------- */\n/* 📋 List */\n/* -------------------------------------------------------------------------- */\n\nexport const List: React.FC<ListProps> = ({\n title,\n titleIcon,\n items,\n type = \"unordered\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className,\n itemClassName,\n titleClassName,\n bulletClassName,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div\n className={clsx(\n \"bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl p-4\",\n className\n )}\n >\n {title && (\n <div\n className={clsx(\n \"flex items-center gap-2 mb-3 text-base font-semibold text-zinc-900 dark:text-white\",\n titleClassName\n )}\n >\n {titleIcon && <span>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag\n className={clsx(\n isInline\n ? \"flex flex-wrap gap-4\"\n : isOrdered\n ? \"list-decimal pl-5 space-y-2\"\n : \"list-none p-0\"\n )}\n >\n {items.map((item, i) => (\n <ListItem\n key={i}\n {...item}\n isInline={isInline}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ListTag>\n </div>\n );\n};","import React, { ReactNode, useEffect, useRef, useCallback } from \"react\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n title?: string;\n icon?: ReactNode; // <-- Optional icon in header\n ariaLabel?: string;\n className?: string;\n overlayClassName?: string;\n contentClassName?: string;\n closeButtonClassName?: string;\n disableOverlayClose?: boolean;\n darkMode?: boolean;\n transitionDuration?: number; // in ms\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n title,\n icon,\n ariaLabel,\n className,\n overlayClassName,\n contentClassName,\n closeButtonClassName,\n disableOverlayClose = false,\n darkMode = false,\n transitionDuration = 200,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* Escape key close */\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n if (isOpen) document.addEventListener(\"keydown\", handleEsc);\n return () => document.removeEventListener(\"keydown\", handleEsc);\n }, [isOpen, onClose]);\n\n /* Scroll lock */\n useEffect(() => {\n if (isOpen) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [isOpen]);\n\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n className={clsx(\n \"fixed inset-0 flex items-center justify-center z-50 transition-opacity\",\n darkMode ? \"bg-black/80\" : \"bg-black/60\",\n overlayClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={handleOverlayClick}\n >\n <div\n ref={modalRef}\n className={clsx(\n \"relative w-[90vw] max-w-2xl max-h-[90vh] overflow-y-auto p-6 rounded-lg shadow-lg transition-transform\",\n darkMode ? \"bg-zinc-900 text-white\" : \"bg-white text-gray-900\",\n \"scale-100\",\n contentClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Close Button */}\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n className={clsx(\n \"absolute top-4 right-4 p-1 rounded-full hover:scale-110 transition-transform\",\n darkMode ? \"text-white hover:text-gray-200\" : \"text-gray-700 hover:text-gray-900\",\n closeButtonClassName\n )}\n >\n <X size={24} />\n </button>\n\n {/* Header */}\n {title && (\n <div className=\"flex items-center gap-2 mb-4\">\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\n <h2 className=\"text-xl font-semibold\">{title}</h2>\n </div>\n )}\n\n {/* Content */}\n {children}\n </div>\n </div>\n );\n};","\"use client\";\nimport React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* ---------------------------- Types ---------------------------- */\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\n/* ---------------------------- Table Container ---------------------------- */\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <div\n className={clsx(\"overflow-x-auto rounded-lg shadow-sm border border-gray-200\", className)}\n style={{\n background: \"#ffffff\",\n ...style,\n }}\n >\n <table\n className=\"w-full border-collapse\"\n style={{\n borderSpacing: 0,\n borderRadius: 12,\n overflow: \"hidden\",\n }}\n >\n {children}\n </table>\n </div>\n);\n\n/* ---------------------------- Table Head ---------------------------- */\nexport const THead: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <thead\n className={clsx(\"bg-gray-100 text-gray-900 font-semibold\", className)}\n style={{\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\n/* ---------------------------- Table Body ---------------------------- */\nexport const TBody: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tbody className={clsx(\"bg-white\", className)} style={{ ...style }}>\n {children}\n </tbody>\n);\n\n/* ---------------------------- Table Row ---------------------------- */\ninterface TRowProps extends TableSectionProps {\n onClick?: () => void;\n hoverBgColor?: string;\n darkMode?: boolean;\n}\n\nexport const TRow: React.FC<TRowProps> = ({\n children,\n style,\n className,\n onClick,\n hoverBgColor = \"#f9fafb\",\n darkMode = false,\n}) => (\n <tr\n className={clsx(\n \"transition-colors duration-200 cursor-default\",\n onClick ? \"hover:cursor-pointer\" : \"\",\n className\n )}\n style={{ borderBottom: \"1px solid #e5e7eb\", ...style }}\n onClick={onClick}\n onMouseEnter={(e) => {\n if (!darkMode) e.currentTarget.style.backgroundColor = hoverBgColor;\n else e.currentTarget.style.backgroundColor = \"#1f2937\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {children}\n </tr>\n);\n\n/* ---------------------------- Table Head Cell ---------------------------- */\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={clsx(\"text-left px-4 py-3 text-sm text-gray-700 border-b-2 border-gray-200\", className)}\n style={{ ...style }}\n >\n {children}\n </th>\n);\n\n/* ---------------------------- Table Data Cell ---------------------------- */\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={clsx(\"px-4 py-3 text-sm text-gray-600\", className)}\n style={{ ...style }}\n >\n {children}\n </td>\n);","\"use client\";\nimport React, { useState, CSSProperties, useEffect, useRef } from \"react\";\n\n/** 🧩 Types */\ninterface TabItem {\n label: React.ReactNode;\n content: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActive?: number;\n position?: \"top\" | \"left\" | \"right\";\n variant?: \"solid\" | \"outline\" | \"underline\";\n fullWidth?: boolean;\n gap?: number;\n radius?: number;\n padding?: string;\n transitionDuration?: number;\n elevation?: number;\n bordered?: boolean;\n\n /** 🎨 Colors */\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverColor?: string;\n activeColor?: string;\n borderColor?: string;\n disabledColor?: string;\n\n /** 📱 Responsive */\n responsiveBreakpoint?: number;\n showDrawerLabel?: string;\n drawerIcon?: React.ReactNode;\n\n /** ⚙️ Callbacks */\n onTabChange?: (index: number) => void;\n\n /** 🧱 Classes and Styles */\n className?: string;\n style?: CSSProperties;\n tabClassName?: string;\n contentClassName?: string;\n activeTabStyle?: CSSProperties;\n inactiveTabStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n}\n\n/** 💎 Modern, Fully Customizable Tabs */\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n gap = 8,\n radius = 8,\n padding = \"12px 18px\",\n transitionDuration = 200,\n elevation = 1,\n bordered = false,\n\n primaryColor = \"#2563eb\",\n backgroundColor = \"transparent\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n activeColor = \"#ffffff\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n\n responsiveBreakpoint = 768,\n showDrawerLabel = \"Select Tab\",\n drawerIcon = \"☰\",\n\n onTabChange,\n className = \"\",\n style,\n tabClassName = \"\",\n contentClassName = \"\",\n activeTabStyle,\n inactiveTabStyle,\n contentStyle,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [hovered, setHovered] = useState<number | null>(null);\n const [isMobile, setIsMobile] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** 📱 Responsive detection */\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth <= responsiveBreakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [responsiveBreakpoint]);\n\n /** 🎛 Handle tab change */\n const handleChange = (i: number) => {\n if (tabs[i].disabled) return;\n setActive(i);\n onTabChange?.(i);\n if (isMobile) setDrawerOpen(false);\n };\n\n /** ⚡ Keyboard navigation */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, i: number) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n handleChange((i + 1) % tabs.length);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n handleChange((i - 1 + tabs.length) % tabs.length);\n }\n };\n\n /** 🎨 Base styles */\n const baseTab: CSSProperties = {\n padding,\n borderRadius: radius,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n justifyContent: \"center\",\n fontWeight: 500,\n transition: `all ${transitionDuration}ms ease`,\n background: \"transparent\",\n border: variant === \"outline\" ? `1px solid ${borderColor}` : \"none\",\n borderBottom: variant === \"underline\" ? `2px solid transparent` : undefined,\n color: textColor,\n width: fullWidth ? \"100%\" : \"auto\",\n userSelect: \"none\",\n };\n\n const activeTab: CSSProperties = {\n background: variant === \"solid\" ? primaryColor : \"transparent\",\n color: activeColor,\n borderBottom: variant === \"underline\" ? `2px solid ${primaryColor}` : undefined,\n boxShadow:\n elevation > 0 ? `0 ${elevation}px ${elevation * 4}px ${primaryColor}33` : undefined,\n ...activeTabStyle,\n };\n\n const inactiveTab: CSSProperties = {\n ...(variant === \"outline\" ? { borderColor } : {}),\n ...(variant === \"underline\" ? { borderBottomColor: \"transparent\" } : {}),\n ...inactiveTabStyle,\n };\n\n const hoverTab: CSSProperties = {\n color: hoverColor,\n background:\n variant === \"solid\"\n ? `${primaryColor}11`\n : variant === \"outline\"\n ? `${primaryColor}11`\n : \"transparent\",\n };\n\n const disabledTab: CSSProperties = {\n color: disabledColor,\n cursor: \"not-allowed\",\n opacity: 0.6,\n };\n\n const contentBox: CSSProperties = {\n flexGrow: 1,\n borderTop: bordered && position === \"top\" ? `1px solid ${borderColor}` : undefined,\n borderLeft: bordered && position === \"left\" ? `1px solid ${borderColor}` : undefined,\n borderRight: bordered && position === \"right\" ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n ...contentStyle,\n };\n\n /** 🧱 Layout */\n const isVertical = position === \"left\" || position === \"right\";\n\n return (\n <div\n ref={containerRef}\n className={`modern-tabs ${className}`}\n style={{\n display: \"flex\",\n flexDirection: isVertical ? (position === \"right\" ? \"row-reverse\" : \"row\") : \"column\",\n background: backgroundColor,\n border: bordered ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>\n {`\n @keyframes tab-fade {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .modern-tabs__content {\n animation: tab-fade ${transitionDuration}ms ease;\n }\n `}\n </style>\n\n {/* 📱 Mobile Drawer */}\n {isMobile ? (\n <div style={{ width: \"100%\", padding: 8 }}>\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n style={{\n ...baseTab,\n ...activeTab,\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: 16,\n }}\n >\n {showDrawerLabel}\n <span>{drawerIcon}</span>\n </button>\n {drawerOpen && (\n <div style={{ display: \"flex\", flexDirection: \"column\", marginTop: 8, gap }}>\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap,\n padding: 8,\n minWidth: isVertical ? 200 : undefined,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n role=\"tab\"\n aria-selected={isActive}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n\n {/* 🧠 Tab Content */}\n <div\n className={`modern-tabs__content ${contentClassName}`}\n style={contentBox}\n role=\"tabpanel\"\n >\n {tabs[active]?.content}\n </div>\n </div>\n );\n};","import React, { useMemo } from \"react\";\n\n/** 🎯 Limit to only HTML elements to avoid SVG union explosion */\ntype HTMLElementTag = keyof HTMLElementTagNameMap;\n\ntype TextProps<T extends HTMLElementTag = \"p\"> = {\n as?: T;\n children: React.ReactNode;\n color?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | string;\n weight?: React.CSSProperties[\"fontWeight\"];\n align?: React.CSSProperties[\"textAlign\"];\n transform?: React.CSSProperties[\"textTransform\"];\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n truncate?: boolean;\n selectable?: boolean;\n hoverable?: boolean;\n darkMode?: boolean;\n baseColor?: string;\n className?: string;\n style?: React.CSSProperties;\n onClick?: () => void;\n} & Omit<React.HTMLAttributes<HTMLElementTagNameMap[HTMLElementTag]>, \"color\" | \"style\">;\n\n/** 🎨 Utility: generate lighter/darker shades */\nfunction adjustColor(color: string, amount: number): string {\n return (\n \"#\" +\n color\n .replace(/^#/, \"\")\n .replace(/../g, (hex) =>\n (\n \"0\" +\n Math.min(255, Math.max(0, parseInt(hex, 16) + amount)).toString(16)\n ).slice(-2)\n )\n );\n}\n\n/** 🌈 Default color palettes */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n secondary: \"#64748b\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n secondary: \"#94a3b8\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n },\n};\n\n/** 💬 Main Component (HTML-only tags) */\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n color = \"default\",\n size = \"md\",\n weight = \"normal\",\n align = \"left\",\n transform = \"none\",\n italic = false,\n underline = false,\n strikethrough = false,\n truncate = false,\n selectable = true,\n hoverable = false,\n onClick,\n darkMode = false,\n baseColor,\n className = \"\",\n style = {},\n ...rest\n}: TextProps<T>) {\n // element type as provided (constrained to HTML tags)\n const Element = (as || (\"p\" as T)) as T;\n\n /** 🎨 Dynamic color palette generation */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const lightMode = {\n default: \"#111\",\n primary: baseColor,\n secondary: adjustColor(baseColor, -50),\n success: adjustColor(baseColor, -30),\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n };\n const darkModeTheme = {\n default: \"#f8fafc\",\n primary: adjustColor(baseColor, 80),\n secondary: adjustColor(baseColor, 120),\n success: adjustColor(baseColor, 100),\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n };\n return darkMode ? darkModeTheme : lightMode;\n }, [baseColor, darkMode]);\n\n /** 📏 Font sizes */\n const sizes: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n xl: \"1.5rem\",\n \"2xl\": \"2rem\",\n };\n\n /** 💅 Computed styles */\n const computedStyle: React.CSSProperties = {\n color: (theme as any)[color] || color,\n fontSize: sizes[size] || size,\n fontWeight: weight,\n textAlign: align,\n textTransform: transform,\n fontStyle: italic ? \"italic\" : \"normal\",\n textDecoration: underline ? \"underline\" : strikethrough ? \"line-through\" : \"none\",\n userSelect: selectable ? \"text\" : \"none\",\n overflow: truncate ? \"hidden\" : undefined,\n whiteSpace: truncate ? \"nowrap\" : undefined,\n textOverflow: truncate ? \"ellipsis\" : undefined,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.25s ease-in-out\",\n ...style,\n };\n\n /** 🧠 Hover events (narrow to HTMLElement at runtime) */\n const handleMouseEnter = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"0.8\";\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"1\";\n }\n };\n\n /**\n * Build props object. We cast only once to the correct intrinsic props type.\n * This prevents TypeScript from having to compute giant unions for event types.\n */\n const props = {\n className,\n style: computedStyle,\n onClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...rest,\n } as React.ComponentPropsWithoutRef<T>;\n\n // Use React.createElement to avoid JSX generic complexity\n return React.createElement(Element as any, props, children);\n}\n\nexport default Text;\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ChevronDown","ChevronUp","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","ToastContext","createContext","useToast","context","useContext","ToastProvider","toasts","setToasts","useState","removeToast","useCallback","id","prev","t","addToast","toast","jsx","ToastItem","typeStyles","CheckCircle","AlertCircle","AlertTriangle","onClose","title","description","bg","border","icon","jsxs","Accordion","memo","items","allowMultiple","defaultOpen","borderColor","backgroundColor","textColor","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","borderRadius","contentPadding","fontSize","fontWeight","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","shadow","style","openIndexes","setOpenIndexes","contentRefs","useRef","useEffect","el","toggleItem","i","toCssValue","item","isOpen","e","sizeMap","fontSizeMap","dimensionMap","variantMap","statusPositionMap","Avatar","src","alt","variant","isOnline","isOffline","fallback","ring","ringColor","onClick","statusPosition","statusClassName","statusStyle","imageError","setImageError","clickable","initials","n","statusColor","dimensionPx","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","padding","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","duration","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","percent","skip","seconds","toggleFullscreen","formatTime","time","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","maxWidth","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","r","f","clsx","Badge","text","iconPosition","primaryTheme","rounded","notificationDot","dotColor","count","pulse","sizes","themeClasses","dynamicStyle","Button","iconBefore","iconAfter","loading","loadingText","fullWidth","disabled","sizeClasses","Fragment","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","darkMode","containerRef","focusedIndex","setFocusedIndex","handleChange","updatedValues","v","container","handleKeyDown","currentIndex","option","isChecked","isFocused","RadioGroup","selectedValue","o","SwitchGroup","switchBgColor","paddingMap","Container","center","toResponsiveClass","prefix","bp","val","FlexView","direction","align","justify","wrap","gap","margin","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","DrawerButton","label","Drawer","open","position","showCloseButton","overlayClassName","closeButtonClassName","mounted","setMounted","transform","useMemo","Dropdown","defaultValue","placeholder","success","helperText","LabelIcon","PrefixIcon","containerClassName","labelClassName","triggerClassName","dropdownClassName","optionClassName","useImperativeHandle","setOpen","localValue","setLocalValue","currentValue","selectedOption","handler","handleSelect","theme","dynamicPrimary","dynamicBorder","dynamicBgActive","borderState","paddingLeft","p","opt","Input","suffixIcon","min","max","step","rows","inputRef","visible","setVisible","hasPrefixIcon","hasPrefixText","hasPrefix","getPadding","dynamicFocusStyle","dynamicColorStyle","borderStyle","Image","height","borderWidth","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","m","hoverScale","hoverRotate","hoverOpacity","hoverShadow","overflow","onLoad","onError","baseClasses","inlineStyles","overflowStyles","handleMouseEnter","handleMouseLeave","ListItem","subItems","isInline","isOrdered","itemClassName","bulletClassName","bulletStyle","sub","List","titleIcon","titleClassName","ListTag","Modal","ariaLabel","contentClassName","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","radius","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","activeTabStyle","inactiveTabStyle","contentStyle","active","setActive","hovered","setHovered","isMobile","setIsMobile","drawerOpen","setDrawerOpen","check","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isHovered","isDisabled","adjustColor","amount","hex","defaultColors","Text","as","weight","italic","underline","strikethrough","truncate","selectable","hoverable","baseColor","Element","lightMode","darkModeTheme","computedStyle","target"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,34]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/eye-off.js","../node_modules/lucide-react/dist/esm/icons/eye.js","../node_modules/lucide-react/dist/esm/icons/heart.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/maximize.js","../node_modules/lucide-react/dist/esm/icons/minimize.js","../node_modules/lucide-react/dist/esm/icons/music.js","../node_modules/lucide-react/dist/esm/icons/pause.js","../node_modules/lucide-react/dist/esm/icons/play.js","../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js","../node_modules/lucide-react/dist/esm/icons/shuffle.js","../node_modules/lucide-react/dist/esm/icons/skip-back.js","../node_modules/lucide-react/dist/esm/icons/skip-forward.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/volume-2.js","../node_modules/lucide-react/dist/esm/icons/volume-x.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/basic/Alert.tsx","../src/components/basic/Accordation.tsx","../src/components/basic/Avatar.tsx","../src/components/basic/AudioPlayer.tsx","../src/components/basic/AudioGallery.tsx","../node_modules/clsx/dist/clsx.mjs","../src/components/basic/Badge.tsx","../src/components/basic/Button.tsx","../src/components/basic/CheckboxGroup.tsx","../src/components/basic/RadioGroup.tsx","../src/components/basic/SwitchGroup.tsx","../src/components/basic/Container.tsx","../src/components/basic/FlexView.tsx","../src/components/basic/Stack.tsx","../src/components/basic/GridView.tsx","../src/components/basic/Drawer.tsx","../src/components/basic/DropDown.tsx","../src/components/basic/Input.tsx","../src/components/basic/Image.tsx","../src/components/basic/List.tsx","../src/components/basic/Modal.tsx","../src/components/basic/Table.tsx","../src/components/basic/Tabs.tsx","../src/components/basic/Text.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\"path\", { d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\", key: \"151rxh\" }],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst EyeOff = createLucideIcon(\"eye-off\", __iconNode);\n\nexport { __iconNode, EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\n key: \"mvr1a0\"\n }\n ]\n];\nconst Heart = createLucideIcon(\"heart\", __iconNode);\n\nexport { __iconNode, Heart as default };\n//# sourceMappingURL=heart.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3H5a2 2 0 0 0-2 2v3\", key: \"1dcmit\" }],\n [\"path\", { d: \"M21 8V5a2 2 0 0 0-2-2h-3\", key: \"1e4gt3\" }],\n [\"path\", { d: \"M3 16v3a2 2 0 0 0 2 2h3\", key: \"wsl5sc\" }],\n [\"path\", { d: \"M16 21h3a2 2 0 0 0 2-2v-3\", key: \"18trek\" }]\n];\nconst Maximize = createLucideIcon(\"maximize\", __iconNode);\n\nexport { __iconNode, Maximize as default };\n//# sourceMappingURL=maximize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3v3a2 2 0 0 1-2 2H3\", key: \"hohbtr\" }],\n [\"path\", { d: \"M21 8h-3a2 2 0 0 1-2-2V3\", key: \"5jw1f3\" }],\n [\"path\", { d: \"M3 16h3a2 2 0 0 1 2 2v3\", key: \"198tvr\" }],\n [\"path\", { d: \"M16 21v-3a2 2 0 0 1 2-2h3\", key: \"ph8mxp\" }]\n];\nconst Minimize = createLucideIcon(\"minimize\", __iconNode);\n\nexport { __iconNode, Minimize as default };\n//# sourceMappingURL=minimize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 18V5l12-2v13\", key: \"1jmyc2\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"circle\", { cx: \"18\", cy: \"16\", r: \"3\", key: \"1hluhg\" }]\n];\nconst Music = createLucideIcon(\"music\", __iconNode);\n\nexport { __iconNode, Music as default };\n//# sourceMappingURL=music.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m18 14 4 4-4 4\", key: \"10pe0f\" }],\n [\"path\", { d: \"m18 2 4 4-4 4\", key: \"pucp1d\" }],\n [\"path\", { d: \"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22\", key: \"1ailkh\" }],\n [\"path\", { d: \"M2 6h1.972a4 4 0 0 1 3.6 2.2\", key: \"km57vx\" }],\n [\"path\", { d: \"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45\", key: \"os18l9\" }]\n];\nconst Shuffle = createLucideIcon(\"shuffle\", __iconNode);\n\nexport { __iconNode, Shuffle as default };\n//# sourceMappingURL=shuffle.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z\",\n key: \"15892j\"\n }\n ],\n [\"path\", { d: \"M3 20V4\", key: \"1ptbpl\" }]\n];\nconst SkipBack = createLucideIcon(\"skip-back\", __iconNode);\n\nexport { __iconNode, SkipBack as default };\n//# sourceMappingURL=skip-back.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 4v16\", key: \"7j8fe9\" }],\n [\n \"path\",\n {\n d: \"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z\",\n key: \"zs4d6\"\n }\n ]\n];\nconst SkipForward = createLucideIcon(\"skip-forward\", __iconNode);\n\nexport { __iconNode, SkipForward as default };\n//# sourceMappingURL=skip-forward.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"path\", { d: \"M16 9a5 5 0 0 1 0 6\", key: \"1q6k2b\" }],\n [\"path\", { d: \"M19.364 18.364a9 9 0 0 0 0-12.728\", key: \"ijwkga\" }]\n];\nconst Volume2 = createLucideIcon(\"volume-2\", __iconNode);\n\nexport { __iconNode, Volume2 as default };\n//# sourceMappingURL=volume-2.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"9\", y2: \"15\", key: \"1ewh16\" }],\n [\"line\", { x1: \"16\", x2: \"22\", y1: \"9\", y2: \"15\", key: \"5ykzw1\" }]\n];\nconst VolumeX = createLucideIcon(\"volume-x\", __iconNode);\n\nexport { __iconNode, VolumeX as default };\n//# sourceMappingURL=volume-x.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","\"use client\";\n\nimport React, { createContext, useContext, useState, ReactNode, useCallback } from \"react\";\nimport { X, Info, CheckCircle, AlertCircle, AlertTriangle } from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\n\ninterface Toast {\n id: number;\n title?: string;\n description?: string;\n type?: AlertType;\n duration?: number;\n}\n\ninterface ToastContextProps {\n addToast: (toast: Omit<Toast, \"id\">) => void;\n}\n\nconst ToastContext = createContext<ToastContextProps | undefined>(undefined);\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) throw new Error(\"useToast must be used within ToastProvider\");\n return context;\n};\n\nexport const ToastProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const removeToast = useCallback((id: number) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const addToast = useCallback((toast: Omit<Toast, \"id\">) => {\n const id = Date.now() + Math.random();\n setToasts((prev) => [...prev, { ...toast, id }]);\n if (toast.duration !== 0) {\n setTimeout(() => removeToast(id), toast.duration ?? 4000);\n }\n }, [removeToast]);\n\n return (\n <ToastContext.Provider value={{ addToast }}>\n {children}\n {/* Toast container */}\n <div className=\"fixed top-5 right-5 flex flex-col gap-3 z-50\">\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onClose={() => removeToast(toast.id)} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n};\n\nconst typeStyles: Record<AlertType, { bg: string; border: string; icon: ReactNode }> = {\n success: { bg: \"bg-green-50\", border: \"border-green-400\", icon: <CheckCircle size={20} className=\"text-green-600\" /> },\n error: { bg: \"bg-red-50\", border: \"border-red-400\", icon: <AlertCircle size={20} className=\"text-red-600\" /> },\n warning: { bg: \"bg-yellow-50\", border: \"border-yellow-400\", icon: <AlertTriangle size={20} className=\"text-yellow-600\" /> },\n info: { bg: \"bg-blue-50\", border: \"border-blue-400\", icon: <Info size={20} className=\"text-blue-600\" /> },\n};\n\nconst ToastItem: React.FC<{ toast: Toast; onClose: () => void }> = ({ toast, onClose }) => {\n const { title, description, type = \"info\" } = toast;\n const { bg, border, icon } = typeStyles[type];\n\n return (\n <div\n className={`flex items-start gap-3 p-4 border-l-4 rounded shadow ${bg} ${border} animate-slide-in-right`}\n role=\"alert\"\n >\n <div>{icon}</div>\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"font-semibold text-sm mb-1\">{title}</div>}\n {description && <div className=\"text-sm text-gray-700\">{description}</div>}\n </div>\n <button onClick={onClose} className=\"text-gray-500 hover:text-gray-700\">\n <X size={16} />\n </button>\n </div>\n );\n};\n\n// Add this animation to your global CSS (Tailwind + @layer utilities)\n// @keyframes slide-in-right {\n// 0% { transform: translateX(100%); opacity: 0; }\n// 100% { transform: translateX(0); opacity: 1; }\n// }\n// .animate-slide-in-right { animation: slide-in-right 0.3s ease forwards; }","\"use client\";\nimport React, {\n useState,\n useRef,\n useEffect,\n memo,\n ReactNode,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\n\nexport interface AccordionItem {\n title: string | ReactNode;\n content: ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n allowMultiple?: boolean;\n defaultOpen?: number[];\n\n /** Appearance */\n borderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverBgColor?: string;\n hoverTextColor?: string;\n contentBgColor?: string;\n contentTextColor?: string;\n\n /** Layout & spacing */\n paddingY?: string | number;\n paddingX?: string | number;\n marginY?: string | number;\n borderRadius?: string | number;\n contentPadding?: string | number;\n\n /** Typography */\n fontSize?: string | number;\n fontWeight?: string | number;\n contentFontSize?: string | number;\n contentFontWeight?: string | number;\n\n /** Icon */\n iconOpen?: ReactNode;\n iconClose?: ReactNode;\n iconSize?: string | number;\n\n /** Motion */\n transitionDuration?: string;\n shadow?: string;\n\n /** Class overrides */\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Accordion: React.FC<AccordionProps> = memo(\n ({\n items,\n allowMultiple = false,\n defaultOpen = [],\n borderColor = \"#e5e7eb\",\n backgroundColor = \"#fff\",\n textColor = \"#111827\",\n hoverBgColor = \"#f3f4f6\",\n hoverTextColor = \"#111827\",\n contentBgColor = \"#fff\",\n contentTextColor = \"#374151\",\n paddingY = \"1rem\",\n paddingX = \"1rem\",\n marginY = \"0.5rem\",\n borderRadius = \"0.5rem\",\n contentPadding = \"1rem\",\n fontSize = \"1rem\",\n fontWeight = 600,\n contentFontSize = \"0.95rem\",\n contentFontWeight = 400,\n iconOpen,\n iconClose,\n iconSize = \"1.25rem\",\n transitionDuration = \"300ms\",\n shadow = \"0 1px 4px rgba(0,0,0,0.08)\",\n className = \"\",\n style,\n }) => {\n const [openIndexes, setOpenIndexes] = useState<number[]>(defaultOpen);\n const contentRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n useEffect(() => {\n contentRefs.current.forEach((el, index) => {\n if (el) {\n el.style.maxHeight = openIndexes.includes(index)\n ? `${el.scrollHeight}px`\n : \"0px\";\n }\n });\n }, [openIndexes]);\n\n const toggleItem = (index: number) => {\n setOpenIndexes((prev) =>\n allowMultiple\n ? prev.includes(index)\n ? prev.filter((i) => i !== index)\n : [...prev, index]\n : prev.includes(index)\n ? []\n : [index],\n );\n };\n\n // Helper to normalize CSS values (number -> px)\n const toCssValue = (value: string | number | undefined) =>\n value !== undefined\n ? typeof value === \"number\"\n ? `${value}px`\n : value\n : undefined;\n\n return (\n <div\n className={`space-y-2 ${className}`}\n style={{ width: \"100%\", ...style }}\n >\n {items.map((item, index) => {\n const isOpen = openIndexes.includes(index);\n\n return (\n <div\n key={index}\n className=\"border shadow-sm overflow-hidden transition-all duration-300\"\n style={{\n borderColor,\n borderRadius: toCssValue(borderRadius),\n margin: `${toCssValue(marginY)} 0`,\n boxShadow: shadow,\n }}\n >\n {/* Header */}\n <button\n onClick={() => toggleItem(index)}\n className=\"w-full flex justify-between items-center transition-colors duration-300\"\n style={{\n backgroundColor,\n color: textColor,\n padding: `${toCssValue(paddingY)} ${toCssValue(paddingX)}`,\n fontWeight,\n fontSize: toCssValue(fontSize),\n cursor: \"pointer\",\n border: \"none\",\n outline: \"none\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = hoverBgColor;\n e.currentTarget.style.color = hoverTextColor;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = backgroundColor;\n e.currentTarget.style.color = textColor;\n }}\n >\n <span>{item.title}</span>\n <span style={{ fontSize: toCssValue(iconSize) }}>\n {isOpen\n ? iconOpen || <ChevronUp size={16} />\n : iconClose || <ChevronDown size={16} />}\n </span>\n </button>\n\n {/* Content */}\n <div\n ref={(el) => {\n contentRefs.current[index] = el;\n }}\n className=\"overflow-hidden transition-all duration-300\"\n style={{\n maxHeight: isOpen\n ? `${contentRefs.current[index]?.scrollHeight ?? 0}px`\n : \"0px\",\n transition: `max-height ${transitionDuration} ease-in-out`,\n }}\n >\n <div\n style={{\n borderTop: `1px solid ${borderColor}`,\n backgroundColor: contentBgColor,\n color: contentTextColor,\n padding: toCssValue(contentPadding),\n fontSize: toCssValue(contentFontSize),\n fontWeight: contentFontWeight,\n }}\n >\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n\nAccordion.displayName = \"Accordion\";\n","\"use client\";\n\nimport React, { useState, CSSProperties } from \"react\";\nimport { User } from \"lucide-react\";\n\ntype AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"responsive\";\ntype AvatarVariant = \"circular\" | \"rounded\" | \"square\";\ntype StatusPosition = \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n\ninterface AvatarProps {\n src?: string;\n alt?: string;\n size?: AvatarSize;\n variant?: AvatarVariant;\n isOnline?: boolean;\n isOffline?: boolean;\n ring?: boolean;\n ringColor?: string;\n fallback?: string;\n onClick?: () => void;\n statusPosition?: StatusPosition;\n className?: string;\n statusClassName?: string;\n style?: CSSProperties;\n statusStyle?: CSSProperties;\n}\n\n// --- Base maps ---\nconst sizeMap: Record<Exclude<AvatarSize, \"responsive\">, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 64,\n};\n\nconst fontSizeMap: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"text-[10px]\",\n sm: \"text-[12px]\",\n md: \"text-[14px]\",\n lg: \"text-[16px]\",\n xl: \"text-[18px]\",\n \"2xl\": \"text-[20px]\",\n};\n\nconst dimensionMap: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"w-6 h-6\",\n sm: \"w-8 h-8\",\n md: \"w-10 h-10\",\n lg: \"w-12 h-12\",\n xl: \"w-14 h-14\",\n \"2xl\": \"w-16 h-16\",\n};\n\nconst variantMap: Record<AvatarVariant, string> = {\n circular: \"rounded-full\",\n rounded: \"rounded-lg\",\n square: \"rounded-none\",\n};\n\nconst statusPositionMap: Record<StatusPosition, string> = {\n \"top-left\": \"top-0 left-0\",\n \"top-right\": \"top-0 right-0\",\n \"bottom-left\": \"bottom-0 left-0\",\n \"bottom-right\": \"bottom-0 right-0\",\n};\n\n// --- Avatar Component ---\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"User avatar\",\n size = \"md\",\n variant = \"circular\",\n isOnline = false,\n isOffline = false,\n fallback,\n ring = false,\n ringColor = \"#3b82f6\",\n onClick,\n statusPosition = \"bottom-right\",\n className = \"\",\n statusClassName = \"\",\n style,\n statusStyle,\n}) => {\n const [imageError, setImageError] = useState(false);\n const clickable = !!onClick;\n\n const initials =\n fallback ||\n alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const statusColor = isOnline ? \"bg-green-500\" : isOffline ? \"bg-gray-400\" : \"\";\n\n // Width/height for inline styles\n const dimensionPx = sizeMap[size as Exclude<AvatarSize, \"responsive\">];\n\n return (\n <div\n role={clickable ? \"button\" : \"img\"}\n tabIndex={clickable ? 0 : -1}\n aria-label={alt}\n onClick={onClick}\n className={`relative inline-flex items-center justify-center overflow-hidden ${dimensionMap[size as Exclude<AvatarSize, \"responsive\">]} ${variantMap[variant]} transition-all duration-200 ${\n clickable ? \"cursor-pointer hover:scale-105\" : \"\"\n } ${ring ? \"ring-2\" : \"\"} ${className}`}\n style={{\n ...style,\n ...(ring ? { boxShadow: `0 0 0 2px ${ringColor}` } : {}),\n }}\n onKeyDown={(e) => {\n if (clickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {src && !imageError ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n className={`w-full h-full object-cover ${variantMap[variant]} transition-opacity duration-300`}\n />\n ) : (\n <div\n className={`w-full h-full flex items-center justify-center bg-gradient-to-tr from-purple-500 to-blue-500 text-white font-semibold ${fontSizeMap[size as Exclude<AvatarSize, \"responsive\">]} ${variantMap[variant]}`}\n >\n {initials || <User className=\"text-white\" />}\n </div>\n )}\n\n {(isOnline || isOffline) && (\n <span\n aria-label={isOnline ? \"Online\" : \"Offline\"}\n title={isOnline ? \"Online\" : \"Offline\"}\n className={`absolute ${statusPositionMap[statusPosition]} ${statusColor} border-2 border-white rounded-full shadow-sm ${statusClassName}`}\n style={{\n width: dimensionPx / 3,\n height: dimensionPx / 3,\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};","\"use client\";\n\nimport React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n} from \"lucide-react\";\n\ninterface AudioPlayerProps {\n src: string;\n thumbnail?: string;\n autoPlay?: boolean;\n loop?: boolean;\n backgroundColor?: string;\n primaryColor?: string;\n secondaryColor?: string;\n borderRadius?: string;\n className?: string;\n padding?: string;\n width?: string;\n}\n\nexport const AudioPlayer: React.FC<AudioPlayerProps> = ({\n src,\n thumbnail,\n autoPlay = false,\n loop = false,\n backgroundColor = \"#0a0a0a\",\n primaryColor = \"#10b981\",\n secondaryColor = \"#ffffff\",\n borderRadius = \"12px\",\n padding = \"12px\",\n width = \"100%\",\n className,\n}) => {\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const [isPlaying, setIsPlaying] = useState(autoPlay);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.volume = volume;\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.loop = isLooping;\n }, [isLooping]);\n\n const togglePlayPause = () => {\n if (!audioRef.current) return;\n isPlaying ? audioRef.current.pause() : audioRef.current.play();\n setIsPlaying(!isPlaying);\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n setDuration(audioRef.current.duration);\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n audioRef.current.currentTime = percent * duration;\n setCurrentTime(percent * duration);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current) audioRef.current.currentTime += seconds;\n };\n\n const toggleFullscreen = () => {\n if (!playerRef.current) return;\n isFullscreen\n ? document.exitFullscreen?.()\n : playerRef.current.requestFullscreen?.();\n setIsFullscreen(!isFullscreen);\n };\n\n const formatTime = (time: number) => {\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n return (\n <div\n ref={playerRef}\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n width,\n backgroundColor,\n borderRadius,\n padding,\n boxSizing: \"border-box\",\n color: secondaryColor,\n boxShadow: \"0 6px 16px rgba(0,0,0,0.2)\",\n flexWrap: \"wrap\",\n }}\n >\n <audio\n ref={audioRef}\n src={src}\n autoPlay={autoPlay}\n loop={loop}\n onTimeUpdate={handleTimeUpdate}\n onLoadedMetadata={handleTimeUpdate}\n />\n\n {/* Thumbnail / Avatar */}\n {thumbnail && (\n <img\n src={thumbnail}\n alt=\"Audio Thumbnail\"\n style={{\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n />\n )}\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n flex: 1,\n minWidth: \"0\",\n }}\n >\n <button\n onClick={() => skip(-10)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: secondaryColor,\n cursor: \"pointer\",\n }}\n aria-label=\"Skip Back 10s\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={togglePlayPause}\n style={{\n background: primaryColor,\n borderRadius: \"50%\",\n padding: \"10px\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={20} /> : <Play size={20} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: secondaryColor,\n cursor: \"pointer\",\n }}\n aria-label=\"Skip Forward 10s\"\n >\n <SkipForward size={20} />\n </button>\n\n {/* Seek Bar */}\n <div\n onClick={handleSeek}\n style={{\n flex: 1,\n height: \"6px\",\n background: \"#444\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"3px\",\n }}\n />\n </div>\n\n {/* Time */}\n <div style={{ minWidth: \"70px\", textAlign: \"right\", fontSize: \"0.8rem\" }}>\n {formatTime(currentTime)} / {formatTime(duration)}\n </div>\n\n {/* Extra Controls */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: isLooping ? primaryColor : secondaryColor,\n }}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={18} />\n </button>\n\n <button\n onClick={() => setVolume(volume > 0 ? 0 : 0.7)}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: secondaryColor,\n }}\n aria-label=\"Toggle Mute\"\n >\n {volume > 0 ? <Volume2 size={18} /> : <VolumeX size={18} />}\n </button>\n\n <button\n onClick={toggleFullscreen}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: secondaryColor,\n }}\n aria-label=\"Toggle Fullscreen\"\n >\n {isFullscreen ? <Minimize size={18} /> : <Maximize size={18} />}\n </button>\n </div>\n </div>\n </div>\n );\n};","import React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n Download,\n Heart,\n Share2,\n Music,\n Shuffle,\n} from \"lucide-react\";\n\ninterface AudioTrack {\n src: string;\n title: string;\n artist?: string;\n thumbnail?: string;\n duration?: string;\n}\n\ninterface AudioGalleryProps {\n tracks?: AudioTrack[];\n className?: string;\n galleryTitle?: string;\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n secondaryColor?: string;\n autoplay?: boolean;\n borderColor?: string;\n border?: number;\n maxWidth?: number;\n loop?: boolean;\n}\n\nconst defaultTracks: AudioTrack[] = [\n {\n src: \"https://www.soundjay.com/misc/sounds/bell-ringing-05.wav\",\n title: \"Morning Bell\",\n artist: \"Nature Sounds\",\n duration: \"0:15\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-4.wav\",\n title: \"Digital Click\",\n artist: \"Tech Audio\",\n duration: \"0:05\",\n thumbnail:\n \"https://images.unsplash.com/photo-1514525253161-7a46d19cd819?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-10.wav\",\n title: \"Soft Chime\",\n artist: \"Ambient Studio\",\n duration: \"0:08\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n];\n\nexport function AudioGallery({\n tracks = defaultTracks,\n className = \"\",\n galleryTitle = \"Audio Gallery\",\n primaryColor = \"#8b5cf6\",\n backgroundColor = \"#0f0f23\",\n textColor = \"#e4e4e7\",\n secondaryColor = \"#1a1a2e\",\n border = 0,\n borderColor,\n maxWidth = 420,\n autoplay = false,\n loop = false,\n}: AudioGalleryProps) {\n const [currentTrackIndex, setCurrentTrackIndex] = useState<number | null>(\n null\n );\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n const [isShuffle, setIsShuffle] = useState(false);\n const [isLiked, setIsLiked] = useState(false);\n const [showVolumeSlider, setShowVolumeSlider] = useState(false);\n\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const volumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.volume = volume;\n }\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.loop = isLooping;\n }\n }, [isLooping]);\n\n useEffect(() => {\n if (currentTrackIndex === null && audioRef.current) {\n audioRef.current.pause();\n setIsPlaying(false);\n setCurrentTime(0);\n setDuration(0);\n }\n }, [currentTrackIndex]);\n\n const playPauseTrack = (index: number) => {\n if (currentTrackIndex === index) {\n if (!audioRef.current) return;\n if (audioRef.current.paused) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n } else {\n audioRef.current.pause();\n setIsPlaying(false);\n }\n } else {\n setCurrentTrackIndex(index);\n setTimeout(() => {\n if (audioRef.current) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }, 100);\n }\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n if (audioRef.current.duration) {\n setDuration(audioRef.current.duration);\n }\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current || !duration) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const seekTime = percent * duration;\n audioRef.current.currentTime = seekTime;\n setCurrentTime(seekTime);\n };\n\n const handleVolumeChange = (e: React.MouseEvent<HTMLDivElement>) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const newVolume = Math.max(0, Math.min(1, percent));\n setVolume(newVolume);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current && duration) {\n let newTime = audioRef.current.currentTime + seconds;\n newTime = Math.min(Math.max(newTime, 0), duration);\n audioRef.current.currentTime = newTime;\n setCurrentTime(newTime);\n }\n };\n\n const nextTrack = () => {\n if (currentTrackIndex === null) return;\n let nextIndex;\n if (isShuffle) {\n nextIndex = Math.floor(Math.random() * tracks.length);\n } else {\n nextIndex = (currentTrackIndex + 1) % tracks.length;\n }\n playPauseTrack(nextIndex);\n };\n\n const prevTrack = () => {\n if (currentTrackIndex === null) return;\n let prevIndex;\n if (isShuffle) {\n prevIndex = Math.floor(Math.random() * tracks.length);\n } else {\n prevIndex = (currentTrackIndex - 1 + tracks.length) % tracks.length;\n }\n playPauseTrack(prevIndex);\n };\n\n const toggleMute = () => {\n setVolume((prev) => (prev > 0 ? 0 : 0.7));\n };\n\n const showVolume = () => {\n setShowVolumeSlider(true);\n if (volumeTimeoutRef.current) {\n clearTimeout(volumeTimeoutRef.current);\n }\n volumeTimeoutRef.current = setTimeout(() => {\n setShowVolumeSlider(false);\n }, 3000);\n };\n\n const formatTime = (time: number) => {\n if (isNaN(time)) return \"0:00\";\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n const currentTrack =\n currentTrackIndex !== null ? tracks[currentTrackIndex] : null;\n\n return (\n <div\n className={className}\n style={{\n maxWidth: `${maxWidth}px`,\n margin: \"20px auto\",\n background: `linear-gradient(145deg, ${backgroundColor}, ${secondaryColor})`,\n color: textColor,\n borderRadius: \"24px\",\n padding: \"24px 16px\",\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n userSelect: \"none\",\n backdropFilter: \"blur(20px)\",\n border: `${border}px solid ${borderColor}40`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"12px\",\n background: `linear-gradient(135deg, ${primaryColor}, ${secondaryColor})`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Music size={20} color=\"white\" />\n </div>\n <div>\n <h2\n style={{\n margin: 0,\n fontSize: \"1.25rem\",\n fontWeight: \"700\",\n color: primaryColor, // fallback for browsers without WebkitTextFillColor\n }}\n >\n {galleryTitle}\n </h2>\n <p style={{ margin: 0, fontSize: \"0.875rem\", opacity: 0.7 }}>\n {tracks.length} tracks\n </p>\n </div>\n </div>\n\n <button\n onClick={() => setIsShuffle(!isShuffle)}\n style={{\n background: isShuffle ? primaryColor : \"transparent\",\n border: \"none\",\n borderRadius: \"12px\",\n padding: \"8px\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n opacity: isShuffle ? 1 : 0.6,\n }}\n aria-label=\"Toggle Shuffle\"\n >\n <Shuffle size={18} color={isShuffle ? \"white\" : textColor} />\n </button>\n </div>\n\n {/* Track List */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n marginBottom: \"20px\",\n maxHeight: \"240px\",\n overflowY: \"auto\",\n paddingRight: \"4px\",\n }}\n >\n {tracks.map((track, index) => {\n const isActive = currentTrackIndex === index;\n const isCurrentlyPlaying = isActive && isPlaying;\n\n return (\n <div\n key={index}\n onClick={() => playPauseTrack(index)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"12px 16px\",\n borderRadius: \"16px\",\n background: isActive\n ? `linear-gradient(135deg, ${primaryColor}20, ${primaryColor}10)`\n : \"rgba(255,255,255,0.05)\",\n border: isActive\n ? `1px solid ${primaryColor}40`\n : \"1px solid transparent\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n backdropFilter: isActive ? `blur(20px)` : \"none\",\n }}\n >\n {/* Thumbnail */}\n <div\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"12px\",\n background: track.thumbnail\n ? `url(${track.thumbnail}) center/cover`\n : primaryColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"12px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {!track.thumbnail && <Music size={20} color=\"white\" />}\n {isCurrentlyPlaying && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n width: \"16px\",\n height: \"16px\",\n display: \"flex\",\n gap: \"2px\",\n alignItems: \"end\",\n justifyContent: \"center\",\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n style={{\n width: \"3px\",\n background: \"white\",\n borderRadius: \"2px\",\n animation: `equalizer 1s ease-in-out infinite ${\n i * 0.2\n }s`,\n height: \"12px\",\n }}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Track Info */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontWeight: \"600\",\n fontSize: \"0.95rem\",\n color: isActive ? primaryColor : textColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.title}\n </div>\n {track.artist && (\n <div\n style={{\n fontSize: \"0.8rem\",\n opacity: 0.7,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.artist}\n </div>\n )}\n </div>\n\n {/* Duration & Play Button */}\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n >\n {track.duration && (\n <span style={{ fontSize: \"0.8rem\", opacity: 0.6 }}>\n {track.duration}\n </span>\n )}\n <div\n style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"8px\",\n background: isActive\n ? primaryColor\n : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n }}\n >\n {isCurrentlyPlaying ? (\n <Pause size={16} color=\"white\" />\n ) : (\n <Play size={16} color=\"white\" />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Current Track Display & Controls */}\n {currentTrack && (\n <div\n ref={playerRef}\n style={{\n background: `linear-gradient(135deg, ${secondaryColor}, ${backgroundColor})`,\n borderRadius: \"20px\",\n padding: \"20px\",\n border: `1px solid ${primaryColor}40`,\n backdropFilter: \"blur(20px)\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {/* Background Blur Effect */}\n {currentTrack.thumbnail && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundImage: `url(${currentTrack.thumbnail})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n filter: \"blur(60px) opacity(0.1)\",\n transform: \"scale(1.1)\",\n }}\n />\n )}\n\n {/* Content */}\n <div style={{ position: \"relative\", zIndex: 1 }}>\n {/* Track Info */}\n <div style={{ textAlign: \"center\", marginBottom: \"20px\" }}>\n <h3\n style={{\n margin: \"0 0 4px 0\",\n fontSize: \"1.1rem\",\n fontWeight: \"700\",\n color: primaryColor,\n }}\n >\n {currentTrack.title}\n </h3>\n {currentTrack.artist && (\n <p style={{ margin: 0, opacity: 0.7, fontSize: \"0.9rem\" }}>\n {currentTrack.artist}\n </p>\n )}\n </div>\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"20px\",\n marginBottom: \"20px\",\n }}\n >\n <button\n onClick={prevTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Previous Track\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={() => skip(-10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip back 10 seconds\"\n >\n <SkipBack size={16} />\n <span style={{ fontSize: \"0.7rem\", marginLeft: \"2px\" }}>\n 10\n </span>\n </button>\n\n <button\n onClick={() => {\n if (!audioRef.current) return;\n if (isPlaying) {\n audioRef.current.pause();\n setIsPlaying(false);\n } else {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }}\n style={{\n ...controlButtonStyle(\"#fff\", primaryColor),\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n boxShadow: `0 8px 25px ${primaryColor}40`,\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={24} /> : <Play size={24} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip forward 10 seconds\"\n >\n <span style={{ fontSize: \"0.7rem\", marginRight: \"2px\" }}>\n 10\n </span>\n <SkipForward size={16} />\n </button>\n\n <button\n onClick={nextTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Next Track\"\n >\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Progress Bar */}\n <div style={{ marginBottom: \"16px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"8px\",\n fontSize: \"0.8rem\",\n opacity: 0.7,\n }}\n >\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n\n <div\n onClick={handleSeek}\n style={{\n height: \"6px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: `linear-gradient(90deg, ${primaryColor}, #ec4899)`,\n borderRadius: \"3px\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n right: \"-6px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: \"12px\",\n height: \"12px\",\n background: primaryColor,\n borderRadius: \"50%\",\n boxShadow: `0 2px 8px ${primaryColor}60`,\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Additional Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLiked(!isLiked)}\n style={controlButtonStyle(\n isLiked ? \"#ec4899\" : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Like\"\n >\n <Heart size={16} fill={isLiked ? \"#ec4899\" : \"none\"} />\n </button>\n\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={controlButtonStyle(\n isLooping ? primaryColor : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={16} />\n </button>\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n position: \"relative\",\n }}\n >\n {showVolumeSlider && (\n <div\n onClick={handleVolumeChange}\n style={{\n width: \"80px\",\n height: \"4px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"2px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${volume * 100}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"2px\",\n }}\n />\n </div>\n )}\n\n <button\n onClick={toggleMute}\n onMouseEnter={showVolume}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label={volume > 0 ? \"Mute\" : \"Unmute\"}\n >\n {volume > 0 ? <Volume2 size={16} /> : <VolumeX size={16} />}\n </button>\n </div>\n </div>\n </div>\n\n <audio\n ref={audioRef}\n src={currentTrack.src}\n autoPlay={autoplay}\n loop={isLooping}\n onTimeUpdate={handleTimeUpdate}\n onEnded={() => {\n setIsPlaying(false);\n if (!isLooping) {\n nextTrack();\n }\n }}\n onLoadedMetadata={handleTimeUpdate}\n preload=\"metadata\"\n style={{ display: \"none\" }}\n />\n </div>\n )}\n\n <style>{`\n @keyframes equalizer {\n 0%, 100% { height: 4px; }\n 50% { height: 12px; }\n }\n \n /* Custom Scrollbar */\n div::-webkit-scrollbar {\n width: 4px;\n }\n \n div::-webkit-scrollbar-track {\n background: rgba(255,255,255,0.1);\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb {\n background: ${primaryColor};\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb:hover {\n background: ${primaryColor}dd;\n }\n `}</style>\n </div>\n );\n}\n\nfunction controlButtonStyle(\n color: string,\n backgroundColor: string\n): React.CSSProperties {\n return {\n border: \"none\",\n backgroundColor,\n color,\n cursor: \"pointer\",\n padding: \"10px\",\n borderRadius: \"12px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n backdropFilter: \"blur(10px)\",\n };\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport React, { memo } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface BadgeProps {\n text?: string;\n\n icon?: React.ReactNode;\n iconPosition?: \"left\" | \"right\";\n\n /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n /** Shape */\n rounded?: boolean;\n\n /** Notification */\n notificationDot?: boolean;\n dotColor?: string;\n count?: number | string;\n pulse?: boolean;\n\n className?: string;\n onClick?: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🏷 Badge */\n/* -------------------------------------------------------------------------- */\n\nexport const Badge: React.FC<BadgeProps> = memo(\n ({\n text,\n icon,\n iconPosition = \"left\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n rounded = true,\n\n notificationDot = false,\n dotColor = \"#ef4444\",\n count,\n pulse = false,\n\n className,\n onClick,\n }) => {\n /** 📏 Sizes */\n const sizes = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-3 py-1 text-xs\",\n lg: \"px-4 py-1.5 text-sm\",\n };\n\n /** 🎨 Theme */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white\"\n : \"\";\n\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <span\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"relative inline-flex items-center justify-center gap-1 font-medium\",\n \"transition-all duration-200 select-none\",\n rounded ? \"rounded-full\" : \"rounded-md\",\n sizes[size],\n themeClasses,\n onClick && \"cursor-pointer hover:opacity-90\",\n className\n )}\n >\n {/* 🔴 Dot */}\n {notificationDot && (\n <span\n style={!primaryTheme ? { backgroundColor: dotColor } : undefined}\n className={clsx(\n \"absolute -top-1 -right-1 w-2 h-2 rounded-full\",\n pulse && \"animate-ping\",\n primaryTheme ? \"bg-red-500\" : \"\"\n )}\n />\n )}\n\n {/* 🔢 Count */}\n {count !== undefined && (\n <span\n style={!primaryTheme ? { backgroundColor: dotColor } : undefined}\n className={clsx(\n \"absolute -top-2 -right-2 min-w-[18px] h-[18px] px-1 text-[10px]\",\n \"flex items-center justify-center rounded-full text-white\",\n primaryTheme ? \"bg-red-500\" : \"\"\n )}\n >\n {count}\n </span>\n )}\n\n {/* Icon Left */}\n {icon && iconPosition === \"left\" && (\n <span className=\"flex items-center\">{icon}</span>\n )}\n\n {/* Text */}\n {text && <span>{text}</span>}\n\n {/* Icon Right */}\n {icon && iconPosition === \"right\" && (\n <span className=\"flex items-center\">{icon}</span>\n )}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n\n iconBefore?: React.ReactNode;\n iconAfter?: React.ReactNode;\n\n loading?: boolean;\n loadingText?: string;\n\n fullWidth?: boolean;\n\n /** 🎨 Variants (shadcn style) */\n variant?: \"default\" | \"outline\" | \"ghost\";\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🔘 Button */\n/* -------------------------------------------------------------------------- */\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n iconBefore,\n iconAfter,\n loading = false,\n loadingText = \"Loading...\",\n fullWidth = false,\n\n variant = \"default\",\n size = \"md\",\n\n disabled,\n className,\n type = \"button\", // ✅ important fix\n ...props\n },\n ref\n ) => {\n const isDisabled = disabled || loading;\n\n /** 📏 Sizes */\n const sizeClasses = {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-sm\",\n lg: \"h-12 px-6 text-base\",\n };\n\n /** 🎨 Variants */\n const variantClasses = {\n default:\n \"bg-blue-600 text-white hover:bg-blue-600/90\",\n outline:\n \"border border-zinc-300 text-zinc-900 hover:bg-zinc-100 dark:border-zinc-700 dark:text-white dark:hover:bg-zinc-800\",\n ghost:\n \"text-zinc-900 hover:bg-zinc-100 dark:text-white dark:hover:bg-zinc-800\",\n };\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={isDisabled}\n className={clsx(\n \"inline-flex items-center justify-center gap-2 rounded-lg font-medium transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-blue-500/30\",\n \"active:scale-[0.98]\",\n sizeClasses[size],\n variantClasses[variant],\n fullWidth && \"w-full\",\n isDisabled && \"opacity-60 cursor-not-allowed pointer-events-none\",\n className\n )}\n {...props}\n >\n {loading ? (\n <>\n <span className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\" />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && <span className=\"flex\">{iconBefore}</span>}\n <span>{children}</span>\n {iconAfter && <span className=\"flex\">{iconAfter}</span>}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface CheckboxGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n customIcon?: (checked: boolean) => React.ReactNode;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n customIcon,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation (space/enter toggle)\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n if (focusedIndex === null) return;\n\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n setFocusedIndex((currentIndex + 1) % options.length);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n setFocusedIndex((currentIndex - 1 + options.length) % options.length);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Custom or default icon */}\n {customIcon ? (\n customIcon(isChecked)\n ) : (\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: 4,\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ width: iconSize * 0.6, height: iconSize * 0.6 }}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n name?: string;\n options: Option[];\n selectedValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n selectedValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n const currentIndex = focusedIndex ?? options.findIndex((o) => o.value === selectedValue) ?? 0;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n onChange && onChange(options[nextIndex].value);\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n onChange && onChange(options[prevIndex].value);\n setFocusedIndex(prevIndex);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValue, onChange, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"radiogroup\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n tabIndex={0} // allow keyboard focus\n >\n {options.map((option, index) => {\n const isChecked = selectedValue === option.value;\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none gap-2\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\",\n )}\n style={{ ...labelStyle }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => onChange && onChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n <span\n className={clsx(\"inline-flex items-center justify-center rounded-full transition-all\")}\n style={{\n width: iconSize,\n height: iconSize,\n border: `2px solid ${isChecked ? iconCheckedBgColor : iconUncheckedBorderColor}`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.2s ease\",\n }}\n >\n {isChecked && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: darkMode ? \"#fff\" : \"#fff\",\n }}\n />\n )}\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface SwitchGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const SwitchGroup: React.FC<SwitchGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n switchBgColor = \"#d1d5db\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (focusedIndex === null) return;\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n setFocusedIndex(prevIndex);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Switch */}\n <span\n className={clsx(\"relative inline-flex rounded-full transition-colors\")}\n style={{\n width: iconSize * 2,\n height: iconSize * 1.1,\n backgroundColor: isChecked\n ? iconCheckedBgColor\n : switchBgColor,\n transition: \"background-color 0.25s ease\",\n borderRadius: 9999,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: isChecked\n ? `calc(100% - ${iconSize - 4}px - 2px)`\n : \"2px\",\n transform: \"translateY(-50%)\",\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.3)\",\n transition: \"left 0.25s ease\",\n }}\n />\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n size?: ContainerSize;\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n center?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nconst sizeMap: Record<ContainerSize, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n \"2xl\": \"max-w-2xl\",\n full: \"w-full\",\n};\n\nconst paddingMap: Record<NonNullable<ContainerProps[\"padding\"]>, string> = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n/**\n * 🧱 Container Component\n * Fully responsive, Tailwind-first layout wrapper\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = \"md\",\n center = true,\n className = \"\",\n children,\n}) => {\n const classes = clsx(\n \"w-full box-border\",\n sizeMap[size],\n paddingMap[padding],\n center && \"mx-auto\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\nexport default Container;","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexViewProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n margin?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const FlexView: React.FC<FlexViewProps> = ({\n direction = { sm: \"column\", md: \"row\" },\n align = \"center\",\n justify = \"between\",\n wrap = \"wrap\",\n gap,\n padding,\n margin,\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction),\n toResponsiveClass(\"items\", align),\n toResponsiveClass(\"justify\", justify),\n toResponsiveClass(\"flex\", wrap), // wrap classes: flex-wrap, flex-nowrap, flex-wrap-reverse\n gap ? toResponsiveClass(\"gap\", gap) : \"\",\n padding ? toResponsiveClass(\"p\", padding) : \"\",\n margin ? toResponsiveClass(\"m\", margin) : \"\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface StackProps {\n direction?: ResponsiveValue<\"vertical\" | \"horizontal\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n align?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Convert responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\" },\n gap = 4,\n align = \"center\",\n justify = \"start\",\n wrap = \"nowrap\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction), // flex-col or flex-row\n toResponsiveClass(\"gap\", gap),\n align !== \"stretch\" ? `items-${align}` : \"items-stretch\",\n justify !== \"start\" ? `justify-${justify}` : \"justify-start\",\n wrap !== \"nowrap\" ? `flex-${wrap}` : \"flex-nowrap\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\n/** Shortcuts for horizontal & vertical stacks */\nexport const HStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"horizontal\" {...props} />\n);\n\nexport const VStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"vertical\" {...props} />\n);","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\nexport interface GridProps {\n columns?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6>;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 4,\n padding = 4,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"grid\",\n toResponsiveClass(\"grid-cols\", columns),\n toResponsiveClass(\"gap\", gap),\n toResponsiveClass(\"p\", padding),\n alignItems !== \"stretch\" ? `items-${alignItems}` : \"items-stretch\",\n justifyItems !== \"stretch\" ? `justify-items-${justifyItems}` : \"justify-items-stretch\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","\"use client\";\nimport React, { useState, useEffect, useMemo, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\ninterface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n className = \"\",\n}) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`inline-flex items-center justify-center gap-2 px-4 py-2 rounded-md font-medium text-white bg-blue-600 hover:bg-blue-700 transition-colors focus:outline-none focus:ring-2 focus:ring-blue-400 ${className}`}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n );\n};\n\n/* ---------------- 🧱 Drawer ---------------- */\ninterface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n size?: string; // width for left/right, height for top/bottom\n className?: string;\n overlayClassName?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeButtonClassName?: string;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n size = \"320px\",\n children,\n showCloseButton = true,\n className = \"\",\n overlayClassName = \"\",\n closeButtonClassName = \"\",\n}) => {\n const [mounted, setMounted] = useState(open);\n\n useEffect(() => {\n if (open) setMounted(true);\n else setTimeout(() => setMounted(false), 300); // smooth exit\n }, [open]);\n\n const transform = useMemo(() => {\n if (open) return \"translate(0,0)\";\n switch (position) {\n case \"left\":\n return \"translateX(-100%)\";\n case \"right\":\n return \"translateX(100%)\";\n case \"top\":\n return \"translateY(-100%)\";\n case \"bottom\":\n return \"translateY(100%)\";\n default:\n return \"translate(0,0)\";\n }\n }, [open, position]);\n\n if (!mounted && !open) return null;\n\n return (\n <>\n {/* Overlay */}\n <div\n onClick={onClose}\n className={`fixed inset-0 bg-black/50 transition-opacity ${\n open ? \"opacity-100\" : \"opacity-0\"\n } ${overlayClassName}`}\n />\n\n {/* Drawer Panel */}\n <div\n className={`fixed bg-white shadow-lg flex flex-col transition-transform duration-300 ${className}`}\n style={{\n width: position === \"left\" || position === \"right\" ? size : \"100%\",\n height: position === \"top\" || position === \"bottom\" ? size : \"100%\",\n top: position === \"bottom\" || position === \"top\" ? (position === \"bottom\" ? \"auto\" : 0) : 0,\n bottom: position === \"bottom\" ? 0 : \"auto\",\n left: position === \"left\" ? 0 : position === \"right\" ? \"auto\" : 0,\n right: position === \"right\" ? 0 : position === \"left\" ? \"auto\" : 0,\n transform,\n }}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n className={`absolute top-4 right-4 p-1 rounded-full hover:bg-gray-200 transition-colors ${closeButtonClassName}`}\n aria-label=\"Close drawer\"\n >\n <X size={20} />\n </button>\n )}\n\n <div className=\"flex-1 overflow-auto p-4\">{children}</div>\n </div>\n </>\n );\n};","\"use client\";\n\nimport React, {\n useEffect,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n label?: string;\n name?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n options?: SelectOption[];\n\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n labelIcon?: React.ElementType;\n prefixIcon?: React.ElementType;\n\n variant?: \"dark\" | \"light\";\n\n /** 🔥 THEME SYSTEM */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n containerClassName?: string;\n labelClassName?: string;\n triggerClassName?: string;\n dropdownClassName?: string;\n optionClassName?: string;\n\n className?: string;\n}\n\nexport const Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (props, ref) => {\n const {\n label,\n name = \"\",\n value,\n defaultValue,\n onChange,\n options = [],\n placeholder = \"Select an option\",\n required,\n disabled,\n error,\n success,\n helperText,\n\n labelIcon: LabelIcon,\n prefixIcon: PrefixIcon,\n\n variant = \"dark\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n containerClassName = \"\",\n labelClassName = \"\",\n triggerClassName = \"\",\n dropdownClassName = \"\",\n optionClassName = \"\",\n\n className = \"\",\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => containerRef.current!);\n\n const [open, setOpen] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n\n const currentValue = value !== undefined ? value : localValue;\n const selectedOption = options.find((o) => o.value === currentValue);\n\n /** Close outside */\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const handleSelect = (option: SelectOption) => {\n setLocalValue(option.value);\n onChange?.(name, option.value);\n setOpen(false);\n };\n\n /** 🎨 Theme base */\n const theme = {\n dark: {\n bg: \"bg-zinc-900\",\n text: \"text-white\",\n border: \"border-zinc-800\",\n dropdown: \"bg-black border-zinc-800\",\n option: \"text-zinc-300 hover:bg-zinc-800\",\n },\n light: {\n bg: \"bg-white\",\n text: \"text-gray-900\",\n border: \"border-gray-300\",\n dropdown: \"bg-white border-gray-200\",\n option: \"text-gray-700 hover:bg-gray-100\",\n },\n }[variant];\n\n /** 🎨 Dynamic styles */\n const dynamicPrimary: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const dynamicBorder: CSSProperties = !primaryTheme\n ? { borderColor: primaryColor }\n : {};\n\n const dynamicBgActive: CSSProperties = !primaryTheme\n ? { backgroundColor: `${primaryColor}20` } // light tint\n : {};\n\n /** Border state */\n const borderState = error\n ? \"border-rose-500\"\n : success\n ? \"border-emerald-500\"\n : theme.border;\n\n const paddingLeft = PrefixIcon ? \"pl-12 pr-10\" : \"px-4\";\n\n return (\n <div\n ref={containerRef}\n className={`w-full space-y-1 ${containerClassName} ${className}`}\n >\n {/* Label */}\n {label && (\n <label\n className={`flex items-center gap-2 text-[13px] font-medium ${labelClassName}`}\n >\n {LabelIcon && (\n <LabelIcon\n className={\n primaryTheme ? \"w-4 h-4 text-[var(--primary)]\" : \"w-4 h-4\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-rose-500\">*</span>}\n </label>\n )}\n\n <div className=\"relative group\">\n {/* Prefix Icon */}\n {PrefixIcon && (\n <div className=\"absolute left-4 top-1/2 -translate-y-1/2 z-10\">\n <PrefixIcon\n className={\n primaryTheme\n ? \"w-4 h-4 text-zinc-500 group-focus-within:text-[var(--primary)]\"\n : \"w-4 h-4 text-zinc-500\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n </div>\n )}\n\n {/* Trigger */}\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setOpen((p) => !p)}\n style={!primaryTheme ? dynamicBorder : undefined}\n className={`\n w-full py-2.5 rounded-lg text-left text-sm\n border transition-all duration-200\n ${theme.bg} ${theme.text}\n ${paddingLeft}\n ${borderState}\n focus:ring-2\n ${\n primaryTheme\n ? \"focus:ring-[var(--primary)]/30 focus:border-[var(--primary)]\"\n : \"\"\n }\n disabled:opacity-50 disabled:cursor-not-allowed\n ${triggerClassName}\n `}\n >\n <span className={selectedOption ? theme.text : \"text-zinc-500\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n\n <ChevronDown\n className={`absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 transition-transform ${\n open ? \"rotate-180\" : \"\"\n } text-zinc-400`}\n />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div\n className={`\n absolute z-50 mt-2 w-full rounded-xl border shadow-xl overflow-hidden\n ${theme.dropdown}\n ${dropdownClassName}\n `}\n >\n <ul className=\"max-h-60 overflow-y-auto\">\n {options.map((opt) => {\n const isActive = currentValue === opt.value;\n\n return (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n style={\n !primaryTheme && isActive ? dynamicBgActive : undefined\n }\n className={`\n px-4 py-3 cursor-pointer text-sm flex items-center gap-2\n ${\n isActive\n ? primaryTheme\n ? \"bg-[var(--primary)]/15 text-[var(--primary)]\"\n : \"\"\n : theme.option\n }\n ${optionClassName}\n `}\n >\n {opt.icon && <span>{opt.icon}</span>}\n {opt.label}\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n\n {/* Helper */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-rose-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";","\"use client\";\n\nimport React, {\n forwardRef,\n useState,\n useImperativeHandle,\n useRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputFieldProps {\n label?: string;\n name?: string;\n type?: \"text\" | \"password\" | \"email\" | \"number\" | \"textarea\";\n placeholder?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n /** Icons */\n icon?: React.ElementType;\n prefix?: string;\n prefixIcon?: React.ElementType;\n suffixIcon?: React.ReactNode;\n\n /** Number props */\n min?: number;\n max?: number;\n step?: number;\n\n /** Textarea */\n rows?: number;\n\n /** 🔥 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** Styling */\n className?: string;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputFieldProps\n>((props, ref) => {\n const {\n label,\n name = \"\",\n type = \"text\",\n placeholder = \"\",\n value,\n defaultValue,\n onChange,\n required,\n disabled,\n readOnly,\n\n error,\n success,\n helperText,\n\n icon: LabelIcon,\n prefix,\n prefixIcon: PrefixIcon,\n suffixIcon,\n\n min,\n max,\n step,\n\n rows = 4,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className = \"\",\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n useImperativeHandle(ref, () => inputRef.current!);\n\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n const hasPrefixIcon = Boolean(PrefixIcon);\n const hasPrefixText = Boolean(prefix);\n const hasPrefix = hasPrefixIcon || hasPrefixText;\n\n const currentValue = value !== undefined ? value : localValue;\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const val = e.target.value;\n setLocalValue(val);\n onChange?.(name, val);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === \"number\" && e.key === \"-\") e.preventDefault();\n };\n\n /** Padding logic */\n const getPadding = () => {\n if (!hasPrefix) return \"px-4\";\n if (hasPrefixIcon && hasPrefixText) return \"pl-20 pr-4\";\n if (hasPrefixText) return \"pl-14 pr-4\";\n if (hasPrefixIcon) return \"pl-10 pr-4\";\n return \"px-4\";\n };\n\n /** 🔥 Theme Styles */\n const dynamicFocusStyle: CSSProperties = !primaryTheme\n ? {\n borderColor: primaryColor,\n boxShadow: `0 0 0 1px ${primaryColor}`,\n }\n : {};\n\n const dynamicColorStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n /** Border */\n const borderStyle = error\n ? \"border-red-500\"\n : success\n ? \"border-emerald-500\"\n : \"border-zinc-300 dark:border-zinc-800\";\n\n return (\n <div className={`w-full space-y-1 ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"flex items-center gap-2 text-[12px] font-medium text-gray-700 dark:text-zinc-100\">\n {LabelIcon && (\n <LabelIcon\n size={16}\n className={primaryTheme ? \"text-[var(--primary)]\" : \"\"}\n style={!primaryTheme ? dynamicColorStyle : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-red-500\">*</span>}\n </label>\n )}\n\n {/* Input Wrapper */}\n <div className=\"relative\">\n {/* Prefix */}\n {hasPrefix && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3 gap-2 text-sm text-zinc-400 pointer-events-none\">\n {PrefixIcon && <PrefixIcon size={14} />}\n {hasPrefixText && (\n <>\n <span className=\"font-medium text-zinc-600 dark:text-zinc-200\">\n {prefix}\n </span>\n <span className=\"h-4 w-px bg-zinc-300 dark:bg-zinc-700\" />\n </>\n )}\n </div>\n )}\n\n {/* Input / Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n min={type === \"number\" ? min ?? 0 : undefined}\n max={max}\n step={step}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n disabled:opacity-50 disabled:cursor-not-allowed\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n )}\n\n {/* Password toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\"\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Suffix */}\n {suffixIcon && type !== \"password\" && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\">\n {suffixIcon}\n </span>\n )}\n </div>\n\n {/* Helper / Error */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-red-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {error && typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n});","\"use client\";\n\nimport React, { useMemo } from \"react\";\n\ninterface ImageProps {\n src?: string;\n alt?: string;\n title?: string;\n /** Tailwind width/height classes or numbers */\n width?: string | number;\n height?: string | number;\n /** Tailwind rounded classes */\n rounded?: string;\n borderColor?: string;\n borderWidth?: string | number;\n shadow?: boolean;\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n responsive?: boolean;\n p?: string;\n m?: string;\n /** Hover Effects */\n hoverScale?: number;\n hoverRotate?: number;\n hoverOpacity?: number;\n hoverShadow?: boolean;\n transitionDuration?: string;\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Custom Tailwind classes */\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"w-full\",\n height = \"h-auto\",\n rounded = \"rounded-lg\",\n borderColor = \"transparent\",\n borderWidth = \"0\",\n shadow = false,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n p,\n m,\n hoverScale = 1.05,\n hoverRotate = 0,\n hoverOpacity,\n hoverShadow = false,\n transitionDuration = \"300ms\",\n overflow = \"hidden\",\n className = \"\",\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n /** Base Tailwind classes */\n const baseClasses = useMemo(() => {\n const classes = [\n \"relative inline-block transition-all\",\n shadow ? \"shadow-md\" : \"\",\n rounded,\n p ?? \"\",\n m ?? \"\",\n responsive ? \"w-full h-auto\" : \"\",\n className,\n ];\n return classes.join(\" \");\n }, [shadow, rounded, p, m, responsive, className]);\n\n /** Inline styles for custom widths, hover, borders, etc. */\n const inlineStyles: React.CSSProperties = useMemo(\n () => ({\n width: typeof width === \"number\" ? width : undefined,\n height: typeof height === \"number\" ? height : undefined,\n objectFit,\n opacity,\n borderColor,\n borderWidth,\n transition: `all ${transitionDuration} ease`,\n ...style,\n }),\n [width, height, objectFit, opacity, borderColor, borderWidth, transitionDuration, style]\n );\n\n /** Overflow handling */\n const overflowStyles: React.CSSProperties = useMemo(() => {\n switch (overflow) {\n case \"x\":\n return { overflowX: \"hidden\" };\n case \"y\":\n return { overflowY: \"hidden\" };\n default:\n return { overflow };\n }\n }, [overflow]);\n\n /** Hover effects */\n const handleMouseEnter = (e: React.MouseEvent<HTMLImageElement>) => {\n if (hoverOpacity !== undefined) e.currentTarget.style.opacity = hoverOpacity.toString();\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n if (hoverShadow) e.currentTarget.style.boxShadow = \"0 8px 20px rgba(0,0,0,0.3)\";\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = opacity.toString();\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n if (hoverShadow) e.currentTarget.style.boxShadow = \"\";\n };\n\n return (\n <div\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n className={baseClasses}\n style={{ position: \"relative\", cursor: onClick ? \"pointer\" : \"default\", ...overflowStyles }}\n >\n {/* SVG fallback */}\n {svgIcon ? (\n <div className=\"w-full h-full flex items-center justify-center\">{svgIcon}</div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading=\"lazy\"\n style={inlineStyles}\n className=\"block\"\n onLoad={onLoad}\n onError={onError}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n />\n )}\n\n {/* Overlay */}\n {overlayText && (\n <div\n style={{ backgroundColor: overlayColor }}\n className=\"absolute inset-0 flex items-center justify-center text-white font-bold text-center p-4\"\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};","import React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemType {\n text: string;\n icon?: ReactNode;\n onClick?: () => void;\n subItems?: ListItemType[];\n}\n\nexport interface ListProps {\n title?: string;\n titleIcon?: ReactNode;\n items: ListItemType[];\n\n type?: \"unordered\" | \"ordered\" | \"inline\";\n\n // 🔥 THEME CONTROL\n primaryTheme?: boolean; // use CSS var\n primaryColor?: string; // fallback color\n\n className?: string;\n itemClassName?: string;\n titleClassName?: string;\n bulletClassName?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\ninterface ListItemProps extends ListItemType {\n isInline?: boolean;\n isOrdered?: boolean;\n\n primaryTheme?: boolean;\n primaryColor?: string;\n\n itemClassName?: string;\n bulletClassName?: string;\n}\n\nconst ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n isInline,\n isOrdered,\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n itemClassName,\n bulletClassName,\n}) => {\n // ✅ Dynamic style for primary color\n const dynamicStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const bulletStyle: CSSProperties = !primaryTheme\n ? { backgroundColor: primaryColor }\n : {};\n\n return (\n <li className={clsx(!isInline && \"mb-3\")}>\n <div\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"flex items-center gap-2 text-sm text-zinc-800 dark:text-zinc-200 transition-all\",\n onClick &&\n (primaryTheme\n ? \"cursor-pointer hover:text-[var(--primary)]\"\n : \"cursor-pointer\"),\n itemClassName\n )}\n >\n {/* ICON */}\n {icon ? (\n <span className=\"text-base\">{icon}</span>\n ) : (\n !isInline &&\n !isOrdered && (\n <span\n style={!primaryTheme ? bulletStyle : undefined}\n className={clsx(\n \"w-2 h-2 rounded-full\",\n primaryTheme && \"bg-[var(--primary)]\",\n bulletClassName\n )}\n />\n )\n )}\n\n <span>{text}</span>\n </div>\n\n {/* Nested */}\n {subItems && subItems.length > 0 && (\n <ul\n className={clsx(\n \"pl-5 mt-2 space-y-2\",\n isOrdered ? \"list-decimal\" : \"list-none\"\n )}\n >\n {subItems.map((sub, i) => (\n <ListItem\n key={i}\n {...sub}\n isInline={false}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\n/* -------------------------------------------------------------------------- */\n/* 📋 List */\n/* -------------------------------------------------------------------------- */\n\nexport const List: React.FC<ListProps> = ({\n title,\n titleIcon,\n items,\n type = \"unordered\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className,\n itemClassName,\n titleClassName,\n bulletClassName,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div\n className={clsx(\n \"bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl p-4\",\n className\n )}\n >\n {title && (\n <div\n className={clsx(\n \"flex items-center gap-2 mb-3 text-base font-semibold text-zinc-900 dark:text-white\",\n titleClassName\n )}\n >\n {titleIcon && <span>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag\n className={clsx(\n isInline\n ? \"flex flex-wrap gap-4\"\n : isOrdered\n ? \"list-decimal pl-5 space-y-2\"\n : \"list-none p-0\"\n )}\n >\n {items.map((item, i) => (\n <ListItem\n key={i}\n {...item}\n isInline={isInline}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ListTag>\n </div>\n );\n};","import React, { ReactNode, useEffect, useRef, useCallback } from \"react\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n title?: string;\n icon?: ReactNode; // <-- Optional icon in header\n ariaLabel?: string;\n className?: string;\n overlayClassName?: string;\n contentClassName?: string;\n closeButtonClassName?: string;\n disableOverlayClose?: boolean;\n darkMode?: boolean;\n transitionDuration?: number; // in ms\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n title,\n icon,\n ariaLabel,\n className,\n overlayClassName,\n contentClassName,\n closeButtonClassName,\n disableOverlayClose = false,\n darkMode = false,\n transitionDuration = 200,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* Escape key close */\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n if (isOpen) document.addEventListener(\"keydown\", handleEsc);\n return () => document.removeEventListener(\"keydown\", handleEsc);\n }, [isOpen, onClose]);\n\n /* Scroll lock */\n useEffect(() => {\n if (isOpen) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [isOpen]);\n\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n className={clsx(\n \"fixed inset-0 flex items-center justify-center z-50 transition-opacity\",\n darkMode ? \"bg-black/80\" : \"bg-black/60\",\n overlayClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={handleOverlayClick}\n >\n <div\n ref={modalRef}\n className={clsx(\n \"relative w-[90vw] max-w-2xl max-h-[90vh] overflow-y-auto p-6 rounded-lg shadow-lg transition-transform\",\n darkMode ? \"bg-zinc-900 text-white\" : \"bg-white text-gray-900\",\n \"scale-100\",\n contentClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Close Button */}\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n className={clsx(\n \"absolute top-4 right-4 p-1 rounded-full hover:scale-110 transition-transform\",\n darkMode ? \"text-white hover:text-gray-200\" : \"text-gray-700 hover:text-gray-900\",\n closeButtonClassName\n )}\n >\n <X size={24} />\n </button>\n\n {/* Header */}\n {title && (\n <div className=\"flex items-center gap-2 mb-4\">\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\n <h2 className=\"text-xl font-semibold\">{title}</h2>\n </div>\n )}\n\n {/* Content */}\n {children}\n </div>\n </div>\n );\n};","\"use client\";\nimport React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* ---------------------------- Types ---------------------------- */\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\n/* ---------------------------- Table Container ---------------------------- */\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <div\n className={clsx(\"overflow-x-auto rounded-lg shadow-sm border border-gray-200\", className)}\n style={{\n background: \"#ffffff\",\n ...style,\n }}\n >\n <table\n className=\"w-full border-collapse\"\n style={{\n borderSpacing: 0,\n borderRadius: 12,\n overflow: \"hidden\",\n }}\n >\n {children}\n </table>\n </div>\n);\n\n/* ---------------------------- Table Head ---------------------------- */\nexport const THead: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <thead\n className={clsx(\"bg-gray-100 text-gray-900 font-semibold\", className)}\n style={{\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\n/* ---------------------------- Table Body ---------------------------- */\nexport const TBody: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tbody className={clsx(\"bg-white\", className)} style={{ ...style }}>\n {children}\n </tbody>\n);\n\n/* ---------------------------- Table Row ---------------------------- */\ninterface TRowProps extends TableSectionProps {\n onClick?: () => void;\n hoverBgColor?: string;\n darkMode?: boolean;\n}\n\nexport const TRow: React.FC<TRowProps> = ({\n children,\n style,\n className,\n onClick,\n hoverBgColor = \"#f9fafb\",\n darkMode = false,\n}) => (\n <tr\n className={clsx(\n \"transition-colors duration-200 cursor-default\",\n onClick ? \"hover:cursor-pointer\" : \"\",\n className\n )}\n style={{ borderBottom: \"1px solid #e5e7eb\", ...style }}\n onClick={onClick}\n onMouseEnter={(e) => {\n if (!darkMode) e.currentTarget.style.backgroundColor = hoverBgColor;\n else e.currentTarget.style.backgroundColor = \"#1f2937\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {children}\n </tr>\n);\n\n/* ---------------------------- Table Head Cell ---------------------------- */\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={clsx(\"text-left px-4 py-3 text-sm text-gray-700 border-b-2 border-gray-200\", className)}\n style={{ ...style }}\n >\n {children}\n </th>\n);\n\n/* ---------------------------- Table Data Cell ---------------------------- */\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={clsx(\"px-4 py-3 text-sm text-gray-600\", className)}\n style={{ ...style }}\n >\n {children}\n </td>\n);","\"use client\";\nimport React, { useState, CSSProperties, useEffect, useRef } from \"react\";\n\n/** 🧩 Types */\ninterface TabItem {\n label: React.ReactNode;\n content: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActive?: number;\n position?: \"top\" | \"left\" | \"right\";\n variant?: \"solid\" | \"outline\" | \"underline\";\n fullWidth?: boolean;\n gap?: number;\n radius?: number;\n padding?: string;\n transitionDuration?: number;\n elevation?: number;\n bordered?: boolean;\n\n /** 🎨 Colors */\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverColor?: string;\n activeColor?: string;\n borderColor?: string;\n disabledColor?: string;\n\n /** 📱 Responsive */\n responsiveBreakpoint?: number;\n showDrawerLabel?: string;\n drawerIcon?: React.ReactNode;\n\n /** ⚙️ Callbacks */\n onTabChange?: (index: number) => void;\n\n /** 🧱 Classes and Styles */\n className?: string;\n style?: CSSProperties;\n tabClassName?: string;\n contentClassName?: string;\n activeTabStyle?: CSSProperties;\n inactiveTabStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n}\n\n/** 💎 Modern, Fully Customizable Tabs */\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n gap = 8,\n radius = 8,\n padding = \"12px 18px\",\n transitionDuration = 200,\n elevation = 1,\n bordered = false,\n\n primaryColor = \"#2563eb\",\n backgroundColor = \"transparent\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n activeColor = \"#ffffff\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n\n responsiveBreakpoint = 768,\n showDrawerLabel = \"Select Tab\",\n drawerIcon = \"☰\",\n\n onTabChange,\n className = \"\",\n style,\n tabClassName = \"\",\n contentClassName = \"\",\n activeTabStyle,\n inactiveTabStyle,\n contentStyle,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [hovered, setHovered] = useState<number | null>(null);\n const [isMobile, setIsMobile] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** 📱 Responsive detection */\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth <= responsiveBreakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [responsiveBreakpoint]);\n\n /** 🎛 Handle tab change */\n const handleChange = (i: number) => {\n if (tabs[i].disabled) return;\n setActive(i);\n onTabChange?.(i);\n if (isMobile) setDrawerOpen(false);\n };\n\n /** ⚡ Keyboard navigation */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, i: number) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n handleChange((i + 1) % tabs.length);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n handleChange((i - 1 + tabs.length) % tabs.length);\n }\n };\n\n /** 🎨 Base styles */\n const baseTab: CSSProperties = {\n padding,\n borderRadius: radius,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n justifyContent: \"center\",\n fontWeight: 500,\n transition: `all ${transitionDuration}ms ease`,\n background: \"transparent\",\n border: variant === \"outline\" ? `1px solid ${borderColor}` : \"none\",\n borderBottom: variant === \"underline\" ? `2px solid transparent` : undefined,\n color: textColor,\n width: fullWidth ? \"100%\" : \"auto\",\n userSelect: \"none\",\n };\n\n const activeTab: CSSProperties = {\n background: variant === \"solid\" ? primaryColor : \"transparent\",\n color: activeColor,\n borderBottom: variant === \"underline\" ? `2px solid ${primaryColor}` : undefined,\n boxShadow:\n elevation > 0 ? `0 ${elevation}px ${elevation * 4}px ${primaryColor}33` : undefined,\n ...activeTabStyle,\n };\n\n const inactiveTab: CSSProperties = {\n ...(variant === \"outline\" ? { borderColor } : {}),\n ...(variant === \"underline\" ? { borderBottomColor: \"transparent\" } : {}),\n ...inactiveTabStyle,\n };\n\n const hoverTab: CSSProperties = {\n color: hoverColor,\n background:\n variant === \"solid\"\n ? `${primaryColor}11`\n : variant === \"outline\"\n ? `${primaryColor}11`\n : \"transparent\",\n };\n\n const disabledTab: CSSProperties = {\n color: disabledColor,\n cursor: \"not-allowed\",\n opacity: 0.6,\n };\n\n const contentBox: CSSProperties = {\n flexGrow: 1,\n borderTop: bordered && position === \"top\" ? `1px solid ${borderColor}` : undefined,\n borderLeft: bordered && position === \"left\" ? `1px solid ${borderColor}` : undefined,\n borderRight: bordered && position === \"right\" ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n ...contentStyle,\n };\n\n /** 🧱 Layout */\n const isVertical = position === \"left\" || position === \"right\";\n\n return (\n <div\n ref={containerRef}\n className={`modern-tabs ${className}`}\n style={{\n display: \"flex\",\n flexDirection: isVertical ? (position === \"right\" ? \"row-reverse\" : \"row\") : \"column\",\n background: backgroundColor,\n border: bordered ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>\n {`\n @keyframes tab-fade {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .modern-tabs__content {\n animation: tab-fade ${transitionDuration}ms ease;\n }\n `}\n </style>\n\n {/* 📱 Mobile Drawer */}\n {isMobile ? (\n <div style={{ width: \"100%\", padding: 8 }}>\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n style={{\n ...baseTab,\n ...activeTab,\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: 16,\n }}\n >\n {showDrawerLabel}\n <span>{drawerIcon}</span>\n </button>\n {drawerOpen && (\n <div style={{ display: \"flex\", flexDirection: \"column\", marginTop: 8, gap }}>\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap,\n padding: 8,\n minWidth: isVertical ? 200 : undefined,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n role=\"tab\"\n aria-selected={isActive}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n\n {/* 🧠 Tab Content */}\n <div\n className={`modern-tabs__content ${contentClassName}`}\n style={contentBox}\n role=\"tabpanel\"\n >\n {tabs[active]?.content}\n </div>\n </div>\n );\n};","\"use client\";\n\nimport React from \"react\";\nimport clsx from \"clsx\";\n\ntype HTMLElementTag = keyof HTMLElementTagNameMap;\n\ntype TextProps<T extends HTMLElementTag = \"p\"> = {\n as?: T;\n children: React.ReactNode;\n\n /** Minimal styling */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | string;\n weight?: React.CSSProperties[\"fontWeight\"];\n align?: React.CSSProperties[\"textAlign\"];\n\n truncate?: boolean;\n\n className?: string;\n style?: React.CSSProperties;\n} & Omit<\n React.HTMLAttributes<HTMLElementTagNameMap[T]>,\n \"style\"\n>;\n\nconst sizeClasses: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n};\n\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n size = \"md\",\n weight = 400,\n align = \"left\",\n truncate = false,\n className,\n style,\n ...rest\n}: TextProps<T>) {\n const Element = (as || \"p\") as T;\n\n return React.createElement(\n Element,\n {\n className: clsx(\n \"text-inherit\", // ✅ inherits parent color\n sizeClasses[size] || \"\",\n truncate && \"truncate\",\n className\n ),\n style: {\n fontWeight: weight,\n textAlign: align,\n ...style,\n },\n ...rest,\n },\n children\n );\n}\n\nexport default Text;"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ChevronDown","ChevronUp","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","ToastContext","createContext","useToast","context","useContext","ToastProvider","toasts","setToasts","useState","removeToast","useCallback","id","prev","t","addToast","toast","jsx","ToastItem","typeStyles","CheckCircle","AlertCircle","AlertTriangle","onClose","title","description","bg","border","icon","jsxs","Accordion","memo","items","allowMultiple","defaultOpen","borderColor","backgroundColor","textColor","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","borderRadius","contentPadding","fontSize","fontWeight","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","shadow","style","openIndexes","setOpenIndexes","contentRefs","useRef","useEffect","el","toggleItem","i","toCssValue","item","isOpen","e","sizeMap","fontSizeMap","dimensionMap","variantMap","statusPositionMap","Avatar","src","alt","variant","isOnline","isOffline","fallback","ring","ringColor","onClick","statusPosition","statusClassName","statusStyle","imageError","setImageError","clickable","initials","n","statusColor","dimensionPx","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","padding","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","duration","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","percent","skip","seconds","toggleFullscreen","formatTime","time","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","maxWidth","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","r","f","clsx","Badge","text","iconPosition","primaryTheme","rounded","notificationDot","dotColor","count","pulse","sizes","themeClasses","dynamicStyle","Button","iconBefore","iconAfter","loading","loadingText","fullWidth","disabled","isDisabled","sizeClasses","variantClasses","Fragment","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","darkMode","containerRef","focusedIndex","setFocusedIndex","handleChange","updatedValues","v","container","handleKeyDown","currentIndex","option","isChecked","isFocused","RadioGroup","selectedValue","o","SwitchGroup","switchBgColor","paddingMap","Container","center","toResponsiveClass","prefix","bp","val","FlexView","direction","align","justify","wrap","gap","margin","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","DrawerButton","label","Drawer","open","position","showCloseButton","overlayClassName","closeButtonClassName","mounted","setMounted","transform","useMemo","Dropdown","defaultValue","placeholder","success","helperText","LabelIcon","PrefixIcon","containerClassName","labelClassName","triggerClassName","dropdownClassName","optionClassName","useImperativeHandle","setOpen","localValue","setLocalValue","currentValue","selectedOption","handler","handleSelect","theme","dynamicPrimary","dynamicBorder","dynamicBgActive","borderState","paddingLeft","p","opt","Input","suffixIcon","min","max","step","rows","inputRef","visible","setVisible","hasPrefixIcon","hasPrefixText","hasPrefix","getPadding","dynamicFocusStyle","dynamicColorStyle","borderStyle","Image","height","borderWidth","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","m","hoverScale","hoverRotate","hoverOpacity","hoverShadow","overflow","onLoad","onError","baseClasses","inlineStyles","overflowStyles","handleMouseEnter","handleMouseLeave","ListItem","subItems","isInline","isOrdered","itemClassName","bulletClassName","bulletStyle","sub","List","titleIcon","titleClassName","ListTag","Modal","ariaLabel","contentClassName","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","radius","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","activeTabStyle","inactiveTabStyle","contentStyle","active","setActive","hovered","setHovered","isMobile","setIsMobile","drawerOpen","setDrawerOpen","check","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isHovered","Text","as","weight","truncate","Element"],"mappings":";;;;;;;;6CAWA,IAAIA,EAAqB,OAAO,IAAI,4BAA4B,EAC9DC,EAAsB,OAAO,IAAI,gBAAgB,EACnD,SAASC,EAAQC,EAAMC,EAAQC,EAAU,CACvC,IAAIC,EAAM,KAGV,GAFWD,IAAX,SAAwBC,EAAM,GAAKD,GACxBD,EAAO,MAAlB,SAA0BE,EAAM,GAAKF,EAAO,KACxC,QAASA,EAAQ,CACnBC,EAAW,CAAA,EACX,QAASE,KAAYH,EACTG,IAAV,QAAuBF,EAASE,CAAQ,EAAIH,EAAOG,CAAQ,EACjE,MAASF,EAAWD,EAClB,OAAAA,EAASC,EAAS,IACX,CACL,SAAUL,EACV,KAAMG,EACN,IAAKG,EACL,IAAgBF,IAAX,OAAoBA,EAAS,KAClC,MAAOC,EAEX,CACA,OAAAG,GAAA,SAAmBP,EACnBO,GAAA,IAAcN,EACdM,GAAA,KAAeN;;;;;;;;yCCtBE,QAAQ,IAAI,WAA7B,eACG,UAAY,CACX,SAASO,EAAyBN,EAAM,CACtC,GAAYA,GAAR,KAAc,OAAO,KACzB,GAAmB,OAAOA,GAAtB,WACF,OAAOA,EAAK,WAAaO,EACrB,KACAP,EAAK,aAAeA,EAAK,MAAQ,KACvC,GAAiB,OAAOA,GAApB,SAA0B,OAAOA,EACrC,OAAQA,EAAI,CACV,KAAKF,EACH,MAAO,WACT,KAAKU,EACH,MAAO,WACT,KAAKC,EACH,MAAO,aACT,KAAKC,EACH,MAAO,WACT,KAAKC,EACH,MAAO,eACT,KAAKC,EACH,MAAO,UACjB,CACM,GAAiB,OAAOZ,GAApB,SACF,OACgB,OAAOA,EAAK,KAAzB,UACC,QAAQ,MACN,qHAEJA,EAAK,SACf,CACU,KAAKa,EACH,MAAO,SACT,KAAKC,EACH,OAAOd,EAAK,aAAe,UAC7B,KAAKe,EACH,OAAQf,EAAK,SAAS,aAAe,WAAa,YACpD,KAAKgB,EACH,IAAIC,EAAYjB,EAAK,OACrB,OAAAA,EAAOA,EAAK,YACZA,IACIA,EAAOiB,EAAU,aAAeA,EAAU,MAAQ,GACnDjB,EAAcA,IAAP,GAAc,cAAgBA,EAAO,IAAM,cAC9CA,EACT,KAAKkB,EACH,OACGD,EAAYjB,EAAK,aAAe,KACxBiB,IAAT,KACIA,EACAX,EAAyBN,EAAK,IAAI,GAAK,OAE/C,KAAKmB,EACHF,EAAYjB,EAAK,SACjBA,EAAOA,EAAK,MACZ,GAAI,CACF,OAAOM,EAAyBN,EAAKiB,CAAS,CAAC,CAC7D,MAAwB,CAAA,CACxB,CACM,OAAO,IACb,CACI,SAASG,EAAmBC,EAAO,CACjC,MAAO,GAAKA,CAClB,CACI,SAASC,EAAuBD,EAAO,CACrC,GAAI,CACFD,EAAmBC,CAAK,EACxB,IAAIE,EAA2B,EACvC,MAAkB,CACVA,EAA2B,EACnC,CACM,GAAIA,EAA0B,CAC5BA,EAA2B,QAC3B,IAAIC,EAAwBD,EAAyB,MACjDE,EACc,OAAO,QAAtB,YACC,OAAO,aACPJ,EAAM,OAAO,WAAW,GAC1BA,EAAM,YAAY,MAClB,SACF,OAAAG,EAAsB,KACpBD,EACA,2GACAE,GAEKL,EAAmBC,CAAK,CACvC,CACA,CACI,SAASK,EAAY1B,EAAM,CACzB,GAAIA,IAASF,EAAqB,MAAO,KACzC,GACe,OAAOE,GAApB,UACSA,IAAT,MACAA,EAAK,WAAamB,EAElB,MAAO,QACT,GAAI,CACF,IAAIQ,EAAOrB,EAAyBN,CAAI,EACxC,OAAO2B,EAAO,IAAMA,EAAO,IAAM,OACzC,MAAkB,CACV,MAAO,OACf,CACA,CACI,SAASC,GAAW,CAClB,IAAIC,EAAaC,EAAqB,EACtC,OAAgBD,IAAT,KAAsB,KAAOA,EAAW,SAAQ,CAC7D,CACI,SAASE,GAAe,CACtB,OAAO,MAAM,uBAAuB,CAC1C,CACI,SAASC,EAAY/B,EAAQ,CAC3B,GAAIgC,EAAe,KAAKhC,EAAQ,KAAK,EAAG,CACtC,IAAIiC,EAAS,OAAO,yBAAyBjC,EAAQ,KAAK,EAAE,IAC5D,GAAIiC,GAAUA,EAAO,eAAgB,MAAO,EACpD,CACM,OAAkBjC,EAAO,MAAlB,MACb,CACI,SAASkC,EAA2BC,EAAOC,EAAa,CACtD,SAASC,GAAwB,CAC/BC,IACIA,EAA6B,GAC/B,QAAQ,MACN,0OACAF,CACZ,EACA,CACMC,EAAsB,eAAiB,GACvC,OAAO,eAAeF,EAAO,MAAO,CAClC,IAAKE,EACL,aAAc,EACtB,CAAO,CACP,CACI,SAASE,GAAyC,CAChD,IAAIC,EAAgBnC,EAAyB,KAAK,IAAI,EACtD,OAAAoC,EAAuBD,CAAa,IAChCC,EAAuBD,CAAa,EAAI,GAC1C,QAAQ,MACN,6IACV,GACMA,EAAgB,KAAK,MAAM,IACTA,IAAX,OAA2BA,EAAgB,IACxD,CACI,SAASE,EAAa3C,EAAMG,EAAKiC,EAAOQ,EAAOC,EAAYC,EAAW,CACpE,IAAIC,EAAUX,EAAM,IACpB,OAAApC,EAAO,CACL,SAAUH,EACV,KAAMG,EACN,IAAKG,EACL,MAAOiC,EACP,OAAQQ,IAEWG,IAAX,OAAqBA,EAAU,QAAzC,KACI,OAAO,eAAe/C,EAAM,MAAO,CACjC,WAAY,GACZ,IAAKwC,EACN,EACD,OAAO,eAAexC,EAAM,MAAO,CAAE,WAAY,GAAI,MAAO,KAAM,EACtEA,EAAK,OAAS,CAAA,EACd,OAAO,eAAeA,EAAK,OAAQ,YAAa,CAC9C,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,CACf,CAAO,EACD,OAAO,eAAeA,EAAM,aAAc,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,IACf,CAAO,EACD,OAAO,eAAeA,EAAM,cAAe,CACzC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO6C,CACf,CAAO,EACD,OAAO,eAAe7C,EAAM,aAAc,CACxC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO8C,CACf,CAAO,EACD,OAAO,SAAW,OAAO,OAAO9C,EAAK,KAAK,EAAG,OAAO,OAAOA,CAAI,GACxDA,CACb,CACI,SAASgD,EACPhD,EACAC,EACAC,EACA+C,EACAJ,EACAC,EACA,CACA,IAAII,EAAWjD,EAAO,SACtB,GAAeiD,IAAX,OACF,GAAID,EACF,GAAIE,EAAYD,CAAQ,EAAG,CACzB,IACED,EAAmB,EACnBA,EAAmBC,EAAS,OAC5BD,IAEAG,EAAkBF,EAASD,CAAgB,CAAC,EAC9C,OAAO,QAAU,OAAO,OAAOC,CAAQ,CACnD,MACY,QAAQ,MACN,6JAEDE,EAAkBF,CAAQ,EACjC,GAAIjB,EAAe,KAAKhC,EAAQ,KAAK,EAAG,CACtCiD,EAAW5C,EAAyBN,CAAI,EACxC,IAAIqD,EAAO,OAAO,KAAKpD,CAAM,EAAE,OAAO,SAAUqD,EAAG,CACjD,OAAiBA,IAAV,KACjB,CAAS,EACDL,EACE,EAAII,EAAK,OACL,kBAAoBA,EAAK,KAAK,SAAS,EAAI,SAC3C,iBACNE,EAAsBL,EAAWD,CAAgB,IAC7CI,EACA,EAAIA,EAAK,OAAS,IAAMA,EAAK,KAAK,SAAS,EAAI,SAAW,KAC5D,QAAQ,MACN;AAAA;AAAA;AAAA;AAAA;AAAA,mCACAJ,EACAC,EACAG,EACAH,GAEDK,EAAsBL,EAAWD,CAAgB,EAAI,GAChE,CAMM,GALAC,EAAW,KACAhD,IAAX,SACGoB,EAAuBpB,CAAQ,EAAIgD,EAAW,GAAKhD,GACtD8B,EAAY/B,CAAM,IACfqB,EAAuBrB,EAAO,GAAG,EAAIiD,EAAW,GAAKjD,EAAO,KAC3D,QAASA,EAAQ,CACnBC,EAAW,CAAA,EACX,QAASE,KAAYH,EACTG,IAAV,QAAuBF,EAASE,CAAQ,EAAIH,EAAOG,CAAQ,EACrE,MAAaF,EAAWD,EAClB,OAAAiD,GACEf,EACEjC,EACe,OAAOF,GAAtB,WACIA,EAAK,aAAeA,EAAK,MAAQ,UACjCA,GAED2C,EACL3C,EACAkD,EACAhD,EACA0B,EAAQ,EACRiB,EACAC,EAER,CACI,SAASM,EAAkBI,EAAM,CAC/BC,EAAeD,CAAI,EACfA,EAAK,SAAWA,EAAK,OAAO,UAAY,GAC3B,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAK,WAAarC,IACDqC,EAAK,SAAS,SAA9B,YACGC,EAAeD,EAAK,SAAS,KAAK,GAClCA,EAAK,SAAS,MAAM,SACnBA,EAAK,SAAS,MAAM,OAAO,UAAY,GACxCA,EAAK,SAAWA,EAAK,OAAO,UAAY,GACtD,CACI,SAASC,EAAeC,EAAQ,CAC9B,OACe,OAAOA,GAApB,UACSA,IAAT,MACAA,EAAO,WAAa7D,CAE5B,CACI,IAAI8D,EAAQC,EACV/D,EAAqB,OAAO,IAAI,4BAA4B,EAC5DgB,EAAoB,OAAO,IAAI,cAAc,EAC7Cf,EAAsB,OAAO,IAAI,gBAAgB,EACjDW,EAAyB,OAAO,IAAI,mBAAmB,EACvDD,EAAsB,OAAO,IAAI,gBAAgB,EACjDO,EAAsB,OAAO,IAAI,gBAAgB,EACjDD,EAAqB,OAAO,IAAI,eAAe,EAC/CE,EAAyB,OAAO,IAAI,mBAAmB,EACvDN,EAAsB,OAAO,IAAI,gBAAgB,EACjDC,EAA2B,OAAO,IAAI,qBAAqB,EAC3DO,EAAkB,OAAO,IAAI,YAAY,EACzCC,EAAkB,OAAO,IAAI,YAAY,EACzCP,EAAsB,OAAO,IAAI,gBAAgB,EACjDL,EAAyB,OAAO,IAAI,wBAAwB,EAC5DuB,EACE6B,EAAM,gEACR1B,EAAiB,OAAO,UAAU,eAClCkB,EAAc,MAAM,QACpBU,EAAa,QAAQ,WACjB,QAAQ,WACR,UAAY,CACV,OAAO,IACnB,EACIF,EAAQ,CACN,yBAA0B,SAAUG,EAAmB,CACrD,OAAOA,EAAiB,CAChC,GAEI,IAAIvB,EACAG,EAAyB,CAAA,EACzBqB,EAAyBJ,EAAM,yBAAyB,KAC1DA,EACA5B,CACN,EAAK,EACGiC,EAAwBH,EAAWnC,EAAYK,CAAY,CAAC,EAC5DwB,EAAwB,CAAA,EAC5BU,GAAA,SAAmBnE,EACnBmE,GAAA,IAAc,SAAUjE,EAAMC,EAAQC,EAAU,CAC9C,IAAIgE,EACF,IAAMpC,EAAqB,6BAC7B,OAAOkB,EACLhD,EACAC,EACAC,EACA,GACAgE,EACI,MAAM,uBAAuB,EAC7BH,EACJG,EAAmBL,EAAWnC,EAAY1B,CAAI,CAAC,EAAIgE,EAE3D,EACIC,GAAA,KAAe,SAAUjE,EAAMC,EAAQC,EAAU,CAC/C,IAAIgE,EACF,IAAMpC,EAAqB,6BAC7B,OAAOkB,EACLhD,EACAC,EACAC,EACA,GACAgE,EACI,MAAM,uBAAuB,EAC7BH,EACJG,EAAmBL,EAAWnC,EAAY1B,CAAI,CAAC,EAAIgE,EAE3D,CACA,GAAG,4CC7VC,QAAQ,IAAI,WAAa,aAC3BG,GAAA,QAAiBP,GAAA,EAEjBO,GAAA,QAAiBC,GAAA,yBCLnB;AAAA;AAAA;AAAA;AAAA;AAAA,GAOA,MAAMC,GAAeC,GAAWA,EAAO,QAAQ,qBAAsB,OAAO,EAAE,YAAW,EACnFC,GAAeD,GAAWA,EAAO,QACrC,wBACA,CAACE,EAAOC,EAAIC,IAAOA,EAAKA,EAAG,YAAW,EAAKD,EAAG,YAAW,CAC3D,EACME,GAAgBL,GAAW,CAC/B,MAAMM,EAAYL,GAAYD,CAAM,EACpC,OAAOM,EAAU,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAU,MAAM,CAAC,CAC9D,EACMC,GAAe,IAAIC,IAAYA,EAAQ,OAAO,CAACC,EAAWC,EAAOC,IAC9D,EAAQF,GAAcA,EAAU,KAAI,IAAO,IAAME,EAAM,QAAQF,CAAS,IAAMC,CACtF,EAAE,KAAK,GAAG,EAAE,KAAI,EACXE,GAAe9C,GAAU,CAC7B,UAAW+C,KAAQ/C,EACjB,GAAI+C,EAAK,WAAW,OAAO,GAAKA,IAAS,QAAUA,IAAS,QAC1D,MAAO,EAGb,ECzBA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOA,IAAIC,GAAoB,CACtB,MAAO,6BACP,MAAO,GACP,OAAQ,GACR,QAAS,YACT,KAAM,OACN,OAAQ,eACR,YAAa,EACb,cAAe,QACf,eAAgB,OAClB,ECjBA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWA,MAAMC,GAAOC,EAAAA,WACX,CAAC,CACC,MAAAC,EAAQ,eACR,KAAAC,EAAO,GACP,YAAAC,EAAc,EACd,oBAAAC,EACA,UAAAX,EAAY,GACZ,SAAA7B,EACA,SAAAyC,EACA,GAAGC,CACP,EAAKC,IAAQC,EAAAA,cACT,MACA,CACE,IAAAD,EACA,GAAGT,GACH,MAAOI,EACP,OAAQA,EACR,OAAQD,EACR,YAAaG,EAAsB,OAAOD,CAAW,EAAI,GAAK,OAAOD,CAAI,EAAIC,EAC7E,UAAWZ,GAAa,SAAUE,CAAS,EAC3C,GAAG,CAAC7B,GAAY,CAACgC,GAAYU,CAAI,GAAK,CAAE,cAAe,MAAM,EAC7D,GAAGA,CACT,EACI,CACE,GAAGD,EAAS,IAAI,CAAC,CAACI,EAAKC,CAAK,IAAMF,EAAAA,cAAcC,EAAKC,CAAK,CAAC,EAC3D,GAAG,MAAM,QAAQ9C,CAAQ,EAAIA,EAAW,CAACA,CAAQ,CACvD,CACA,CACA,ECvCA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWA,MAAM+C,EAAmB,CAACC,EAAUP,IAAa,CAC/C,MAAMQ,EAAYb,EAAAA,WAChB,CAAC,CAAE,UAAAP,EAAW,GAAG3C,CAAK,EAAIyD,IAAQC,EAAAA,cAAcT,GAAM,CACpD,IAAAQ,EACA,SAAAF,EACA,UAAWd,GACT,UAAUR,GAAYM,GAAauB,CAAQ,CAAC,CAAC,GAC7C,UAAUA,CAAQ,GAClBnB,CACR,EACM,GAAG3C,CACT,CAAK,CACL,EACE,OAAA+D,EAAU,YAAcxB,GAAauB,CAAQ,EACtCC,CACT,EC1BA;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMC,GAAa,CAAC,CAAC,OAAQ,CAAE,EAAG,eAAgB,IAAK,QAAQ,CAAE,CAAC,EAC5DC,GAAcJ,EAAiB,eAAgBG,EAAU,ECV/D;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CAAC,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,CAAC,EAC9DE,GAAYL,EAAiB,aAAcG,EAAU,ECV3D;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,GAAI,KAAM,IAAK,QAAQ,CAAE,EACjE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,QAAS,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,CACvE,EACMG,GAAcN,EAAiB,eAAgBG,EAAU,ECd/D;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,kCAAmC,IAAK,QAAQ,CAAE,EAChE,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,CACjD,EACMI,GAAiBP,EAAiB,mBAAoBG,EAAU,ECbtE;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CACE,OACA,CACE,EAAG,iGACH,IAAK,QACX,CACA,EACE,CAAC,OAAQ,CAAE,EAAG,uCAAwC,IAAK,QAAQ,CAAE,EACrE,CACE,OACA,CACE,EAAG,+FACH,IAAK,QACX,CACA,EACE,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,CAC7C,EACMK,GAASR,EAAiB,UAAWG,EAAU,EC3BrD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CACE,OACA,CACE,EAAG,wGACH,IAAK,QACX,CACA,EACE,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,QAAQ,CAAE,CAC1D,EACMM,GAAMT,EAAiB,MAAOG,EAAU,ECnB9C;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CACE,OACA,CACE,EAAG,wJACH,IAAK,QACX,CACA,CACA,EACMO,GAAQV,EAAiB,QAASG,EAAU,EClBlD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,EAC1C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,CAC5C,EACMQ,GAAOX,EAAiB,OAAQG,EAAU,ECdhD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,yBAA0B,IAAK,QAAQ,CAAE,EACvD,CAAC,OAAQ,CAAE,EAAG,2BAA4B,IAAK,QAAQ,CAAE,EACzD,CAAC,OAAQ,CAAE,EAAG,0BAA2B,IAAK,QAAQ,CAAE,EACxD,CAAC,OAAQ,CAAE,EAAG,4BAA6B,IAAK,QAAQ,CAAE,CAC5D,EACMS,GAAWZ,EAAiB,WAAYG,EAAU,ECfxD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,yBAA0B,IAAK,QAAQ,CAAE,EACvD,CAAC,OAAQ,CAAE,EAAG,2BAA4B,IAAK,QAAQ,CAAE,EACzD,CAAC,OAAQ,CAAE,EAAG,0BAA2B,IAAK,QAAQ,CAAE,EACxD,CAAC,OAAQ,CAAE,EAAG,4BAA6B,IAAK,QAAQ,CAAE,CAC5D,EACMU,GAAWb,EAAiB,WAAYG,EAAU,ECfxD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,kBAAmB,IAAK,QAAQ,CAAE,EAChD,CAAC,SAAU,CAAE,GAAI,IAAK,GAAI,KAAM,EAAG,IAAK,IAAK,SAAU,EACvD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,QAAQ,CAAE,CAC1D,EACMW,GAAQd,EAAiB,QAASG,EAAU,ECdlD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,KAAM,EAAG,IAAK,MAAO,IAAK,OAAQ,KAAM,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC9E,CAAC,OAAQ,CAAE,EAAG,IAAK,EAAG,IAAK,MAAO,IAAK,OAAQ,KAAM,GAAI,IAAK,IAAK,QAAQ,CAAE,CAC/E,EACMY,GAAQf,EAAiB,QAASG,EAAU,ECblD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CACE,OACA,CACE,EAAG,qFACH,IAAK,QACX,CACA,CACA,EACMa,GAAOhB,EAAiB,OAAQG,EAAU,EClBhD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,oDAAqD,IAAK,QAAQ,CAAE,EAClF,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,EACMc,GAAYjB,EAAiB,aAAcG,EAAU,ECb3D;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,EAC/C,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAQ,CAAE,EAC9C,CAAC,OAAQ,CAAE,EAAG,+DAAgE,IAAK,QAAQ,CAAE,EAC7F,CAAC,OAAQ,CAAE,EAAG,+BAAgC,IAAK,QAAQ,CAAE,EAC7D,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAQ,CAAE,CAC5E,EACMe,GAAUlB,EAAiB,UAAWG,EAAU,EChBtD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CACE,OACA,CACE,EAAG,2FACH,IAAK,QACX,CACA,EACE,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAQ,CAAE,CAC1C,EACMgB,GAAWnB,EAAiB,YAAaG,EAAU,ECnBzD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CACE,OACA,CACE,EAAG,wFACH,IAAK,OACX,CACA,CACA,EACMiB,GAAcpB,EAAiB,eAAgBG,EAAU,ECnB/D;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CACE,OACA,CACE,EAAG,2EACH,IAAK,QACX,CACA,EACE,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAQ,CAAE,EACxC,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,CAC7C,EACMkB,GAAgBrB,EAAiB,iBAAkBG,EAAU,ECpBnE;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAQ,CAAE,EAC1E,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,IAAK,EAAG,IAAK,IAAK,QAAQ,CAAE,CACzD,EACMmB,GAAOtB,EAAiB,OAAQG,EAAU,ECbhD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CACE,OACA,CACE,EAAG,2KACH,IAAK,QACX,CACA,EACE,CAAC,OAAQ,CAAE,EAAG,sBAAuB,IAAK,QAAQ,CAAE,EACpD,CAAC,OAAQ,CAAE,EAAG,oCAAqC,IAAK,QAAQ,CAAE,CACpE,EACMoB,GAAUvB,EAAiB,WAAYG,EAAU,ECpBvD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CACE,OACA,CACE,EAAG,2KACH,IAAK,QACX,CACA,EACE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,GAAI,KAAM,IAAK,QAAQ,CAAE,EACjE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,IAAK,GAAI,KAAM,IAAK,QAAQ,CAAE,CACnE,EACMqB,GAAUxB,EAAiB,WAAYG,EAAU,ECpBvD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,GAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,CAC7C,EACMsB,GAAIzB,EAAiB,IAAKG,EAAU,ECMpCuB,GAAeC,EAAAA,cAA6C,MAAS,EAE9DC,GAAW,IAAM,CAC5B,MAAMC,EAAUC,EAAAA,WAAWJ,EAAY,EACvC,GAAI,CAACG,EAAS,MAAM,IAAI,MAAM,4CAA4C,EAC1E,OAAOA,CACT,EAEaE,GAAmD,CAAC,CAAE,SAAA9E,KAAe,CAChF,KAAM,CAAC+E,EAAQC,CAAS,EAAIC,EAAAA,SAAkB,CAAA,CAAE,EAE1CC,EAAcC,cAAaC,GAAe,CAC9CJ,EAAWK,GAASA,EAAK,OAAQC,GAAMA,EAAE,KAAOF,CAAE,CAAC,CACrD,EAAG,CAAA,CAAE,EAECG,EAAWJ,cAAaK,GAA6B,CACzD,MAAMJ,EAAK,KAAK,IAAA,EAAQ,KAAK,OAAA,EAC7BJ,EAAWK,GAAS,CAAC,GAAGA,EAAM,CAAE,GAAGG,EAAO,GAAAJ,CAAA,CAAI,CAAC,EAC3CI,EAAM,WAAa,GACrB,WAAW,IAAMN,EAAYE,CAAE,EAAGI,EAAM,UAAY,GAAI,CAE5D,EAAG,CAACN,CAAW,CAAC,EAEhB,cACGT,GAAa,SAAb,CAAsB,MAAO,CAAE,SAAAc,GAC7B,SAAA,CAAAvF,EAEDyF,MAAC,OAAI,UAAU,+CACZ,WAAO,IAAKD,GACXC,EAAAA,IAACC,GAAA,CAAyB,MAAAF,EAAc,QAAS,IAAMN,EAAYM,EAAM,EAAE,GAA3DA,EAAM,EAAwD,CAC/E,CAAA,CACH,CAAA,EACF,CAEJ,EAEMG,GAAiF,CACrF,QAAS,CAAE,GAAI,cAAe,OAAQ,mBAAoB,KAAMF,EAAAA,IAACG,GAAA,CAAY,KAAM,GAAI,UAAU,iBAAiB,CAAA,EAClH,MAAO,CAAE,GAAI,YAAa,OAAQ,iBAAkB,KAAMH,EAAAA,IAACI,GAAA,CAAY,KAAM,GAAI,UAAU,eAAe,CAAA,EAC1G,QAAS,CAAE,GAAI,eAAgB,OAAQ,oBAAqB,KAAMJ,EAAAA,IAACK,GAAA,CAAc,KAAM,GAAI,UAAU,kBAAkB,CAAA,EACvH,KAAM,CAAE,GAAI,aAAc,OAAQ,kBAAmB,KAAML,MAAC/B,GAAA,CAAK,KAAM,GAAI,UAAU,gBAAgB,CAAA,CACvG,EAEMgC,GAA6D,CAAC,CAAE,MAAAF,EAAO,QAAAO,KAAc,CACzF,KAAM,CAAE,MAAAC,EAAO,YAAAC,EAAa,KAAAnJ,EAAO,QAAW0I,EACxC,CAAE,GAAAU,EAAI,OAAAC,EAAQ,KAAAC,CAAA,EAAST,GAAW7I,CAAI,EAE5C,OACEuJ,EAAAA,KAAC,MAAA,CACC,UAAW,wDAAwDH,CAAE,IAAIC,CAAM,0BAC/E,KAAK,QAEL,SAAA,CAAAV,EAAAA,IAAC,OAAK,SAAAW,CAAA,CAAK,EACXC,EAAAA,KAAC,MAAA,CAAI,UAAU,iBACZ,SAAA,CAAAL,GAASP,EAAAA,IAAC,MAAA,CAAI,UAAU,6BAA8B,SAAAO,EAAM,EAC5DC,GAAeR,EAAAA,IAAC,MAAA,CAAI,UAAU,wBAAyB,SAAAQ,CAAA,CAAY,CAAA,EACtE,EACAR,EAAAA,IAAC,SAAA,CAAO,QAASM,EAAS,UAAU,oCAClC,SAAAN,EAAAA,IAACjB,GAAA,CAAE,KAAM,EAAA,CAAI,CAAA,CACf,CAAA,CAAA,CAAA,CAGN,ECxBa8B,GAAsCC,EAAAA,KACjD,CAAC,CACC,MAAAC,EACA,cAAAC,EAAgB,GAChB,YAAAC,EAAc,CAAA,EACd,YAAAC,EAAc,UACd,gBAAAC,EAAkB,OAClB,UAAAC,EAAY,UACZ,aAAAC,EAAe,UACf,eAAAC,EAAiB,UACjB,eAAAC,EAAiB,OACjB,iBAAAC,EAAmB,UACnB,SAAAC,EAAW,OACX,SAAAC,EAAW,OACX,QAAAC,EAAU,SACV,aAAAC,EAAe,SACf,eAAAC,EAAiB,OACjB,SAAAC,EAAW,OACX,WAAAC,EAAa,IACb,gBAAAC,EAAkB,UAClB,kBAAAC,EAAoB,IACpB,SAAAC,EACA,UAAAC,EACA,SAAAC,EAAW,UACX,mBAAAC,EAAqB,QACrB,OAAAC,EAAS,6BACT,UAAAlG,EAAY,GACZ,MAAAmG,CAAA,IACI,CACJ,KAAM,CAACC,EAAaC,CAAc,EAAIjD,EAAAA,SAAmByB,CAAW,EAC9DyB,EAAcC,EAAAA,OAAkC,EAAE,EAExDC,EAAAA,UAAU,IAAM,CACdF,EAAY,QAAQ,QAAQ,CAACG,EAAIxG,IAAU,CACrCwG,IACFA,EAAG,MAAM,UAAYL,EAAY,SAASnG,CAAK,EAC3C,GAAGwG,EAAG,YAAY,KAClB,MAER,CAAC,CACH,EAAG,CAACL,CAAW,CAAC,EAEhB,MAAMM,EAAczG,GAAkB,CACpCoG,EAAgB7C,GACdoB,EACIpB,EAAK,SAASvD,CAAK,EACjBuD,EAAK,OAAQmD,GAAMA,IAAM1G,CAAK,EAC9B,CAAC,GAAGuD,EAAMvD,CAAK,EACjBuD,EAAK,SAASvD,CAAK,EACjB,CAAA,EACA,CAACA,CAAK,CAAA,CAEhB,EAGM2G,EAActK,GAClBA,IAAU,OACN,OAAOA,GAAU,SACf,GAAGA,CAAK,KACRA,EACF,OAEN,OACEsH,EAAAA,IAAC,MAAA,CACC,UAAW,aAAa5D,CAAS,GACjC,MAAO,CAAE,MAAO,OAAQ,GAAGmG,CAAA,EAE1B,SAAAxB,EAAM,IAAI,CAACkC,EAAM5G,IAAU,CAC1B,MAAM6G,EAASV,EAAY,SAASnG,CAAK,EAEzC,OACEuE,EAAAA,KAAC,MAAA,CAEC,UAAU,+DACV,MAAO,CACL,YAAAM,EACA,aAAc8B,EAAWpB,CAAY,EACrC,OAAQ,GAAGoB,EAAWrB,CAAO,CAAC,KAC9B,UAAWW,CAAA,EAIb,SAAA,CAAA1B,EAAAA,KAAC,SAAA,CACC,QAAS,IAAMkC,EAAWzG,CAAK,EAC/B,UAAU,0EACV,MAAO,CACL,gBAAA8E,EACA,MAAOC,EACP,QAAS,GAAG4B,EAAWvB,CAAQ,CAAC,IAAIuB,EAAWtB,CAAQ,CAAC,GACxD,WAAAK,EACA,SAAUiB,EAAWlB,CAAQ,EAC7B,OAAQ,UACR,OAAQ,OACR,QAAS,MAAA,EAEX,aAAeqB,GAAM,CACnBA,EAAE,cAAc,MAAM,gBAAkB9B,EACxC8B,EAAE,cAAc,MAAM,MAAQ7B,CAChC,EACA,aAAe6B,GAAM,CACnBA,EAAE,cAAc,MAAM,gBAAkBhC,EACxCgC,EAAE,cAAc,MAAM,MAAQ/B,CAChC,EAEA,SAAA,CAAApB,EAAAA,IAAC,OAAA,CAAM,WAAK,KAAA,CAAM,EAClBA,EAAAA,IAAC,QAAK,MAAO,CAAE,SAAUgD,EAAWZ,CAAQ,GACzC,SAAAc,EACGhB,GAAYlC,MAACrC,GAAA,CAAU,KAAM,EAAA,CAAI,EACjCwE,GAAanC,EAAAA,IAACtC,GAAA,CAAY,KAAM,EAAA,CAAI,CAAA,CAC1C,CAAA,CAAA,CAAA,EAIFsC,EAAAA,IAAC,MAAA,CACC,IAAM6C,GAAO,CACXH,EAAY,QAAQrG,CAAK,EAAIwG,CAC/B,EACA,UAAU,8CACV,MAAO,CACL,UAAWK,EACP,GAAGR,EAAY,QAAQrG,CAAK,GAAG,cAAgB,CAAC,KAChD,MACJ,WAAY,cAAcgG,CAAkB,cAAA,EAG9C,SAAArC,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,UAAW,aAAakB,CAAW,GACnC,gBAAiBK,EACjB,MAAOC,EACP,QAASwB,EAAWnB,CAAc,EAClC,SAAUmB,EAAWhB,CAAe,EACpC,WAAYC,CAAA,EAGb,SAAAgB,EAAK,OAAA,CAAA,CACR,CAAA,CACF,CAAA,EAjEK5G,CAAA,CAoEX,CAAC,CAAA,CAAA,CAGP,CACF,EAEAwE,GAAU,YAAc,YC/KxB,MAAMuC,GAA6D,CACjE,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,MAAO,EACT,EAEMC,GAAiE,CACrE,GAAI,cACJ,GAAI,cACJ,GAAI,cACJ,GAAI,cACJ,GAAI,cACJ,MAAO,aACT,EAEMC,GAAkE,CACtE,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,YACJ,GAAI,YACJ,MAAO,WACT,EAEMC,GAA4C,CAChD,SAAU,eACV,QAAS,aACT,OAAQ,cACV,EAEMC,GAAoD,CACxD,WAAY,eACZ,YAAa,gBACb,cAAe,kBACf,eAAgB,kBAClB,EAGaC,GAAgC,CAAC,CAC5C,IAAAC,EACA,IAAAC,EAAM,cACN,KAAA9G,EAAO,KACP,QAAA+G,EAAU,WACV,SAAAC,EAAW,GACX,UAAAC,EAAY,GACZ,SAAAC,EACA,KAAAC,EAAO,GACP,UAAAC,EAAY,UACZ,QAAAC,EACA,eAAAC,EAAiB,eACjB,UAAA/H,EAAY,GACZ,gBAAAgI,EAAkB,GAClB,MAAA7B,EACA,YAAA8B,CACF,IAAM,CACJ,KAAM,CAACC,EAAYC,CAAa,EAAI/E,EAAAA,SAAS,EAAK,EAC5CgF,EAAY,CAAC,CAACN,EAEdO,EACJV,GACAJ,EACG,MAAM,GAAG,EACT,IAAKe,GAAMA,EAAE,CAAC,CAAC,EACf,KAAK,EAAE,EACP,cACA,MAAM,EAAG,CAAC,EAETC,EAAcd,EAAW,eAAiBC,EAAY,cAAgB,GAGtEc,EAAcxB,GAAQvG,CAAyC,EAErE,OACE+D,EAAAA,KAAC,MAAA,CACC,KAAM4D,EAAY,SAAW,MAC7B,SAAUA,EAAY,EAAI,GAC1B,aAAYb,EACZ,QAAAO,EACA,UAAW,oEAAoEZ,GAAazG,CAAyC,CAAC,IAAI0G,GAAWK,CAAO,CAAC,gCAC3JY,EAAY,iCAAmC,EACjD,IAAIR,EAAO,SAAW,EAAE,IAAI5H,CAAS,GACrC,MAAO,CACL,GAAGmG,EACH,GAAIyB,EAAO,CAAE,UAAW,aAAaC,CAAS,IAAO,CAAA,CAAC,EAExD,UAAYd,GAAM,CACZqB,IAAcrB,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OAC/CA,EAAE,eAAA,EACFe,IAAA,EAEJ,EAEC,SAAA,CAAAR,GAAO,CAACY,EACPtE,EAAAA,IAAC,MAAA,CACC,IAAA0D,EACA,IAAAC,EACA,QAAS,IAAMY,EAAc,EAAI,EACjC,UAAW,8BAA8BhB,GAAWK,CAAO,CAAC,kCAAA,CAAA,EAG9D5D,EAAAA,IAAC,MAAA,CACC,UAAW,yHAAyHqD,GAAYxG,CAAyC,CAAC,IAAI0G,GAAWK,CAAO,CAAC,GAEhN,SAAAa,GAAYzE,EAAAA,IAACpB,GAAA,CAAK,UAAU,YAAA,CAAa,CAAA,CAAA,GAI5CiF,GAAYC,IACZ9D,EAAAA,IAAC,OAAA,CACC,aAAY6D,EAAW,SAAW,UAClC,MAAOA,EAAW,SAAW,UAC7B,UAAW,YAAYL,GAAkBW,CAAc,CAAC,IAAIQ,CAAW,iDAAiDP,CAAe,GACvI,MAAO,CACL,MAAOQ,EAAc,EACrB,OAAQA,EAAc,EACtB,GAAGP,CAAA,CACL,CAAA,CACF,CAAA,CAAA,CAIR,EC3HaQ,GAA0C,CAAC,CACtD,IAAAnB,EACA,UAAAoB,EACA,SAAAC,EAAW,GACX,KAAAC,EAAO,GACP,gBAAA7D,EAAkB,UAClB,aAAA8D,EAAe,UACf,eAAAC,EAAiB,UACjB,aAAAtD,EAAe,OACf,QAAAuD,EAAU,OACV,MAAAC,EAAQ,OACR,UAAAhJ,CACF,IAAM,CACJ,MAAMiJ,EAAW1C,EAAAA,OAAyB,IAAI,EACxC2C,EAAY3C,EAAAA,OAAuB,IAAI,EACvC,CAAC4C,EAAWC,CAAY,EAAIhG,EAAAA,SAASuF,CAAQ,EAC7C,CAACU,EAAaC,CAAc,EAAIlG,EAAAA,SAAS,CAAC,EAC1C,CAACmG,EAAUC,CAAW,EAAIpG,EAAAA,SAAS,CAAC,EACpC,CAACqG,EAAQC,CAAS,EAAItG,EAAAA,SAAS,EAAG,EAClC,CAACuG,EAAcC,CAAe,EAAIxG,EAAAA,SAAS,EAAK,EAChD,CAACyG,EAAWC,CAAY,EAAI1G,EAAAA,SAASwF,CAAI,EAE/CpC,EAAAA,UAAU,IAAM,CACVyC,EAAS,UAASA,EAAS,QAAQ,OAASQ,EAClD,EAAG,CAACA,CAAM,CAAC,EAEXjD,EAAAA,UAAU,IAAM,CACVyC,EAAS,UAASA,EAAS,QAAQ,KAAOY,EAChD,EAAG,CAACA,CAAS,CAAC,EAEd,MAAME,EAAkB,IAAM,CACvBd,EAAS,UACdE,EAAYF,EAAS,QAAQ,MAAA,EAAUA,EAAS,QAAQ,KAAA,EACxDG,EAAa,CAACD,CAAS,EACzB,EAEMa,EAAmB,IAAM,CACxBf,EAAS,UACdK,EAAeL,EAAS,QAAQ,WAAW,EAC3CO,EAAYP,EAAS,QAAQ,QAAQ,EACvC,EAEMgB,EAAclD,GAAwC,CAC1D,GAAI,CAACkC,EAAS,QAAS,OACvB,MAAMiB,EAAOnD,EAAE,cAAc,sBAAA,EACvBoD,GAAWpD,EAAE,QAAUmD,EAAK,MAAQA,EAAK,MAC/CjB,EAAS,QAAQ,YAAckB,EAAUZ,EACzCD,EAAea,EAAUZ,CAAQ,CACnC,EAEMa,EAAQC,GAAoB,CAC5BpB,EAAS,UAASA,EAAS,QAAQ,aAAeoB,EACxD,EAEMC,EAAmB,IAAM,CACxBpB,EAAU,UACfS,EACI,SAAS,iBAAA,EACTT,EAAU,QAAQ,oBAAA,EACtBU,EAAgB,CAACD,CAAY,EAC/B,EAEMY,EAAcC,GAAiB,CACnC,MAAMC,EAAU,KAAK,MAAMD,EAAO,EAAE,EAC9BH,EAAU,KAAK,MAAMG,EAAO,EAAE,EACpC,MAAO,GAAGC,CAAO,IAAIJ,EAAU,GAAK,IAAM,EAAE,GAAGA,CAAO,EACxD,EAEA,OACE7F,EAAAA,KAAC,MAAA,CACC,IAAK0E,EACL,UAAAlJ,EACA,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,OACL,MAAAgJ,EACA,gBAAAjE,EACA,aAAAS,EACA,QAAAuD,EACA,UAAW,aACX,MAAOD,EACP,UAAW,6BACX,SAAU,MAAA,EAGZ,SAAA,CAAAlF,EAAAA,IAAC,QAAA,CACC,IAAKqF,EACL,IAAA3B,EACA,SAAAqB,EACA,KAAAC,EACA,aAAcoB,EACd,iBAAkBA,CAAA,CAAA,EAInBtB,GACC9E,EAAAA,IAAC,MAAA,CACC,IAAK8E,EACL,IAAI,kBACJ,MAAO,CACL,MAAO,OACP,OAAQ,OACR,aAAc,MACd,UAAW,QACX,WAAY,CAAA,CACd,CAAA,EAKJlE,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,OACL,KAAM,EACN,SAAU,GAAA,EAGZ,SAAA,CAAAZ,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMwG,EAAK,GAAG,EACvB,MAAO,CACL,WAAY,cACZ,OAAQ,OACR,MAAOtB,EACP,OAAQ,SAAA,EAEV,aAAW,gBAEX,SAAAlF,EAAAA,IAACvB,GAAA,CAAS,KAAM,EAAA,CAAI,CAAA,CAAA,EAGtBuB,EAAAA,IAAC,SAAA,CACC,QAASmG,EACT,MAAO,CACL,WAAYlB,EACZ,aAAc,MACd,QAAS,OACT,OAAQ,OACR,OAAQ,UACR,QAAS,OACT,WAAY,SACZ,eAAgB,QAAA,EAElB,aAAYM,EAAY,QAAU,OAEjC,SAAAA,QAAalH,GAAA,CAAM,KAAM,GAAI,EAAK2B,EAAAA,IAAC1B,GAAA,CAAK,KAAM,EAAA,CAAI,CAAA,CAAA,EAGrD0B,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMwG,EAAK,EAAE,EACtB,MAAO,CACL,WAAY,cACZ,OAAQ,OACR,MAAOtB,EACP,OAAQ,SAAA,EAEV,aAAW,mBAEX,SAAAlF,EAAAA,IAACtB,GAAA,CAAY,KAAM,EAAA,CAAI,CAAA,CAAA,EAIzBsB,EAAAA,IAAC,MAAA,CACC,QAASqG,EACT,MAAO,CACL,KAAM,EACN,OAAQ,MACR,WAAY,OACZ,aAAc,MACd,OAAQ,UACR,SAAU,UAAA,EAGZ,SAAArG,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,GAAIyF,EAAcE,EAAY,KAAO,CAAC,IAC7C,OAAQ,OACR,WAAYV,EACZ,aAAc,KAAA,CAChB,CAAA,CACF,CAAA,EAIFrE,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,SAAU,OAAQ,UAAW,QAAS,SAAU,QAAA,EAC3D,SAAA,CAAA+F,EAAWlB,CAAW,EAAE,MAAIkB,EAAWhB,CAAQ,CAAA,EAClD,EAGA/E,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,KAAA,EACxD,SAAA,CAAAZ,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMkG,EAAa,CAACD,CAAS,EACtC,MAAO,CACL,WAAY,cACZ,OAAQ,OACR,OAAQ,UACR,MAAOA,EAAYhB,EAAeC,CAAA,EAEpC,aAAW,cAEX,SAAAlF,EAAAA,IAACzB,GAAA,CAAU,KAAM,EAAA,CAAI,CAAA,CAAA,EAGvByB,EAAAA,IAAC,SAAA,CACC,QAAS,IAAM8F,EAAUD,EAAS,EAAI,EAAI,EAAG,EAC7C,MAAO,CACL,WAAY,cACZ,OAAQ,OACR,OAAQ,UACR,MAAOX,CAAA,EAET,aAAW,cAEV,SAAAW,EAAS,EAAI7F,EAAAA,IAACnB,GAAA,CAAQ,KAAM,GAAI,EAAKmB,EAAAA,IAAClB,GAAA,CAAQ,KAAM,EAAA,CAAI,CAAA,CAAA,EAG3DkB,EAAAA,IAAC,SAAA,CACC,QAAS0G,EACT,MAAO,CACL,WAAY,cACZ,OAAQ,OACR,OAAQ,UACR,MAAOxB,CAAA,EAET,aAAW,oBAEV,SAAAa,QAAgB5H,GAAA,CAAS,KAAM,GAAI,EAAK6B,EAAAA,IAAC9B,GAAA,CAAS,KAAM,EAAA,CAAI,CAAA,CAAA,CAC/D,CAAA,CACF,CAAA,CAAA,CAAA,CACF,CAAA,CAAA,CAGN,EC9NM4I,GAA8B,CAClC,CACE,IAAK,2DACL,MAAO,eACP,OAAQ,gBACR,SAAU,OACV,UACE,mFAAA,EAEJ,CACE,IAAK,uDACL,MAAO,gBACP,OAAQ,aACR,SAAU,OACV,UACE,mFAAA,EAEJ,CACE,IAAK,wDACL,MAAO,aACP,OAAQ,iBACR,SAAU,OACV,UACE,mFAAA,CAEN,EAEO,SAASC,GAAa,CAC3B,OAAAC,EAASF,GACT,UAAA1K,EAAY,GACZ,aAAA6K,EAAe,gBACf,aAAAhC,EAAe,UACf,gBAAA9D,EAAkB,UAClB,UAAAC,EAAY,UACZ,eAAA8D,EAAiB,UACjB,OAAAxE,EAAS,EACT,YAAAQ,EACA,SAAAgG,EAAW,IACX,SAAAC,EAAW,GACX,KAAAnC,EAAO,EACT,EAAsB,CACpB,KAAM,CAACoC,EAAmBC,CAAoB,EAAI7H,EAAAA,SAChD,IAAA,EAEI,CAAC+F,EAAWC,CAAY,EAAIhG,EAAAA,SAAS,EAAK,EAC1C,CAACiG,EAAaC,CAAc,EAAIlG,EAAAA,SAAS,CAAC,EAC1C,CAACmG,EAAUC,CAAW,EAAIpG,EAAAA,SAAS,CAAC,EACpC,CAACqG,EAAQC,CAAS,EAAItG,EAAAA,SAAS,EAAG,EAClC,CAACuG,EAAcC,CAAe,EAAIxG,EAAAA,SAAS,EAAK,EAChD,CAACyG,EAAWC,CAAY,EAAI1G,EAAAA,SAASwF,CAAI,EACzC,CAACsC,EAAWC,CAAY,EAAI/H,EAAAA,SAAS,EAAK,EAC1C,CAACgI,EAASC,CAAU,EAAIjI,EAAAA,SAAS,EAAK,EACtC,CAACkI,EAAkBC,CAAmB,EAAInI,EAAAA,SAAS,EAAK,EAExD6F,EAAW1C,EAAAA,OAAyB,IAAI,EACxC2C,EAAY3C,EAAAA,OAAuB,IAAI,EACvCiF,EAAmBjF,EAAAA,OAA8B,IAAI,EAE3DC,EAAAA,UAAU,IAAM,CACVyC,EAAS,UACXA,EAAS,QAAQ,OAASQ,EAE9B,EAAG,CAACA,CAAM,CAAC,EAEXjD,EAAAA,UAAU,IAAM,CACVyC,EAAS,UACXA,EAAS,QAAQ,KAAOY,EAE5B,EAAG,CAACA,CAAS,CAAC,EAEdrD,EAAAA,UAAU,IAAM,CACVwE,IAAsB,MAAQ/B,EAAS,UACzCA,EAAS,QAAQ,MAAA,EACjBG,EAAa,EAAK,EAClBE,EAAe,CAAC,EAChBE,EAAY,CAAC,EAEjB,EAAG,CAACwB,CAAiB,CAAC,EAEtB,MAAMS,EAAkBxL,GAAkB,CACxC,GAAI+K,IAAsB/K,EAAO,CAC/B,GAAI,CAACgJ,EAAS,QAAS,OACnBA,EAAS,QAAQ,QACnBA,EAAS,QAAQ,KAAA,EAAO,MAAM,IAAM,CAAC,CAAC,EACtCG,EAAa,EAAI,IAEjBH,EAAS,QAAQ,MAAA,EACjBG,EAAa,EAAK,EAEtB,MACE6B,EAAqBhL,CAAK,EAC1B,WAAW,IAAM,CACXgJ,EAAS,UACXA,EAAS,QAAQ,KAAA,EAAO,MAAM,IAAM,CAAC,CAAC,EACtCG,EAAa,EAAI,EAErB,EAAG,GAAG,CAEV,EAEMY,EAAmB,IAAM,CACxBf,EAAS,UACdK,EAAeL,EAAS,QAAQ,WAAW,EACvCA,EAAS,QAAQ,UACnBO,EAAYP,EAAS,QAAQ,QAAQ,EAEzC,EAEMgB,EAAclD,GAAwC,CAC1D,GAAI,CAACkC,EAAS,SAAW,CAACM,EAAU,OACpC,MAAMW,EAAOnD,EAAE,cAAc,sBAAA,EAGvB2E,IAFW3E,EAAE,QAAUmD,EAAK,MACPA,EAAK,MACLX,EAC3BN,EAAS,QAAQ,YAAcyC,GAC/BpC,EAAeoC,EAAQ,CACzB,EAEMC,EAAsB5E,GAAwC,CAClE,MAAMmD,EAAOnD,EAAE,cAAc,sBAAA,EAEvBoD,GADWpD,EAAE,QAAUmD,EAAK,MACPA,EAAK,MAC1B0B,GAAY,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGzB,CAAO,CAAC,EAClDT,EAAUkC,EAAS,CACrB,EAEMxB,EAAQC,GAAoB,CAChC,GAAIpB,EAAS,SAAWM,EAAU,CAChC,IAAIsC,EAAU5C,EAAS,QAAQ,YAAcoB,EAC7CwB,EAAU,KAAK,IAAI,KAAK,IAAIA,EAAS,CAAC,EAAGtC,CAAQ,EACjDN,EAAS,QAAQ,YAAc4C,EAC/BvC,EAAeuC,CAAO,CACxB,CACF,EAEMC,EAAY,IAAM,CACtB,GAAId,IAAsB,KAAM,OAChC,IAAIe,EACAb,EACFa,EAAY,KAAK,MAAM,KAAK,OAAA,EAAWnB,EAAO,MAAM,EAEpDmB,GAAaf,EAAoB,GAAKJ,EAAO,OAE/Ca,EAAeM,CAAS,CAC1B,EAEMC,EAAY,IAAM,CACtB,GAAIhB,IAAsB,KAAM,OAChC,IAAIiB,EACAf,EACFe,EAAY,KAAK,MAAM,KAAK,OAAA,EAAWrB,EAAO,MAAM,EAEpDqB,GAAajB,EAAoB,EAAIJ,EAAO,QAAUA,EAAO,OAE/Da,EAAeQ,CAAS,CAC1B,EAEMC,EAAa,IAAM,CACvBxC,EAAWlG,GAAUA,EAAO,EAAI,EAAI,EAAI,CAC1C,EAEM2I,EAAa,IAAM,CACvBZ,EAAoB,EAAI,EACpBC,EAAiB,SACnB,aAAaA,EAAiB,OAAO,EAEvCA,EAAiB,QAAU,WAAW,IAAM,CAC1CD,EAAoB,EAAK,CAC3B,EAAG,GAAI,CACT,EAEMhB,EAAcC,GAAiB,CACnC,GAAI,MAAMA,CAAI,EAAG,MAAO,OACxB,MAAMC,EAAU,KAAK,MAAMD,EAAO,EAAE,EAC9BH,EAAU,KAAK,MAAMG,EAAO,EAAE,EACpC,MAAO,GAAGC,CAAO,IAAIJ,EAAU,GAAK,IAAM,EAAE,GAAGA,CAAO,EACxD,EAEM+B,EACJpB,IAAsB,KAAOJ,EAAOI,CAAiB,EAAI,KAE3D,OACExG,EAAAA,KAAC,MAAA,CACC,UAAAxE,EACA,MAAO,CACL,SAAU,GAAG8K,CAAQ,KACrB,OAAQ,YACR,WAAY,2BAA2B/F,CAAe,KAAK+D,CAAc,IACzE,MAAO9D,EACP,aAAc,OACd,QAAS,YACT,WACE,qEACF,WAAY,OACZ,eAAgB,aAChB,OAAQ,GAAGV,CAAM,YAAYQ,CAAW,IAAA,EAI1C,SAAA,CAAAN,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,aAAc,MAAA,EAGhB,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,MAAA,EACxD,SAAA,CAAAZ,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,aAAc,OACd,WAAY,2BAA2BiF,CAAY,KAAKC,CAAc,IACtE,QAAS,OACT,WAAY,SACZ,eAAgB,QAAA,EAGlB,SAAAlF,EAAAA,IAAC5B,GAAA,CAAM,KAAM,GAAI,MAAM,OAAA,CAAQ,CAAA,CAAA,SAEhC,MAAA,CACC,SAAA,CAAA4B,EAAAA,IAAC,KAAA,CACC,MAAO,CACL,OAAQ,EACR,SAAU,UACV,WAAY,MACZ,MAAOiF,CAAA,EAGR,SAAAgC,CAAA,CAAA,EAEHrG,EAAAA,KAAC,IAAA,CAAE,MAAO,CAAE,OAAQ,EAAG,SAAU,WAAY,QAAS,EAAA,EACnD,SAAA,CAAAoG,EAAO,OAAO,SAAA,CAAA,CACjB,CAAA,CAAA,CACF,CAAA,EACF,EAEAhH,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMuH,EAAa,CAACD,CAAS,EACtC,MAAO,CACL,WAAYA,EAAYrC,EAAe,cACvC,OAAQ,OACR,aAAc,OACd,QAAS,MACT,OAAQ,UACR,WAAY,gBACZ,QAASqC,EAAY,EAAI,EAAA,EAE3B,aAAW,iBAEX,eAAC9I,GAAA,CAAQ,KAAM,GAAI,MAAO8I,EAAY,QAAUlG,CAAA,CAAW,CAAA,CAAA,CAC7D,CAAA,CAAA,EAIFpB,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,cAAe,SACf,IAAK,MACL,aAAc,OACd,UAAW,QACX,UAAW,OACX,aAAc,KAAA,EAGf,SAAAgH,EAAO,IAAI,CAACyB,EAAOpM,IAAU,CAC5B,MAAMqM,EAAWtB,IAAsB/K,EACjCsM,EAAqBD,GAAYnD,EAEvC,OACE3E,EAAAA,KAAC,MAAA,CAEC,QAAS,IAAMiH,EAAexL,CAAK,EACnC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,QAAS,YACT,aAAc,OACd,WAAYqM,EACR,2BAA2BzD,CAAY,OAAOA,CAAY,MAC1D,yBACJ,OAAQyD,EACJ,aAAazD,CAAY,KACzB,wBACJ,OAAQ,UACR,WAAY,gBACZ,eAAgByD,EAAW,aAAe,MAAA,EAI5C,SAAA,CAAA9H,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,aAAc,OACd,WAAY6H,EAAM,UACd,OAAOA,EAAM,SAAS,iBACtBxD,EACJ,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,YAAa,OACb,SAAU,WACV,SAAU,QAAA,EAGX,SAAA,CAAA,CAACwD,EAAM,WAAazI,EAAAA,IAAC5B,IAAM,KAAM,GAAI,MAAM,QAAQ,EACnDuK,GACC3I,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,SAAU,WACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,WAAY,kBACZ,QAAS,OACT,WAAY,SACZ,eAAgB,QAAA,EAGlB,SAAAA,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,QAAS,OACT,IAAK,MACL,WAAY,MACZ,eAAgB,QAAA,EAGjB,UAAC,EAAG,EAAG,CAAC,EAAE,IAAK+C,IACd/C,EAAAA,IAAC,MAAA,CAEC,MAAO,CACL,MAAO,MACP,WAAY,QACZ,aAAc,MACd,UAAW,qCACT+C,GAAI,EACN,IACA,OAAQ,MAAA,CACV,EATKA,EAAA,CAWR,CAAA,CAAA,CACH,CAAA,CACF,CAAA,CAAA,EAKJnC,OAAC,OAAI,MAAO,CAAE,KAAM,EAAG,SAAU,GAC/B,SAAA,CAAAZ,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,WAAY,MACZ,SAAU,UACV,MAAO0I,EAAWzD,EAAe7D,EACjC,WAAY,SACZ,SAAU,SACV,aAAc,UAAA,EAGf,SAAAqH,EAAM,KAAA,CAAA,EAERA,EAAM,QACLzI,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,SAAU,SACV,QAAS,GACT,WAAY,SACZ,SAAU,SACV,aAAc,UAAA,EAGf,SAAAyI,EAAM,MAAA,CAAA,CACT,EAEJ,EAGA7H,EAAAA,KAAC,MAAA,CACC,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,MAAA,EAEpD,SAAA,CAAA6H,EAAM,UACLzI,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,SAAU,SAAU,QAAS,EAAA,EACzC,SAAAyI,EAAM,QAAA,CACT,EAEFzI,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,aAAc,MACd,WAAY0I,EACRzD,EACA,wBACJ,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,WAAY,eAAA,EAGb,SAAA0D,EACC3I,EAAAA,IAAC3B,GAAA,CAAM,KAAM,GAAI,MAAM,OAAA,CAAQ,EAE/B2B,EAAAA,IAAC1B,GAAA,CAAK,KAAM,GAAI,MAAM,OAAA,CAAQ,CAAA,CAAA,CAElC,CAAA,CAAA,CACF,CAAA,EAzIKjC,CAAA,CA4IX,CAAC,CAAA,CAAA,EAIFmM,GACC5H,EAAAA,KAAC,MAAA,CACC,IAAK0E,EACL,MAAO,CACL,WAAY,2BAA2BJ,CAAc,KAAK/D,CAAe,IACzE,aAAc,OACd,QAAS,OACT,OAAQ,aAAa8D,CAAY,KACjC,eAAgB,aAChB,SAAU,WACV,SAAU,QAAA,EAIX,SAAA,CAAAuD,EAAa,WACZxI,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,SAAU,WACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,gBAAiB,OAAOwI,EAAa,SAAS,IAC9C,eAAgB,QAChB,mBAAoB,SACpB,OAAQ,0BACR,UAAW,YAAA,CACb,CAAA,EAKJ5H,OAAC,OAAI,MAAO,CAAE,SAAU,WAAY,OAAQ,GAE1C,SAAA,CAAAA,OAAC,OAAI,MAAO,CAAE,UAAW,SAAU,aAAc,QAC/C,SAAA,CAAAZ,EAAAA,IAAC,KAAA,CACC,MAAO,CACL,OAAQ,YACR,SAAU,SACV,WAAY,MACZ,MAAOiF,CAAA,EAGR,SAAAuD,EAAa,KAAA,CAAA,EAEfA,EAAa,QACZxI,EAAAA,IAAC,IAAA,CAAE,MAAO,CAAE,OAAQ,EAAG,QAAS,GAAK,SAAU,QAAA,EAC5C,WAAa,MAAA,CAChB,CAAA,EAEJ,EAGAY,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,IAAK,OACL,aAAc,MAAA,EAGhB,SAAA,CAAAZ,EAAAA,IAAC,SAAA,CACC,QAASoI,EACT,MAAOQ,GAAmBxH,EAAW,uBAAuB,EAC5D,aAAW,iBAEX,SAAApB,EAAAA,IAACvB,GAAA,CAAS,KAAM,EAAA,CAAI,CAAA,CAAA,EAGtBmC,EAAAA,KAAC,SAAA,CACC,QAAS,IAAM4F,EAAK,GAAG,EACvB,MAAOoC,GAAmBxH,EAAW,uBAAuB,EAC5D,aAAW,uBAEX,SAAA,CAAApB,EAAAA,IAACvB,GAAA,CAAS,KAAM,EAAA,CAAI,EACpBuB,EAAAA,IAAC,QAAK,MAAO,CAAE,SAAU,SAAU,WAAY,KAAA,EAAS,SAAA,IAAA,CAExD,CAAA,CAAA,CAAA,EAGFA,EAAAA,IAAC,SAAA,CACC,QAAS,IAAM,CACRqF,EAAS,UACVE,GACFF,EAAS,QAAQ,MAAA,EACjBG,EAAa,EAAK,IAElBH,EAAS,QAAQ,KAAA,EAAO,MAAM,IAAM,CAAC,CAAC,EACtCG,EAAa,EAAI,GAErB,EACA,MAAO,CACL,GAAGoD,GAAmB,OAAQ3D,CAAY,EAC1C,MAAO,OACP,OAAQ,OACR,aAAc,MACd,UAAW,cAAcA,CAAY,IAAA,EAEvC,aAAYM,EAAY,QAAU,OAEjC,SAAAA,QAAalH,GAAA,CAAM,KAAM,GAAI,EAAK2B,EAAAA,IAAC1B,GAAA,CAAK,KAAM,EAAA,CAAI,CAAA,CAAA,EAGrDsC,EAAAA,KAAC,SAAA,CACC,QAAS,IAAM4F,EAAK,EAAE,EACtB,MAAOoC,GAAmBxH,EAAW,uBAAuB,EAC5D,aAAW,0BAEX,SAAA,CAAApB,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,SAAU,SAAU,YAAa,KAAA,EAAS,SAAA,IAAA,CAEzD,EACAA,EAAAA,IAACtB,GAAA,CAAY,KAAM,EAAA,CAAI,CAAA,CAAA,CAAA,EAGzBsB,EAAAA,IAAC,SAAA,CACC,QAASkI,EACT,MAAOU,GAAmBxH,EAAW,uBAAuB,EAC5D,aAAW,aAEX,SAAApB,EAAAA,IAACtB,GAAA,CAAY,KAAM,EAAA,CAAI,CAAA,CAAA,CACzB,CAAA,CAAA,SAID,MAAA,CAAI,MAAO,CAAE,aAAc,QAC1B,SAAA,CAAAkC,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,aAAc,MACd,SAAU,SACV,QAAS,EAAA,EAGX,SAAA,CAAAZ,EAAAA,IAAC,OAAA,CAAM,SAAA2G,EAAWlB,CAAW,CAAA,CAAE,EAC/BzF,EAAAA,IAAC,OAAA,CAAM,SAAA2G,EAAWhB,CAAQ,CAAA,CAAE,CAAA,CAAA,CAAA,EAG9B3F,EAAAA,IAAC,MAAA,CACC,QAASqG,EACT,MAAO,CACL,OAAQ,MACR,WAAY,wBACZ,aAAc,MACd,OAAQ,UACR,SAAU,WACV,SAAU,QAAA,EAGZ,SAAArG,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,GAAIyF,EAAcE,EAAY,KAAO,CAAC,IAC7C,OAAQ,OACR,WAAY,0BAA0BV,CAAY,aAClD,aAAc,MACd,SAAU,UAAA,EAGZ,SAAAjF,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,SAAU,WACV,MAAO,OACP,IAAK,MACL,UAAW,mBACX,MAAO,OACP,OAAQ,OACR,WAAYiF,EACZ,aAAc,MACd,UAAW,aAAaA,CAAY,IAAA,CACtC,CAAA,CACF,CAAA,CACF,CAAA,CACF,EACF,EAGArE,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,eAAA,EAGlB,SAAA,CAAAA,OAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,IAAK,OAClC,SAAA,CAAAZ,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMyH,EAAW,CAACD,CAAO,EAClC,MAAOoB,GACLpB,EAAU,UAAYpG,EACtB,uBAAA,EAEF,aAAW,OAEX,eAACpD,GAAA,CAAM,KAAM,GAAI,KAAMwJ,EAAU,UAAY,MAAA,CAAQ,CAAA,CAAA,EAGvDxH,EAAAA,IAAC,SAAA,CACC,QAAS,IAAMkG,EAAa,CAACD,CAAS,EACtC,MAAO2C,GACL3C,EAAYhB,EAAe7D,EAC3B,uBAAA,EAEF,aAAW,cAEX,SAAApB,EAAAA,IAACzB,GAAA,CAAU,KAAM,EAAA,CAAI,CAAA,CAAA,CACvB,EACF,EAEAqC,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,MACL,SAAU,UAAA,EAGX,SAAA,CAAA8G,GACC1H,EAAAA,IAAC,MAAA,CACC,QAAS+H,EACT,MAAO,CACL,MAAO,OACP,OAAQ,MACR,WAAY,wBACZ,aAAc,MACd,OAAQ,UACR,SAAU,UAAA,EAGZ,SAAA/H,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,GAAG6F,EAAS,GAAG,IACtB,OAAQ,OACR,WAAYZ,EACZ,aAAc,KAAA,CAChB,CAAA,CACF,CAAA,EAIJjF,EAAAA,IAAC,SAAA,CACC,QAASsI,EACT,aAAcC,EACd,MAAOK,GAAmBxH,EAAW,uBAAuB,EAC5D,aAAYyE,EAAS,EAAI,OAAS,SAEjC,SAAAA,EAAS,EAAI7F,EAAAA,IAACnB,GAAA,CAAQ,KAAM,GAAI,EAAKmB,EAAAA,IAAClB,GAAA,CAAQ,KAAM,EAAA,CAAI,CAAA,CAAA,CAC3D,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EACF,EAEAkB,EAAAA,IAAC,QAAA,CACC,IAAKqF,EACL,IAAKmD,EAAa,IAClB,SAAUrB,EACV,KAAMlB,EACN,aAAcG,EACd,QAAS,IAAM,CACbZ,EAAa,EAAK,EACbS,GACHiC,EAAA,CAEJ,EACA,iBAAkB9B,EAClB,QAAQ,WACR,MAAO,CAAE,QAAS,MAAA,CAAO,CAAA,CAC3B,CAAA,CAAA,QAIH,QAAA,CAAO,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAiBUnB,CAAY;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKZA,CAAY;AAAA;AAAA,OAAA,CAE5B,CAAA,CAAA,CAAA,CAGR,CAEA,SAAS2D,GACPhM,EACAuE,EACqB,CACrB,MAAO,CACL,OAAQ,OACR,gBAAAA,EACA,MAAAvE,EACA,OAAQ,UACR,QAAS,OACT,aAAc,OACd,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,WAAY,gBACZ,eAAgB,YAAA,CAEpB,CCvwBA,SAASiM,GAAE1F,EAAE,CAAC,IAAI,EAAE2F,EAAEpE,EAAE,GAAG,GAAa,OAAOvB,GAAjB,UAA8B,OAAOA,GAAjB,SAAmBuB,GAAGvB,UAAoB,OAAOA,GAAjB,SAAmB,GAAG,MAAM,QAAQA,CAAC,EAAE,CAAC,IAAI,EAAEA,EAAE,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,IAAIA,EAAE,CAAC,IAAI2F,EAAED,GAAE1F,EAAE,CAAC,CAAC,KAAKuB,IAAIA,GAAG,KAAKA,GAAGoE,EAAE,KAAM,KAAIA,KAAK3F,EAAEA,EAAE2F,CAAC,IAAIpE,IAAIA,GAAG,KAAKA,GAAGoE,GAAG,OAAOpE,CAAC,CAAQ,SAASqE,GAAM,CAAC,QAAQ5F,EAAE,EAAE2F,EAAE,EAAEpE,EAAE,GAAG,EAAE,UAAU,OAAOoE,EAAE,EAAEA,KAAK3F,EAAE,UAAU2F,CAAC,KAAK,EAAED,GAAE1F,CAAC,KAAKuB,IAAIA,GAAG,KAAKA,GAAG,GAAG,OAAOA,CAAC,CCuCxW,MAAMsE,GAA8BlI,EAAAA,KACzC,CAAC,CACC,KAAAmI,EACA,KAAAtI,EACA,aAAAuI,EAAe,OAEf,aAAAC,EAAe,GACf,aAAAlE,EAAe,UAEf,KAAApI,EAAO,KACP,QAAAuM,EAAU,GAEV,gBAAAC,EAAkB,GAClB,SAAAC,EAAW,UACX,MAAAC,EACA,MAAAC,EAAQ,GAER,UAAApN,EACA,QAAA8H,CAAA,IACI,CAEJ,MAAMuF,EAAQ,CACZ,GAAI,sBACJ,GAAI,oBACJ,GAAI,qBAAA,EAIAC,EAAeP,EACjB,iCACA,GAEEQ,EAAgBR,EAKlB,CAAA,EAJA,CACE,gBAAiBlE,EACjB,MAAO,MAAA,EAIb,OACErE,EAAAA,KAAC,OAAA,CACC,QAAAsD,EACA,MAAQiF,EAA8B,OAAfQ,EACvB,UAAWZ,EACT,qEACA,0CACAK,EAAU,eAAiB,aAC3BK,EAAM5M,CAAI,EACV6M,EACAxF,GAAW,kCACX9H,CAAA,EAID,SAAA,CAAAiN,GACCrJ,EAAAA,IAAC,OAAA,CACC,MAAQmJ,EAA+C,OAAhC,CAAE,gBAAiBG,GAC1C,UAAWP,EACT,gDACAS,GAAS,eACTL,EAAe,aAAe,EAAA,CAChC,CAAA,EAKHI,IAAU,QACTvJ,EAAAA,IAAC,OAAA,CACC,MAAQmJ,EAA+C,OAAhC,CAAE,gBAAiBG,GAC1C,UAAWP,EACT,kEACA,2DACAI,EAAe,aAAe,EAAA,EAG/B,SAAAI,CAAA,CAAA,EAKJ5I,GAAQuI,IAAiB,cACvB,OAAA,CAAK,UAAU,oBAAqB,SAAAvI,EAAK,EAI3CsI,GAAQjJ,EAAAA,IAAC,OAAA,CAAM,SAAAiJ,CAAA,CAAK,EAGpBtI,GAAQuI,IAAiB,eACvB,OAAA,CAAK,UAAU,oBAAqB,SAAAvI,CAAA,CAAK,CAAA,CAAA,CAAA,CAIlD,CACF,EAEAqI,GAAM,YAAc,QCrGb,MAAMY,GAASjN,EAAAA,WACpB,CACE,CACE,SAAApC,EACA,WAAAsP,EACA,UAAAC,EACA,QAAAC,EAAU,GACV,YAAAC,EAAc,aACd,UAAAC,EAAY,GAEZ,QAAArG,EAAU,UACV,KAAA/G,EAAO,KAEP,SAAAqN,EACA,UAAA9N,EACA,KAAA/E,EAAO,SACP,GAAGoC,CAAA,EAELyD,IACG,CACH,MAAMiN,EAAaD,GAAYH,EAGzBK,EAAc,CAClB,GAAI,mBACJ,GAAI,oBACJ,GAAI,qBAAA,EAIAC,EAAiB,CACrB,QACE,8CACF,QACE,qHACF,MACE,wEAAA,EAGJ,OACErK,EAAAA,IAAC,SAAA,CACC,IAAA9C,EACA,KAAA7F,EACA,SAAU8S,EACV,UAAWpB,EACT,mGACA,yDACA,sBACAqB,EAAYvN,CAAI,EAChBwN,EAAezG,CAAO,EACtBqG,GAAa,SACbE,GAAc,oDACd/N,CAAA,EAED,GAAG3C,EAEH,WACCmH,EAAAA,KAAA0J,EAAAA,SAAA,CACE,SAAA,CAAAtK,EAAAA,IAAC,OAAA,CAAK,UAAU,gFAAA,CAAiF,EACjGA,EAAAA,IAAC,QAAM,SAAAgK,CAAA,CAAY,CAAA,CAAA,CACrB,EAEApJ,EAAAA,KAAA0J,EAAAA,SAAA,CACG,SAAA,CAAAT,GAAc7J,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAQ,SAAA6J,EAAW,EAClD7J,MAAC,QAAM,SAAAzF,EAAS,EACfuP,GAAa9J,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAQ,SAAA8J,CAAA,CAAU,CAAA,CAAA,CAClD,CAAA,CAAA,CAIR,CACF,EAEAF,GAAO,YAAc,SC7Ed,MAAMW,GAA8C,CAAC,CAC1D,KAAAvR,EACA,QAAAwR,EACA,eAAAC,EAAiB,CAAA,EACjB,SAAAC,EACA,SAAAR,EAAW,GACX,SAAAS,EAAW,GACX,SAAAC,EAAW,GACX,MAAAC,EACA,UAAAzO,EACA,WAAA0O,EACA,MAAAvI,EACA,WAAAwI,EACA,SAAA3I,EAAW,GACX,mBAAA4I,EAAqB,UACrB,yBAAAC,EAA2B,UAC3B,UAAA7J,EAAY,UACZ,WAAA8J,EACA,SAAAC,EAAW,EACb,IAAM,CACJ,MAAMC,EAAezI,EAAAA,OAAuB,IAAI,EAC1C,CAAC0I,EAAcC,CAAe,EAAI9L,EAAAA,SAAwB,IAAI,EAE9D+L,EAAgB7S,GAAkB,CACtC,GAAI,CAACgS,GAAYR,GAAYS,EAAU,OACvC,MAAMa,EAAgBf,EAAe,SAAS/R,CAAK,EAC/C+R,EAAe,OAAQgB,GAAMA,IAAM/S,CAAK,EACxC,CAAC,GAAG+R,EAAgB/R,CAAK,EAC7BgS,EAASc,CAAa,CACxB,EAGA5I,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAM8I,EAAYN,EAAa,QAC/B,GAAI,CAACM,EAAW,OAEhB,MAAMC,EAAiBxI,GAAqB,CAE1C,GADI+G,GACAmB,IAAiB,KAAM,OAE3B,MAAMO,EAAeP,GAEjBlI,EAAE,MAAQ,aAAeA,EAAE,MAAQ,gBACrCA,EAAE,eAAA,EACFmI,GAAiBM,EAAe,GAAKpB,EAAQ,MAAM,IAGjDrH,EAAE,MAAQ,WAAaA,EAAE,MAAQ,eACnCA,EAAE,eAAA,EACFmI,GAAiBM,EAAe,EAAIpB,EAAQ,QAAUA,EAAQ,MAAM,IAGlErH,EAAE,MAAQ,KAAOA,EAAE,MAAQ,WAC7BA,EAAE,eAAA,EACFoI,EAAaf,EAAQoB,CAAY,EAAE,KAAK,EAE5C,EAEA,OAAAF,EAAU,iBAAiB,UAAWC,CAAa,EAC5C,IAAMD,EAAU,oBAAoB,UAAWC,CAAa,CACrE,EAAG,CAACN,EAAcb,EAASC,EAAgBP,CAAQ,CAAC,EAGlDtJ,EAAAA,KAAC,MAAA,CACC,IAAKwK,EACL,KAAK,QACL,gBAAelB,EACf,eAAc,CAAC,CAACW,EAChB,SAAU,EACV,UAAW9B,EAAK,sBAAuB3M,CAAS,EAChD,MAAO,CAAE,GAAGmG,CAAA,EAEX,SAAA,CAAAiI,EAAQ,IAAI,CAACqB,EAAQxP,IAAU,CAC9B,MAAMyP,EAAYrB,EAAe,SAASoB,EAAO,KAAK,EAChDE,EAAYV,IAAiBhP,EAEnC,OACEuE,EAAAA,KAAC,QAAA,CAEC,UAAWmI,EACT,kFACAmB,EAAW,gCAAkC,cAC7C6B,EAAY,uBAAyB,EAAA,EAEvC,MAAO,CAAE,GAAGhB,CAAA,EACZ,QAAS,IAAMO,EAAgBjP,CAAK,EAEpC,SAAA,CAAA2D,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,MAAOoB,EAAW,SAAU,EAAA,EAAO,SAAAyK,EAAO,KAAA,CAAM,EAE/D7L,EAAAA,IAAC,QAAA,CACC,KAAK,WACL,KAAAhH,EACA,MAAO6S,EAAO,MACd,QAASC,EACT,SAAU5B,GAAYS,EACtB,SAAAC,EACA,SAAU,IAAMW,EAAaM,EAAO,KAAK,EACzC,MAAO,CAAE,QAAS,MAAA,CAAO,CAAA,EAI1Bf,EACCA,EAAWgB,CAAS,EAEpB9L,EAAAA,IAAC,OAAA,CACC,MAAO,CACL,QAAS,cACT,eAAgB,SAChB,WAAY,SACZ,MAAOoC,EACP,OAAQA,EACR,aAAc,EACd,OAAQ,aACN0J,EAAYd,EAAqBC,CACnC,GACA,gBAAiBa,EAAYd,EAAqB,cAClD,WAAY,gBAAA,EAGb,SAAAc,GACC9L,EAAAA,IAAC,MAAA,CACC,QAAQ,YACR,KAAK,OACL,OAAO,QACP,YAAa,EACb,cAAc,QACd,eAAe,QACf,MAAO,CAAE,MAAOoC,EAAW,GAAK,OAAQA,EAAW,EAAA,EAEnD,SAAApC,EAAAA,IAAC,WAAA,CAAS,OAAO,gBAAA,CAAiB,CAAA,CAAA,CACpC,CAAA,CAEJ,CAAA,EAtDG6L,EAAO,KAAA,CA0DlB,CAAC,EAEAhB,GACC7K,EAAAA,IAAC,IAAA,CACC,KAAK,QACL,MAAO,CACL,MAAO,UACP,SAAU,GACV,UAAW,EACX,GAAGkL,CAAA,EAGJ,SAAAL,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,EC1JamB,GAAwC,CAAC,CACpD,KAAAhT,EACA,QAAAwR,EACA,cAAAyB,EACA,SAAAvB,EACA,SAAAR,EAAW,GACX,SAAAS,EAAW,GACX,SAAAC,EAAW,GACX,MAAAC,EACA,UAAAzO,EACA,MAAAmG,EACA,WAAAwI,EACA,SAAA3I,EAAW,GACX,mBAAA4I,EAAqB,UACrB,yBAAAC,EAA2B,UAC3B,UAAA7J,EAAY,UACZ,WAAA8J,EACA,SAAAC,EAAW,EACb,IAAM,CACJ,MAAMC,EAAezI,EAAAA,OAAuB,IAAI,EAC1C,CAAC0I,EAAcC,CAAe,EAAI9L,EAAAA,SAAwB,IAAI,EAGpEoD,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAM8I,EAAYN,EAAa,QAC/B,GAAI,CAACM,EAAW,OAEhB,MAAMC,EAAiBxI,GAAqB,CAC1C,GAAI+G,EAAU,OACd,MAAM0B,EAAeP,GAAgBb,EAAQ,UAAW0B,GAAMA,EAAE,QAAUD,CAAa,GAAK,EAE5F,GAAI9I,EAAE,MAAQ,aAAeA,EAAE,MAAQ,aAAc,CACnDA,EAAE,eAAA,EACF,MAAMgF,GAAayD,EAAe,GAAKpB,EAAQ,OAC/CE,GAAYA,EAASF,EAAQrC,CAAS,EAAE,KAAK,EAC7CmD,EAAgBnD,CAAS,CAC3B,CAEA,GAAIhF,EAAE,MAAQ,WAAaA,EAAE,MAAQ,YAAa,CAChDA,EAAE,eAAA,EACF,MAAMkF,GAAauD,EAAe,EAAIpB,EAAQ,QAAUA,EAAQ,OAChEE,GAAYA,EAASF,EAAQnC,CAAS,EAAE,KAAK,EAC7CiD,EAAgBjD,CAAS,CAC3B,CACF,EAEA,OAAAqD,EAAU,iBAAiB,UAAWC,CAAa,EAC5C,IAAMD,EAAU,oBAAoB,UAAWC,CAAa,CACrE,EAAG,CAACN,EAAcb,EAASyB,EAAevB,EAAUR,CAAQ,CAAC,EAG3DtJ,EAAAA,KAAC,MAAA,CACC,IAAKwK,EACL,KAAK,aACL,gBAAelB,EACf,eAAc,CAAC,CAACW,EAChB,UAAW9B,EAAK,sBAAuB3M,CAAS,EAChD,MAAO,CAAE,GAAGmG,CAAA,EACZ,SAAU,EAET,SAAA,CAAAiI,EAAQ,IAAI,CAACqB,EAAQxP,IAAU,CAC9B,MAAMyP,EAAYG,IAAkBJ,EAAO,MACrCE,EAAYV,IAAiBhP,EAEnC,OACEuE,EAAAA,KAAC,QAAA,CAEC,UAAWmI,EACT,qEACAmB,EAAW,gCAAkC,cAC7C6B,EAAY,uBAAyB,EAAA,EAEvC,MAAO,CAAE,GAAGhB,CAAA,EAEZ,SAAA,CAAA/K,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,MAAOoB,EAAW,SAAU,EAAA,EAAO,SAAAyK,EAAO,KAAA,CAAM,EAE/D7L,EAAAA,IAAC,QAAA,CACC,KAAK,QACL,KAAAhH,EACA,MAAO6S,EAAO,MACd,QAASC,EACT,SAAU5B,GAAYS,EACtB,SAAAC,EACA,SAAU,IAAMF,GAAYA,EAASmB,EAAO,KAAK,EACjD,MAAO,CAAE,QAAS,MAAA,CAAO,CAAA,EAG3B7L,EAAAA,IAAC,OAAA,CACC,UAAW+I,EAAK,qEAAqE,EACrF,MAAO,CACL,MAAO3G,EACP,OAAQA,EACR,OAAQ,aAAa0J,EAAYd,EAAqBC,CAAwB,GAC9E,gBAAiBa,EAAYd,EAAqB,cAClD,WAAY,eAAA,EAGb,SAAAc,GACC9L,EAAAA,IAAC,OAAA,CACC,MAAO,CACL,MAAOoC,EAAW,EAClB,OAAQA,EAAW,EACnB,aAAc,MACd,gBAA4B,MAAS,CACvC,CAAA,CACF,CAAA,CAEJ,CAAA,EAzCKyJ,EAAO,KAAA,CA4ClB,CAAC,EAEAhB,GACC7K,EAAAA,IAAC,IAAA,CACC,KAAK,QACL,MAAO,CACL,MAAO,UACP,SAAU,GACV,UAAW,EACX,GAAGkL,CAAA,EAGJ,SAAAL,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,EC/HasB,GAA0C,CAAC,CACtD,KAAAnT,EACA,QAAAwR,EACA,eAAAC,EAAiB,CAAA,EACjB,SAAAC,EACA,SAAAR,EAAW,GACX,SAAAS,EAAW,GACX,SAAAC,EAAW,GACX,MAAAC,EACA,UAAAzO,EACA,MAAAmG,EACA,WAAAwI,EACA,SAAA3I,EAAW,GACX,mBAAA4I,EAAqB,UACrB,cAAAoB,EAAgB,UAChB,UAAAhL,EAAY,UACZ,WAAA8J,EACA,SAAAC,EAAW,EACb,IAAM,CACJ,MAAMC,EAAezI,EAAAA,OAAuB,IAAI,EAC1C,CAAC0I,EAAcC,CAAe,EAAI9L,EAAAA,SAAwB,IAAI,EAE9D+L,EAAgB7S,GAAkB,CACtC,GAAI,CAACgS,GAAYR,GAAYS,EAAU,OACvC,MAAMa,EAAgBf,EAAe,SAAS/R,CAAK,EAC/C+R,EAAe,OAAQgB,GAAMA,IAAM/S,CAAK,EACxC,CAAC,GAAG+R,EAAgB/R,CAAK,EAC7BgS,EAASc,CAAa,CACxB,EAGA5I,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAM8I,EAAYN,EAAa,QAC/B,GAAI,CAACM,EAAW,OAEhB,MAAMC,EAAiBxI,GAAqB,CAG1C,GAFI+G,GAEAmB,IAAiB,KAAM,OAC3B,MAAMO,EAAeP,EAErB,GAAIlI,EAAE,MAAQ,cAAgBA,EAAE,MAAQ,YAAa,CACnDA,EAAE,eAAA,EACF,MAAMgF,GAAayD,EAAe,GAAKpB,EAAQ,OAC/Cc,EAAgBnD,CAAS,CAC3B,CAEA,GAAIhF,EAAE,MAAQ,aAAeA,EAAE,MAAQ,UAAW,CAChDA,EAAE,eAAA,EACF,MAAMkF,GAAauD,EAAe,EAAIpB,EAAQ,QAAUA,EAAQ,OAChEc,EAAgBjD,CAAS,CAC3B,EAEIlF,EAAE,MAAQ,KAAOA,EAAE,MAAQ,WAC7BA,EAAE,eAAA,EACFoI,EAAaf,EAAQoB,CAAY,EAAE,KAAK,EAE5C,EAEA,OAAAF,EAAU,iBAAiB,UAAWC,CAAa,EAC5C,IAAMD,EAAU,oBAAoB,UAAWC,CAAa,CACrE,EAAG,CAACN,EAAcb,EAASC,EAAgBP,CAAQ,CAAC,EAGlDtJ,EAAAA,KAAC,MAAA,CACC,IAAKwK,EACL,KAAK,QACL,gBAAelB,EACf,eAAc,CAAC,CAACW,EAChB,SAAU,EACV,UAAW9B,EAAK,sBAAuB3M,CAAS,EAChD,MAAO,CAAE,GAAGmG,CAAA,EAEX,SAAA,CAAAiI,EAAQ,IAAI,CAACqB,EAAQxP,IAAU,CAC9B,MAAMyP,EAAYrB,EAAe,SAASoB,EAAO,KAAK,EAChDE,EAAYV,IAAiBhP,EAEnC,OACEuE,EAAAA,KAAC,QAAA,CAEC,UAAWmI,EACT,kFACAmB,EAAW,gCAAkC,cAC7C6B,EAAY,uBAAyB,EAAA,EAEvC,MAAO,CAAE,GAAGhB,CAAA,EACZ,QAAS,IAAMO,EAAgBjP,CAAK,EAEpC,SAAA,CAAA2D,EAAAA,IAAC,OAAA,CAAK,MAAO,CAAE,MAAOoB,EAAW,SAAU,EAAA,EAAO,SAAAyK,EAAO,KAAA,CAAM,EAE/D7L,EAAAA,IAAC,QAAA,CACC,KAAK,WACL,KAAAhH,EACA,MAAO6S,EAAO,MACd,QAASC,EACT,SAAU5B,GAAYS,EACtB,SAAAC,EACA,SAAU,IAAMW,EAAaM,EAAO,KAAK,EACzC,MAAO,CAAE,QAAS,MAAA,CAAO,CAAA,EAI3B7L,EAAAA,IAAC,OAAA,CACC,UAAW+I,EAAK,qDAAqD,EACrE,MAAO,CACL,MAAO3G,EAAW,EAClB,OAAQA,EAAW,IACnB,gBAAiB0J,EACbd,EACAoB,EACJ,WAAY,8BACZ,aAAc,IAAA,EAGhB,SAAApM,EAAAA,IAAC,OAAA,CACC,MAAO,CACL,SAAU,WACV,IAAK,MACL,KAAM8L,EACF,eAAe1J,EAAW,CAAC,YAC3B,MACJ,UAAW,mBACX,MAAOA,EAAW,EAClB,OAAQA,EAAW,EACnB,aAAc,MACd,gBAAiB,OACjB,UAAW,4BACX,WAAY,iBAAA,CACd,CAAA,CACF,CAAA,CACF,CAAA,EAnDKyJ,EAAO,KAAA,CAsDlB,CAAC,EAEAhB,GACC7K,EAAAA,IAAC,IAAA,CACC,KAAK,QACL,MAAO,CACL,MAAO,UACP,SAAU,GACV,UAAW,EACX,GAAGkL,CAAA,EAGJ,SAAAL,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,ECtKMzH,GAAyC,CAC7C,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,MAAO,YACP,KAAM,QACR,EAEMiJ,GAAqE,CACzE,KAAM,MACN,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACN,EAMaC,GAAsC,CAAC,CAClD,KAAAzP,EAAO,KACP,QAAAsI,EAAU,KACV,OAAAoH,EAAS,GACT,UAAAnQ,EAAY,GACZ,SAAA7B,CACF,IAAM,CACJ,MAAM4B,EAAU4M,EACd,oBACA3F,GAAQvG,CAAI,EACZwP,GAAWlH,CAAO,EAClBoH,GAAU,UACVnQ,CAAA,EAGF,OAAO4D,EAAAA,IAAC,MAAA,CAAI,UAAW7D,EAAU,SAAA5B,CAAA,CAAS,CAC5C,EC7BMiS,GAAoB,CACxBC,EACA/T,IAEIA,GAAS,KAAa,GACtB,OAAOA,GAAU,SAAiB,GAAG+T,CAAM,IAAI/T,CAAK,GACjD,OAAO,QAAQA,CAAK,EACxB,IAAI,CAAC,CAACgU,EAAIC,CAAG,IAAM,GAAGD,CAAE,IAAID,CAAM,IAAIE,CAAG,EAAE,EAC3C,KAAK,GAAG,EAGAC,GAAoC,CAAC,CAChD,UAAAC,EAAY,CAAE,GAAI,SAAU,GAAI,KAAA,EAChC,MAAAC,EAAQ,SACR,QAAAC,EAAU,UACV,KAAAC,EAAO,OACP,IAAAC,EACA,QAAA9H,EACA,OAAA+H,EACA,UAAA9Q,EACA,SAAA7B,CACF,IAAM,CACJ,MAAM4B,EAAU4M,EACd,OACAyD,GAAkB,OAAQK,CAAS,EACnCL,GAAkB,QAASM,CAAK,EAChCN,GAAkB,UAAWO,CAAO,EACpCP,GAAkB,OAAQQ,CAAI,EAC9BC,EAAMT,GAAkB,MAAOS,CAAG,EAAI,GACtC9H,EAAUqH,GAAkB,IAAKrH,CAAO,EAAI,GAC5C+H,EAASV,GAAkB,IAAKU,CAAM,EAAI,GAC1C9Q,CAAA,EAGF,OAAO4D,EAAAA,IAAC,MAAA,CAAI,UAAW7D,EAAU,SAAA5B,CAAA,CAAS,CAC5C,ECrCMiS,GAAoB,CACxBC,EACA/T,IAEIA,GAAS,KAAa,GACtB,OAAOA,GAAU,SAAiB,GAAG+T,CAAM,IAAI/T,CAAK,GACjD,OAAO,QAAQA,CAAK,EACxB,IAAI,CAAC,CAACgU,EAAIC,CAAG,IAAM,GAAGD,CAAE,IAAID,CAAM,IAAIE,CAAG,EAAE,EAC3C,KAAK,GAAG,EAGAQ,GAA8B,CAAC,CAC1C,UAAAN,EAAY,CAAE,GAAI,WAAY,GAAI,YAAA,EAClC,IAAAI,EAAM,EACN,MAAAH,EAAQ,SACR,QAAAC,EAAU,QACV,KAAAC,EAAO,SACP,UAAA5Q,EACA,SAAA7B,CACF,IAAM,CACJ,MAAM4B,EAAU4M,EACd,OACAyD,GAAkB,OAAQK,CAAS,EACnCL,GAAkB,MAAOS,CAAG,EAC5BH,IAAU,UAAY,SAASA,CAAK,GAAK,gBACzCC,IAAY,QAAU,WAAWA,CAAO,GAAK,gBAC7CC,IAAS,SAAW,QAAQA,CAAI,GAAK,cACrC5Q,CAAA,EAGF,OAAO4D,EAAAA,IAAC,MAAA,CAAI,UAAW7D,EAAU,SAAA5B,CAAA,CAAS,CAC5C,EAGa6S,GAAgC3T,GAC3CuG,MAACmN,IAAM,UAAU,aAAc,GAAG1T,CAAA,CAAO,EAG9B4T,GAAgC5T,GAC3CuG,MAACmN,IAAM,UAAU,WAAY,GAAG1T,CAAA,CAAO,ECvCnC+S,GAAoB,CACxBC,EACA/T,IAEIA,GAAS,KAAa,GACtB,OAAOA,GAAU,SAAiB,GAAG+T,CAAM,IAAI/T,CAAK,GACjD,OAAO,QAAQA,CAAK,EACxB,IAAI,CAAC,CAACgU,EAAIC,CAAG,IAAM,GAAGD,CAAE,IAAID,CAAM,IAAIE,CAAG,EAAE,EAC3C,KAAK,GAAG,EAGAW,GAAgC,CAAC,CAC5C,QAAAC,EAAU,CAAE,GAAI,EAAG,GAAI,EAAG,GAAI,CAAA,EAC9B,IAAAN,EAAM,EACN,QAAA9H,EAAU,EACV,WAAAqI,EAAa,UACb,aAAAC,EAAe,UACf,UAAArR,EACA,SAAA7B,CACF,IAAM,CACJ,MAAM4B,EAAU4M,EACd,OACAyD,GAAkB,YAAae,CAAO,EACtCf,GAAkB,MAAOS,CAAG,EAC5BT,GAAkB,IAAKrH,CAAO,EAC9BqI,IAAe,UAAY,SAASA,CAAU,GAAK,gBACnDC,IAAiB,UAAY,iBAAiBA,CAAY,GAAK,wBAC/DrR,CAAA,EAGF,OAAO4D,EAAAA,IAAC,MAAA,CAAI,UAAW7D,EAAU,SAAA5B,CAAA,CAAS,CAC5C,ECrCamT,GAA4C,CAAC,CACxD,MAAAC,EAAQ,cACR,KAAAhN,EACA,aAAAuI,EAAe,OACf,QAAAhF,EACA,UAAA9H,EAAY,EACd,IAEIwE,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,QAAAsD,EACA,UAAW,iMAAiM9H,CAAS,GAEpN,SAAA,CAAAuE,GAAQuI,IAAiB,QAAUvI,EACnCgN,EACAhN,GAAQuI,IAAiB,SAAWvI,CAAA,CAAA,CAAA,EAkB9BiN,GAAgC,CAAC,CAC5C,KAAAC,EACA,QAAAvN,EACA,SAAAwN,EAAW,QACX,KAAAjR,EAAO,QACP,SAAAtC,EACA,gBAAAwT,EAAkB,GAClB,UAAA3R,EAAY,GACZ,iBAAA4R,EAAmB,GACnB,qBAAAC,EAAuB,EACzB,IAAM,CACJ,KAAM,CAACC,EAASC,CAAU,EAAI3O,EAAAA,SAASqO,CAAI,EAE3CjL,EAAAA,UAAU,IAAM,CACViL,IAAiB,EAAI,EACpB,WAAW,IAAMM,EAAW,EAAK,EAAG,GAAG,CAC9C,EAAG,CAACN,CAAI,CAAC,EAET,MAAMO,EAAYC,EAAAA,QAAQ,IAAM,CAC9B,GAAIR,EAAM,MAAO,iBACjB,OAAQC,EAAA,CACN,IAAK,OACH,MAAO,oBACT,IAAK,QACH,MAAO,mBACT,IAAK,MACH,MAAO,oBACT,IAAK,SACH,MAAO,mBACT,QACE,MAAO,gBAAA,CAEb,EAAG,CAACD,EAAMC,CAAQ,CAAC,EAEnB,MAAI,CAACI,GAAW,CAACL,EAAa,KAG5BjN,EAAAA,KAAA0J,WAAA,CAEE,SAAA,CAAAtK,EAAAA,IAAC,MAAA,CACC,QAASM,EACT,UAAW,gDACTuN,EAAO,cAAgB,WACzB,IAAIG,CAAgB,EAAA,CAAA,EAItBpN,EAAAA,KAAC,MAAA,CACC,UAAW,4EAA4ExE,CAAS,GAChG,MAAO,CACL,MAAO0R,IAAa,QAAUA,IAAa,QAAUjR,EAAO,OAC5D,OAAQiR,IAAa,OAASA,IAAa,SAAWjR,EAAO,OAC7D,KAAKiR,IAAa,UAAYA,IAAa,QAASA,IAAa,SAAW,OAAc,EAC1F,OAAQA,IAAa,SAAW,EAAI,OACpC,KAAMA,IAAa,OAAS,EAAIA,IAAa,QAAU,OAAS,EAChE,MAAOA,IAAa,QAAU,EAAIA,IAAa,OAAS,OAAS,EACjE,UAAAM,CAAA,EAGD,SAAA,CAAAL,GACC/N,EAAAA,IAAC,SAAA,CACC,QAASM,EACT,UAAW,+EAA+E2N,CAAoB,GAC9G,aAAW,eAEX,SAAAjO,EAAAA,IAACjB,GAAA,CAAE,KAAM,EAAA,CAAI,CAAA,CAAA,EAIjBiB,EAAAA,IAAC,MAAA,CAAI,UAAU,2BAA4B,SAAAzF,CAAA,CAAS,CAAA,CAAA,CAAA,CACtD,EACF,CAEJ,ECjEa+T,GAAW3R,EAAAA,WACtB,CAAClD,EAAOyD,IAAQ,CACd,KAAM,CACJ,MAAAyQ,EACA,KAAA3U,EAAO,GACP,MAAAN,EACA,aAAA6V,EACA,SAAA7D,EACA,QAAAF,EAAU,CAAA,EACV,YAAAgE,EAAc,mBACd,SAAA5D,EACA,SAAAV,EACA,MAAAW,EACA,QAAA4D,EACA,WAAAC,EAEA,UAAWC,EACX,WAAYC,EAEZ,QAAAhL,EAAU,OAEV,aAAAuF,EAAe,GACf,aAAAlE,EAAe,UAEf,mBAAA4J,EAAqB,GACrB,eAAAC,EAAiB,GACjB,iBAAAC,EAAmB,GACnB,kBAAAC,EAAoB,GACpB,gBAAAC,EAAkB,GAElB,UAAA7S,EAAY,EAAA,EACV3C,EAEE2R,EAAezI,EAAAA,OAAuB,IAAI,EAChDuM,EAAAA,oBAAoBhS,EAAK,IAAMkO,EAAa,OAAQ,EAEpD,KAAM,CAACyC,EAAMsB,CAAO,EAAI3P,EAAAA,SAAS,EAAK,EAChC,CAAC4P,EAAYC,CAAa,EAAI7P,EAAAA,SAAS+O,GAAgB,EAAE,EAEzDe,EAAe5W,IAAU,OAAYA,EAAQ0W,EAC7CG,EAAiB/E,EAAQ,KAAM0B,GAAMA,EAAE,QAAUoD,CAAY,EAGnE1M,EAAAA,UAAU,IAAM,CACd,MAAM4M,EAAWrM,GAAkB,CAE/BiI,EAAa,SACb,CAACA,EAAa,QAAQ,SAASjI,EAAE,MAAc,GAE/CgM,EAAQ,EAAK,CAEjB,EACA,gBAAS,iBAAiB,YAAaK,CAAO,EACvC,IAAM,SAAS,oBAAoB,YAAaA,CAAO,CAChE,EAAG,CAAA,CAAE,EAEL,MAAMC,EAAgB5D,GAAyB,CAC7CwD,EAAcxD,EAAO,KAAK,EAC1BnB,IAAW1R,EAAM6S,EAAO,KAAK,EAC7BsD,EAAQ,EAAK,CACf,EAGMO,EAAQ,CACZ,KAAM,CACJ,GAAI,cACJ,KAAM,aACN,OAAQ,kBACR,SAAU,2BACV,OAAQ,iCAAA,EAEV,MAAO,CACL,GAAI,WACJ,KAAM,gBACN,OAAQ,kBACR,SAAU,2BACV,OAAQ,iCAAA,CACV,EACA9L,CAAO,EAGH+L,EAAiCxG,EAEnC,CAAA,EADA,CAAE,MAAOlE,CAAA,EAGP2K,EAAgCzG,EAElC,CAAA,EADA,CAAE,YAAalE,CAAA,EAGb4K,EAAkC1G,EAEpC,CAAA,EADA,CAAE,gBAAiB,GAAGlE,CAAY,IAAA,EAIhC6K,EAAcjF,EAChB,kBACA4D,EACA,qBACAiB,EAAM,OAEJK,EAAcnB,EAAa,cAAgB,OAEjD,OACEhO,EAAAA,KAAC,MAAA,CACC,IAAKwK,EACL,UAAW,oBAAoByD,CAAkB,IAAIzS,CAAS,GAG7D,SAAA,CAAAuR,GACC/M,EAAAA,KAAC,QAAA,CACC,UAAW,mDAAmDkO,CAAc,GAE3E,SAAA,CAAAH,GACC3O,EAAAA,IAAC2O,EAAA,CACC,UACExF,EAAe,gCAAkC,UAEnD,MAAQA,EAAgC,OAAjBwG,CAAiB,CAAA,EAG3ChC,EACA/C,GAAY5K,EAAAA,IAAC,OAAA,CAAK,UAAU,gBAAgB,SAAA,GAAA,CAAC,CAAA,CAAA,CAAA,EAIlDY,EAAAA,KAAC,MAAA,CAAI,UAAU,iBAEZ,SAAA,CAAAgO,GACC5O,EAAAA,IAAC,MAAA,CAAI,UAAU,gDACb,SAAAA,EAAAA,IAAC4O,EAAA,CACC,UACEzF,EACI,iEACA,wBAEN,MAAQA,EAAgC,OAAjBwG,CAAiB,CAAA,EAE5C,EAIF/O,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,SAAAsJ,EACA,QAAS,IAAMiF,EAASa,GAAM,CAACA,CAAC,EAChC,MAAQ7G,EAA+B,OAAhByG,EACvB,UAAW;AAAA;AAAA;AAAA,gBAGPF,EAAM,EAAE,IAAIA,EAAM,IAAI;AAAA,gBACtBK,CAAW;AAAA,gBACXD,CAAW;AAAA;AAAA,gBAGX3G,EACI,+DACA,EACN;AAAA;AAAA,gBAEE4F,CAAgB;AAAA,cAGpB,SAAA,CAAA/O,EAAAA,IAAC,OAAA,CAAK,UAAWuP,EAAiBG,EAAM,KAAO,gBAC5C,SAAAH,EAAiBA,EAAe,MAAQf,CAAA,CAC3C,EAEAxO,EAAAA,IAACtC,GAAA,CACC,UAAW,0EACTmQ,EAAO,aAAe,EACxB,gBAAA,CAAA,CACF,CAAA,CAAA,EAIDA,GACC7N,EAAAA,IAAC,MAAA,CACC,UAAW;AAAA;AAAA,kBAEP0P,EAAM,QAAQ;AAAA,kBACdV,CAAiB;AAAA,gBAGrB,eAAC,KAAA,CAAG,UAAU,2BACX,SAAAxE,EAAQ,IAAKyF,GAAQ,CACpB,MAAMvH,EAAW4G,IAAiBW,EAAI,MAEtC,OACErP,EAAAA,KAAC,KAAA,CAEC,QAAS,IAAM6O,EAAaQ,CAAG,EAC/B,MACE,CAAC9G,GAAgBT,EAAWmH,EAAkB,OAEhD,UAAW;AAAA;AAAA,0BAGPnH,EACIS,EACE,+CACA,GACFuG,EAAM,MACZ;AAAA,0BACET,CAAe;AAAA,wBAGlB,SAAA,CAAAgB,EAAI,MAAQjQ,MAAC,OAAA,CAAM,SAAAiQ,EAAI,KAAK,EAC5BA,EAAI,KAAA,CAAA,EAlBAA,EAAI,KAAA,CAqBf,CAAC,CAAA,CACH,CAAA,CAAA,CACF,EAEJ,GAGEvB,GAAc7D,IACd7K,EAAAA,IAAC,IAAA,CACC,UAAW,WACT6K,EACI,gBACA4D,EACA,mBACA,eACN,GAEC,SAAA,OAAO5D,GAAU,SAAWA,EAAQ6D,CAAA,CAAA,CACvC,CAAA,CAAA,CAIR,CACF,EAEAJ,GAAS,YAAc,WC7OhB,MAAM4B,GAAQvT,EAAAA,WAGnB,CAAClD,EAAOyD,IAAQ,CAChB,KAAM,CACJ,MAAAyQ,EACA,KAAA3U,EAAO,GACP,KAAA3B,EAAO,OACP,YAAAmX,EAAc,GACd,MAAA9V,EACA,aAAA6V,EACA,SAAA7D,EACA,SAAAE,EACA,SAAAV,EACA,SAAAS,EAEA,MAAAE,EACA,QAAA4D,EACA,WAAAC,EAEA,KAAMC,EACN,OAAAlC,EACA,WAAYmC,EACZ,WAAAuB,EAEA,IAAAC,EACA,IAAAC,EACA,KAAAC,EAEA,KAAAC,EAAO,EAEP,aAAApH,EAAe,GACf,aAAAlE,EAAe,UAEf,UAAA7I,EAAY,EAAA,EACV3C,EAEE+W,EAAW7N,EAAAA,OAA+C,IAAI,EACpEuM,EAAAA,oBAAoBhS,EAAK,IAAMsT,EAAS,OAAQ,EAEhD,KAAM,CAACpB,EAAYC,CAAa,EAAI7P,EAAAA,SAAS+O,GAAgB,EAAE,EACzD,CAACkC,EAASC,CAAU,EAAIlR,EAAAA,SAAS,EAAK,EAEtCmR,EAAgB,EAAQ/B,EACxBgC,EAAgB,EAAQnE,EACxBoE,EAAYF,GAAiBC,EAE7BtB,EAAe5W,IAAU,OAAYA,EAAQ0W,EAE7C7D,EACJpI,GACG,CACH,MAAMwJ,EAAMxJ,EAAE,OAAO,MACrBkM,EAAc1C,CAAG,EACjBjC,IAAW1R,EAAM2T,CAAG,CACtB,EAEMhB,EAAiBxI,GAA6C,CAC9D9L,IAAS,UAAY8L,EAAE,MAAQ,OAAO,eAAA,CAC5C,EAGM2N,EAAa,IACZD,EACDF,GAAiBC,EAAsB,aACvCA,EAAsB,aACtBD,EAAsB,aACnB,OAJgB,OAQnBI,EAAoC5H,EAKtC,CAAA,EAJA,CACE,YAAalE,EACb,UAAW,aAAaA,CAAY,EAAA,EAIpC+L,EAAoC7H,EAEtC,CAAA,EADA,CAAE,MAAOlE,CAAA,EAIPgM,EAAcpG,EAChB,iBACA4D,EACA,qBACA,uCAEJ,OACE7N,EAAAA,KAAC,MAAA,CAAI,UAAW,oBAAoBxE,CAAS,GAE1C,SAAA,CAAAuR,GACC/M,EAAAA,KAAC,QAAA,CAAM,UAAU,mFACd,SAAA,CAAA+N,GACC3O,EAAAA,IAAC2O,EAAA,CACC,KAAM,GACN,UAAWxF,EAAe,wBAA0B,GACpD,MAAQA,EAAmC,OAApB6H,CAAoB,CAAA,EAG9CrD,EACA/C,GAAY5K,EAAAA,IAAC,OAAA,CAAK,UAAU,eAAe,SAAA,GAAA,CAAC,CAAA,EAC/C,EAIFY,EAAAA,KAAC,MAAA,CAAI,UAAU,WAEZ,SAAA,CAAAiQ,GACCjQ,EAAAA,KAAC,MAAA,CAAI,UAAU,mGACZ,SAAA,CAAAgO,GAAc5O,EAAAA,IAAC4O,EAAA,CAAW,KAAM,EAAA,CAAI,EACpCgC,GACChQ,EAAAA,KAAA0J,WAAA,CACE,SAAA,CAAAtK,EAAAA,IAAC,OAAA,CAAK,UAAU,+CACb,SAAAyM,EACH,EACAzM,EAAAA,IAAC,OAAA,CAAK,UAAU,uCAAA,CAAwC,CAAA,CAAA,CAC1D,CAAA,EAEJ,EAID3I,IAAS,WACR2I,EAAAA,IAAC,WAAA,CACC,IAAKwQ,EACL,KAAAxX,EACA,MAAOsW,EACP,SAAU/D,EACV,YAAAiD,EACA,SAAA5D,EACA,SAAAV,EACA,SAAAS,EACA,KAAA4F,EACA,MAAQpH,EAAmC,OAApB4H,EACvB,UAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAOP5H,GAAgB,2DAA2D;AAAA,gBAC3E2H,GAAY;AAAA,gBACZG,CAAW;AAAA,aAAA,CAAA,EAIjBjR,EAAAA,IAAC,QAAA,CACC,IAAKwQ,EACL,KACEnZ,IAAS,WACLoZ,EACE,OACA,WACFpZ,EAEN,KAAA2B,EACA,MAAOsW,EACP,SAAU/D,EACV,UAAWI,EACX,YAAA6C,EACA,SAAA5D,EACA,SAAAV,EACA,SAAAS,EACA,IAAKtT,IAAS,SAAW+Y,GAAO,EAAI,OACpC,IAAAC,EACA,KAAAC,EACA,MAAQnH,EAAmC,OAApB4H,EACvB,UAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAQP5H,GAAgB,2DAA2D;AAAA,gBAC3E2H,GAAY;AAAA,gBACZG,CAAW;AAAA,aAAA,CAAA,EAMlB5Z,IAAS,YACR2I,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM0Q,EAAW,CAACD,CAAO,EAClC,UAAU,0DAET,SAAAA,QAAW3S,GAAA,CAAO,KAAM,GAAI,EAAKkC,EAAAA,IAACjC,GAAA,CAAI,KAAM,EAAA,CAAI,CAAA,CAAA,EAKpDoS,GAAc9Y,IAAS,kBACrB,OAAA,CAAK,UAAU,0DACb,SAAA8Y,CAAA,CACH,CAAA,EAEJ,GAGEzB,GAAc7D,IACd7K,EAAAA,IAAC,IAAA,CACC,UAAW,WACT6K,EACI,eACA4D,EACA,mBACA,eACN,GAEC,SAAA5D,GAAS,OAAOA,GAAU,SAAWA,EAAQ6D,CAAA,CAAA,CAChD,EAEJ,CAEJ,CAAC,ECxOYwC,GAA8B,CAAC,CAC1C,IAAAxN,EACA,IAAAC,EAAM,QACN,MAAApD,EACA,MAAA6E,EAAQ,SACR,OAAA+L,EAAS,SACT,QAAA/H,EAAU,aACV,YAAAlI,EAAc,cACd,YAAAkQ,EAAc,IACd,OAAA9O,EAAS,GACT,QAAA+O,EAAU,EACV,UAAAC,EAAY,QACZ,YAAAC,EACA,aAAAC,EAAe,kBACf,QAAAC,EACA,WAAAC,EAAa,GACb,EAAA1B,EACA,EAAA2B,EACA,WAAAC,EAAa,KACb,YAAAC,EAAc,EACd,aAAAC,EACA,YAAAC,EAAc,GACd,mBAAA1P,EAAqB,QACrB,SAAA2P,EAAW,SACX,UAAA5V,EAAY,GACZ,MAAAmG,EACA,QAAA2B,EACA,OAAA+N,EACA,QAAAC,CACF,IAAM,CAEJ,MAAMC,EAAc9D,EAAAA,QAAQ,IACV,CACd,uCACA/L,EAAS,YAAc,GACvB8G,EACA4G,GAAK,GACL2B,GAAK,GACLD,EAAa,gBAAkB,GAC/BtV,CAAA,EAEa,KAAK,GAAG,EACtB,CAACkG,EAAQ8G,EAAS4G,EAAG2B,EAAGD,EAAYtV,CAAS,CAAC,EAG3CgW,EAAoC/D,EAAAA,QACxC,KAAO,CACL,MAAO,OAAOjJ,GAAU,SAAWA,EAAQ,OAC3C,OAAQ,OAAO+L,GAAW,SAAWA,EAAS,OAC9C,UAAAG,EACA,QAAAD,EACA,YAAAnQ,EACA,YAAAkQ,EACA,WAAY,OAAO/O,CAAkB,QACrC,GAAGE,CAAA,GAEL,CAAC6C,EAAO+L,EAAQG,EAAWD,EAASnQ,EAAakQ,EAAa/O,EAAoBE,CAAK,CAAA,EAInF8P,EAAsChE,EAAAA,QAAQ,IAAM,CACxD,OAAQ2D,EAAA,CACN,IAAK,IACH,MAAO,CAAE,UAAW,QAAA,EACtB,IAAK,IACH,MAAO,CAAE,UAAW,QAAA,EACtB,QACE,MAAO,CAAE,SAAAA,CAAA,CAAS,CAExB,EAAG,CAACA,CAAQ,CAAC,EAGPM,EAAoBnP,GAA0C,CAC9D2O,IAAiB,SAAW3O,EAAE,cAAc,MAAM,QAAU2O,EAAa,SAAA,GAC7E3O,EAAE,cAAc,MAAM,UAAY,SAASyO,CAAU,YAAYC,CAAW,OACxEE,IAAa5O,EAAE,cAAc,MAAM,UAAY,6BACrD,EAEMoP,EAAoBpP,GAA0C,CAClEA,EAAE,cAAc,MAAM,QAAUkO,EAAQ,SAAA,EACxClO,EAAE,cAAc,MAAM,UAAY,wBAC9B4O,IAAa5O,EAAE,cAAc,MAAM,UAAY,GACrD,EAEA,OACEvC,EAAAA,KAAC,MAAA,CACC,KAAK,MACL,aAAY+C,EACZ,MAAOpD,GAASoD,EAChB,QAAAO,EACA,UAAWiO,EACX,MAAO,CAAE,SAAU,WAAY,OAAQjO,EAAU,UAAY,UAAW,GAAGmO,CAAA,EAG1E,SAAA,CAAAZ,EACCzR,EAAAA,IAAC,MAAA,CAAI,UAAU,iDAAkD,WAAQ,EAEzEA,EAAAA,IAAC,MAAA,CACC,IAAA0D,EACA,IAAAC,EACA,MAAOpD,GAASoD,EAChB,QAAQ,OACR,MAAOyO,EACP,UAAU,QACV,OAAAH,EACA,QAAAC,EACA,aAAcI,EACd,aAAcC,CAAA,CAAA,EAKjBhB,GACCvR,EAAAA,IAAC,MAAA,CACC,MAAO,CAAE,gBAAiBwR,CAAA,EAC1B,UAAU,yFAET,SAAAD,CAAA,CAAA,CACH,CAAA,CAAA,CAIR,ECnHMiB,GAAoC,CAAC,CACzC,KAAAvJ,EACA,KAAAtI,EACA,QAAAuD,EACA,SAAAuO,EACA,SAAAC,EACA,UAAAC,EACA,aAAAxJ,EAAe,GACf,aAAAlE,EAAe,UACf,cAAA2N,EACA,gBAAAC,CACF,IAAM,CAEJ,MAAMlJ,EAA+BR,EAEjC,CAAA,EADA,CAAE,MAAOlE,CAAA,EAGP6N,EAA8B3J,EAEhC,CAAA,EADA,CAAE,gBAAiBlE,CAAA,EAGvB,cACG,KAAA,CAAG,UAAW8D,EAAK,CAAC2J,GAAY,MAAM,EACrC,SAAA,CAAA9R,EAAAA,KAAC,MAAA,CACC,QAAAsD,EACA,MAAQiF,EAA8B,OAAfQ,EACvB,UAAWZ,EACT,kFACA7E,IACGiF,EACG,6CACA,kBACNyJ,CAAA,EAID,SAAA,CAAAjS,EACCX,EAAAA,IAAC,QAAK,UAAU,YAAa,WAAK,EAElC,CAAC0S,GACD,CAACC,GACC3S,EAAAA,IAAC,OAAA,CACC,MAAQmJ,EAA6B,OAAd2J,EACvB,UAAW/J,EACT,uBACAI,GAAgB,sBAChB0J,CAAA,CACF,CAAA,EAKN7S,EAAAA,IAAC,QAAM,SAAAiJ,CAAA,CAAK,CAAA,CAAA,CAAA,EAIbwJ,GAAYA,EAAS,OAAS,GAC7BzS,EAAAA,IAAC,KAAA,CACC,UAAW+I,EACT,sBACA4J,EAAY,eAAiB,WAAA,EAG9B,SAAAF,EAAS,IAAI,CAACM,EAAKhQ,IAClB/C,EAAAA,IAACwS,GAAA,CAEE,GAAGO,EACJ,SAAU,GACV,UAAAJ,EACA,aAAAxJ,EACA,aAAAlE,EACA,cAAA2N,EACA,gBAAAC,CAAA,EAPK9P,CAAA,CASR,CAAA,CAAA,CACH,EAEJ,CAEJ,EAMaiQ,GAA4B,CAAC,CACxC,MAAAzS,EACA,UAAA0S,EACA,MAAAlS,EACA,KAAA1J,EAAO,YAEP,aAAA8R,EAAe,GACf,aAAAlE,EAAe,UAEf,UAAA7I,EACA,cAAAwW,EACA,eAAAM,EACA,gBAAAL,CACF,IAAM,CACJ,MAAMF,EAAYtb,IAAS,UACrBqb,EAAWrb,IAAS,SAEpB8b,EAAUR,EAAY,KAAO,KAEnC,OACE/R,EAAAA,KAAC,MAAA,CACC,UAAWmI,EACT,uFACA3M,CAAA,EAGD,SAAA,CAAAmE,GACCK,EAAAA,KAAC,MAAA,CACC,UAAWmI,EACT,qFACAmK,CAAA,EAGD,SAAA,CAAAD,GAAajT,EAAAA,IAAC,QAAM,SAAAiT,CAAA,CAAU,EAC/BjT,EAAAA,IAAC,QAAM,SAAAO,CAAA,CAAM,CAAA,CAAA,CAAA,EAIjBP,EAAAA,IAACmT,EAAA,CACC,UAAWpK,EACT2J,EACI,uBACAC,EACA,8BACA,eAAA,EAGL,SAAA5R,EAAM,IAAI,CAACkC,EAAMF,IAChB/C,EAAAA,IAACwS,GAAA,CAEE,GAAGvP,EACJ,SAAAyP,EACA,UAAAC,EACA,aAAAxJ,EACA,aAAAlE,EACA,cAAA2N,EACA,gBAAAC,CAAA,EAPK9P,CAAA,CASR,CAAA,CAAA,CACH,CAAA,CAAA,CAGN,EC7KaqQ,GAA8B,CAAC,CAC1C,OAAAlQ,EACA,QAAA5C,EACA,SAAA/F,EACA,MAAAgG,EACA,KAAAI,EACA,UAAA0S,EACA,UAAAjX,EACA,iBAAA4R,EACA,iBAAAsF,EACA,qBAAArF,EACA,oBAAAsF,EAAsB,GACtB,SAAApI,EAAW,GACX,mBAAA9I,EAAqB,GACvB,IAAM,CACJ,MAAMmR,EAAW7Q,EAAAA,OAAuB,IAAI,EAG5CC,EAAAA,UAAU,IAAM,CACd,MAAM6Q,EAAatQ,GAAqB,CAClCA,EAAE,MAAQ,UAAU7C,EAAA,CAC1B,EACA,OAAI4C,GAAQ,SAAS,iBAAiB,UAAWuQ,CAAS,EACnD,IAAM,SAAS,oBAAoB,UAAWA,CAAS,CAChE,EAAG,CAACvQ,EAAQ5C,CAAO,CAAC,EAGpBsC,EAAAA,UAAU,IAAM,CACd,GAAIM,EAAQ,CACV,MAAMtD,EAAO,SAAS,KAAK,MAAM,SACjC,gBAAS,KAAK,MAAM,SAAW,SACxB,IAAM,CACX,SAAS,KAAK,MAAM,SAAWA,CACjC,CACF,CACF,EAAG,CAACsD,CAAM,CAAC,EAEX,MAAMwQ,EAAqBhU,EAAAA,YAAY,IAAM,CACtC6T,GAAqBjT,EAAA,CAC5B,EAAG,CAACiT,EAAqBjT,CAAO,CAAC,EAEjC,OAAK4C,EAGHlD,EAAAA,IAAC,MAAA,CACC,KAAK,SACL,aAAW,OACX,aAAYqT,GAAa9S,GAAS,QAClC,UAAWwI,EACT,yEACAoC,EAAW,cAAgB,cAC3B6C,CAAA,EAEF,MAAO,CAAE,mBAAoB,GAAG3L,CAAkB,IAAA,EAClD,QAASqR,EAET,SAAA9S,EAAAA,KAAC,MAAA,CACC,IAAK4S,EACL,UAAWzK,EACT,yGACAoC,EAAW,yBAA2B,yBACtC,YACAmI,CAAA,EAEF,MAAO,CAAE,mBAAoB,GAAGjR,CAAkB,IAAA,EAClD,QAAUc,GAAMA,EAAE,gBAAA,EAGlB,SAAA,CAAAnD,EAAAA,IAAC,SAAA,CACC,QAASM,EACT,aAAW,cACX,UAAWyI,EACT,+EACAoC,EAAW,iCAAmC,oCAC9C8C,CAAA,EAGF,SAAAjO,EAAAA,IAACjB,GAAA,CAAE,KAAM,EAAA,CAAI,CAAA,CAAA,EAIdwB,GACCK,EAAAA,KAAC,MAAA,CAAI,UAAU,+BACZ,SAAA,CAAAD,GAAQX,EAAAA,IAAC,OAAA,CAAK,UAAU,gBAAiB,SAAAW,EAAK,EAC/CX,EAAAA,IAAC,KAAA,CAAG,UAAU,wBAAyB,SAAAO,CAAA,CAAM,CAAA,EAC/C,EAIDhG,CAAA,CAAA,CAAA,CACH,CAAA,EAjDgB,IAoDtB,ECzFaoZ,GAA8B,CAAC,CAAE,SAAApZ,EAAU,MAAAgI,EAAO,UAAAnG,KAC7D4D,EAAAA,IAAC,MAAA,CACC,UAAW+I,EAAK,8DAA+D3M,CAAS,EACxF,MAAO,CACL,WAAY,UACZ,GAAGmG,CAAA,EAGL,SAAAvC,EAAAA,IAAC,QAAA,CACC,UAAU,yBACV,MAAO,CACL,cAAe,EACf,aAAc,GACd,SAAU,QAAA,EAGX,SAAAzF,CAAA,CAAA,CACH,CACF,EAIWqZ,GAAqC,CAAC,CACjD,SAAArZ,EACA,MAAAgI,EACA,UAAAnG,CACF,IACE4D,EAAAA,IAAC,QAAA,CACC,UAAW+I,EAAK,0CAA2C3M,CAAS,EACpE,MAAO,CACL,GAAGmG,CAAA,EAGJ,SAAAhI,CAAA,CACH,EAIWsZ,GAAqC,CAAC,CAAE,SAAAtZ,EAAU,MAAAgI,EAAO,UAAAnG,CAAA,IACpE4D,EAAAA,IAAC,QAAA,CAAM,UAAW+I,EAAK,WAAY3M,CAAS,EAAG,MAAO,CAAE,GAAGmG,CAAA,EACxD,SAAAhI,CAAA,CACH,EAUWuZ,GAA4B,CAAC,CACxC,SAAAvZ,EACA,MAAAgI,EACA,UAAAnG,EACA,QAAA8H,EACA,aAAA7C,EAAe,UACf,SAAA8J,EAAW,EACb,IACEnL,EAAAA,IAAC,KAAA,CACC,UAAW+I,EACT,gDACA7E,EAAU,uBAAyB,GACnC9H,CAAA,EAEF,MAAO,CAAE,aAAc,oBAAqB,GAAGmG,CAAA,EAC/C,QAAA2B,EACA,aAAef,GAAM,CACdgI,EACAhI,EAAE,cAAc,MAAM,gBAAkB,UAD9BA,EAAE,cAAc,MAAM,gBAAkB9B,CAEzD,EACA,aAAe8B,GAAM,CACnBA,EAAE,cAAc,MAAM,gBAAkB,aAC1C,EAEC,SAAA5I,CAAA,CACH,EAIWwZ,GAA+B,CAAC,CAAE,SAAAxZ,EAAU,MAAAgI,EAAO,UAAAnG,KAC9D4D,EAAAA,IAAC,KAAA,CACC,UAAW+I,EAAK,uEAAwE3M,CAAS,EACjG,MAAO,CAAE,GAAGmG,CAAA,EAEX,SAAAhI,CAAA,CACH,EAIWyZ,GAA+B,CAAC,CAAE,SAAAzZ,EAAU,MAAAgI,EAAO,UAAAnG,KAC9D4D,EAAAA,IAAC,KAAA,CACC,UAAW+I,EAAK,kCAAmC3M,CAAS,EAC5D,MAAO,CAAE,GAAGmG,CAAA,EAEX,SAAAhI,CAAA,CACH,ECnEW0Z,GAA4B,CAAC,CACxC,KAAAC,EACA,cAAAC,EAAgB,EAChB,SAAArG,EAAW,MACX,QAAAlK,EAAU,QACV,UAAAqG,EAAY,GACZ,IAAAgD,EAAM,EACN,OAAAmH,EAAS,EACT,QAAAjP,EAAU,YACV,mBAAA9C,EAAqB,IACrB,UAAAgS,EAAY,EACZ,SAAAC,EAAW,GAEX,aAAArP,EAAe,UACf,gBAAA9D,EAAkB,cAClB,UAAAC,EAAY,UACZ,WAAAmT,EAAa,UACb,YAAAC,EAAc,UACd,YAAAtT,EAAc,UACd,cAAAuT,EAAgB,UAEhB,qBAAAC,EAAuB,IACvB,gBAAAC,EAAkB,aAClB,WAAAC,EAAa,IAEb,YAAAC,EACA,UAAAzY,EAAY,GACZ,MAAAmG,EACA,aAAAuS,EAAe,GACf,iBAAAxB,EAAmB,GACnB,eAAAyB,EACA,iBAAAC,EACA,aAAAC,CACF,IAAM,CACJ,KAAM,CAACC,EAAQC,CAAS,EAAI3V,EAAAA,SAAS2U,CAAa,EAC5C,CAACiB,EAASC,CAAU,EAAI7V,EAAAA,SAAwB,IAAI,EACpD,CAAC8V,EAAUC,CAAW,EAAI/V,EAAAA,SAAS,EAAK,EACxC,CAACgW,EAAYC,CAAa,EAAIjW,EAAAA,SAAS,EAAK,EAC5C4L,EAAezI,EAAAA,OAAuB,IAAI,EAGhDC,EAAAA,UAAU,IAAM,CACd,MAAM8S,EAAQ,IAAMH,EAAY,OAAO,YAAcb,CAAoB,EACzE,OAAAgB,EAAA,EACA,OAAO,iBAAiB,SAAUA,CAAK,EAChC,IAAM,OAAO,oBAAoB,SAAUA,CAAK,CACzD,EAAG,CAAChB,CAAoB,CAAC,EAGzB,MAAMnJ,EAAgBxI,GAAc,CAC9BmR,EAAKnR,CAAC,EAAE,WACZoS,EAAUpS,CAAC,EACX8R,IAAc9R,CAAC,EACXuS,KAAwB,EAAK,EACnC,EAGM3J,EAAgB,CAACxI,EAA2CJ,IAAc,CAC1EI,EAAE,MAAQ,cAAgBA,EAAE,MAAQ,aACtCA,EAAE,eAAA,EACFoI,GAAcxI,EAAI,GAAKmR,EAAK,MAAM,IACzB/Q,EAAE,MAAQ,aAAeA,EAAE,MAAQ,aAC5CA,EAAE,eAAA,EACFoI,GAAcxI,EAAI,EAAImR,EAAK,QAAUA,EAAK,MAAM,EAEpD,EAGMyB,EAAyB,CAC7B,QAAAxQ,EACA,aAAciP,EACd,OAAQ,UACR,QAAS,OACT,WAAY,SACZ,IAAK,EACL,eAAgB,SAChB,WAAY,IACZ,WAAY,OAAO/R,CAAkB,UACrC,WAAY,cACZ,OAAQuB,IAAY,UAAY,aAAa1C,CAAW,GAAK,OAC7D,aAAc0C,IAAY,YAAc,wBAA0B,OAClE,MAAOxC,EACP,MAAO6I,EAAY,OAAS,OAC5B,WAAY,MAAA,EAGR2L,EAA2B,CAC/B,WAAYhS,IAAY,QAAUqB,EAAe,cACjD,MAAOuP,EACP,aAAc5Q,IAAY,YAAc,aAAaqB,CAAY,GAAK,OACtE,UACEoP,EAAY,EAAI,KAAKA,CAAS,MAAMA,EAAY,CAAC,MAAMpP,CAAY,KAAO,OAC5E,GAAG8P,CAAA,EAGCc,EAA6B,CACjC,GAAIjS,IAAY,UAAY,CAAE,YAAA1C,CAAA,EAAgB,CAAA,EAC9C,GAAI0C,IAAY,YAAc,CAAE,kBAAmB,aAAA,EAAkB,CAAA,EACrE,GAAGoR,CAAA,EAGCc,EAA0B,CAC9B,MAAOvB,EACP,WACE3Q,IAAY,QACR,GAAGqB,CAAY,KACfrB,IAAY,UACZ,GAAGqB,CAAY,KACf,aAAA,EAGF8Q,EAA6B,CACjC,MAAOtB,EACP,OAAQ,cACR,QAAS,EAAA,EAGLuB,EAA4B,CAChC,SAAU,EACV,UAAW1B,GAAYxG,IAAa,MAAQ,aAAa5M,CAAW,GAAK,OACzE,WAAYoT,GAAYxG,IAAa,OAAS,aAAa5M,CAAW,GAAK,OAC3E,YAAaoT,GAAYxG,IAAa,QAAU,aAAa5M,CAAW,GAAK,OAC7E,aAAckT,EACd,GAAGa,CAAA,EAICgB,EAAanI,IAAa,QAAUA,IAAa,QAEvD,OACElN,EAAAA,KAAC,MAAA,CACC,IAAKwK,EACL,UAAW,eAAehP,CAAS,GACnC,MAAO,CACL,QAAS,OACT,cAAe6Z,EAAcnI,IAAa,QAAU,cAAgB,MAAS,SAC7E,WAAY3M,EACZ,OAAQmT,EAAW,aAAapT,CAAW,GAAK,OAChD,aAAckT,EACd,SAAU,SACV,GAAG7R,CAAA,EAGL,SAAA,CAAAvC,MAAC,QAAA,CACE,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAMyBqC,CAAkB;AAAA;AAAA,UAG9C,EAGCiT,SACE,MAAA,CAAI,MAAO,CAAE,MAAO,OAAQ,QAAS,CAAA,EACpC,SAAA,CAAA1U,EAAAA,KAAC,SAAA,CACC,QAAS,IAAM6U,EAAc,CAACD,CAAU,EACxC,MAAO,CACL,GAAGG,EACH,GAAGC,EACH,eAAgB,gBAChB,MAAO,OACP,SAAU,EAAA,EAGX,SAAA,CAAAjB,EACD3U,EAAAA,IAAC,QAAM,SAAA4U,CAAA,CAAW,CAAA,CAAA,CAAA,EAEnBY,GACCxV,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,UAAW,EAAG,IAAAiN,CAAA,EACnE,WAAK,IAAI,CAACiJ,EAAKnT,IAAM,CACpB,MAAM2F,EAAW3F,IAAMmS,EACjBiB,GAAYf,IAAYrS,EACxBoH,GAAa+L,EAAI,SACvB,OACEtV,EAAAA,KAAC,SAAA,CAEC,SAAUuJ,GACV,QAAS,IAAMoB,EAAaxI,CAAC,EAC7B,UAAYI,IAAMwI,EAAcxI,GAAGJ,CAAC,EACpC,aAAc,IAAMsS,EAAWtS,CAAC,EAChC,aAAc,IAAMsS,EAAW,IAAI,EACnC,UAAWP,EACX,MAAO,CACL,GAAGa,EACH,GAAIjN,EAAWkN,EAAYC,EAC3B,GAAIM,IAAa,CAACzN,GAAY,CAACyB,GAAa2L,EAAW,CAAA,EACvD,GAAI3L,GAAa4L,EAAc,CAAA,CAAC,EAGjC,SAAA,CAAAG,EAAI,MAAQlW,MAAC,OAAA,CAAM,SAAAkW,EAAI,KAAK,EAC5BA,EAAI,KAAA,CAAA,EAfAnT,CAAA,CAkBX,CAAC,CAAA,CACH,CAAA,CAAA,CAEJ,EAEA/C,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,cAAeiW,EAAa,SAAW,MACvC,IAAAhJ,EACA,QAAS,EACT,SAAUgJ,EAAa,IAAM,MAAA,EAG9B,SAAA/B,EAAK,IAAI,CAACgC,EAAKnT,IAAM,CACpB,MAAM2F,EAAW3F,IAAMmS,EACjBiB,GAAYf,IAAYrS,EACxBoH,GAAa+L,EAAI,SACvB,OACEtV,EAAAA,KAAC,SAAA,CAEC,SAAUuJ,GACV,QAAS,IAAMoB,EAAaxI,CAAC,EAC7B,UAAYI,IAAMwI,EAAcxI,GAAGJ,CAAC,EACpC,aAAc,IAAMsS,EAAWtS,CAAC,EAChC,aAAc,IAAMsS,EAAW,IAAI,EACnC,UAAWP,EACX,MAAO,CACL,GAAGa,EACH,GAAIjN,EAAWkN,EAAYC,EAC3B,GAAIM,IAAa,CAACzN,GAAY,CAACyB,GAAa2L,EAAW,CAAA,EACvD,GAAI3L,GAAa4L,EAAc,CAAA,CAAC,EAElC,KAAK,MACL,gBAAerN,EAEd,SAAA,CAAAwN,EAAI,MAAQlW,MAAC,OAAA,CAAM,SAAAkW,EAAI,KAAK,EAC5BA,EAAI,KAAA,CAAA,EAjBAnT,CAAA,CAoBX,CAAC,CAAA,CAAA,EAKL/C,EAAAA,IAAC,MAAA,CACC,UAAW,wBAAwBsT,CAAgB,GACnD,MAAO0C,EACP,KAAK,WAEJ,SAAA9B,EAAKgB,CAAM,GAAG,OAAA,CAAA,CACjB,CAAA,CAAA,CAGN,ECvRM9K,GAAsC,CAC1C,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,UACJ,MAAO,UACT,EAEO,SAASgM,GAAqC,CACnD,GAAAC,EACA,SAAA9b,EACA,KAAAsC,EAAO,KACP,OAAAyZ,EAAS,IACT,MAAAxJ,EAAQ,OACR,SAAAyJ,EAAW,GACX,UAAAna,EACA,MAAAmG,EACA,GAAGtF,CACL,EAAiB,CACf,MAAMuZ,EAAWH,GAAM,IAEvB,OAAOrb,EAAM,cACXwb,EACA,CACE,UAAWzN,EACT,eACAqB,GAAYvN,CAAI,GAAK,GACrB0Z,GAAY,WACZna,CAAA,EAEF,MAAO,CACL,WAAYka,EACZ,UAAWxJ,EACX,GAAGvK,CAAA,EAEL,GAAGtF,CAAA,EAEL1C,CAAA,CAEJ","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,34]}