@neuctra/ui 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.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 /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🔘 Button */\n/* -------------------------------------------------------------------------- */\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n iconBefore,\n iconAfter,\n loading = false,\n loadingText = \"Loading...\",\n fullWidth = false,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n /** 📏 Sizes */\n const sizeClasses = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-5 py-2.5 text-sm\",\n lg: \"px-6 py-3 text-base\",\n };\n\n /** 🎨 Theme styles */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white hover:bg-[var(--primary)]/90 focus:ring-[var(--primary)]/30\"\n : \"\";\n\n /** 🎨 Dynamic fallback for non-primary theme */\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"inline-flex items-center justify-center gap-2 font-medium rounded-lg transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-1\",\n sizeClasses[size],\n themeClasses,\n fullWidth && \"w-full\",\n (disabled || loading) && \"opacity-60 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {loading ? (\n <>\n <span className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\" />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && (\n <span className=\"flex items-center justify-center\">{iconBefore}</span>\n )}\n <span>{children}</span>\n {iconAfter && (\n <span className=\"flex items-center justify-center\">{iconAfter}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface CheckboxGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n customIcon?: (checked: boolean) => React.ReactNode;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n customIcon,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation (space/enter toggle)\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n if (focusedIndex === null) return;\n\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n setFocusedIndex((currentIndex + 1) % options.length);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n setFocusedIndex((currentIndex - 1 + options.length) % options.length);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Custom or default icon */}\n {customIcon ? (\n customIcon(isChecked)\n ) : (\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: 4,\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ width: iconSize * 0.6, height: iconSize * 0.6 }}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n name?: string;\n options: Option[];\n selectedValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n selectedValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n const currentIndex = focusedIndex ?? options.findIndex((o) => o.value === selectedValue) ?? 0;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n onChange && onChange(options[nextIndex].value);\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n onChange && onChange(options[prevIndex].value);\n setFocusedIndex(prevIndex);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValue, onChange, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"radiogroup\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n tabIndex={0} // allow keyboard focus\n >\n {options.map((option, index) => {\n const isChecked = selectedValue === option.value;\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none gap-2\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\",\n )}\n style={{ ...labelStyle }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => onChange && onChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n <span\n className={clsx(\"inline-flex items-center justify-center rounded-full transition-all\")}\n style={{\n width: iconSize,\n height: iconSize,\n border: `2px solid ${isChecked ? iconCheckedBgColor : iconUncheckedBorderColor}`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.2s ease\",\n }}\n >\n {isChecked && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: darkMode ? \"#fff\" : \"#fff\",\n }}\n />\n )}\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface SwitchGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const SwitchGroup: React.FC<SwitchGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n switchBgColor = \"#d1d5db\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (focusedIndex === null) return;\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n setFocusedIndex(prevIndex);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Switch */}\n <span\n className={clsx(\"relative inline-flex rounded-full transition-colors\")}\n style={{\n width: iconSize * 2,\n height: iconSize * 1.1,\n backgroundColor: isChecked\n ? iconCheckedBgColor\n : switchBgColor,\n transition: \"background-color 0.25s ease\",\n borderRadius: 9999,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: isChecked\n ? `calc(100% - ${iconSize - 4}px - 2px)`\n : \"2px\",\n transform: \"translateY(-50%)\",\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.3)\",\n transition: \"left 0.25s ease\",\n }}\n />\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n size?: ContainerSize;\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n center?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nconst sizeMap: Record<ContainerSize, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n \"2xl\": \"max-w-2xl\",\n full: \"w-full\",\n};\n\nconst paddingMap: Record<NonNullable<ContainerProps[\"padding\"]>, string> = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n/**\n * 🧱 Container Component\n * Fully responsive, Tailwind-first layout wrapper\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = \"md\",\n center = true,\n className = \"\",\n children,\n}) => {\n const classes = clsx(\n \"w-full box-border\",\n sizeMap[size],\n paddingMap[padding],\n center && \"mx-auto\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\nexport default Container;","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexViewProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n margin?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const FlexView: React.FC<FlexViewProps> = ({\n direction = { sm: \"column\", md: \"row\" },\n align = \"center\",\n justify = \"between\",\n wrap = \"wrap\",\n gap,\n padding,\n margin,\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction),\n toResponsiveClass(\"items\", align),\n toResponsiveClass(\"justify\", justify),\n toResponsiveClass(\"flex\", wrap), // wrap classes: flex-wrap, flex-nowrap, flex-wrap-reverse\n gap ? toResponsiveClass(\"gap\", gap) : \"\",\n padding ? toResponsiveClass(\"p\", padding) : \"\",\n margin ? toResponsiveClass(\"m\", margin) : \"\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface StackProps {\n direction?: ResponsiveValue<\"vertical\" | \"horizontal\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n align?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Convert responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\" },\n gap = 4,\n align = \"center\",\n justify = \"start\",\n wrap = \"nowrap\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction), // flex-col or flex-row\n toResponsiveClass(\"gap\", gap),\n align !== \"stretch\" ? `items-${align}` : \"items-stretch\",\n justify !== \"start\" ? `justify-${justify}` : \"justify-start\",\n wrap !== \"nowrap\" ? `flex-${wrap}` : \"flex-nowrap\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\n/** Shortcuts for horizontal & vertical stacks */\nexport const HStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"horizontal\" {...props} />\n);\n\nexport const VStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"vertical\" {...props} />\n);","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\nexport interface GridProps {\n columns?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6>;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 4,\n padding = 4,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"grid\",\n toResponsiveClass(\"grid-cols\", columns),\n toResponsiveClass(\"gap\", gap),\n toResponsiveClass(\"p\", padding),\n alignItems !== \"stretch\" ? `items-${alignItems}` : \"items-stretch\",\n justifyItems !== \"stretch\" ? `justify-items-${justifyItems}` : \"justify-items-stretch\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","\"use client\";\nimport React, { useState, useEffect, useMemo, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\ninterface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n className = \"\",\n}) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`inline-flex items-center justify-center gap-2 px-4 py-2 rounded-md font-medium text-white bg-blue-600 hover:bg-blue-700 transition-colors focus:outline-none focus:ring-2 focus:ring-blue-400 ${className}`}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n );\n};\n\n/* ---------------- 🧱 Drawer ---------------- */\ninterface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n size?: string; // width for left/right, height for top/bottom\n className?: string;\n overlayClassName?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeButtonClassName?: string;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n size = \"320px\",\n children,\n showCloseButton = true,\n className = \"\",\n overlayClassName = \"\",\n closeButtonClassName = \"\",\n}) => {\n const [mounted, setMounted] = useState(open);\n\n useEffect(() => {\n if (open) setMounted(true);\n else setTimeout(() => setMounted(false), 300); // smooth exit\n }, [open]);\n\n const transform = useMemo(() => {\n if (open) return \"translate(0,0)\";\n switch (position) {\n case \"left\":\n return \"translateX(-100%)\";\n case \"right\":\n return \"translateX(100%)\";\n case \"top\":\n return \"translateY(-100%)\";\n case \"bottom\":\n return \"translateY(100%)\";\n default:\n return \"translate(0,0)\";\n }\n }, [open, position]);\n\n if (!mounted && !open) return null;\n\n return (\n <>\n {/* Overlay */}\n <div\n onClick={onClose}\n className={`fixed inset-0 bg-black/50 transition-opacity ${\n open ? \"opacity-100\" : \"opacity-0\"\n } ${overlayClassName}`}\n />\n\n {/* Drawer Panel */}\n <div\n className={`fixed bg-white shadow-lg flex flex-col transition-transform duration-300 ${className}`}\n style={{\n width: position === \"left\" || position === \"right\" ? size : \"100%\",\n height: position === \"top\" || position === \"bottom\" ? size : \"100%\",\n top: position === \"bottom\" || position === \"top\" ? (position === \"bottom\" ? \"auto\" : 0) : 0,\n bottom: position === \"bottom\" ? 0 : \"auto\",\n left: position === \"left\" ? 0 : position === \"right\" ? \"auto\" : 0,\n right: position === \"right\" ? 0 : position === \"left\" ? \"auto\" : 0,\n transform,\n }}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n className={`absolute top-4 right-4 p-1 rounded-full hover:bg-gray-200 transition-colors ${closeButtonClassName}`}\n aria-label=\"Close drawer\"\n >\n <X size={20} />\n </button>\n )}\n\n <div className=\"flex-1 overflow-auto p-4\">{children}</div>\n </div>\n </>\n );\n};","\"use client\";\n\nimport React, {\n useEffect,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n label?: string;\n name?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n options?: SelectOption[];\n\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n labelIcon?: React.ElementType;\n prefixIcon?: React.ElementType;\n\n variant?: \"dark\" | \"light\";\n\n /** 🔥 THEME SYSTEM */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n containerClassName?: string;\n labelClassName?: string;\n triggerClassName?: string;\n dropdownClassName?: string;\n optionClassName?: string;\n\n className?: string;\n}\n\nexport const Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (props, ref) => {\n const {\n label,\n name = \"\",\n value,\n defaultValue,\n onChange,\n options = [],\n placeholder = \"Select an option\",\n required,\n disabled,\n error,\n success,\n helperText,\n\n labelIcon: LabelIcon,\n prefixIcon: PrefixIcon,\n\n variant = \"dark\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n containerClassName = \"\",\n labelClassName = \"\",\n triggerClassName = \"\",\n dropdownClassName = \"\",\n optionClassName = \"\",\n\n className = \"\",\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => containerRef.current!);\n\n const [open, setOpen] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n\n const currentValue = value !== undefined ? value : localValue;\n const selectedOption = options.find((o) => o.value === currentValue);\n\n /** Close outside */\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const handleSelect = (option: SelectOption) => {\n setLocalValue(option.value);\n onChange?.(name, option.value);\n setOpen(false);\n };\n\n /** 🎨 Theme base */\n const theme = {\n dark: {\n bg: \"bg-zinc-900\",\n text: \"text-white\",\n border: \"border-zinc-800\",\n dropdown: \"bg-black border-zinc-800\",\n option: \"text-zinc-300 hover:bg-zinc-800\",\n },\n light: {\n bg: \"bg-white\",\n text: \"text-gray-900\",\n border: \"border-gray-300\",\n dropdown: \"bg-white border-gray-200\",\n option: \"text-gray-700 hover:bg-gray-100\",\n },\n }[variant];\n\n /** 🎨 Dynamic styles */\n const dynamicPrimary: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const dynamicBorder: CSSProperties = !primaryTheme\n ? { borderColor: primaryColor }\n : {};\n\n const dynamicBgActive: CSSProperties = !primaryTheme\n ? { backgroundColor: `${primaryColor}20` } // light tint\n : {};\n\n /** Border state */\n const borderState = error\n ? \"border-rose-500\"\n : success\n ? \"border-emerald-500\"\n : theme.border;\n\n const paddingLeft = PrefixIcon ? \"pl-12 pr-10\" : \"px-4\";\n\n return (\n <div\n ref={containerRef}\n className={`w-full space-y-1 ${containerClassName} ${className}`}\n >\n {/* Label */}\n {label && (\n <label\n className={`flex items-center gap-2 text-[13px] font-medium ${labelClassName}`}\n >\n {LabelIcon && (\n <LabelIcon\n className={\n primaryTheme ? \"w-4 h-4 text-[var(--primary)]\" : \"w-4 h-4\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-rose-500\">*</span>}\n </label>\n )}\n\n <div className=\"relative group\">\n {/* Prefix Icon */}\n {PrefixIcon && (\n <div className=\"absolute left-4 top-1/2 -translate-y-1/2 z-10\">\n <PrefixIcon\n className={\n primaryTheme\n ? \"w-4 h-4 text-zinc-500 group-focus-within:text-[var(--primary)]\"\n : \"w-4 h-4 text-zinc-500\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n </div>\n )}\n\n {/* Trigger */}\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setOpen((p) => !p)}\n style={!primaryTheme ? dynamicBorder : undefined}\n className={`\n w-full py-2.5 rounded-lg text-left text-sm\n border transition-all duration-200\n ${theme.bg} ${theme.text}\n ${paddingLeft}\n ${borderState}\n focus:ring-2\n ${\n primaryTheme\n ? \"focus:ring-[var(--primary)]/30 focus:border-[var(--primary)]\"\n : \"\"\n }\n disabled:opacity-50 disabled:cursor-not-allowed\n ${triggerClassName}\n `}\n >\n <span className={selectedOption ? theme.text : \"text-zinc-500\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n\n <ChevronDown\n className={`absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 transition-transform ${\n open ? \"rotate-180\" : \"\"\n } text-zinc-400`}\n />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div\n className={`\n absolute z-50 mt-2 w-full rounded-xl border shadow-xl overflow-hidden\n ${theme.dropdown}\n ${dropdownClassName}\n `}\n >\n <ul className=\"max-h-60 overflow-y-auto\">\n {options.map((opt) => {\n const isActive = currentValue === opt.value;\n\n return (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n style={\n !primaryTheme && isActive ? dynamicBgActive : undefined\n }\n className={`\n px-4 py-3 cursor-pointer text-sm flex items-center gap-2\n ${\n isActive\n ? primaryTheme\n ? \"bg-[var(--primary)]/15 text-[var(--primary)]\"\n : \"\"\n : theme.option\n }\n ${optionClassName}\n `}\n >\n {opt.icon && <span>{opt.icon}</span>}\n {opt.label}\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n\n {/* Helper */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-rose-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";","\"use client\";\n\nimport React, {\n forwardRef,\n useState,\n useImperativeHandle,\n useRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputFieldProps {\n label?: string;\n name?: string;\n type?: \"text\" | \"password\" | \"email\" | \"number\" | \"textarea\";\n placeholder?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n /** Icons */\n icon?: React.ElementType;\n prefix?: string;\n prefixIcon?: React.ElementType;\n suffixIcon?: React.ReactNode;\n\n /** Number props */\n min?: number;\n max?: number;\n step?: number;\n\n /** Textarea */\n rows?: number;\n\n /** 🔥 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** Styling */\n className?: string;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputFieldProps\n>((props, ref) => {\n const {\n label,\n name = \"\",\n type = \"text\",\n placeholder = \"\",\n value,\n defaultValue,\n onChange,\n required,\n disabled,\n readOnly,\n\n error,\n success,\n helperText,\n\n icon: LabelIcon,\n prefix,\n prefixIcon: PrefixIcon,\n suffixIcon,\n\n min,\n max,\n step,\n\n rows = 4,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className = \"\",\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n useImperativeHandle(ref, () => inputRef.current!);\n\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n const hasPrefixIcon = Boolean(PrefixIcon);\n const hasPrefixText = Boolean(prefix);\n const hasPrefix = hasPrefixIcon || hasPrefixText;\n\n const currentValue = value !== undefined ? value : localValue;\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const val = e.target.value;\n setLocalValue(val);\n onChange?.(name, val);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === \"number\" && e.key === \"-\") e.preventDefault();\n };\n\n /** Padding logic */\n const getPadding = () => {\n if (!hasPrefix) return \"px-4\";\n if (hasPrefixIcon && hasPrefixText) return \"pl-20 pr-4\";\n if (hasPrefixText) return \"pl-14 pr-4\";\n if (hasPrefixIcon) return \"pl-10 pr-4\";\n return \"px-4\";\n };\n\n /** 🔥 Theme Styles */\n const dynamicFocusStyle: CSSProperties = !primaryTheme\n ? {\n borderColor: primaryColor,\n boxShadow: `0 0 0 1px ${primaryColor}`,\n }\n : {};\n\n const dynamicColorStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n /** Border */\n const borderStyle = error\n ? \"border-red-500\"\n : success\n ? \"border-emerald-500\"\n : \"border-zinc-300 dark:border-zinc-800\";\n\n return (\n <div className={`w-full space-y-1 ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"flex items-center gap-2 text-[12px] font-medium text-gray-700 dark:text-zinc-100\">\n {LabelIcon && (\n <LabelIcon\n size={16}\n className={primaryTheme ? \"text-[var(--primary)]\" : \"\"}\n style={!primaryTheme ? dynamicColorStyle : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-red-500\">*</span>}\n </label>\n )}\n\n {/* Input Wrapper */}\n <div className=\"relative\">\n {/* Prefix */}\n {hasPrefix && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3 gap-2 text-sm text-zinc-400 pointer-events-none\">\n {PrefixIcon && <PrefixIcon size={14} />}\n {hasPrefixText && (\n <>\n <span className=\"font-medium text-zinc-600 dark:text-zinc-200\">\n {prefix}\n </span>\n <span className=\"h-4 w-px bg-zinc-300 dark:bg-zinc-700\" />\n </>\n )}\n </div>\n )}\n\n {/* Input / Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n min={type === \"number\" ? min ?? 0 : undefined}\n max={max}\n step={step}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n disabled:opacity-50 disabled:cursor-not-allowed\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n )}\n\n {/* Password toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\"\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Suffix */}\n {suffixIcon && type !== \"password\" && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\">\n {suffixIcon}\n </span>\n )}\n </div>\n\n {/* Helper / Error */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-red-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {error && typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n});","\"use client\";\n\nimport React, { useMemo } from \"react\";\n\ninterface ImageProps {\n src?: string;\n alt?: string;\n title?: string;\n /** Tailwind width/height classes or numbers */\n width?: string | number;\n height?: string | number;\n /** Tailwind rounded classes */\n rounded?: string;\n borderColor?: string;\n borderWidth?: string | number;\n shadow?: boolean;\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n responsive?: boolean;\n p?: string;\n m?: string;\n /** Hover Effects */\n hoverScale?: number;\n hoverRotate?: number;\n hoverOpacity?: number;\n hoverShadow?: boolean;\n transitionDuration?: string;\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Custom Tailwind classes */\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"w-full\",\n height = \"h-auto\",\n rounded = \"rounded-lg\",\n borderColor = \"transparent\",\n borderWidth = \"0\",\n shadow = false,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n p,\n m,\n hoverScale = 1.05,\n hoverRotate = 0,\n hoverOpacity,\n hoverShadow = false,\n transitionDuration = \"300ms\",\n overflow = \"hidden\",\n className = \"\",\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n /** Base Tailwind classes */\n const baseClasses = useMemo(() => {\n const classes = [\n \"relative inline-block transition-all\",\n shadow ? \"shadow-md\" : \"\",\n rounded,\n p ?? \"\",\n m ?? \"\",\n responsive ? \"w-full h-auto\" : \"\",\n className,\n ];\n return classes.join(\" \");\n }, [shadow, rounded, p, m, responsive, className]);\n\n /** Inline styles for custom widths, hover, borders, etc. */\n const inlineStyles: React.CSSProperties = useMemo(\n () => ({\n width: typeof width === \"number\" ? width : undefined,\n height: typeof height === \"number\" ? height : undefined,\n objectFit,\n opacity,\n borderColor,\n borderWidth,\n transition: `all ${transitionDuration} ease`,\n ...style,\n }),\n [width, height, objectFit, opacity, borderColor, borderWidth, transitionDuration, style]\n );\n\n /** Overflow handling */\n const overflowStyles: React.CSSProperties = useMemo(() => {\n switch (overflow) {\n case \"x\":\n return { overflowX: \"hidden\" };\n case \"y\":\n return { overflowY: \"hidden\" };\n default:\n return { overflow };\n }\n }, [overflow]);\n\n /** Hover effects */\n const handleMouseEnter = (e: React.MouseEvent<HTMLImageElement>) => {\n if (hoverOpacity !== undefined) e.currentTarget.style.opacity = hoverOpacity.toString();\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n if (hoverShadow) e.currentTarget.style.boxShadow = \"0 8px 20px rgba(0,0,0,0.3)\";\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = opacity.toString();\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n if (hoverShadow) e.currentTarget.style.boxShadow = \"\";\n };\n\n return (\n <div\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n className={baseClasses}\n style={{ position: \"relative\", cursor: onClick ? \"pointer\" : \"default\", ...overflowStyles }}\n >\n {/* SVG fallback */}\n {svgIcon ? (\n <div className=\"w-full h-full flex items-center justify-center\">{svgIcon}</div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading=\"lazy\"\n style={inlineStyles}\n className=\"block\"\n onLoad={onLoad}\n onError={onError}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n />\n )}\n\n {/* Overlay */}\n {overlayText && (\n <div\n style={{ backgroundColor: overlayColor }}\n className=\"absolute inset-0 flex items-center justify-center text-white font-bold text-center p-4\"\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};","import React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemType {\n text: string;\n icon?: ReactNode;\n onClick?: () => void;\n subItems?: ListItemType[];\n}\n\nexport interface ListProps {\n title?: string;\n titleIcon?: ReactNode;\n items: ListItemType[];\n\n type?: \"unordered\" | \"ordered\" | \"inline\";\n\n // 🔥 THEME CONTROL\n primaryTheme?: boolean; // use CSS var\n primaryColor?: string; // fallback color\n\n className?: string;\n itemClassName?: string;\n titleClassName?: string;\n bulletClassName?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\ninterface ListItemProps extends ListItemType {\n isInline?: boolean;\n isOrdered?: boolean;\n\n primaryTheme?: boolean;\n primaryColor?: string;\n\n itemClassName?: string;\n bulletClassName?: string;\n}\n\nconst ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n isInline,\n isOrdered,\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n itemClassName,\n bulletClassName,\n}) => {\n // ✅ Dynamic style for primary color\n const dynamicStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const bulletStyle: CSSProperties = !primaryTheme\n ? { backgroundColor: primaryColor }\n : {};\n\n return (\n <li className={clsx(!isInline && \"mb-3\")}>\n <div\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"flex items-center gap-2 text-sm text-zinc-800 dark:text-zinc-200 transition-all\",\n onClick &&\n (primaryTheme\n ? \"cursor-pointer hover:text-[var(--primary)]\"\n : \"cursor-pointer\"),\n itemClassName\n )}\n >\n {/* ICON */}\n {icon ? (\n <span className=\"text-base\">{icon}</span>\n ) : (\n !isInline &&\n !isOrdered && (\n <span\n style={!primaryTheme ? bulletStyle : undefined}\n className={clsx(\n \"w-2 h-2 rounded-full\",\n primaryTheme && \"bg-[var(--primary)]\",\n bulletClassName\n )}\n />\n )\n )}\n\n <span>{text}</span>\n </div>\n\n {/* Nested */}\n {subItems && subItems.length > 0 && (\n <ul\n className={clsx(\n \"pl-5 mt-2 space-y-2\",\n isOrdered ? \"list-decimal\" : \"list-none\"\n )}\n >\n {subItems.map((sub, i) => (\n <ListItem\n key={i}\n {...sub}\n isInline={false}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\n/* -------------------------------------------------------------------------- */\n/* 📋 List */\n/* -------------------------------------------------------------------------- */\n\nexport const List: React.FC<ListProps> = ({\n title,\n titleIcon,\n items,\n type = \"unordered\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className,\n itemClassName,\n titleClassName,\n bulletClassName,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div\n className={clsx(\n \"bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl p-4\",\n className\n )}\n >\n {title && (\n <div\n className={clsx(\n \"flex items-center gap-2 mb-3 text-base font-semibold text-zinc-900 dark:text-white\",\n titleClassName\n )}\n >\n {titleIcon && <span>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag\n className={clsx(\n isInline\n ? \"flex flex-wrap gap-4\"\n : isOrdered\n ? \"list-decimal pl-5 space-y-2\"\n : \"list-none p-0\"\n )}\n >\n {items.map((item, i) => (\n <ListItem\n key={i}\n {...item}\n isInline={isInline}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ListTag>\n </div>\n );\n};","import React, { ReactNode, useEffect, useRef, useCallback } from \"react\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n title?: string;\n icon?: ReactNode; // <-- Optional icon in header\n ariaLabel?: string;\n className?: string;\n overlayClassName?: string;\n contentClassName?: string;\n closeButtonClassName?: string;\n disableOverlayClose?: boolean;\n darkMode?: boolean;\n transitionDuration?: number; // in ms\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n title,\n icon,\n ariaLabel,\n className,\n overlayClassName,\n contentClassName,\n closeButtonClassName,\n disableOverlayClose = false,\n darkMode = false,\n transitionDuration = 200,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* Escape key close */\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n if (isOpen) document.addEventListener(\"keydown\", handleEsc);\n return () => document.removeEventListener(\"keydown\", handleEsc);\n }, [isOpen, onClose]);\n\n /* Scroll lock */\n useEffect(() => {\n if (isOpen) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [isOpen]);\n\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n className={clsx(\n \"fixed inset-0 flex items-center justify-center z-50 transition-opacity\",\n darkMode ? \"bg-black/80\" : \"bg-black/60\",\n overlayClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={handleOverlayClick}\n >\n <div\n ref={modalRef}\n className={clsx(\n \"relative w-[90vw] max-w-2xl max-h-[90vh] overflow-y-auto p-6 rounded-lg shadow-lg transition-transform\",\n darkMode ? \"bg-zinc-900 text-white\" : \"bg-white text-gray-900\",\n \"scale-100\",\n contentClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Close Button */}\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n className={clsx(\n \"absolute top-4 right-4 p-1 rounded-full hover:scale-110 transition-transform\",\n darkMode ? \"text-white hover:text-gray-200\" : \"text-gray-700 hover:text-gray-900\",\n closeButtonClassName\n )}\n >\n <X size={24} />\n </button>\n\n {/* Header */}\n {title && (\n <div className=\"flex items-center gap-2 mb-4\">\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\n <h2 className=\"text-xl font-semibold\">{title}</h2>\n </div>\n )}\n\n {/* Content */}\n {children}\n </div>\n </div>\n );\n};","\"use client\";\nimport React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* ---------------------------- Types ---------------------------- */\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\n/* ---------------------------- Table Container ---------------------------- */\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <div\n className={clsx(\"overflow-x-auto rounded-lg shadow-sm border border-gray-200\", className)}\n style={{\n background: \"#ffffff\",\n ...style,\n }}\n >\n <table\n className=\"w-full border-collapse\"\n style={{\n borderSpacing: 0,\n borderRadius: 12,\n overflow: \"hidden\",\n }}\n >\n {children}\n </table>\n </div>\n);\n\n/* ---------------------------- Table Head ---------------------------- */\nexport const THead: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <thead\n className={clsx(\"bg-gray-100 text-gray-900 font-semibold\", className)}\n style={{\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\n/* ---------------------------- Table Body ---------------------------- */\nexport const TBody: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tbody className={clsx(\"bg-white\", className)} style={{ ...style }}>\n {children}\n </tbody>\n);\n\n/* ---------------------------- Table Row ---------------------------- */\ninterface TRowProps extends TableSectionProps {\n onClick?: () => void;\n hoverBgColor?: string;\n darkMode?: boolean;\n}\n\nexport const TRow: React.FC<TRowProps> = ({\n children,\n style,\n className,\n onClick,\n hoverBgColor = \"#f9fafb\",\n darkMode = false,\n}) => (\n <tr\n className={clsx(\n \"transition-colors duration-200 cursor-default\",\n onClick ? \"hover:cursor-pointer\" : \"\",\n className\n )}\n style={{ borderBottom: \"1px solid #e5e7eb\", ...style }}\n onClick={onClick}\n onMouseEnter={(e) => {\n if (!darkMode) e.currentTarget.style.backgroundColor = hoverBgColor;\n else e.currentTarget.style.backgroundColor = \"#1f2937\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {children}\n </tr>\n);\n\n/* ---------------------------- Table Head Cell ---------------------------- */\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={clsx(\"text-left px-4 py-3 text-sm text-gray-700 border-b-2 border-gray-200\", className)}\n style={{ ...style }}\n >\n {children}\n </th>\n);\n\n/* ---------------------------- Table Data Cell ---------------------------- */\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={clsx(\"px-4 py-3 text-sm text-gray-600\", className)}\n style={{ ...style }}\n >\n {children}\n </td>\n);","\"use client\";\nimport React, { useState, CSSProperties, useEffect, useRef } from \"react\";\n\n/** 🧩 Types */\ninterface TabItem {\n label: React.ReactNode;\n content: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActive?: number;\n position?: \"top\" | \"left\" | \"right\";\n variant?: \"solid\" | \"outline\" | \"underline\";\n fullWidth?: boolean;\n gap?: number;\n radius?: number;\n padding?: string;\n transitionDuration?: number;\n elevation?: number;\n bordered?: boolean;\n\n /** 🎨 Colors */\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverColor?: string;\n activeColor?: string;\n borderColor?: string;\n disabledColor?: string;\n\n /** 📱 Responsive */\n responsiveBreakpoint?: number;\n showDrawerLabel?: string;\n drawerIcon?: React.ReactNode;\n\n /** ⚙️ Callbacks */\n onTabChange?: (index: number) => void;\n\n /** 🧱 Classes and Styles */\n className?: string;\n style?: CSSProperties;\n tabClassName?: string;\n contentClassName?: string;\n activeTabStyle?: CSSProperties;\n inactiveTabStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n}\n\n/** 💎 Modern, Fully Customizable Tabs */\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n gap = 8,\n radius = 8,\n padding = \"12px 18px\",\n transitionDuration = 200,\n elevation = 1,\n bordered = false,\n\n primaryColor = \"#2563eb\",\n backgroundColor = \"transparent\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n activeColor = \"#ffffff\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n\n responsiveBreakpoint = 768,\n showDrawerLabel = \"Select Tab\",\n drawerIcon = \"☰\",\n\n onTabChange,\n className = \"\",\n style,\n tabClassName = \"\",\n contentClassName = \"\",\n activeTabStyle,\n inactiveTabStyle,\n contentStyle,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [hovered, setHovered] = useState<number | null>(null);\n const [isMobile, setIsMobile] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** 📱 Responsive detection */\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth <= responsiveBreakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [responsiveBreakpoint]);\n\n /** 🎛 Handle tab change */\n const handleChange = (i: number) => {\n if (tabs[i].disabled) return;\n setActive(i);\n onTabChange?.(i);\n if (isMobile) setDrawerOpen(false);\n };\n\n /** ⚡ Keyboard navigation */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, i: number) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n handleChange((i + 1) % tabs.length);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n handleChange((i - 1 + tabs.length) % tabs.length);\n }\n };\n\n /** 🎨 Base styles */\n const baseTab: CSSProperties = {\n padding,\n borderRadius: radius,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n justifyContent: \"center\",\n fontWeight: 500,\n transition: `all ${transitionDuration}ms ease`,\n background: \"transparent\",\n border: variant === \"outline\" ? `1px solid ${borderColor}` : \"none\",\n borderBottom: variant === \"underline\" ? `2px solid transparent` : undefined,\n color: textColor,\n width: fullWidth ? \"100%\" : \"auto\",\n userSelect: \"none\",\n };\n\n const activeTab: CSSProperties = {\n background: variant === \"solid\" ? primaryColor : \"transparent\",\n color: activeColor,\n borderBottom: variant === \"underline\" ? `2px solid ${primaryColor}` : undefined,\n boxShadow:\n elevation > 0 ? `0 ${elevation}px ${elevation * 4}px ${primaryColor}33` : undefined,\n ...activeTabStyle,\n };\n\n const inactiveTab: CSSProperties = {\n ...(variant === \"outline\" ? { borderColor } : {}),\n ...(variant === \"underline\" ? { borderBottomColor: \"transparent\" } : {}),\n ...inactiveTabStyle,\n };\n\n const hoverTab: CSSProperties = {\n color: hoverColor,\n background:\n variant === \"solid\"\n ? `${primaryColor}11`\n : variant === \"outline\"\n ? `${primaryColor}11`\n : \"transparent\",\n };\n\n const disabledTab: CSSProperties = {\n color: disabledColor,\n cursor: \"not-allowed\",\n opacity: 0.6,\n };\n\n const contentBox: CSSProperties = {\n flexGrow: 1,\n borderTop: bordered && position === \"top\" ? `1px solid ${borderColor}` : undefined,\n borderLeft: bordered && position === \"left\" ? `1px solid ${borderColor}` : undefined,\n borderRight: bordered && position === \"right\" ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n ...contentStyle,\n };\n\n /** 🧱 Layout */\n const isVertical = position === \"left\" || position === \"right\";\n\n return (\n <div\n ref={containerRef}\n className={`modern-tabs ${className}`}\n style={{\n display: \"flex\",\n flexDirection: isVertical ? (position === \"right\" ? \"row-reverse\" : \"row\") : \"column\",\n background: backgroundColor,\n border: bordered ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>\n {`\n @keyframes tab-fade {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .modern-tabs__content {\n animation: tab-fade ${transitionDuration}ms ease;\n }\n `}\n </style>\n\n {/* 📱 Mobile Drawer */}\n {isMobile ? (\n <div style={{ width: \"100%\", padding: 8 }}>\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n style={{\n ...baseTab,\n ...activeTab,\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: 16,\n }}\n >\n {showDrawerLabel}\n <span>{drawerIcon}</span>\n </button>\n {drawerOpen && (\n <div style={{ display: \"flex\", flexDirection: \"column\", marginTop: 8, gap }}>\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap,\n padding: 8,\n minWidth: isVertical ? 200 : undefined,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n role=\"tab\"\n aria-selected={isActive}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n\n {/* 🧠 Tab Content */}\n <div\n className={`modern-tabs__content ${contentClassName}`}\n style={contentBox}\n role=\"tabpanel\"\n >\n {tabs[active]?.content}\n </div>\n </div>\n );\n};","import React, { useMemo } from \"react\";\n\n/** 🎯 Limit to only HTML elements to avoid SVG union explosion */\ntype HTMLElementTag = keyof HTMLElementTagNameMap;\n\ntype TextProps<T extends HTMLElementTag = \"p\"> = {\n as?: T;\n children: React.ReactNode;\n color?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | string;\n weight?: React.CSSProperties[\"fontWeight\"];\n align?: React.CSSProperties[\"textAlign\"];\n transform?: React.CSSProperties[\"textTransform\"];\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n truncate?: boolean;\n selectable?: boolean;\n hoverable?: boolean;\n darkMode?: boolean;\n baseColor?: string;\n className?: string;\n style?: React.CSSProperties;\n onClick?: () => void;\n} & Omit<React.HTMLAttributes<HTMLElementTagNameMap[HTMLElementTag]>, \"color\" | \"style\">;\n\n/** 🎨 Utility: generate lighter/darker shades */\nfunction adjustColor(color: string, amount: number): string {\n return (\n \"#\" +\n color\n .replace(/^#/, \"\")\n .replace(/../g, (hex) =>\n (\n \"0\" +\n Math.min(255, Math.max(0, parseInt(hex, 16) + amount)).toString(16)\n ).slice(-2)\n )\n );\n}\n\n/** 🌈 Default color palettes */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n secondary: \"#64748b\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n secondary: \"#94a3b8\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n },\n};\n\n/** 💬 Main Component (HTML-only tags) */\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n color = \"default\",\n size = \"md\",\n weight = \"normal\",\n align = \"left\",\n transform = \"none\",\n italic = false,\n underline = false,\n strikethrough = false,\n truncate = false,\n selectable = true,\n hoverable = false,\n onClick,\n darkMode = false,\n baseColor,\n className = \"\",\n style = {},\n ...rest\n}: TextProps<T>) {\n // element type as provided (constrained to HTML tags)\n const Element = (as || (\"p\" as T)) as T;\n\n /** 🎨 Dynamic color palette generation */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const lightMode = {\n default: \"#111\",\n primary: baseColor,\n secondary: adjustColor(baseColor, -50),\n success: adjustColor(baseColor, -30),\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n };\n const darkModeTheme = {\n default: \"#f8fafc\",\n primary: adjustColor(baseColor, 80),\n secondary: adjustColor(baseColor, 120),\n success: adjustColor(baseColor, 100),\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n };\n return darkMode ? darkModeTheme : lightMode;\n }, [baseColor, darkMode]);\n\n /** 📏 Font sizes */\n const sizes: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n xl: \"1.5rem\",\n \"2xl\": \"2rem\",\n };\n\n /** 💅 Computed styles */\n const computedStyle: React.CSSProperties = {\n color: (theme as any)[color] || color,\n fontSize: sizes[size] || size,\n fontWeight: weight,\n textAlign: align,\n textTransform: transform,\n fontStyle: italic ? \"italic\" : \"normal\",\n textDecoration: underline ? \"underline\" : strikethrough ? \"line-through\" : \"none\",\n userSelect: selectable ? \"text\" : \"none\",\n overflow: truncate ? \"hidden\" : undefined,\n whiteSpace: truncate ? \"nowrap\" : undefined,\n textOverflow: truncate ? \"ellipsis\" : undefined,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.25s ease-in-out\",\n ...style,\n };\n\n /** 🧠 Hover events (narrow to HTMLElement at runtime) */\n const handleMouseEnter = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"0.8\";\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"1\";\n }\n };\n\n /**\n * Build props object. We cast only once to the correct intrinsic props type.\n * This prevents TypeScript from having to compute giant unions for event types.\n */\n const props = {\n className,\n style: computedStyle,\n onClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...rest,\n } as React.ComponentPropsWithoutRef<T>;\n\n // Use React.createElement to avoid JSX generic complexity\n return React.createElement(Element as any, props, children);\n}\n\nexport default Text;\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ChevronDown","ChevronUp","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","ToastContext","createContext","useToast","context","useContext","ToastProvider","toasts","setToasts","useState","removeToast","useCallback","id","prev","t","addToast","toast","jsx","ToastItem","typeStyles","CheckCircle","AlertCircle","AlertTriangle","onClose","title","description","bg","border","icon","jsxs","Accordion","memo","items","allowMultiple","defaultOpen","borderColor","backgroundColor","textColor","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","borderRadius","contentPadding","fontSize","fontWeight","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","shadow","style","openIndexes","setOpenIndexes","contentRefs","useRef","useEffect","el","toggleItem","i","toCssValue","item","isOpen","e","sizeMap","fontSizeMap","dimensionMap","variantMap","statusPositionMap","Avatar","src","alt","variant","isOnline","isOffline","fallback","ring","ringColor","onClick","statusPosition","statusClassName","statusStyle","imageError","setImageError","clickable","initials","n","statusColor","dimensionPx","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","padding","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","duration","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","percent","skip","seconds","toggleFullscreen","formatTime","time","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","maxWidth","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","r","f","clsx","Badge","text","iconPosition","primaryTheme","rounded","notificationDot","dotColor","count","pulse","sizes","themeClasses","dynamicStyle","Button","iconBefore","iconAfter","loading","loadingText","fullWidth","disabled","sizeClasses","Fragment","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","darkMode","containerRef","focusedIndex","setFocusedIndex","handleChange","updatedValues","v","container","handleKeyDown","currentIndex","option","isChecked","isFocused","RadioGroup","selectedValue","o","SwitchGroup","switchBgColor","paddingMap","Container","center","toResponsiveClass","prefix","bp","val","FlexView","direction","align","justify","wrap","gap","margin","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","DrawerButton","label","Drawer","open","position","showCloseButton","overlayClassName","closeButtonClassName","mounted","setMounted","transform","useMemo","Dropdown","defaultValue","placeholder","success","helperText","LabelIcon","PrefixIcon","containerClassName","labelClassName","triggerClassName","dropdownClassName","optionClassName","useImperativeHandle","setOpen","localValue","setLocalValue","currentValue","selectedOption","handler","handleSelect","theme","dynamicPrimary","dynamicBorder","dynamicBgActive","borderState","paddingLeft","p","opt","Input","suffixIcon","min","max","step","rows","inputRef","visible","setVisible","hasPrefixIcon","hasPrefixText","hasPrefix","getPadding","dynamicFocusStyle","dynamicColorStyle","borderStyle","Image","height","borderWidth","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","m","hoverScale","hoverRotate","hoverOpacity","hoverShadow","overflow","onLoad","onError","baseClasses","inlineStyles","overflowStyles","handleMouseEnter","handleMouseLeave","ListItem","subItems","isInline","isOrdered","itemClassName","bulletClassName","bulletStyle","sub","List","titleIcon","titleClassName","ListTag","Modal","ariaLabel","contentClassName","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","radius","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","activeTabStyle","inactiveTabStyle","contentStyle","active","setActive","hovered","setHovered","isMobile","setIsMobile","drawerOpen","setDrawerOpen","check","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isHovered","isDisabled","adjustColor","amount","hex","defaultColors","Text","as","weight","italic","underline","strikethrough","truncate","selectable","hoverable","baseColor","Element","lightMode","darkModeTheme","computedStyle","target"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,34]}
1
+ {"version":3,"file":"index.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 /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🔘 Button */\n/* -------------------------------------------------------------------------- */\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n iconBefore,\n iconAfter,\n loading = false,\n loadingText = \"Loading...\",\n fullWidth = false,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n /** 📏 Sizes */\n const sizeClasses = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-5 py-2.5 text-sm\",\n lg: \"px-6 py-3 text-base\",\n };\n\n /** 🎨 Theme styles */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white hover:bg-[var(--primary)]/90 focus:ring-[var(--primary)]/30\"\n : \"\";\n\n /** 🎨 Dynamic fallback for non-primary theme */\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"inline-flex items-center justify-center gap-2 font-medium rounded-lg transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-1\",\n sizeClasses[size],\n themeClasses,\n fullWidth && \"w-full\",\n (disabled || loading) && \"opacity-60 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {loading ? (\n <>\n <span className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\" />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && (\n <span className=\"flex items-center justify-center\">{iconBefore}</span>\n )}\n <span>{children}</span>\n {iconAfter && (\n <span className=\"flex items-center justify-center\">{iconAfter}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface CheckboxGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n customIcon?: (checked: boolean) => React.ReactNode;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n customIcon,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation (space/enter toggle)\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n if (focusedIndex === null) return;\n\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n setFocusedIndex((currentIndex + 1) % options.length);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n setFocusedIndex((currentIndex - 1 + options.length) % options.length);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Custom or default icon */}\n {customIcon ? (\n customIcon(isChecked)\n ) : (\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: 4,\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ width: iconSize * 0.6, height: iconSize * 0.6 }}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n name?: string;\n options: Option[];\n selectedValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n selectedValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n const currentIndex = focusedIndex ?? options.findIndex((o) => o.value === selectedValue) ?? 0;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n onChange && onChange(options[nextIndex].value);\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n onChange && onChange(options[prevIndex].value);\n setFocusedIndex(prevIndex);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValue, onChange, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"radiogroup\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n tabIndex={0} // allow keyboard focus\n >\n {options.map((option, index) => {\n const isChecked = selectedValue === option.value;\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none gap-2\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\",\n )}\n style={{ ...labelStyle }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => onChange && onChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n <span\n className={clsx(\"inline-flex items-center justify-center rounded-full transition-all\")}\n style={{\n width: iconSize,\n height: iconSize,\n border: `2px solid ${isChecked ? iconCheckedBgColor : iconUncheckedBorderColor}`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.2s ease\",\n }}\n >\n {isChecked && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: darkMode ? \"#fff\" : \"#fff\",\n }}\n />\n )}\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface SwitchGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const SwitchGroup: React.FC<SwitchGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n switchBgColor = \"#d1d5db\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (focusedIndex === null) return;\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n setFocusedIndex(prevIndex);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Switch */}\n <span\n className={clsx(\"relative inline-flex rounded-full transition-colors\")}\n style={{\n width: iconSize * 2,\n height: iconSize * 1.1,\n backgroundColor: isChecked\n ? iconCheckedBgColor\n : switchBgColor,\n transition: \"background-color 0.25s ease\",\n borderRadius: 9999,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: isChecked\n ? `calc(100% - ${iconSize - 4}px - 2px)`\n : \"2px\",\n transform: \"translateY(-50%)\",\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.3)\",\n transition: \"left 0.25s ease\",\n }}\n />\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n size?: ContainerSize;\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n center?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nconst sizeMap: Record<ContainerSize, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n \"2xl\": \"max-w-2xl\",\n full: \"w-full\",\n};\n\nconst paddingMap: Record<NonNullable<ContainerProps[\"padding\"]>, string> = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n/**\n * 🧱 Container Component\n * Fully responsive, Tailwind-first layout wrapper\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = \"md\",\n center = true,\n className = \"\",\n children,\n}) => {\n const classes = clsx(\n \"w-full box-border\",\n sizeMap[size],\n paddingMap[padding],\n center && \"mx-auto\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\nexport default Container;","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexViewProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n margin?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const FlexView: React.FC<FlexViewProps> = ({\n direction = { sm: \"column\", md: \"row\" },\n align = \"center\",\n justify = \"between\",\n wrap = \"wrap\",\n gap,\n padding,\n margin,\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction),\n toResponsiveClass(\"items\", align),\n toResponsiveClass(\"justify\", justify),\n toResponsiveClass(\"flex\", wrap), // wrap classes: flex-wrap, flex-nowrap, flex-wrap-reverse\n gap ? toResponsiveClass(\"gap\", gap) : \"\",\n padding ? toResponsiveClass(\"p\", padding) : \"\",\n margin ? toResponsiveClass(\"m\", margin) : \"\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface StackProps {\n direction?: ResponsiveValue<\"vertical\" | \"horizontal\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n align?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Convert responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\" },\n gap = 4,\n align = \"center\",\n justify = \"start\",\n wrap = \"nowrap\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction), // flex-col or flex-row\n toResponsiveClass(\"gap\", gap),\n align !== \"stretch\" ? `items-${align}` : \"items-stretch\",\n justify !== \"start\" ? `justify-${justify}` : \"justify-start\",\n wrap !== \"nowrap\" ? `flex-${wrap}` : \"flex-nowrap\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\n/** Shortcuts for horizontal & vertical stacks */\nexport const HStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"horizontal\" {...props} />\n);\n\nexport const VStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"vertical\" {...props} />\n);","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\nexport interface GridProps {\n columns?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6>;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 4,\n padding = 4,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"grid\",\n toResponsiveClass(\"grid-cols\", columns),\n toResponsiveClass(\"gap\", gap),\n toResponsiveClass(\"p\", padding),\n alignItems !== \"stretch\" ? `items-${alignItems}` : \"items-stretch\",\n justifyItems !== \"stretch\" ? `justify-items-${justifyItems}` : \"justify-items-stretch\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","\"use client\";\nimport React, { useState, useEffect, useMemo, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\ninterface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n className = \"\",\n}) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`inline-flex items-center justify-center gap-2 px-4 py-2 rounded-md font-medium text-white bg-blue-600 hover:bg-blue-700 transition-colors focus:outline-none focus:ring-2 focus:ring-blue-400 ${className}`}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n );\n};\n\n/* ---------------- 🧱 Drawer ---------------- */\ninterface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n size?: string; // width for left/right, height for top/bottom\n className?: string;\n overlayClassName?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeButtonClassName?: string;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n size = \"320px\",\n children,\n showCloseButton = true,\n className = \"\",\n overlayClassName = \"\",\n closeButtonClassName = \"\",\n}) => {\n const [mounted, setMounted] = useState(open);\n\n useEffect(() => {\n if (open) setMounted(true);\n else setTimeout(() => setMounted(false), 300); // smooth exit\n }, [open]);\n\n const transform = useMemo(() => {\n if (open) return \"translate(0,0)\";\n switch (position) {\n case \"left\":\n return \"translateX(-100%)\";\n case \"right\":\n return \"translateX(100%)\";\n case \"top\":\n return \"translateY(-100%)\";\n case \"bottom\":\n return \"translateY(100%)\";\n default:\n return \"translate(0,0)\";\n }\n }, [open, position]);\n\n if (!mounted && !open) return null;\n\n return (\n <>\n {/* Overlay */}\n <div\n onClick={onClose}\n className={`fixed inset-0 bg-black/50 transition-opacity ${\n open ? \"opacity-100\" : \"opacity-0\"\n } ${overlayClassName}`}\n />\n\n {/* Drawer Panel */}\n <div\n className={`fixed bg-white shadow-lg flex flex-col transition-transform duration-300 ${className}`}\n style={{\n width: position === \"left\" || position === \"right\" ? size : \"100%\",\n height: position === \"top\" || position === \"bottom\" ? size : \"100%\",\n top: position === \"bottom\" || position === \"top\" ? (position === \"bottom\" ? \"auto\" : 0) : 0,\n bottom: position === \"bottom\" ? 0 : \"auto\",\n left: position === \"left\" ? 0 : position === \"right\" ? \"auto\" : 0,\n right: position === \"right\" ? 0 : position === \"left\" ? \"auto\" : 0,\n transform,\n }}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n className={`absolute top-4 right-4 p-1 rounded-full hover:bg-gray-200 transition-colors ${closeButtonClassName}`}\n aria-label=\"Close drawer\"\n >\n <X size={20} />\n </button>\n )}\n\n <div className=\"flex-1 overflow-auto p-4\">{children}</div>\n </div>\n </>\n );\n};","\"use client\";\n\nimport React, {\n useEffect,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n label?: string;\n name?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n options?: SelectOption[];\n\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n labelIcon?: React.ElementType;\n prefixIcon?: React.ElementType;\n\n variant?: \"dark\" | \"light\";\n\n /** 🔥 THEME SYSTEM */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n containerClassName?: string;\n labelClassName?: string;\n triggerClassName?: string;\n dropdownClassName?: string;\n optionClassName?: string;\n\n className?: string;\n}\n\nexport const Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (props, ref) => {\n const {\n label,\n name = \"\",\n value,\n defaultValue,\n onChange,\n options = [],\n placeholder = \"Select an option\",\n required,\n disabled,\n error,\n success,\n helperText,\n\n labelIcon: LabelIcon,\n prefixIcon: PrefixIcon,\n\n variant = \"dark\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n containerClassName = \"\",\n labelClassName = \"\",\n triggerClassName = \"\",\n dropdownClassName = \"\",\n optionClassName = \"\",\n\n className = \"\",\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => containerRef.current!);\n\n const [open, setOpen] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n\n const currentValue = value !== undefined ? value : localValue;\n const selectedOption = options.find((o) => o.value === currentValue);\n\n /** Close outside */\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const handleSelect = (option: SelectOption) => {\n setLocalValue(option.value);\n onChange?.(name, option.value);\n setOpen(false);\n };\n\n /** 🎨 Theme base */\n const theme = {\n dark: {\n bg: \"bg-zinc-900\",\n text: \"text-white\",\n border: \"border-zinc-800\",\n dropdown: \"bg-black border-zinc-800\",\n option: \"text-zinc-300 hover:bg-zinc-800\",\n },\n light: {\n bg: \"bg-white\",\n text: \"text-gray-900\",\n border: \"border-gray-300\",\n dropdown: \"bg-white border-gray-200\",\n option: \"text-gray-700 hover:bg-gray-100\",\n },\n }[variant];\n\n /** 🎨 Dynamic styles */\n const dynamicPrimary: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const dynamicBorder: CSSProperties = !primaryTheme\n ? { borderColor: primaryColor }\n : {};\n\n const dynamicBgActive: CSSProperties = !primaryTheme\n ? { backgroundColor: `${primaryColor}20` } // light tint\n : {};\n\n /** Border state */\n const borderState = error\n ? \"border-rose-500\"\n : success\n ? \"border-emerald-500\"\n : theme.border;\n\n const paddingLeft = PrefixIcon ? \"pl-12 pr-10\" : \"px-4\";\n\n return (\n <div\n ref={containerRef}\n className={`w-full space-y-1 ${containerClassName} ${className}`}\n >\n {/* Label */}\n {label && (\n <label\n className={`flex items-center gap-2 text-[13px] font-medium ${labelClassName}`}\n >\n {LabelIcon && (\n <LabelIcon\n className={\n primaryTheme ? \"w-4 h-4 text-[var(--primary)]\" : \"w-4 h-4\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-rose-500\">*</span>}\n </label>\n )}\n\n <div className=\"relative group\">\n {/* Prefix Icon */}\n {PrefixIcon && (\n <div className=\"absolute left-4 top-1/2 -translate-y-1/2 z-10\">\n <PrefixIcon\n className={\n primaryTheme\n ? \"w-4 h-4 text-zinc-500 group-focus-within:text-[var(--primary)]\"\n : \"w-4 h-4 text-zinc-500\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n </div>\n )}\n\n {/* Trigger */}\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setOpen((p) => !p)}\n style={!primaryTheme ? dynamicBorder : undefined}\n className={`\n w-full py-2.5 rounded-lg text-left text-sm\n border transition-all duration-200\n ${theme.bg} ${theme.text}\n ${paddingLeft}\n ${borderState}\n focus:ring-2\n ${\n primaryTheme\n ? \"focus:ring-[var(--primary)]/30 focus:border-[var(--primary)]\"\n : \"\"\n }\n disabled:opacity-50 disabled:cursor-not-allowed\n ${triggerClassName}\n `}\n >\n <span className={selectedOption ? theme.text : \"text-zinc-500\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n\n <ChevronDown\n className={`absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 transition-transform ${\n open ? \"rotate-180\" : \"\"\n } text-zinc-400`}\n />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div\n className={`\n absolute z-50 mt-2 w-full rounded-xl border shadow-xl overflow-hidden\n ${theme.dropdown}\n ${dropdownClassName}\n `}\n >\n <ul className=\"max-h-60 overflow-y-auto\">\n {options.map((opt) => {\n const isActive = currentValue === opt.value;\n\n return (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n style={\n !primaryTheme && isActive ? dynamicBgActive : undefined\n }\n className={`\n px-4 py-3 cursor-pointer text-sm flex items-center gap-2\n ${\n isActive\n ? primaryTheme\n ? \"bg-[var(--primary)]/15 text-[var(--primary)]\"\n : \"\"\n : theme.option\n }\n ${optionClassName}\n `}\n >\n {opt.icon && <span>{opt.icon}</span>}\n {opt.label}\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n\n {/* Helper */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-rose-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";","\"use client\";\n\nimport React, {\n forwardRef,\n useState,\n useImperativeHandle,\n useRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputFieldProps {\n label?: string;\n name?: string;\n type?: \"text\" | \"password\" | \"email\" | \"number\" | \"textarea\";\n placeholder?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n /** Icons */\n icon?: React.ElementType;\n prefix?: string;\n prefixIcon?: React.ElementType;\n suffixIcon?: React.ReactNode;\n\n /** Number props */\n min?: number;\n max?: number;\n step?: number;\n\n /** Textarea */\n rows?: number;\n\n /** 🔥 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** Styling */\n className?: string;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputFieldProps\n>((props, ref) => {\n const {\n label,\n name = \"\",\n type = \"text\",\n placeholder = \"\",\n value,\n defaultValue,\n onChange,\n required,\n disabled,\n readOnly,\n\n error,\n success,\n helperText,\n\n icon: LabelIcon,\n prefix,\n prefixIcon: PrefixIcon,\n suffixIcon,\n\n min,\n max,\n step,\n\n rows = 4,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className = \"\",\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n useImperativeHandle(ref, () => inputRef.current!);\n\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n const hasPrefixIcon = Boolean(PrefixIcon);\n const hasPrefixText = Boolean(prefix);\n const hasPrefix = hasPrefixIcon || hasPrefixText;\n\n const currentValue = value !== undefined ? value : localValue;\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const val = e.target.value;\n setLocalValue(val);\n onChange?.(name, val);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === \"number\" && e.key === \"-\") e.preventDefault();\n };\n\n /** Padding logic */\n const getPadding = () => {\n if (!hasPrefix) return \"px-4\";\n if (hasPrefixIcon && hasPrefixText) return \"pl-20 pr-4\";\n if (hasPrefixText) return \"pl-14 pr-4\";\n if (hasPrefixIcon) return \"pl-10 pr-4\";\n return \"px-4\";\n };\n\n /** 🔥 Theme Styles */\n const dynamicFocusStyle: CSSProperties = !primaryTheme\n ? {\n borderColor: primaryColor,\n boxShadow: `0 0 0 1px ${primaryColor}`,\n }\n : {};\n\n const dynamicColorStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n /** Border */\n const borderStyle = error\n ? \"border-red-500\"\n : success\n ? \"border-emerald-500\"\n : \"border-zinc-300 dark:border-zinc-800\";\n\n return (\n <div className={`w-full space-y-1 ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"flex items-center gap-2 text-[12px] font-medium text-gray-700 dark:text-zinc-100\">\n {LabelIcon && (\n <LabelIcon\n size={16}\n className={primaryTheme ? \"text-[var(--primary)]\" : \"\"}\n style={!primaryTheme ? dynamicColorStyle : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-red-500\">*</span>}\n </label>\n )}\n\n {/* Input Wrapper */}\n <div className=\"relative\">\n {/* Prefix */}\n {hasPrefix && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3 gap-2 text-sm text-zinc-400 pointer-events-none\">\n {PrefixIcon && <PrefixIcon size={14} />}\n {hasPrefixText && (\n <>\n <span className=\"font-medium text-zinc-600 dark:text-zinc-200\">\n {prefix}\n </span>\n <span className=\"h-4 w-px bg-zinc-300 dark:bg-zinc-700\" />\n </>\n )}\n </div>\n )}\n\n {/* Input / Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n min={type === \"number\" ? min ?? 0 : undefined}\n max={max}\n step={step}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n disabled:opacity-50 disabled:cursor-not-allowed\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n )}\n\n {/* Password toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\"\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Suffix */}\n {suffixIcon && type !== \"password\" && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\">\n {suffixIcon}\n </span>\n )}\n </div>\n\n {/* Helper / Error */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-red-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {error && typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n});","\"use client\";\n\nimport React, { useMemo } from \"react\";\n\ninterface ImageProps {\n src?: string;\n alt?: string;\n title?: string;\n /** Tailwind width/height classes or numbers */\n width?: string | number;\n height?: string | number;\n /** Tailwind rounded classes */\n rounded?: string;\n borderColor?: string;\n borderWidth?: string | number;\n shadow?: boolean;\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n responsive?: boolean;\n p?: string;\n m?: string;\n /** Hover Effects */\n hoverScale?: number;\n hoverRotate?: number;\n hoverOpacity?: number;\n hoverShadow?: boolean;\n transitionDuration?: string;\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Custom Tailwind classes */\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"w-full\",\n height = \"h-auto\",\n rounded = \"rounded-lg\",\n borderColor = \"transparent\",\n borderWidth = \"0\",\n shadow = false,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n p,\n m,\n hoverScale = 1.05,\n hoverRotate = 0,\n hoverOpacity,\n hoverShadow = false,\n transitionDuration = \"300ms\",\n overflow = \"hidden\",\n className = \"\",\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n /** Base Tailwind classes */\n const baseClasses = useMemo(() => {\n const classes = [\n \"relative inline-block transition-all\",\n shadow ? \"shadow-md\" : \"\",\n rounded,\n p ?? \"\",\n m ?? \"\",\n responsive ? \"w-full h-auto\" : \"\",\n className,\n ];\n return classes.join(\" \");\n }, [shadow, rounded, p, m, responsive, className]);\n\n /** Inline styles for custom widths, hover, borders, etc. */\n const inlineStyles: React.CSSProperties = useMemo(\n () => ({\n width: typeof width === \"number\" ? width : undefined,\n height: typeof height === \"number\" ? height : undefined,\n objectFit,\n opacity,\n borderColor,\n borderWidth,\n transition: `all ${transitionDuration} ease`,\n ...style,\n }),\n [width, height, objectFit, opacity, borderColor, borderWidth, transitionDuration, style]\n );\n\n /** Overflow handling */\n const overflowStyles: React.CSSProperties = useMemo(() => {\n switch (overflow) {\n case \"x\":\n return { overflowX: \"hidden\" };\n case \"y\":\n return { overflowY: \"hidden\" };\n default:\n return { overflow };\n }\n }, [overflow]);\n\n /** Hover effects */\n const handleMouseEnter = (e: React.MouseEvent<HTMLImageElement>) => {\n if (hoverOpacity !== undefined) e.currentTarget.style.opacity = hoverOpacity.toString();\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n if (hoverShadow) e.currentTarget.style.boxShadow = \"0 8px 20px rgba(0,0,0,0.3)\";\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = opacity.toString();\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n if (hoverShadow) e.currentTarget.style.boxShadow = \"\";\n };\n\n return (\n <div\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n className={baseClasses}\n style={{ position: \"relative\", cursor: onClick ? \"pointer\" : \"default\", ...overflowStyles }}\n >\n {/* SVG fallback */}\n {svgIcon ? (\n <div className=\"w-full h-full flex items-center justify-center\">{svgIcon}</div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading=\"lazy\"\n style={inlineStyles}\n className=\"block\"\n onLoad={onLoad}\n onError={onError}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n />\n )}\n\n {/* Overlay */}\n {overlayText && (\n <div\n style={{ backgroundColor: overlayColor }}\n className=\"absolute inset-0 flex items-center justify-center text-white font-bold text-center p-4\"\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};","import React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemType {\n text: string;\n icon?: ReactNode;\n onClick?: () => void;\n subItems?: ListItemType[];\n}\n\nexport interface ListProps {\n title?: string;\n titleIcon?: ReactNode;\n items: ListItemType[];\n\n type?: \"unordered\" | \"ordered\" | \"inline\";\n\n // 🔥 THEME CONTROL\n primaryTheme?: boolean; // use CSS var\n primaryColor?: string; // fallback color\n\n className?: string;\n itemClassName?: string;\n titleClassName?: string;\n bulletClassName?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\ninterface ListItemProps extends ListItemType {\n isInline?: boolean;\n isOrdered?: boolean;\n\n primaryTheme?: boolean;\n primaryColor?: string;\n\n itemClassName?: string;\n bulletClassName?: string;\n}\n\nconst ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n isInline,\n isOrdered,\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n itemClassName,\n bulletClassName,\n}) => {\n // ✅ Dynamic style for primary color\n const dynamicStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const bulletStyle: CSSProperties = !primaryTheme\n ? { backgroundColor: primaryColor }\n : {};\n\n return (\n <li className={clsx(!isInline && \"mb-3\")}>\n <div\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"flex items-center gap-2 text-sm text-zinc-800 dark:text-zinc-200 transition-all\",\n onClick &&\n (primaryTheme\n ? \"cursor-pointer hover:text-[var(--primary)]\"\n : \"cursor-pointer\"),\n itemClassName\n )}\n >\n {/* ICON */}\n {icon ? (\n <span className=\"text-base\">{icon}</span>\n ) : (\n !isInline &&\n !isOrdered && (\n <span\n style={!primaryTheme ? bulletStyle : undefined}\n className={clsx(\n \"w-2 h-2 rounded-full\",\n primaryTheme && \"bg-[var(--primary)]\",\n bulletClassName\n )}\n />\n )\n )}\n\n <span>{text}</span>\n </div>\n\n {/* Nested */}\n {subItems && subItems.length > 0 && (\n <ul\n className={clsx(\n \"pl-5 mt-2 space-y-2\",\n isOrdered ? \"list-decimal\" : \"list-none\"\n )}\n >\n {subItems.map((sub, i) => (\n <ListItem\n key={i}\n {...sub}\n isInline={false}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\n/* -------------------------------------------------------------------------- */\n/* 📋 List */\n/* -------------------------------------------------------------------------- */\n\nexport const List: React.FC<ListProps> = ({\n title,\n titleIcon,\n items,\n type = \"unordered\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className,\n itemClassName,\n titleClassName,\n bulletClassName,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div\n className={clsx(\n \"bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl p-4\",\n className\n )}\n >\n {title && (\n <div\n className={clsx(\n \"flex items-center gap-2 mb-3 text-base font-semibold text-zinc-900 dark:text-white\",\n titleClassName\n )}\n >\n {titleIcon && <span>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag\n className={clsx(\n isInline\n ? \"flex flex-wrap gap-4\"\n : isOrdered\n ? \"list-decimal pl-5 space-y-2\"\n : \"list-none p-0\"\n )}\n >\n {items.map((item, i) => (\n <ListItem\n key={i}\n {...item}\n isInline={isInline}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ListTag>\n </div>\n );\n};","import React, { ReactNode, useEffect, useRef, useCallback } from \"react\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n title?: string;\n icon?: ReactNode; // <-- Optional icon in header\n ariaLabel?: string;\n className?: string;\n overlayClassName?: string;\n contentClassName?: string;\n closeButtonClassName?: string;\n disableOverlayClose?: boolean;\n darkMode?: boolean;\n transitionDuration?: number; // in ms\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n title,\n icon,\n ariaLabel,\n className,\n overlayClassName,\n contentClassName,\n closeButtonClassName,\n disableOverlayClose = false,\n darkMode = false,\n transitionDuration = 200,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* Escape key close */\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n if (isOpen) document.addEventListener(\"keydown\", handleEsc);\n return () => document.removeEventListener(\"keydown\", handleEsc);\n }, [isOpen, onClose]);\n\n /* Scroll lock */\n useEffect(() => {\n if (isOpen) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [isOpen]);\n\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n className={clsx(\n \"fixed inset-0 flex items-center justify-center z-50 transition-opacity\",\n darkMode ? \"bg-black/80\" : \"bg-black/60\",\n overlayClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={handleOverlayClick}\n >\n <div\n ref={modalRef}\n className={clsx(\n \"relative w-[90vw] max-w-2xl max-h-[90vh] overflow-y-auto p-6 rounded-lg shadow-lg transition-transform\",\n darkMode ? \"bg-zinc-900 text-white\" : \"bg-white text-gray-900\",\n \"scale-100\",\n contentClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Close Button */}\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n className={clsx(\n \"absolute top-4 right-4 p-1 rounded-full hover:scale-110 transition-transform\",\n darkMode ? \"text-white hover:text-gray-200\" : \"text-gray-700 hover:text-gray-900\",\n closeButtonClassName\n )}\n >\n <X size={24} />\n </button>\n\n {/* Header */}\n {title && (\n <div className=\"flex items-center gap-2 mb-4\">\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\n <h2 className=\"text-xl font-semibold\">{title}</h2>\n </div>\n )}\n\n {/* Content */}\n {children}\n </div>\n </div>\n );\n};","\"use client\";\nimport React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* ---------------------------- Types ---------------------------- */\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\n/* ---------------------------- Table Container ---------------------------- */\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <div\n className={clsx(\"overflow-x-auto rounded-lg shadow-sm border border-gray-200\", className)}\n style={{\n background: \"#ffffff\",\n ...style,\n }}\n >\n <table\n className=\"w-full border-collapse\"\n style={{\n borderSpacing: 0,\n borderRadius: 12,\n overflow: \"hidden\",\n }}\n >\n {children}\n </table>\n </div>\n);\n\n/* ---------------------------- Table Head ---------------------------- */\nexport const THead: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <thead\n className={clsx(\"bg-gray-100 text-gray-900 font-semibold\", className)}\n style={{\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\n/* ---------------------------- Table Body ---------------------------- */\nexport const TBody: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tbody className={clsx(\"bg-white\", className)} style={{ ...style }}>\n {children}\n </tbody>\n);\n\n/* ---------------------------- Table Row ---------------------------- */\ninterface TRowProps extends TableSectionProps {\n onClick?: () => void;\n hoverBgColor?: string;\n darkMode?: boolean;\n}\n\nexport const TRow: React.FC<TRowProps> = ({\n children,\n style,\n className,\n onClick,\n hoverBgColor = \"#f9fafb\",\n darkMode = false,\n}) => (\n <tr\n className={clsx(\n \"transition-colors duration-200 cursor-default\",\n onClick ? \"hover:cursor-pointer\" : \"\",\n className\n )}\n style={{ borderBottom: \"1px solid #e5e7eb\", ...style }}\n onClick={onClick}\n onMouseEnter={(e) => {\n if (!darkMode) e.currentTarget.style.backgroundColor = hoverBgColor;\n else e.currentTarget.style.backgroundColor = \"#1f2937\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {children}\n </tr>\n);\n\n/* ---------------------------- Table Head Cell ---------------------------- */\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={clsx(\"text-left px-4 py-3 text-sm text-gray-700 border-b-2 border-gray-200\", className)}\n style={{ ...style }}\n >\n {children}\n </th>\n);\n\n/* ---------------------------- Table Data Cell ---------------------------- */\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={clsx(\"px-4 py-3 text-sm text-gray-600\", className)}\n style={{ ...style }}\n >\n {children}\n </td>\n);","\"use client\";\nimport React, { useState, CSSProperties, useEffect, useRef } from \"react\";\n\n/** 🧩 Types */\ninterface TabItem {\n label: React.ReactNode;\n content: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActive?: number;\n position?: \"top\" | \"left\" | \"right\";\n variant?: \"solid\" | \"outline\" | \"underline\";\n fullWidth?: boolean;\n gap?: number;\n radius?: number;\n padding?: string;\n transitionDuration?: number;\n elevation?: number;\n bordered?: boolean;\n\n /** 🎨 Colors */\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverColor?: string;\n activeColor?: string;\n borderColor?: string;\n disabledColor?: string;\n\n /** 📱 Responsive */\n responsiveBreakpoint?: number;\n showDrawerLabel?: string;\n drawerIcon?: React.ReactNode;\n\n /** ⚙️ Callbacks */\n onTabChange?: (index: number) => void;\n\n /** 🧱 Classes and Styles */\n className?: string;\n style?: CSSProperties;\n tabClassName?: string;\n contentClassName?: string;\n activeTabStyle?: CSSProperties;\n inactiveTabStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n}\n\n/** 💎 Modern, Fully Customizable Tabs */\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n gap = 8,\n radius = 8,\n padding = \"12px 18px\",\n transitionDuration = 200,\n elevation = 1,\n bordered = false,\n\n primaryColor = \"#2563eb\",\n backgroundColor = \"transparent\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n activeColor = \"#ffffff\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n\n responsiveBreakpoint = 768,\n showDrawerLabel = \"Select Tab\",\n drawerIcon = \"☰\",\n\n onTabChange,\n className = \"\",\n style,\n tabClassName = \"\",\n contentClassName = \"\",\n activeTabStyle,\n inactiveTabStyle,\n contentStyle,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [hovered, setHovered] = useState<number | null>(null);\n const [isMobile, setIsMobile] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** 📱 Responsive detection */\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth <= responsiveBreakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [responsiveBreakpoint]);\n\n /** 🎛 Handle tab change */\n const handleChange = (i: number) => {\n if (tabs[i].disabled) return;\n setActive(i);\n onTabChange?.(i);\n if (isMobile) setDrawerOpen(false);\n };\n\n /** ⚡ Keyboard navigation */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, i: number) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n handleChange((i + 1) % tabs.length);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n handleChange((i - 1 + tabs.length) % tabs.length);\n }\n };\n\n /** 🎨 Base styles */\n const baseTab: CSSProperties = {\n padding,\n borderRadius: radius,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n justifyContent: \"center\",\n fontWeight: 500,\n transition: `all ${transitionDuration}ms ease`,\n background: \"transparent\",\n border: variant === \"outline\" ? `1px solid ${borderColor}` : \"none\",\n borderBottom: variant === \"underline\" ? `2px solid transparent` : undefined,\n color: textColor,\n width: fullWidth ? \"100%\" : \"auto\",\n userSelect: \"none\",\n };\n\n const activeTab: CSSProperties = {\n background: variant === \"solid\" ? primaryColor : \"transparent\",\n color: activeColor,\n borderBottom: variant === \"underline\" ? `2px solid ${primaryColor}` : undefined,\n boxShadow:\n elevation > 0 ? `0 ${elevation}px ${elevation * 4}px ${primaryColor}33` : undefined,\n ...activeTabStyle,\n };\n\n const inactiveTab: CSSProperties = {\n ...(variant === \"outline\" ? { borderColor } : {}),\n ...(variant === \"underline\" ? { borderBottomColor: \"transparent\" } : {}),\n ...inactiveTabStyle,\n };\n\n const hoverTab: CSSProperties = {\n color: hoverColor,\n background:\n variant === \"solid\"\n ? `${primaryColor}11`\n : variant === \"outline\"\n ? `${primaryColor}11`\n : \"transparent\",\n };\n\n const disabledTab: CSSProperties = {\n color: disabledColor,\n cursor: \"not-allowed\",\n opacity: 0.6,\n };\n\n const contentBox: CSSProperties = {\n flexGrow: 1,\n borderTop: bordered && position === \"top\" ? `1px solid ${borderColor}` : undefined,\n borderLeft: bordered && position === \"left\" ? `1px solid ${borderColor}` : undefined,\n borderRight: bordered && position === \"right\" ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n ...contentStyle,\n };\n\n /** 🧱 Layout */\n const isVertical = position === \"left\" || position === \"right\";\n\n return (\n <div\n ref={containerRef}\n className={`modern-tabs ${className}`}\n style={{\n display: \"flex\",\n flexDirection: isVertical ? (position === \"right\" ? \"row-reverse\" : \"row\") : \"column\",\n background: backgroundColor,\n border: bordered ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>\n {`\n @keyframes tab-fade {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .modern-tabs__content {\n animation: tab-fade ${transitionDuration}ms ease;\n }\n `}\n </style>\n\n {/* 📱 Mobile Drawer */}\n {isMobile ? (\n <div style={{ width: \"100%\", padding: 8 }}>\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n style={{\n ...baseTab,\n ...activeTab,\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: 16,\n }}\n >\n {showDrawerLabel}\n <span>{drawerIcon}</span>\n </button>\n {drawerOpen && (\n <div style={{ display: \"flex\", flexDirection: \"column\", marginTop: 8, gap }}>\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap,\n padding: 8,\n minWidth: isVertical ? 200 : undefined,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n role=\"tab\"\n aria-selected={isActive}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n\n {/* 🧠 Tab Content */}\n <div\n className={`modern-tabs__content ${contentClassName}`}\n style={contentBox}\n role=\"tabpanel\"\n >\n {tabs[active]?.content}\n </div>\n </div>\n );\n};","\"use client\";\n\nimport React from \"react\";\nimport clsx from \"clsx\";\n\ntype HTMLElementTag = keyof HTMLElementTagNameMap;\n\ntype TextProps<T extends HTMLElementTag = \"p\"> = {\n as?: T;\n children: React.ReactNode;\n\n /** Minimal styling */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | string;\n weight?: React.CSSProperties[\"fontWeight\"];\n align?: React.CSSProperties[\"textAlign\"];\n\n truncate?: boolean;\n\n className?: string;\n style?: React.CSSProperties;\n} & Omit<\n React.HTMLAttributes<HTMLElementTagNameMap[T]>,\n \"style\"\n>;\n\nconst sizeClasses: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n};\n\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n size = \"md\",\n weight = 400,\n align = \"left\",\n truncate = false,\n className,\n style,\n ...rest\n}: TextProps<T>) {\n const Element = (as || \"p\") as T;\n\n return React.createElement(\n Element,\n {\n className: clsx(\n \"text-inherit\", // ✅ inherits parent color\n sizeClasses[size] || \"\",\n truncate && \"truncate\",\n className\n ),\n style: {\n fontWeight: weight,\n textAlign: align,\n ...style,\n },\n ...rest,\n },\n children\n );\n}\n\nexport default Text;"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ChevronDown","ChevronUp","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","ToastContext","createContext","useToast","context","useContext","ToastProvider","toasts","setToasts","useState","removeToast","useCallback","id","prev","t","addToast","toast","jsx","ToastItem","typeStyles","CheckCircle","AlertCircle","AlertTriangle","onClose","title","description","bg","border","icon","jsxs","Accordion","memo","items","allowMultiple","defaultOpen","borderColor","backgroundColor","textColor","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","borderRadius","contentPadding","fontSize","fontWeight","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","shadow","style","openIndexes","setOpenIndexes","contentRefs","useRef","useEffect","el","toggleItem","i","toCssValue","item","isOpen","e","sizeMap","fontSizeMap","dimensionMap","variantMap","statusPositionMap","Avatar","src","alt","variant","isOnline","isOffline","fallback","ring","ringColor","onClick","statusPosition","statusClassName","statusStyle","imageError","setImageError","clickable","initials","n","statusColor","dimensionPx","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","padding","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","duration","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","percent","skip","seconds","toggleFullscreen","formatTime","time","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","maxWidth","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","r","f","clsx","Badge","text","iconPosition","primaryTheme","rounded","notificationDot","dotColor","count","pulse","sizes","themeClasses","dynamicStyle","Button","iconBefore","iconAfter","loading","loadingText","fullWidth","disabled","sizeClasses","Fragment","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","darkMode","containerRef","focusedIndex","setFocusedIndex","handleChange","updatedValues","v","container","handleKeyDown","currentIndex","option","isChecked","isFocused","RadioGroup","selectedValue","o","SwitchGroup","switchBgColor","paddingMap","Container","center","toResponsiveClass","prefix","bp","val","FlexView","direction","align","justify","wrap","gap","margin","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","DrawerButton","label","Drawer","open","position","showCloseButton","overlayClassName","closeButtonClassName","mounted","setMounted","transform","useMemo","Dropdown","defaultValue","placeholder","success","helperText","LabelIcon","PrefixIcon","containerClassName","labelClassName","triggerClassName","dropdownClassName","optionClassName","useImperativeHandle","setOpen","localValue","setLocalValue","currentValue","selectedOption","handler","handleSelect","theme","dynamicPrimary","dynamicBorder","dynamicBgActive","borderState","paddingLeft","p","opt","Input","suffixIcon","min","max","step","rows","inputRef","visible","setVisible","hasPrefixIcon","hasPrefixText","hasPrefix","getPadding","dynamicFocusStyle","dynamicColorStyle","borderStyle","Image","height","borderWidth","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","m","hoverScale","hoverRotate","hoverOpacity","hoverShadow","overflow","onLoad","onError","baseClasses","inlineStyles","overflowStyles","handleMouseEnter","handleMouseLeave","ListItem","subItems","isInline","isOrdered","itemClassName","bulletClassName","bulletStyle","sub","List","titleIcon","titleClassName","ListTag","Modal","ariaLabel","contentClassName","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","radius","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","activeTabStyle","inactiveTabStyle","contentStyle","active","setActive","hovered","setHovered","isMobile","setIsMobile","drawerOpen","setDrawerOpen","check","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isHovered","isDisabled","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]}