@neuctra/ui 0.2.9 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +109 -140
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +1563 -2402
- package/dist/index.es.js.map +1 -1
- package/dist/{components → types/components}/basic/Alert.d.ts +3 -2
- package/dist/{components → types/components}/basic/Avatar.d.ts +1 -0
- package/dist/{components → types/components}/basic/Badge.d.ts +1 -2
- package/dist/{components → types/components}/basic/Button.d.ts +2 -2
- package/dist/types/components/basic/Container.d.ts +15 -0
- package/dist/{components → types/components}/basic/Input.d.ts +1 -1
- package/dist/types/components/basic/Tabs.d.ts +76 -0
- package/dist/{components → types/components}/basic/Text.d.ts +25 -20
- package/dist/{index.d.ts → types/index.d.ts} +3 -7
- package/dist/ui.css +1 -1
- package/package.json +9 -2
- package/dist/components/basic/Container.d.ts +0 -21
- package/dist/components/basic/Tabs.d.ts +0 -47
- package/dist/src/components/basic/Accordation.js +0 -73
- package/dist/src/components/basic/Alert.js +0 -36
- package/dist/src/components/basic/AudioGallery.js +0 -425
- package/dist/src/components/basic/AudioPlayer.js +0 -130
- package/dist/src/components/basic/Avatar.js +0 -68
- package/dist/src/components/basic/Badge.js +0 -27
- package/dist/src/components/basic/Button.js +0 -24
- package/dist/src/components/basic/CheckboxGroup.js +0 -63
- package/dist/src/components/basic/Container.js +0 -56
- package/dist/src/components/basic/Drawer.js +0 -43
- package/dist/src/components/basic/DropDown.js +0 -98
- package/dist/src/components/basic/FlexView.js +0 -19
- package/dist/src/components/basic/GridView.js +0 -18
- package/dist/src/components/basic/Image.js +0 -55
- package/dist/src/components/basic/Input.js +0 -82
- package/dist/src/components/basic/List.js +0 -29
- package/dist/src/components/basic/Modal.js +0 -34
- package/dist/src/components/basic/RadioGroup.js +0 -54
- package/dist/src/components/basic/Stack.js +0 -22
- package/dist/src/components/basic/SwitchGroup.js +0 -76
- package/dist/src/components/basic/Table.js +0 -30
- package/dist/src/components/basic/Tabs.js +0 -140
- package/dist/src/components/basic/Text.js +0 -25
- package/dist/src/index.js +0 -44
- package/dist/types/src/components/basic/Accordation.d.ts +0 -40
- package/dist/types/src/components/basic/Alert.d.ts +0 -17
- package/dist/types/src/components/basic/AudioGallery.d.ts +0 -23
- package/dist/types/src/components/basic/AudioPlayer.d.ts +0 -16
- package/dist/types/src/components/basic/Avatar.d.ts +0 -23
- package/dist/types/src/components/basic/Badge.d.ts +0 -21
- package/dist/types/src/components/basic/Button.d.ts +0 -15
- package/dist/types/src/components/basic/CheckboxGroup.d.ts +0 -27
- package/dist/types/src/components/basic/Container.d.ts +0 -21
- package/dist/types/src/components/basic/Drawer.d.ts +0 -22
- package/dist/types/src/components/basic/DropDown.d.ts +0 -33
- package/dist/types/src/components/basic/FlexView.d.ts +0 -16
- package/dist/types/src/components/basic/GridView.d.ts +0 -14
- package/dist/types/src/components/basic/Image.d.ts +0 -37
- package/dist/types/src/components/basic/Input.d.ts +0 -33
- package/dist/types/src/components/basic/List.d.ts +0 -20
- package/dist/types/src/components/basic/Modal.d.ts +0 -17
- package/dist/types/src/components/basic/RadioGroup.d.ts +0 -26
- package/dist/types/src/components/basic/Stack.d.ts +0 -17
- package/dist/types/src/components/basic/SwitchGroup.d.ts +0 -26
- package/dist/types/src/components/basic/Table.d.ts +0 -28
- package/dist/types/src/components/basic/Tabs.d.ts +0 -47
- package/dist/types/src/components/basic/Text.d.ts +0 -1121
- package/dist/types/src/index.d.ts +0 -24
- package/dist/types/vite.config.d.ts +0 -2
- package/dist/vite.config.js +0 -34
- /package/dist/{components/basic/Accordation.d.ts → types/components/basic/Accordion.d.ts} +0 -0
- /package/dist/{components → types/components}/basic/AudioGallery.d.ts +0 -0
- /package/dist/{components → types/components}/basic/AudioPlayer.d.ts +0 -0
- /package/dist/{components → types/components}/basic/CheckboxGroup.d.ts +0 -0
- /package/dist/{components → types/components}/basic/Drawer.d.ts +0 -0
- /package/dist/{components → types/components}/basic/DropDown.d.ts +0 -0
- /package/dist/{components → types/components}/basic/FlexView.d.ts +0 -0
- /package/dist/{components → types/components}/basic/GridView.d.ts +0 -0
- /package/dist/{components → types/components}/basic/Image.d.ts +0 -0
- /package/dist/{components → types/components}/basic/List.d.ts +0 -0
- /package/dist/{components → types/components}/basic/Modal.d.ts +0 -0
- /package/dist/{components → types/components}/basic/RadioGroup.d.ts +0 -0
- /package/dist/{components → types/components}/basic/Stack.d.ts +0 -0
- /package/dist/{components → types/components}/basic/SwitchGroup.d.ts +0 -0
- /package/dist/{components → types/components}/basic/Table.d.ts +0 -0
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.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);","\"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\n/* ---------------------------- Types ---------------------------- */\n\ntype Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\ntype Responsive<T> = T | Partial<Record<Breakpoint, T>>;\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\ntype DisplayType = \"block\" | \"flex\" | \"grid\";\n\n/* ---------------------------- Props ---------------------------- */\n\nexport interface ContainerProps {\n size?: Responsive<ContainerSize>;\n padding?: Responsive<\"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\">;\n center?: boolean;\n\n /* Layout */\n display?: DisplayType;\n\n /* Flex */\n direction?: Responsive<\"row\" | \"col\" | \"row-reverse\" | \"col-reverse\">;\n align?: Responsive<\"start\" | \"center\" | \"end\" | \"stretch\">;\n justify?: Responsive<\n \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\"\n >;\n wrap?: Responsive<\"wrap\" | \"nowrap\">;\n\n /* Grid */\n cols?: Responsive<number>;\n gap?: Responsive<\"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\">;\n\n className?: string;\n children: React.ReactNode;\n}\n\n/* ---------------------------- Maps ---------------------------- */\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 = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\nconst gapMap = {\n none: \"gap-0\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n};\n\n/* ---------------------------- Helpers ---------------------------- */\n\nfunction resolveResponsive<T>(\n value: Responsive<T> | undefined,\n mapFn: (val: T) => string\n) {\n if (!value) return \"\";\n\n if (typeof value !== \"object\") {\n return mapFn(value);\n }\n\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${mapFn(val as T)}`)\n .join(\" \");\n}\n\n/* ---------------------------- Component ---------------------------- */\n\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = \"md\",\n center = true,\n display = \"block\",\n\n direction,\n align,\n justify,\n wrap,\n\n cols,\n gap,\n\n className = \"\",\n children,\n}) => {\n const classes = clsx(\n \"w-full box-border\",\n\n /* Size & Padding */\n resolveResponsive(size, (v) => sizeMap[v]),\n resolveResponsive(padding, (v) => paddingMap[v]),\n\n center && \"mx-auto\",\n\n /* Display */\n display === \"flex\" && \"flex\",\n display === \"grid\" && \"grid\",\n\n /* Flex */\n display === \"flex\" &&\n resolveResponsive(direction, (v) => `flex-${v}`),\n display === \"flex\" &&\n resolveResponsive(align, (v) => `items-${v}`),\n display === \"flex\" &&\n resolveResponsive(justify, (v) => `justify-${v}`),\n display === \"flex\" &&\n resolveResponsive(wrap, (v) => `flex-${v}`),\n\n /* Grid */\n display === \"grid\" &&\n resolveResponsive(cols, (v) => `grid-cols-${v}`),\n display === \"grid\" &&\n resolveResponsive(gap, (v) => gapMap[v]),\n\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","o","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","SwitchGroup","switchBgColor","paddingMap","gapMap","resolveResponsive","mapFn","bp","val","Container","center","display","direction","align","justify","wrap","cols","gap","toResponsiveClass","prefix","FlexView","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":"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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.es.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/info.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/x.js","../src/components/basic/Alert.tsx","../src/components/basic/Accordion.tsx","../src/components/basic/Avatar.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/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 [\"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 [\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 [\"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, {\n createContext,\n useContext,\n useState,\n ReactNode,\n useCallback,\n useEffect,\n} from \"react\";\nimport { X, Info, CheckCircle, AlertCircle, AlertTriangle } from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\n\ninterface Toast {\n id: string;\n title?: string;\n description?: string;\n type?: AlertType;\n duration?: number;\n}\n\ninterface ToastContextProps {\n toast: (options: Omit<Toast, \"id\">) => void;\n dismiss: (id?: string) => 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 }> = ({\n children,\n}) => {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const dismiss = useCallback((id?: string) => {\n if (id) {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n } else {\n setToasts([]);\n }\n }, []);\n\n const toast = useCallback(\n ({\n title,\n description,\n type = \"info\",\n duration = 4000,\n }: Omit<Toast, \"id\">) => {\n const id = Math.random().toString(36).substring(2, 9);\n setToasts((prev) => [\n ...prev,\n { id, title, description, type, duration },\n ]);\n\n if (duration !== 0) {\n setTimeout(() => dismiss(id), duration);\n }\n },\n [dismiss],\n );\n\n return (\n <ToastContext.Provider value={{ toast, dismiss }}>\n {children}\n <div className=\"fixed bottom-4 right-4 z-50 flex flex-col gap-2 sm:bottom-6 sm:right-6\">\n {toasts.map((toast) => (\n <ToastItem\n key={toast.id}\n toast={toast}\n onClose={() => dismiss(toast.id)}\n />\n ))}\n </div>\n </ToastContext.Provider>\n );\n};\n\nconst typeConfig: Record<\n AlertType,\n {\n bg: string;\n border: string;\n text: string;\n iconColor: string;\n icon: React.ElementType;\n }\n> = {\n success: {\n bg: \"bg-white dark:bg-zinc-900\",\n border: \"border-green-500\",\n text: \"text-green-600 dark:text-green-500\",\n iconColor: \"text-green-500\",\n icon: CheckCircle,\n },\n error: {\n bg: \"bg-white dark:bg-zinc-900\",\n border: \"border-red-500\",\n text: \"text-red-600 dark:text-red-500\",\n iconColor: \"text-red-500\",\n icon: AlertCircle,\n },\n warning: {\n bg: \"bg-white dark:bg-zinc-900\",\n border: \"border-yellow-500\",\n text: \"text-yellow-600 dark:text-yellow-500\",\n iconColor: \"text-yellow-500\",\n icon: AlertTriangle,\n },\n info: {\n bg: \"bg-white dark:bg-zinc-900\",\n border: \"border-blue-500\",\n text: \"text-blue-600 dark:text-blue-500\",\n iconColor: \"text-blue-500\",\n icon: Info,\n },\n};\n\nconst ToastItem: React.FC<{ toast: Toast; onClose: () => void }> = ({\n toast,\n onClose,\n}) => {\n const { title, description, type = \"info\" } = toast;\n const config = typeConfig[type];\n const Icon = config.icon;\n\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [onClose]);\n\n return (\n <div\n className={`\n group relative flex w-full max-w-sm items-start gap-3 rounded-lg border shadow-lg\n ${config.bg} ${config.border}\n p-4 pr-8\n transition-all duration-300 ease-out\n animate-in slide-in-from-right-full fade-in\n hover:shadow-xl hover:scale-105\n dark:border-zinc-800\n `}\n role=\"alert\"\n >\n <Icon className={`h-5 w-5 flex-shrink-0 ${config.iconColor}`} />\n\n <div className=\"flex-1 space-y-1\">\n {title && (\n <div className={`text-sm font-semibold ${config.text}`}>{title}</div>\n )}\n {description && (\n <div className=\"text-sm text-zinc-600 dark:text-zinc-400\">\n {description}\n </div>\n )}\n </div>\n\n <button\n onClick={onClose}\n className={`\n absolute right-2 top-2 rounded-md p-1\n text-zinc-400 hover:text-zinc-700\n dark:text-zinc-600 dark:hover:text-zinc-300\n transition-colors\n focus:outline-none focus:ring-2 focus:ring-zinc-400\n `}\n aria-label=\"Close toast\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n );\n};\n","\"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// Size maps with proper pixel values for status dots\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.5 -left-0.5\",\n \"top-right\": \"-top-0.5 -right-0.5\",\n \"bottom-left\": \"-bottom-0.5 -left-0.5\",\n \"bottom-right\": \"-bottom-0.5 -right-0.5\",\n};\n\n// Get status dot size based on avatar size\nconst getStatusDotSize = (size: Exclude<AvatarSize, \"responsive\">): string => {\n const sizes: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"w-2 h-2\",\n sm: \"w-2.5 h-2.5\",\n md: \"w-3 h-3\",\n lg: \"w-3.5 h-3.5\",\n xl: \"w-4 h-4\",\n \"2xl\": \"w-4.5 h-4.5\",\n };\n return sizes[size];\n};\n\n// Get status border width based on avatar size\nconst getStatusBorderWidth = (size: Exclude<AvatarSize, \"responsive\">): string => {\n const borders: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"border\",\n sm: \"border\",\n md: \"border-2\",\n lg: \"border-2\",\n xl: \"border-[3px]\",\n \"2xl\": \"border-[3px]\",\n };\n return borders[size];\n};\n\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 const resolvedSize = size === \"responsive\" ? \"md\" : size;\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 \n ? \"bg-green-500\" \n : isOffline \n ? \"bg-gray-400\" \n : \"\";\n\n const statusDotSize = getStatusDotSize(resolvedSize);\n const statusBorderWidth = getStatusBorderWidth(resolvedSize);\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 \n ${dimensionMap[resolvedSize]} \n ${variantMap[variant]} \n transition-all duration-200 \n ${clickable ? \"cursor-pointer hover:scale-105 active:scale-95\" : \"\"} \n ${ring ? \"ring-2 ring-offset-2\" : \"\"} \n ${className}`}\n style={{\n ...style,\n ...(ring ? { ringColor: 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]}`}\n />\n ) : (\n <div\n className={`w-full h-full flex items-center justify-center bg-gradient-to-br from-purple-500 via-purple-600 to-blue-600 text-white font-semibold \n ${fontSizeMap[resolvedSize]} \n ${variantMap[variant]}`}\n >\n {initials || <User className=\"w-1/2 h-1/2\" />}\n </div>\n )}\n\n {/* Status Dot - Now properly visible */}\n {(isOnline || isOffline) && (\n <span\n aria-label={isOnline ? \"Online\" : \"Offline\"}\n title={isOnline ? \"Online\" : \"Offline\"}\n className={`\n absolute \n ${statusPositionMap[statusPosition]} \n ${statusColor} \n ${statusDotSize} \n ${statusBorderWidth} \n border-white \n rounded-full \n shadow-md \n z-10\n ${statusClassName}\n `}\n style={{\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};\n\n// Export additional helper for responsive sizing\nexport const getAvatarSize = (size: AvatarSize): number => {\n if (size === \"responsive\") return 40;\n return sizeMap[size];\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 /** Custom color */\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 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 const dynamicStyle = {\n backgroundColor: primaryColor,\n color: \"#fff\",\n };\n\n return (\n <span\n onClick={onClick}\n style={dynamicStyle}\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 onClick && \"cursor-pointer hover:opacity-90\",\n className\n )}\n >\n {/* 🔴 Dot */}\n {notificationDot && (\n <span\n style={{ backgroundColor: dotColor }}\n className={clsx(\n \"absolute -top-1 -right-1 w-2 h-2 rounded-full\",\n pulse && \"animate-ping\"\n )}\n />\n )}\n\n {/* 🔢 Count */}\n {count !== undefined && (\n <span\n style={{ backgroundColor: dotColor }}\n className=\"absolute -top-2 -right-2 min-w-[18px] h-[18px] px-1 text-[10px] flex items-center justify-center rounded-full text-white\"\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 variant?: \"default\" | \"outline\" | \"ghost\";\n size?: \"sm\" | \"md\" | \"lg\";\n\n weight?: React.CSSProperties[\"fontWeight\"];\n primaryColor?: string;\n\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🔘 Button */\n/* -------------------------------------------------------------------------- */\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n children,\n iconBefore,\n iconAfter,\n loading = false,\n loadingText = \"Loading...\",\n fullWidth = false,\n variant = \"default\",\n size = \"md\",\n weight = 400,\n primaryColor = \"#3b82f6\",\n disabled,\n className,\n type = \"button\",\n style,\n ...rest\n },\n ref\n ) {\n const isDisabled = disabled || loading;\n const color = primaryColor;\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 } as const;\n\n /* 🎨 Variants */\n const variantStyles: Record<\n NonNullable<ButtonProps[\"variant\"]>,\n React.CSSProperties\n > = {\n default: {\n backgroundColor: color,\n color: \"#fff\",\n },\n outline: {\n border: `1px solid ${color}`,\n color,\n backgroundColor: \"transparent\",\n },\n ghost: {\n color,\n backgroundColor: \"transparent\",\n },\n };\n\n /* 🔘 Icon sizes */\n const iconSizes = {\n sm: 16,\n md: 20,\n lg: 24,\n } as const;\n\n const iconStyle: React.CSSProperties = {\n width: iconSizes[size],\n height: iconSizes[size],\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0, // ✅ prevents icon collapse\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\",\n \"transition-all duration-200\",\n sizeClasses[size],\n fullWidth && \"w-full\",\n isDisabled && \"opacity-60 cursor-not-allowed pointer-events-none\",\n className\n )}\n style={{\n fontWeight: weight,\n ...variantStyles[variant],\n ...style,\n }}\n {...rest}\n >\n {loading ? (\n <span className=\"inline-flex items-center gap-2\">\n <span\n className=\"border-2 border-current border-t-transparent rounded-full animate-spin\"\n style={{\n width: iconSizes[size],\n height: iconSizes[size],\n flexShrink: 0,\n }}\n />\n <span>{loadingText}</span>\n </span>\n ) : (\n <>\n {iconBefore && <span style={iconStyle}>{iconBefore}</span>}\n\n <span className=\"whitespace-nowrap\">{children}</span>\n\n {iconAfter && <span style={iconStyle}>{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 h-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 = \"full\",\n padding = \"none\",\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;\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\n// ✅ Named function ensures full IntelliSense\nexport const Input = forwardRef<HTMLInputElement | HTMLTextAreaElement, InputFieldProps>(\n function InputField(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 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 const dynamicFocusStyle: CSSProperties = !primaryTheme\n ? { borderColor: primaryColor, boxShadow: `0 0 0 1px ${primaryColor}` }\n : {};\n\n const dynamicColorStyle: CSSProperties = !primaryTheme ? { color: primaryColor } : {};\n\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 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 <div className=\"relative\">\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 {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={type === \"password\" ? (visible ? \"text\" : \"password\") : type}\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 {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 {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 {(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 }\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, {\n ReactNode,\n CSSProperties,\n createContext,\n useContext,\n useState,\n useEffect,\n useRef,\n KeyboardEvent,\n} from \"react\";\nimport clsx from \"clsx\";\n\n/* ------------------------------------------------------------------ */\n/* Responsive hook */\n/* ------------------------------------------------------------------ */\n\nfunction useBreakpoint(breakpoint = 768) {\n const [isMobile, setIsMobile] = useState(false);\n useEffect(() => {\n const mq = window.matchMedia(`(max-width: ${breakpoint}px)`);\n const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);\n setIsMobile(mq.matches);\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, [breakpoint]);\n return isMobile;\n}\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ntype Position = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Variant = \"solid\" | \"outline\" | \"underline\" | \"pill\";\n\n/**\n * mobileVariant — how <TabList> behaves on small screens:\n * \"drawer\" → collapses into an animated dropdown (hamburger-style)\n * \"scroll\" → horizontal scrollable strip with snap (default)\n * \"stack\" → forced full-width vertical column\n * \"collapse\" → left/right positions collapse to top row\n */\ntype MobileVariant = \"drawer\" | \"scroll\" | \"stack\" | \"collapse\";\n\ninterface TabsContextValue {\n active: number;\n setActive: (i: number) => void;\n variant: Variant;\n position: Position;\n primaryColor: string;\n activeColor: string;\n textColor: string;\n hoverColor: string;\n borderColor: string;\n disabledColor: string;\n radius: number;\n transitionDuration: number;\n fullWidth: boolean;\n tabCount: number;\n isMobile: boolean;\n mobileVariant: MobileVariant;\n drawerOpen: boolean;\n setDrawerOpen: (v: boolean) => void;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext() {\n const ctx = useContext(TabsContext);\n if (!ctx) throw new Error(\"<Tab>, <TabList>, <TabPanel> must be inside <Tabs>\");\n return ctx;\n}\n\n/* ------------------------------------------------------------------ */\n/* <Tabs> — root provider */\n/* ------------------------------------------------------------------ */\n\nexport interface TabsProps {\n children: ReactNode;\n defaultActive?: number;\n position?: Position;\n variant?: Variant;\n fullWidth?: boolean;\n radius?: number;\n transitionDuration?: number;\n bordered?: boolean;\n\n /** Responsive */\n mobileBreakpoint?: number;\n mobileVariant?: MobileVariant;\n\n /** Colors */\n primaryColor?: string;\n activeColor?: string;\n textColor?: string;\n hoverColor?: string;\n borderColor?: string;\n disabledColor?: string;\n backgroundColor?: string;\n\n onTabChange?: (index: number) => void;\n tabCount?: number;\n style?: CSSProperties;\n className?: string;\n}\n\nexport const Tabs: React.FC<TabsProps> = ({\n children,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n radius = 8,\n transitionDuration = 200,\n bordered = false,\n\n mobileBreakpoint = 768,\n mobileVariant = \"scroll\",\n\n primaryColor = \"#2563eb\",\n activeColor = \"#ffffff\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n backgroundColor = \"transparent\",\n\n onTabChange,\n tabCount = 0,\n style,\n className,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [resolvedCount, setResolvedCount] = useState(tabCount);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const isMobile = useBreakpoint(mobileBreakpoint);\n\n // Auto-count <Tab> buttons\n useEffect(() => {\n if (!tabCount && containerRef.current) {\n setResolvedCount(\n containerRef.current.querySelectorAll(\"[data-tab-button]\").length\n );\n }\n });\n\n // Close drawer when resizing to desktop\n useEffect(() => {\n if (!isMobile) setDrawerOpen(false);\n }, [isMobile]);\n\n const handleSetActive = (i: number) => {\n setActive(i);\n onTabChange?.(i);\n if (isMobile && mobileVariant === \"drawer\") setDrawerOpen(false);\n };\n\n // Vertical positions collapse to \"top\" on mobile\n const effectivePosition: Position =\n isMobile && (position === \"left\" || position === \"right\")\n ? \"top\"\n : position;\n\n const isVertical =\n effectivePosition === \"left\" || effectivePosition === \"right\";\n\n return (\n <TabsContext.Provider\n value={{\n active,\n setActive: handleSetActive,\n variant,\n position: effectivePosition,\n primaryColor,\n activeColor,\n textColor,\n hoverColor,\n borderColor,\n disabledColor,\n radius,\n transitionDuration,\n fullWidth,\n tabCount: resolvedCount,\n isMobile,\n mobileVariant,\n drawerOpen,\n setDrawerOpen,\n }}\n >\n <div\n ref={containerRef}\n className={clsx(\n \"modern-tabs\",\n isVertical ? \"flex flex-row\" : \"flex flex-col\",\n effectivePosition === \"right\" && \"flex-row-reverse\",\n effectivePosition === \"bottom\" && \"flex-col-reverse\",\n bordered && \"border border-gray-200\",\n className\n )}\n style={{\n background: backgroundColor,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>{`\n @keyframes tab-fade-in {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n }\n @keyframes tab-drawer-open {\n from { opacity: 0; transform: translateY(-6px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .tab-panel-active {\n animation: tab-fade-in ${transitionDuration}ms ease;\n }\n .tab-drawer-menu {\n animation: tab-drawer-open ${transitionDuration}ms ease;\n }\n /* scroll strip: hide scrollbar, enable snap */\n .tab-scroll-strip {\n overflow-x: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n }\n .tab-scroll-strip::-webkit-scrollbar { display: none; }\n .tab-scroll-strip [data-tab-button] {\n scroll-snap-align: start;\n flex-shrink: 0;\n }\n `}</style>\n {children}\n </div>\n </TabsContext.Provider>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* <TabList> */\n/* ------------------------------------------------------------------ */\n\nexport interface TabListProps {\n children: ReactNode;\n gap?: number;\n /** Label shown in drawer trigger when no tab is active (fallback) */\n drawerLabel?: ReactNode;\n /** Icon for the drawer chevron area */\n drawerIcon?: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\nconst ChevronIcon = ({ open }: { open: boolean }) => (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 200ms ease\",\n display: \"flex\",\n flexShrink: 0,\n }}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n);\n\nexport const TabList: React.FC<TabListProps> = ({\n children,\n gap = 8,\n drawerLabel = \"Select tab\",\n style,\n className,\n}) => {\n const {\n position,\n isMobile,\n mobileVariant,\n drawerOpen,\n setDrawerOpen,\n primaryColor,\n activeColor,\n radius,\n active,\n } = useTabsContext();\n\n const isVertical = position === \"left\" || position === \"right\";\n\n /* ---- MOBILE: Drawer ---- */\n if (isMobile && mobileVariant === \"drawer\") {\n const tabArray = React.Children.toArray(children);\n const activeTabEl = tabArray[active] as React.ReactElement<TabProps> | undefined;\n const activeLabel = activeTabEl?.props?.children ?? drawerLabel;\n\n return (\n <div\n className={clsx(\"relative w-full\", className)}\n style={{ padding: 8, ...style }}\n >\n {/* Trigger */}\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n className=\"flex items-center justify-between w-full font-medium\"\n style={{\n padding: \"10px 16px\",\n borderRadius: radius,\n background: primaryColor,\n color: activeColor,\n border: \"none\",\n cursor: \"pointer\",\n fontSize: 14,\n }}\n >\n <span>{activeLabel}</span>\n <ChevronIcon open={drawerOpen} />\n </button>\n\n {/* Dropdown */}\n {drawerOpen && (\n <div\n className=\"tab-drawer-menu absolute left-0 right-0 z-50 flex flex-col\"\n style={{\n top: \"calc(100% + 4px)\",\n background: \"#fff\",\n border: \"1px solid #e5e7eb\",\n borderRadius: radius,\n boxShadow: \"0 8px 24px rgba(0,0,0,0.12)\",\n gap: 4,\n padding: 6,\n }}\n >\n {children}\n </div>\n )}\n </div>\n );\n }\n\n /* ---- MOBILE: Horizontal scroll strip ---- */\n if (isMobile && mobileVariant === \"scroll\") {\n return (\n <div\n role=\"tablist\"\n className={clsx(\"tab-scroll-strip flex flex-row w-full\", className)}\n style={{ gap, padding: 8, ...style }}\n >\n {children}\n </div>\n );\n }\n\n /* ---- MOBILE: Stacked vertical ---- */\n if (isMobile && mobileVariant === \"stack\") {\n return (\n <div\n role=\"tablist\"\n className={clsx(\"flex flex-col w-full\", className)}\n style={{ gap, padding: 8, ...style }}\n >\n {children}\n </div>\n );\n }\n\n /* ---- Default: desktop / collapse ---- */\n return (\n <div\n role=\"tablist\"\n className={clsx(\n \"flex\",\n isVertical ? \"flex-col\" : \"flex-row\",\n isVertical ? \"min-w-[160px]\" : \"w-full\",\n className\n )}\n style={{ gap, padding: 8, ...style }}\n >\n {children}\n </div>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* <Tab> */\n/* ------------------------------------------------------------------ */\n\nexport interface TabProps {\n children: ReactNode;\n index?: number;\n icon?: ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n style?: CSSProperties;\n className?: string;\n activeStyle?: CSSProperties;\n inactiveStyle?: CSSProperties;\n}\n\nexport const Tab: React.FC<TabProps> = ({\n children,\n index,\n icon,\n disabled = false,\n ariaLabel,\n style,\n className,\n activeStyle,\n inactiveStyle,\n}) => {\n const {\n active,\n setActive,\n variant,\n primaryColor,\n activeColor,\n textColor,\n hoverColor,\n borderColor,\n disabledColor,\n radius,\n transitionDuration,\n fullWidth,\n tabCount,\n isMobile,\n mobileVariant,\n } = useTabsContext();\n\n const selfIndexRef = useRef<number | undefined>(index);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const resolvedIndex = (): number => {\n if (selfIndexRef.current !== undefined) return selfIndexRef.current;\n if (!buttonRef.current) return 0;\n const list = buttonRef.current\n .closest(\"[role=tablist], .tab-drawer-menu\")\n ?.querySelectorAll(\"[data-tab-button]\");\n if (!list) return 0;\n return Array.from(list).indexOf(buttonRef.current);\n };\n\n const [hovered, setHovered] = useState(false);\n const isActive = resolvedIndex() === active;\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n const count = tabCount || 1;\n const idx = resolvedIndex();\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n setActive((idx + 1) % count);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n setActive((idx - 1 + count) % count);\n }\n };\n\n /* ---- Variant base styles ---- */\n const variantBase: CSSProperties =\n variant === \"outline\"\n ? { border: `1px solid ${borderColor}` }\n : variant === \"underline\"\n ? { borderBottom: `2px solid transparent`, borderRadius: 0 }\n : variant === \"pill\"\n ? { borderRadius: 999 }\n : { border: \"none\" };\n\n const variantActive: CSSProperties =\n variant === \"solid\" || variant === \"pill\"\n ? { background: primaryColor, color: activeColor, boxShadow: `0 2px 8px ${primaryColor}44` }\n : variant === \"outline\"\n ? { borderColor: primaryColor, color: primaryColor, background: `${primaryColor}11` }\n : variant === \"underline\"\n ? { borderBottomColor: primaryColor, color: primaryColor }\n : {};\n\n const variantHover: CSSProperties =\n variant === \"underline\"\n ? { color: hoverColor }\n : { background: `${primaryColor}11`, color: hoverColor };\n\n // Full-width in stack/drawer/collapse mobile modes\n const forceFullWidth =\n isMobile && (mobileVariant === \"stack\" || mobileVariant === \"drawer\" || mobileVariant === \"collapse\");\n\n return (\n <button\n ref={buttonRef}\n data-tab-button\n role=\"tab\"\n aria-selected={isActive}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={() => !disabled && setActive(resolvedIndex())}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n className={clsx(\n \"flex items-center justify-center gap-2 font-medium select-none transition-all\",\n (fullWidth || forceFullWidth) && \"w-full\",\n disabled ? \"opacity-60 cursor-not-allowed\" : \"cursor-pointer\",\n className\n )}\n style={{\n padding: \"10px 16px\",\n borderRadius: radius,\n background: \"transparent\",\n color: textColor,\n transitionDuration: `${transitionDuration}ms`,\n fontSize: 14,\n whiteSpace: \"nowrap\", // prevents wrapping in scroll strip\n ...variantBase,\n ...(isActive ? variantActive : {}),\n ...(isActive ? activeStyle : inactiveStyle),\n ...(hovered && !isActive && !disabled ? variantHover : {}),\n ...(disabled ? { color: disabledColor } : {}),\n ...style,\n }}\n >\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\n {children}\n </button>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* <TabPanels> */\n/* ------------------------------------------------------------------ */\n\nexport interface TabPanelsProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\nexport const TabPanels: React.FC<TabPanelsProps> = ({\n children,\n style,\n className,\n}) => {\n const { borderColor, position } = useTabsContext();\n const isVertical = position === \"left\" || position === \"right\";\n\n return (\n <div\n className={clsx(\"flex-1 min-w-0\", className)} // min-w-0 prevents flex overflow blowout\n style={{\n \n ...style,\n }}\n >\n {children}\n </div>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* <TabPanel> */\n/* ------------------------------------------------------------------ */\n\nexport interface TabPanelProps {\n children: ReactNode;\n index: number;\n /** Keep panel in DOM when inactive — useful for forms, editors */\n keepMounted?: boolean;\n style?: CSSProperties;\n className?: string;\n}\n\nexport const TabPanel: React.FC<TabPanelProps> = ({\n children,\n index,\n keepMounted = false,\n style,\n className,\n}) => {\n const { active } = useTabsContext();\n const isActive = index === active;\n\n if (!keepMounted && !isActive) return null;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={!isActive}\n className={clsx(isActive && \"tab-panel-active\", className)}\n style={{ display: isActive ? undefined : \"none\", ...style }}\n >\n {children}\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 /** Text styles */\n transform?: \"uppercase\" | \"lowercase\" | \"capitalize\";\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\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\nconst transformClasses = {\n uppercase: \"uppercase\",\n lowercase: \"lowercase\",\n capitalize: \"capitalize\",\n};\n\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n size = \"md\",\n weight = 400,\n align = \"left\",\n\n transform,\n italic = false,\n underline = false,\n strikethrough = false,\n\n truncate = false,\n\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\",\n sizeClasses[size] || \"\",\n\n // ✅ text styles\n transform && transformClasses[transform],\n italic && \"italic\",\n underline && \"underline\",\n strikethrough && \"line-through\",\n\n truncate && \"truncate\",\n\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","Info","TriangleAlert","User","X","ToastContext","createContext","useToast","context","useContext","ToastProvider","toasts","setToasts","useState","dismiss","useCallback","id","prev","t","toast","title","description","duration","jsxs","jsx","ToastItem","typeConfig","CheckCircle","AlertCircle","AlertTriangle","onClose","useEffect","handleEscape","e","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","el","toggleItem","i","toCssValue","item","isOpen","fontSizeMap","dimensionMap","variantMap","statusPositionMap","getStatusDotSize","getStatusBorderWidth","Avatar","src","alt","variant","isOnline","isOffline","fallback","ring","ringColor","onClick","statusPosition","statusClassName","statusStyle","imageError","setImageError","clickable","resolvedSize","initials","n","statusColor","statusDotSize","statusBorderWidth","r","f","o","clsx","Badge","text","icon","iconPosition","primaryColor","rounded","notificationDot","dotColor","count","pulse","sizes","dynamicStyle","Button","iconBefore","iconAfter","loading","loadingText","fullWidth","weight","disabled","isDisabled","sizeClasses","variantStyles","iconSizes","iconStyle","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","nextIndex","prevIndex","SwitchGroup","switchBgColor","sizeMap","paddingMap","Container","padding","center","DrawerButton","label","Drawer","open","position","showCloseButton","overlayClassName","closeButtonClassName","mounted","setMounted","transform","useMemo","Dropdown","defaultValue","placeholder","success","helperText","LabelIcon","PrefixIcon","primaryTheme","containerClassName","labelClassName","triggerClassName","dropdownClassName","optionClassName","useImperativeHandle","setOpen","localValue","setLocalValue","currentValue","selectedOption","handler","handleSelect","theme","dynamicPrimary","dynamicBorder","dynamicBgActive","borderState","paddingLeft","p","opt","isActive","Input","prefix","suffixIcon","min","max","step","rows","inputRef","visible","setVisible","hasPrefixIcon","hasPrefixText","hasPrefix","val","getPadding","dynamicFocusStyle","dynamicColorStyle","borderStyle","Image","width","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","useBreakpoint","breakpoint","isMobile","setIsMobile","mq","TabsContext","useTabsContext","ctx","Tabs","defaultActive","radius","bordered","mobileBreakpoint","mobileVariant","activeColor","hoverColor","disabledColor","onTabChange","tabCount","active","setActive","resolvedCount","setResolvedCount","drawerOpen","setDrawerOpen","handleSetActive","effectivePosition","isVertical","ChevronIcon","TabList","gap","drawerLabel","activeLabel","Tab","activeStyle","inactiveStyle","selfIndexRef","buttonRef","resolvedIndex","list","hovered","setHovered","idx","variantBase","variantActive","variantHover","forceFullWidth","TabPanels","TabPanel","keepMounted","transformClasses","Text","as","align","italic","underline","strikethrough","truncate","Element"],"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,20]}
|