@neuctra/ui 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/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","../src/components/basic/Badge.tsx","../src/components/basic/Button.tsx","../src/components/basic/Card.tsx","../src/components/basic/CheckboxGroup.tsx","../src/components/basic/RadioGroup.tsx","../src/components/basic/SwitchGroup.tsx","../src/components/basic/Container.tsx","../src/components/basic/Flexbox.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 = [\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","import React, { useEffect, useState, useMemo } from \"react\";\nimport {\n X,\n Info,\n CheckCircle,\n AlertCircle,\n AlertTriangle,\n} from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\ntype AlertPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport interface AlertProps {\n title?: string;\n description?: string;\n type?: AlertType;\n dismissible?: boolean;\n duration?: number;\n onClose?: () => void;\n\n /** Customization */\n icon?: React.ReactNode;\n actionButton?: React.ReactNode;\n position?: AlertPosition;\n backgroundColor?: string;\n borderColor?: string;\n textColor?: string;\n borderRadius?: string | number;\n shadow?: string;\n padding?: string | number;\n fontSize?: string | number;\n fontWeight?: number | string;\n descriptionColor?: string;\n animationDuration?: string;\n maxWidth?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst typeStyles: Record<AlertType, any> = {\n success: {\n bg: \"#ecfdf5\",\n border: \"#34d399\",\n iconColor: \"#059669\",\n Icon: <CheckCircle size={20} />,\n },\n error: {\n bg: \"#fef2f2\",\n border: \"#f87171\",\n iconColor: \"#dc2626\",\n Icon: <AlertCircle size={20} />,\n },\n warning: {\n bg: \"#fffbeb\",\n border: \"#facc15\",\n iconColor: \"#d97706\",\n Icon: <AlertTriangle size={20} />,\n },\n info: {\n bg: \"#eff6ff\",\n border: \"#3b82f6\",\n iconColor: \"#2563eb\",\n Icon: <Info size={20} />,\n },\n};\n\nconst getPositionStyle = (position: AlertPosition): React.CSSProperties => {\n const base: React.CSSProperties = {\n position: \"fixed\",\n zIndex: 9999,\n pointerEvents: \"auto\",\n };\n\n switch (position) {\n case \"top-left\":\n return { ...base, top: \"1.25rem\", left: \"1.25rem\" };\n case \"top-center\":\n return { ...base, top: \"1.25rem\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"top-right\":\n return { ...base, top: \"1.25rem\", right: \"1.25rem\" };\n case \"bottom-left\":\n return { ...base, bottom: \"1.25rem\", left: \"1.25rem\" };\n case \"bottom-center\":\n return { ...base, bottom: \"1.25rem\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"bottom-right\":\n default:\n return { ...base, bottom: \"1.25rem\", right: \"1.25rem\" };\n }\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n title,\n description,\n type = \"info\",\n dismissible = true,\n duration,\n onClose,\n icon,\n actionButton,\n position = \"top-right\",\n backgroundColor,\n borderColor,\n textColor = \"#111827\",\n borderRadius = \"0.75rem\",\n shadow = \"0 4px 14px rgba(0,0,0,0.1)\",\n padding = \"1rem\",\n fontSize = \"0.95rem\",\n fontWeight = 500,\n descriptionColor = \"#374151\",\n animationDuration = \"300ms\",\n maxWidth = \"480px\",\n className = \"\",\n style,\n}) => {\n const [visible, setVisible] = useState(false);\n const [exiting, setExiting] = useState(false);\n\n useEffect(() => {\n setVisible(true);\n\n if (duration) {\n const timer = setTimeout(() => {\n setExiting(true);\n setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, parseInt(animationDuration));\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose, animationDuration]);\n\n const { bg, border, iconColor, Icon } = typeStyles[type];\n const positionStyle = getPositionStyle(position);\n\n const containerStyle: React.CSSProperties = useMemo(\n () => ({\n ...positionStyle,\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.75rem\",\n backgroundColor: backgroundColor ?? bg,\n borderLeft: `4px solid ${borderColor ?? border}`,\n borderRadius,\n color: textColor,\n boxShadow: shadow,\n padding,\n maxWidth,\n width: \"calc(100% - 2.5rem)\",\n opacity: visible && !exiting ? 1 : 0,\n transform: visible && !exiting\n ? \"translateY(0)\"\n : position.includes(\"bottom\")\n ? \"translateY(20px)\"\n : \"translateY(-20px)\",\n transition: `opacity ${animationDuration} ease, transform ${animationDuration} ease`,\n fontWeight,\n fontSize,\n ...style,\n }),\n [\n visible,\n exiting,\n bg,\n border,\n borderColor,\n borderRadius,\n position,\n shadow,\n padding,\n textColor,\n maxWidth,\n backgroundColor,\n animationDuration,\n style,\n fontSize,\n fontWeight,\n ]\n );\n\n if (!visible) return null;\n\n return (\n <>\n <style>\n {`\n @keyframes alert-slide-in-top {\n from { opacity: 0; transform: translateY(-20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n @keyframes alert-slide-in-bottom {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n `}\n </style>\n <div\n className={className}\n style={{\n ...containerStyle,\n animation: `${position.includes(\"bottom\") ? \"alert-slide-in-bottom\" : \"alert-slide-in-top\"} ${animationDuration} ease`,\n }}\n role=\"alert\"\n >\n <div style={{ color: iconColor, marginTop: \"2px\" }}>{icon || Icon}</div>\n\n <div style={{ flex: 1, minWidth: 0 }}>\n {title && (\n <div style={{ fontWeight: 600, fontSize, marginBottom: \"4px\" }}>\n {title}\n </div>\n )}\n {description && (\n <div style={{ fontSize: \"0.875rem\", color: descriptionColor, lineHeight: 1.4 }}>\n {description}\n </div>\n )}\n {actionButton && <div style={{ marginTop: \"8px\" }}>{actionButton}</div>}\n </div>\n\n {dismissible && (\n <button\n onClick={() => {\n setExiting(true);\n setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, parseInt(animationDuration));\n }}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: \"#6b7280\",\n cursor: \"pointer\",\n marginLeft: \"8px\",\n padding: 0,\n lineHeight: 0,\n }}\n aria-label=\"Close alert\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n </>\n );\n};\n\nAlert.displayName = \"Alert\";\n","import React, { useState, useRef, useEffect, memo } from \"react\";\n\nexport interface AccordionItem {\n title: string;\n content: React.ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n\n /** Allow multiple open items */\n allowMultiple?: boolean;\n\n /** Default open indexes */\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 customization */\n iconOpen?: React.ReactNode;\n iconClose?: React.ReactNode;\n iconSize?: string | number;\n\n /** Motion & style */\n transitionDuration?: string;\n shadow?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * 🧠 Industry-standard, minimal, and fully customizable Accordion\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 = \"#f9fafb\",\n hoverTextColor = \"#111827\",\n contentBgColor = \"#fff\",\n contentTextColor = \"#374151\",\n paddingY = \"1rem\",\n paddingX = \"1rem\",\n marginY = \"0.75rem\",\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 return (\n <div className={className} style={{ width: \"100%\", ...style }}>\n {items.map((item, index) => {\n const isOpen = openIndexes.includes(index);\n\n return (\n <div\n key={index}\n style={{\n border: `1px solid ${borderColor}`,\n borderRadius,\n margin: `${marginY} 0`,\n boxShadow: shadow,\n overflow: \"hidden\",\n transition: `all ${transitionDuration} ease`,\n }}\n >\n {/* Header Button */}\n <button\n onClick={() => toggleItem(index)}\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n backgroundColor,\n color: textColor,\n padding: `${paddingY} ${paddingX}`,\n fontWeight,\n fontSize,\n cursor: \"pointer\",\n border: \"none\",\n outline: \"none\",\n transition: `all ${transitionDuration}`,\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: iconSize }}>\n {isOpen ? iconOpen : iconClose}\n </span>\n </button>\n\n {/* Content */}\n <div\n ref={(el) => {\n contentRefs.current[index] = el;\n }}\n style={{\n overflow: \"hidden\",\n maxHeight: isOpen\n ? `${contentRefs.current[index]?.scrollHeight}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: contentPadding,\n fontSize: 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","import React, { useState } from \"react\";\nimport { User } from \"lucide-react\";\n\ntype AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"responsive\";\ntype AvatarVariant = \"circular\" | \"rounded\" | \"square\";\n\ninterface AvatarProps {\n src?: string;\n alt?: string;\n size?: AvatarSize;\n variant?: AvatarVariant;\n isOnline?: boolean;\n isOffline?: boolean;\n className?: string;\n style?: React.CSSProperties;\n statusClassName?: string;\n statusStyle?: React.CSSProperties;\n statusPosition?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n fallback?: string;\n ring?: boolean;\n ringColor?: string;\n onClick?: () => void;\n}\n\ninterface AvatarGroupProps {\n avatars: AvatarProps[];\n max?: number;\n size?: AvatarSize;\n className?: string;\n style?: React.CSSProperties;\n spacing?: \"tight\" | \"normal\" | \"loose\";\n direction?: \"left\" | \"right\";\n}\n\n// --- Base maps ---\nconst sizeMap = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 64,\n} as const;\n\nconst fontSizeMap = {\n xs: 10,\n sm: 12,\n md: 14,\n lg: 16,\n xl: 18,\n \"2xl\": 20,\n} as const;\n\nconst statusSizeMap = {\n xs: 6,\n sm: 8,\n md: 10,\n lg: 12,\n xl: 14,\n \"2xl\": 16,\n} as const;\n\n// --- Helpers ---\nconst getVariantStyles = (variant: AvatarVariant): string => {\n switch (variant) {\n case \"square\":\n return \"0px\";\n case \"rounded\":\n return \"8px\";\n default:\n return \"50%\";\n }\n};\n\nconst getStatusPositionStyle = (\n position: AvatarProps[\"statusPosition\"],\n offset: number\n): React.CSSProperties => {\n switch (position) {\n case \"top-left\":\n return { top: 2, left: 2 };\n case \"top-right\":\n return { top: 2, right: 2 };\n case \"bottom-left\":\n return { bottom: 2, left: 2 };\n default:\n return { bottom: 2, right: 2 };\n }\n};\n\nconst getSpacingOffset = (spacing: AvatarGroupProps[\"spacing\"], dim: number) => {\n switch (spacing) {\n case \"tight\":\n return -(dim * 0.5);\n case \"loose\":\n return -(dim * 0.15);\n default:\n return -(dim * 0.35);\n }\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 className = \"\",\n style,\n statusClassName = \"\",\n statusStyle,\n statusPosition = \"bottom-right\",\n fallback,\n ring = false,\n ringColor = \"#3b82f6\",\n onClick,\n}) => {\n const [imageError, setImageError] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const isResponsive = size === \"responsive\";\n const dimension = !isResponsive ? sizeMap[size as Exclude<AvatarSize, \"responsive\">] : undefined;\n const fontSize = !isResponsive ? fontSizeMap[size as Exclude<AvatarSize, \"responsive\">] : \"clamp(10px, 2vw, 16px)\";\n const statusSize = !isResponsive ? statusSizeMap[size as Exclude<AvatarSize, \"responsive\">] : 10;\n const borderRadius = getVariantStyles(variant);\n\n const initials = fallback || alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const statusColor = isOnline ? \"#10b981\" : isOffline ? \"#6b7280\" : \"\";\n const statusLabel = isOnline ? \"Online\" : isOffline ? \"Offline\" : \"\";\n\n const showImage = src && !imageError;\n const clickable = !!onClick;\n\n return (\n <div\n className={className}\n role={clickable ? \"button\" : \"img\"}\n tabIndex={clickable ? 0 : -1}\n aria-label={alt}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onKeyDown={(e) => {\n if (clickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n }}\n style={{\n position: \"relative\",\n width: isResponsive ? \"100%\" : dimension,\n height: isResponsive ? \"100%\" : dimension,\n borderRadius,\n overflow: \"visible\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n cursor: clickable ? \"pointer\" : \"default\",\n transition: \"all 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",\n transform: isHovered && clickable ? \"scale(1.05)\" : \"scale(1)\",\n boxShadow: ring\n ? `0 0 0 3px ${ringColor}22, 0 0 0 1px ${ringColor}`\n : isHovered && clickable\n ? \"0 6px 16px rgba(0, 0, 0, 0.15)\"\n : \"0 1px 3px rgba(0, 0, 0, 0.1)\",\n ...style,\n }}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n loading=\"lazy\"\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius,\n transition: \"opacity 0.3s ease-in-out\",\n }}\n />\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n color: \"#fff\",\n fontSize,\n fontWeight: 600,\n borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {initials || <User size={dimension ? dimension * 0.5 : 20} />}\n </div>\n )}\n\n {(isOnline || isOffline) && (\n <div\n className={statusClassName}\n aria-label={statusLabel}\n title={statusLabel}\n style={{\n position: \"absolute\",\n width: statusSize,\n height: statusSize,\n borderRadius: \"50%\",\n backgroundColor: statusColor,\n border: \"2px solid white\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.12)\",\n ...getStatusPositionStyle(statusPosition, statusSize),\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};\n\n// --- AvatarGroup Component ---\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n avatars,\n max = 4,\n size = \"md\",\n className = \"\",\n style,\n spacing = \"normal\",\n direction = \"left\",\n}) => {\n const isResponsive = size === \"responsive\";\n const dimension = !isResponsive ? sizeMap[size as Exclude<AvatarSize, \"responsive\">] : 40;\n const fontSize = !isResponsive ? fontSizeMap[size as Exclude<AvatarSize, \"responsive\">] : \"clamp(10px, 2vw, 14px)\";\n const spacingOffset = getSpacingOffset(spacing, dimension);\n const visibleAvatars = avatars.slice(0, max);\n const extraCount = avatars.length - max;\n\n return (\n <div\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: direction === \"right\" ? \"row-reverse\" : \"row\",\n flexWrap: \"wrap\",\n ...style,\n }}\n role=\"group\"\n aria-label={`Avatar group with ${avatars.length} members`}\n >\n {visibleAvatars.map((avatar, i) => {\n const isFirst = direction === \"left\" ? i === 0 : i === visibleAvatars.length - 1;\n const zIndex = direction === \"left\" ? visibleAvatars.length - i : i + 1;\n\n return (\n <div\n key={i}\n style={{\n marginLeft: direction === \"left\" && !isFirst ? spacingOffset : 0,\n marginRight: direction === \"right\" && !isFirst ? spacingOffset : 0,\n zIndex,\n position: \"relative\",\n transition: \"transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = `translateY(-3px) scale(1.05)`;\n e.currentTarget.style.zIndex = \"100\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = \"translateY(0) scale(1)\";\n e.currentTarget.style.zIndex = zIndex.toString();\n }}\n >\n <Avatar {...avatar} size={size} />\n </div>\n );\n })}\n\n {extraCount > 0 && (\n <div\n style={{\n marginLeft: direction === \"left\" ? spacingOffset : 0,\n marginRight: direction === \"right\" ? spacingOffset : 0,\n width: dimension,\n height: dimension,\n borderRadius: \"50%\",\n background: \"linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%)\",\n color: \"#374151\",\n fontSize,\n fontWeight: 600,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"3px solid white\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.15)\",\n userSelect: \"none\",\n }}\n title={`${extraCount} more members`}\n >\n +{extraCount}\n </div>\n )}\n </div>\n );\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} 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 = \"#000000\",\n primaryColor = \"#10b981\",\n secondaryColor = \"#ffffff\",\n borderRadius = \"12px\",\n padding = \"16px\",\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.5);\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 || !e.currentTarget) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n const time = percent * duration;\n audioRef.current.currentTime = time;\n setCurrentTime(time);\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 position: \"relative\",\n width,\n backgroundColor,\n borderRadius,\n color: secondaryColor,\n boxShadow: \"0 4px 12px rgba(0,0,0,0.3)\",\n overflow: \"hidden\",\n padding,\n boxSizing: \"border-box\",\n maxWidth: \"100%\",\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 && (\n <img\n src={thumbnail}\n alt=\"Audio Thumbnail\"\n style={{\n width: \"100%\",\n objectFit: \"cover\",\n borderRadius,\n marginBottom: \"16px\",\n maxHeight: \"150px\",\n }}\n />\n )}\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"10px\",\n flexShrink: 0,\n marginTop: \"10px\",\n }}\n >\n <button onClick={() => skip(-10)} aria-label=\"Skip Back 10s\">\n <SkipBack size={20} />\n </button>\n <button\n onClick={togglePlayPause}\n style={{\n background: primaryColor,\n borderRadius: \"9999px\",\n padding: \"10px\",\n color: \"#fff\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={20} /> : <Play size={20} />}\n </button>\n <button onClick={() => skip(10)} aria-label=\"Skip Forward 10s\">\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Time & Seek */}\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"12px\",\n width: \"100%\",\n }}\n >\n {/* Time Info */}\n <div style={{ flexShrink: 0, minWidth: \"60px\", textAlign: \"center\" }}>\n <span style={{ fontSize: \"14px\", marginRight: \"4px\" }}>\n {formatTime(currentTime)}\n </span>\n <span style={{ fontSize: \"14px\", color: \"#aaa\" }}>\n / {formatTime(duration)}\n </span>\n </div>\n\n {/* Seek Bar */}\n <div\n onClick={handleSeek}\n style={{\n flex: 1,\n height: \"8px\",\n background: \"#444\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n position: \"relative\",\n minWidth: \"100px\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"4px\",\n }}\n />\n </div>\n\n {/* Extra Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n flexShrink: 0,\n }}\n >\n <button\n onClick={() => setIsLooping(!isLooping)}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={18} color={isLooping ? primaryColor : undefined} />\n </button>\n <button\n onClick={() => setVolume(volume > 0 ? 0 : 0.5)}\n aria-label=\"Toggle Mute\"\n >\n {volume > 0 ? <Volume2 size={18} /> : <VolumeX size={18} />}\n </button>\n <button onClick={toggleFullscreen} aria-label=\"Toggle Fullscreen\">\n {isFullscreen ? <Minimize size={18} /> : <Maximize size={18} />}\n </button>\n </div>\n </div>\n </div>\n );\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","import React, { CSSProperties, ReactNode, memo } from \"react\";\n\nexport interface BadgeProps {\n text?: string;\n color?: string; // background\n textColor?: string;\n borderColor?: string;\n borderWidth?: string;\n\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n\n rounded?: boolean;\n borderRadius?: string;\n\n fontSize?: string;\n fontWeight?: number | string;\n\n horizontalPadding?: string;\n verticalPadding?: string;\n margin?: string;\n shadow?: string;\n\n notificationDot?: boolean;\n dotColor?: string;\n count?: number | string;\n pulse?: boolean;\n\n style?: CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nexport const Badge: React.FC<BadgeProps> = memo(\n ({\n text,\n color = \"#2563eb\",\n textColor = \"#fff\",\n borderColor = \"#2563eb\",\n borderWidth = \"0\",\n\n icon,\n iconPosition = \"left\",\n\n rounded = false,\n borderRadius,\n fontSize = \"13px\",\n fontWeight = 500,\n horizontalPadding = \"10px\",\n verticalPadding = \"4px\",\n margin = \"0\",\n shadow = \"0 1px 3px rgba(0,0,0,0.1)\",\n\n notificationDot = false,\n dotColor = \"#ef4444\",\n count,\n pulse = false,\n\n style,\n className = \"\",\n onClick,\n }) => {\n const baseStyle: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: color,\n color: textColor,\n border: `${borderWidth} solid ${borderColor}`,\n borderRadius: borderRadius || (rounded ? \"9999px\" : \"6px\"),\n padding: `${verticalPadding} ${horizontalPadding}`,\n fontSize,\n fontWeight,\n margin,\n boxShadow: shadow,\n position: \"relative\",\n cursor: onClick ? \"pointer\" : \"default\",\n userSelect: \"none\",\n lineHeight: 1,\n transition: \"all 0.2s ease\",\n ...style,\n };\n\n const dotStyle: CSSProperties = {\n position: \"absolute\",\n top: \"-4px\",\n right: \"-4px\",\n height: \"8px\",\n width: \"8px\",\n backgroundColor: dotColor,\n borderRadius: \"50%\",\n animation: pulse ? \"pulseAnim 1.2s infinite\" : undefined,\n };\n\n const countStyle: CSSProperties = {\n position: \"absolute\",\n top: \"-8px\",\n right: \"-8px\",\n backgroundColor: dotColor,\n color: \"#fff\",\n borderRadius: \"50%\",\n minWidth: \"18px\",\n height: \"18px\",\n fontSize: \"11px\",\n padding: \"0 5px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 1,\n };\n\n const iconStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n margin:\n icon && text\n ? iconPosition === \"left\"\n ? \"0 6px 0 0\"\n : \"0 0 0 6px\"\n : 0,\n };\n\n return (\n <span style={baseStyle} className={className} onClick={onClick}>\n {/* Dot */}\n {notificationDot && <span style={dotStyle} />}\n\n {/* Count */}\n {typeof count !== \"undefined\" && <span style={countStyle}>{count}</span>}\n\n {/* Icon Left */}\n {icon && iconPosition === \"left\" && <span style={iconStyle}>{icon}</span>}\n\n {/* Text */}\n {text && <span>{text}</span>}\n\n {/* Icon Right */}\n {icon && iconPosition === \"right\" && <span style={iconStyle}>{icon}</span>}\n\n {/* Pulse Animation */}\n <style>\n {`\n @keyframes pulseAnim {\n 0% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.5); opacity: 0.5; }\n 100% { transform: scale(1); opacity: 1; }\n }\n `}\n </style>\n </span>\n );\n }\n);\n","\"use client\";\nimport React, { useMemo, useState, CSSProperties, FC } from \"react\";\n\n/** 🌈 Default color palette */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n border: \"#d1d5db\",\n hover: \"#1d4ed8\",\n text: \"#ffffff\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n border: \"#374151\",\n hover: \"#3b82f6\",\n text: \"#000000\",\n },\n};\n\n/** 🎨 Adjust color shade utility */\nfunction adjustColor(color: string, amount: number): string {\n if (!color.startsWith(\"#\") || color.length !== 7) return color;\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/** ⚙️ Props */\nexport interface ButtonProps {\n children: React.ReactNode;\n type?: \"button\" | \"submit\" | \"reset\";\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n iconBefore?: React.ReactNode;\n iconAfter?: React.ReactNode;\n className?: string;\n style?: CSSProperties;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n\n /** 🎨 Theme options */\n darkMode?: boolean;\n baseColor?: string;\n\n /** 🧩 Optional design tweaks */\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: boolean;\n\n /** 🧱 Border visibility */\n showBorder?: boolean; // ✅ new prop\n}\n\n/** 💎 Minimal customizable Button */\nexport const Button: FC<ButtonProps> = ({\n children,\n type = \"button\",\n onClick,\n iconBefore,\n iconAfter,\n className = \"\",\n style,\n fullWidth = false,\n disabled = false,\n loading = false,\n loadingText = \"Loading...\",\n darkMode = false,\n baseColor,\n size = \"md\",\n rounded = true,\n showBorder = false, // ✅ default: no border\n}) => {\n const [hovered, setHovered] = useState(false);\n\n /** 🧠 Theme system */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const light = {\n primary: baseColor,\n hover: adjustColor(baseColor, -40),\n text: \"#ffffff\",\n border: adjustColor(baseColor, -60),\n };\n const dark = {\n primary: adjustColor(baseColor, 60),\n hover: adjustColor(baseColor, 80),\n text: \"#000000\",\n border: adjustColor(baseColor, 40),\n };\n return darkMode ? dark : light;\n }, [baseColor, darkMode]);\n\n /** 📏 Sizes */\n const sizes: Record<\n NonNullable<ButtonProps[\"size\"]>,\n { px: number; py: number; font: string }\n > = {\n sm: { px: 16, py: 6, font: \"0.85rem\" },\n md: { px: 24, py: 10, font: \"1rem\" },\n lg: { px: 32, py: 14, font: \"1.125rem\" },\n };\n\n const s = sizes[size];\n\n /** 💅 Computed styles */\n const buttonStyle: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"8px\",\n padding: `${s.py}px ${s.px}px`,\n fontSize: s.font,\n fontWeight: 500,\n borderRadius: rounded ? 8 : 3,\n border: showBorder ? `1px solid ${theme.border}` : \"none\", // ✅ conditional border\n width: fullWidth ? \"100%\" : \"auto\",\n backgroundColor: hovered && !disabled ? theme.hover : theme.primary,\n color: theme.text,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n transition: \"all 0.25s ease-in-out\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.15)\",\n ...style,\n };\n\n return (\n <button\n type={type}\n className={className}\n style={buttonStyle}\n onClick={!disabled && !loading ? onClick : undefined}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n disabled={disabled}\n >\n {loading ? (\n <>\n <span\n style={{\n width: \"16px\",\n height: \"16px\",\n border: \"2px solid currentColor\",\n borderTopColor: \"transparent\",\n borderRadius: \"50%\",\n animation: \"spin 1s linear infinite\",\n }}\n />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && <span>{iconBefore}</span>}\n <span>{children}</span>\n {iconAfter && <span>{iconAfter}</span>}\n </>\n )}\n\n {/* Spinner animation */}\n <style>\n {`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}\n </style>\n </button>\n );\n};\n\nexport default Button;\n","import React, {\n CSSProperties,\n ReactNode,\n ElementType,\n forwardRef,\n ForwardedRef,\n ReactElement,\n ComponentPropsWithoutRef,\n} from \"react\";\n\n// Allow any string for variant to support fully custom variants\ntype CardVariant = string;\n\ntype CardOwnProps = {\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n variant?: CardVariant;\n background?: string;\n textColor?: string;\n borderRadius?: string | number;\n border?: string;\n boxShadow?: string;\n hoverShadow?: string;\n padding?: string | number;\n margin?: string | number;\n width?: string | number;\n height?: string | number;\n style?: CSSProperties;\n hoverStyle?: CSSProperties;\n onClick?: () => void;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps &\n Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps>;\n\nconst CardInner = <T extends ElementType = \"div\">(\n {\n as,\n children,\n className = \"\",\n variant = \"elevated\",\n background = \"#fff\",\n textColor = \"#000\",\n borderRadius = 12,\n border,\n boxShadow,\n hoverShadow,\n padding = 16,\n margin,\n width,\n height,\n style = {},\n hoverStyle = {},\n onClick,\n ...rest\n }: CardProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) => {\n const Component = as || \"div\";\n\n // Default styling for known variants; unknown variants can be customized\n const baseVariantStyles: Record<string, CSSProperties> = {\n elevated: {\n boxShadow: boxShadow || \"0 4px 12px rgba(0,0,0,0.08)\",\n border: border || \"none\",\n },\n outline: {\n border: border || \"1px solid rgba(0,0,0,0.1)\",\n boxShadow: \"none\",\n },\n flat: {\n border: \"none\",\n boxShadow: \"none\",\n },\n };\n\n const cardStyle: CSSProperties = {\n background,\n color: textColor,\n borderRadius,\n padding,\n margin,\n width,\n height,\n transition: \"all 0.25s ease\",\n cursor: onClick ? \"pointer\" : undefined,\n boxSizing: \"border-box\",\n ...(baseVariantStyles[variant] || {}), // fallback if variant is custom\n ...style,\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLElement>) => {\n Object.assign(\n e.currentTarget.style,\n hoverShadow ? { boxShadow: hoverShadow } : hoverStyle\n );\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n Object.assign(e.currentTarget.style, {\n ...cardStyle,\n ...(baseVariantStyles[variant] || {}),\n });\n };\n\n return (\n <Component\n ref={ref}\n className={`ui-card ${className}`}\n style={cardStyle}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\nconst ForwardedCard = forwardRef(CardInner) as <T extends ElementType = \"div\">(\n props: CardProps<T> & { ref?: ForwardedRef<HTMLDivElement> }\n) => ReactElement;\n\nconst Card = Object.assign(ForwardedCard, { displayName: \"Card\" });\n\nexport { Card };\n","\"use client\";\nimport React from \"react\";\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}\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}) => {\n const handleChange = (value: string) => {\n if (!onChange) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"group\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\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 {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 {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};\n","\"use client\";\nimport React from \"react\";\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}\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}) => {\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"radiogroup\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValue === option.value;\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\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 <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: \"50%\",\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 <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: \"white\",\n }}\n />\n )}\n </span>\n </label>\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};\n","\"use client\";\nimport React from \"react\";\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}\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}) => {\n const handleChange = (value: string) => {\n if (!onChange) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"group\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\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 <span\n style={{\n position: \"relative\",\n width: iconSize * 2,\n height: iconSize * 1.1,\n borderRadius: 9999,\n backgroundColor: isChecked ? iconCheckedBgColor : switchBgColor,\n transition: \"background-color 0.25s ease\",\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 {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};\n","import React, { useMemo } from \"react\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n /** Predefined max-width based on common breakpoints */\n size?: ContainerSize;\n\n /** Padding (accepts number in px or CSS string, e.g., '2rem') */\n padding?: number | string;\n\n /** Margin (accepts number in px or CSS string, e.g., 'auto' or '16px 8px') */\n margin?: number | string;\n\n /** Background color (any valid CSS color) */\n backgroundColor?: string;\n\n /** Center the container horizontally (adds `margin: 0 auto`) */\n center?: boolean;\n\n /** Custom width override (defaults to container max width) */\n width?: string;\n\n /** Optional height */\n height?: string;\n\n /** Border radius (accepts number in px or CSS string) */\n borderRadius?: number | string;\n\n /** Additional inline styles */\n style?: React.CSSProperties;\n\n /** Tailwind or custom class names */\n className?: string;\n\n /** Container content */\n children: React.ReactNode;\n}\n\n/** Tailwind-like container widths */\nconst containerWidths: Record<ContainerSize, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n full: \"100%\",\n};\n\n/**\n * 🧱 Container Component\n * A flexible, responsive layout wrapper inspired by Tailwind's container.\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = 0,\n margin = \"0 auto\",\n backgroundColor = \"transparent\",\n center = true,\n width,\n height = \"auto\",\n borderRadius = 0,\n style,\n className = \"\",\n children,\n}) => {\n const styles = useMemo<React.CSSProperties>(() => {\n const computedPadding =\n typeof padding === \"number\" ? `${padding}px` : padding;\n\n const computedMargin =\n center && margin === \"0 auto\" ? \"0 auto\" : margin;\n\n const computedBorderRadius =\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius;\n\n return {\n maxWidth: width ?? containerWidths[size],\n margin: computedMargin,\n padding: computedPadding,\n backgroundColor,\n height,\n borderRadius: computedBorderRadius,\n boxSizing: \"border-box\",\n width: width ?? \"100%\",\n ...style,\n };\n }, [\n size,\n padding,\n margin,\n backgroundColor,\n width,\n height,\n borderRadius,\n center,\n style,\n ]);\n\n return (\n <div className={className} style={styles}>\n {children}\n </div>\n );\n};\n\nexport default Container;\n","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexboxProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\n \"flex-start\" | \"flex-end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"\n >;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<number | string>;\n padding?: ResponsiveValue<number | string>;\n margin?: ResponsiveValue<number | string>;\n backgroundColor?: ResponsiveValue<string>;\n width?: ResponsiveValue<string>;\n maxWidth?: ResponsiveValue<string>;\n height?: ResponsiveValue<string>;\n borderRadius?: ResponsiveValue<string>;\n border?: ResponsiveValue<string>;\n boxShadow?: ResponsiveValue<string>;\n overflow?: ResponsiveValue<\"visible\" | \"hidden\" | \"auto\" | \"scroll\">;\n children: React.ReactNode;\n style?: React.CSSProperties;\n className?: string; // for Tailwind or other classes\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nconst resolveResponsive = <T,>(\n prop: ResponsiveValue<T> | undefined,\n screen: ScreenSize,\n fallback?: T\n): T | undefined => {\n if (prop == null) return fallback;\n if (typeof prop !== \"object\") return prop;\n return (prop as Partial<Record<ScreenSize, T>>)[screen] ?? fallback;\n};\n\nexport const Flexbox: React.FC<FlexboxProps> = ({\n direction = { sm: \"column\", md: \"row\", lg: \"row\" },\n align = \"center\",\n justify = \"space-between\",\n wrap = \"wrap\",\n gap = 16,\n padding,\n margin,\n backgroundColor = \"transparent\",\n width = \"100%\",\n maxWidth = \"100%\",\n height = \"auto\",\n borderRadius,\n border,\n boxShadow,\n overflow,\n children,\n style,\n className,\n}) => {\n const [screen, setScreen] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n const updateScreen = () => setScreen(getScreenSize(window.innerWidth));\n updateScreen();\n window.addEventListener(\"resize\", updateScreen);\n return () => window.removeEventListener(\"resize\", updateScreen);\n }, []);\n\n const computedStyle = useMemo<React.CSSProperties>(() => {\n const toCssValue = (val?: string | number) =>\n typeof val === \"number\" ? `${val}px` : val;\n\n return {\n display: \"flex\",\n flexDirection: resolveResponsive(direction, screen, \"row\"),\n alignItems: resolveResponsive(align, screen, \"center\"),\n justifyContent: resolveResponsive(justify, screen, \"flex-start\"),\n flexWrap: resolveResponsive(wrap, screen, \"wrap\"),\n gap: toCssValue(resolveResponsive(gap, screen, undefined)),\n padding: toCssValue(resolveResponsive(padding, screen, undefined)),\n margin: toCssValue(resolveResponsive(margin, screen, undefined)),\n backgroundColor: resolveResponsive(backgroundColor, screen, undefined),\n width: resolveResponsive(width, screen, \"100%\"),\n maxWidth: resolveResponsive(maxWidth, screen, undefined),\n height: resolveResponsive(height, screen, undefined),\n borderRadius: resolveResponsive(borderRadius, screen, undefined),\n border: resolveResponsive(border, screen, undefined),\n boxShadow: resolveResponsive(boxShadow, screen, undefined),\n overflow: resolveResponsive(overflow, screen, undefined),\n boxSizing: \"border-box\",\n ...style,\n };\n }, [\n direction,\n align,\n justify,\n wrap,\n gap,\n padding,\n margin,\n backgroundColor,\n width,\n maxWidth,\n height,\n borderRadius,\n border,\n boxShadow,\n overflow,\n screen,\n style,\n ]);\n\n return (\n <div className={className} style={computedStyle}>\n {children}\n </div>\n );\n};\n","import React, { useState, useEffect, useMemo } from \"react\";\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<number | string>;\n align?: ResponsiveValue<\"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\n \"flex-start\" | \"flex-end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"\n >;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n padding?: ResponsiveValue<number | string>;\n margin?: ResponsiveValue<number | string>;\n width?: ResponsiveValue<string>;\n maxWidth?: ResponsiveValue<string>;\n height?: ResponsiveValue<string>;\n backgroundColor?: ResponsiveValue<string>;\n borderRadius?: ResponsiveValue<string>;\n border?: ResponsiveValue<string>;\n boxShadow?: ResponsiveValue<string>;\n overflow?: ResponsiveValue<\"visible\" | \"hidden\" | \"auto\" | \"scroll\">;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nconst resolveResponsive = <T,>(\n prop: ResponsiveValue<T> | undefined,\n screen: ScreenSize,\n fallback?: T\n): T | undefined => {\n if (prop == null) return fallback;\n if (typeof prop !== \"object\") return prop;\n return (prop as Partial<Record<ScreenSize, T>>)[screen] ?? fallback;\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\", lg: \"horizontal\" },\n gap = 12,\n align = \"center\",\n justify = \"flex-start\",\n wrap = \"nowrap\",\n padding,\n margin,\n width = \"100%\",\n maxWidth,\n height = \"auto\",\n backgroundColor = \"transparent\",\n borderRadius,\n border,\n boxShadow,\n overflow,\n className,\n style,\n children,\n}) => {\n const [screen, setScreen] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n const updateScreen = () => setScreen(getScreenSize(window.innerWidth));\n updateScreen();\n window.addEventListener(\"resize\", updateScreen);\n return () => window.removeEventListener(\"resize\", updateScreen);\n }, []);\n\n const computedStyle = useMemo<React.CSSProperties>(() => {\n const toCssValue = (val?: string | number) =>\n typeof val === \"number\" ? `${val}px` : val;\n\n const resolvedDir = resolveResponsive(direction, screen, \"vertical\");\n const flexDir = resolvedDir === \"vertical\" ? \"column\" : \"row\";\n\n return {\n display: \"flex\",\n flexDirection: flexDir,\n alignItems: resolveResponsive(align, screen, \"center\"),\n justifyContent: resolveResponsive(justify, screen, \"flex-start\"),\n flexWrap: resolveResponsive(wrap, screen, \"nowrap\"),\n gap: toCssValue(resolveResponsive(gap, screen, 12)),\n padding: toCssValue(resolveResponsive(padding, screen, undefined)),\n margin: toCssValue(resolveResponsive(margin, screen, undefined)),\n width: resolveResponsive(width, screen, \"100%\"),\n maxWidth: resolveResponsive(maxWidth, screen, undefined),\n height: resolveResponsive(height, screen, undefined),\n backgroundColor: resolveResponsive(backgroundColor, screen, undefined),\n borderRadius: resolveResponsive(borderRadius, screen, undefined),\n border: resolveResponsive(border, screen, undefined),\n boxShadow: resolveResponsive(boxShadow, screen, undefined),\n overflow: resolveResponsive(overflow, screen, undefined),\n boxSizing: \"border-box\",\n ...style,\n };\n }, [\n direction,\n gap,\n align,\n justify,\n wrap,\n padding,\n margin,\n width,\n maxWidth,\n height,\n backgroundColor,\n borderRadius,\n border,\n boxShadow,\n overflow,\n style,\n screen,\n ]);\n\n return (\n <div className={className} style={computedStyle}>\n {children}\n </div>\n );\n};\n\n\n\nexport const HStack: React.FC<StackProps> = (props) => {\n return <Stack direction=\"horizontal\" {...props} />;\n};\n\nexport const VStack: React.FC<StackProps> = (props) => {\n return <Stack direction=\"vertical\" {...props} />;\n};","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface GridProps {\n columns?: number | Partial<Record<ScreenSize, number>>; // responsive column config\n gap?: number | string; // grid gap\n padding?: number | string;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n backgroundColor?: string;\n width?: string;\n maxWidth?: string;\n height?: string;\n margin?: number | string;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 16,\n padding = 0,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n backgroundColor = \"transparent\",\n width = \"100%\",\n maxWidth = \"100%\",\n height = \"auto\",\n margin = 0,\n style,\n className = \"\",\n children,\n}) => {\n const [screenSize, setScreenSize] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n setScreenSize(getScreenSize(window.innerWidth));\n const onResize = () => setScreenSize(getScreenSize(window.innerWidth));\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, []);\n\n const resolvedColumns = useMemo(() => {\n if (typeof columns === \"number\") return columns;\n return columns[screenSize] ?? 1;\n }, [columns, screenSize]);\n\n const styles: React.CSSProperties = useMemo(\n () => ({\n display: \"grid\",\n gridTemplateColumns: `repeat(${resolvedColumns}, 1fr)`,\n gap: typeof gap === \"number\" ? `${gap}px` : gap,\n padding: typeof padding === \"number\" ? `${padding}px` : padding,\n margin: typeof margin === \"number\" ? `${margin}px` : margin,\n alignItems,\n justifyItems,\n backgroundColor,\n width,\n maxWidth,\n height,\n boxSizing: \"border-box\",\n ...style,\n }),\n [\n resolvedColumns,\n gap,\n padding,\n margin,\n alignItems,\n justifyItems,\n backgroundColor,\n width,\n maxWidth,\n height,\n style,\n ]\n );\n\n return (\n <div style={styles} className={className}>\n {children}\n </div>\n );\n};\n","import React, { useState, useEffect, useMemo, CSSProperties, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\n\nexport interface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n color?: string;\n textColor?: string;\n borderRadius?: string;\n padding?: string;\n fontSize?: string;\n gap?: string;\n style?: CSSProperties;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n color = \"#2563eb\",\n textColor = \"#fff\",\n borderRadius = \"6px\",\n padding = \"10px 16px\",\n fontSize = \"14px\",\n gap = \"8px\",\n style,\n className = \"\",\n}) => (\n <button\n onClick={onClick}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: color,\n color: textColor,\n border: \"none\",\n borderRadius,\n padding,\n fontSize,\n gap,\n cursor: \"pointer\",\n fontWeight: 500,\n transition: \"all 0.2s ease\",\n boxShadow: \"0 1px 3px rgba(0,0,0,0.1)\",\n ...style,\n }}\n className={className}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n);\n\n/* ---------------- 🧱 Drawer ---------------- */\n\nexport interface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n width?: string;\n height?: string;\n backgroundColor?: string;\n backdropColor?: string;\n transitionDuration?: number;\n style?: CSSProperties;\n className?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeIconColor?: string;\n closeButtonStyle?: CSSProperties;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n width = \"320px\",\n height = \"320px\",\n backgroundColor = \"#fff\",\n backdropColor = \"rgba(0,0,0,0.5)\",\n transitionDuration = 300,\n style,\n className = \"\",\n children,\n showCloseButton = true,\n closeIconColor = \"#000\",\n closeButtonStyle,\n}) => {\n const [visible, setVisible] = useState(open);\n\n // Handle mount/unmount delay for smooth fade-out\n useEffect(() => {\n if (open) setVisible(true);\n else setTimeout(() => setVisible(false), transitionDuration);\n }, [open, transitionDuration]);\n\n // Drawer transform direction\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 const drawerStyle: CSSProperties = {\n position: \"fixed\",\n backgroundColor,\n transition: `transform ${transitionDuration}ms ease, opacity ${transitionDuration}ms ease`,\n transform,\n opacity: open ? 1 : 0,\n zIndex: 1001,\n ...style,\n ...(position === \"left\" || position === \"right\"\n ? { top: 0, bottom: 0, [position]: 0, width, height: \"100%\" }\n : { left: 0, right: 0, [position]: 0, height, width: \"100%\" }),\n };\n\n const overlayStyle: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: backdropColor,\n opacity: open ? 1 : 0,\n transition: `opacity ${transitionDuration}ms ease`,\n zIndex: 1000,\n display: visible ? \"block\" : \"none\",\n pointerEvents: open ? \"auto\" : \"none\",\n };\n\n const defaultCloseButtonStyle: CSSProperties = {\n position: \"absolute\",\n top: \"12px\",\n right: \"12px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"transform 0.2s ease, opacity 0.2s ease\",\n };\n\n return (\n <>\n {/* Overlay */}\n <div style={overlayStyle} onClick={onClose} />\n\n {/* Drawer Panel */}\n <div\n style={{\n ...drawerStyle,\n display: \"flex\",\n flexDirection: \"column\",\n visibility: visible ? \"visible\" : \"hidden\",\n pointerEvents: open ? \"auto\" : \"none\",\n boxShadow: \"0 0 20px rgba(0,0,0,0.15)\",\n }}\n className={className}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n style={{ ...defaultCloseButtonStyle, ...closeButtonStyle }}\n aria-label=\"Close drawer\"\n >\n <X size={22} color={closeIconColor} />\n </button>\n )}\n\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: \"16px\",\n scrollbarWidth: \"thin\",\n }}\n >\n {children}\n </div>\n </div>\n </>\n );\n};\n","\"use client\";\nimport React, {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n forwardRef,\n ForwardRefRenderFunction,\n} from \"react\";\n\n/* ----------------------\n * Types\n * ---------------------*/\nexport interface Option {\n label: string;\n value: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n description?: string;\n}\n\nexport interface DropdownProps {\n options: Option[];\n\n value?: string;\n values?: string[];\n defaultValue?: string;\n defaultValues?: string[];\n\n onChange?: (value: string | string[]) => void;\n\n placeholder?: string;\n disabled?: boolean;\n searchable?: boolean;\n multiSelect?: boolean;\n clearable?: boolean;\n virtualized?: boolean;\n\n width?: string | number;\n dropdownMaxHeight?: string;\n borderRadius?: string;\n boxShadow?: string;\n borderColor?: string;\n accentColor?: string; // ✅ accent color (focus ring + selected)\n theme?: \"light\" | \"dark\" | \"custom\"; // ✅ global theme\n menuBg?: string; // ✅ background override\n controlBg?: string; // ✅ control background\n textColor?: string;\n hoverBg?: string;\n selectedBg?: string;\n disabledBg?: string;\n disabledTextColor?: string;\n placeholderColor?: string;\n\n // animation & transitions\n transitionDuration?: string;\n\n // class/style hooks\n className?: string;\n controlClassName?: string;\n menuClassName?: string;\n optionClassName?: string;\n style?: React.CSSProperties;\n controlStyle?: React.CSSProperties;\n menuStyle?: React.CSSProperties;\n optionStyle?: React.CSSProperties;\n\n // icons\n iconPrefix?: React.ReactNode;\n iconSuffix?: React.ReactNode;\n clearIcon?: React.ReactNode;\n dropdownIcon?: React.ReactNode;\n checkIcon?: React.ReactNode;\n}\n\n/* ----------------------\n * Default theme tokens\n * ---------------------*/\nconst THEMES = {\n light: {\n controlBg: \"#ffffff\",\n menuBg: \"#ffffff\",\n textColor: \"#111827\",\n placeholderColor: \"#6b7280\",\n hoverBg: \"#f9fafb\",\n selectedBg: \"#eff6ff\",\n disabledBg: \"#f3f4f6\",\n disabledTextColor: \"#9ca3af\",\n borderColor: \"#e5e7eb\",\n accentColor: \"#3b82f6\",\n },\n dark: {\n controlBg: \"#1f2937\",\n menuBg: \"#111827\",\n textColor: \"#f9fafb\",\n placeholderColor: \"#9ca3af\",\n hoverBg: \"#374151\",\n selectedBg: \"#2563eb33\",\n disabledBg: \"#374151\",\n disabledTextColor: \"#6b7280\",\n borderColor: \"#374151\",\n accentColor: \"#60a5fa\",\n },\n custom: {} as any,\n};\n\n/* ----------------------\n * Component\n * ---------------------*/\nconst DropdownInner: ForwardRefRenderFunction<HTMLDivElement, DropdownProps> = (\n props,\n ref\n) => {\n const id = useId();\n const {\n options,\n value,\n values,\n defaultValue,\n defaultValues,\n onChange,\n\n placeholder = \"Select...\",\n disabled = false,\n searchable = false,\n multiSelect = false,\n clearable = false,\n virtualized = false,\n\n width = \"100%\",\n dropdownMaxHeight = \"320px\",\n borderRadius = \"8px\",\n boxShadow = \"0 8px 28px rgba(0,0,0,0.1)\",\n borderColor,\n accentColor,\n theme = \"light\",\n menuBg,\n controlBg,\n textColor,\n hoverBg,\n selectedBg,\n disabledBg,\n disabledTextColor,\n placeholderColor,\n transitionDuration = \"180ms\",\n\n className,\n controlClassName,\n menuClassName,\n optionClassName,\n style,\n controlStyle,\n menuStyle,\n optionStyle,\n\n iconPrefix,\n iconSuffix,\n clearIcon = \"×\",\n dropdownIcon = \"▾\",\n checkIcon = \"✓\",\n } = props;\n\n // merge theme colors\n const themeVars = {\n ...THEMES[theme],\n ...(theme === \"custom\" ? {} : {}),\n };\n const colors = {\n borderColor: borderColor ?? themeVars.borderColor,\n accentColor: accentColor ?? themeVars.accentColor,\n controlBg: controlBg ?? themeVars.controlBg,\n menuBg: menuBg ?? themeVars.menuBg,\n textColor: textColor ?? themeVars.textColor,\n hoverBg: hoverBg ?? themeVars.hoverBg,\n selectedBg: selectedBg ?? themeVars.selectedBg,\n disabledBg: disabledBg ?? themeVars.disabledBg,\n disabledTextColor: disabledTextColor ?? themeVars.disabledTextColor,\n placeholderColor: placeholderColor ?? themeVars.placeholderColor,\n };\n\n /* ----------------- State ----------------- */\n const [isOpen, setIsOpen] = useState(false);\n const [selected, setSelected] = useState<string[]>(\n defaultValues ?? (defaultValue ? [defaultValue] : [])\n );\n\n useEffect(() => {\n if (value) setSelected([value]);\n if (values) setSelected(values);\n }, [value, values]);\n\n const selectedOptions = useMemo(\n () => options.filter((o) => selected.includes(o.value)),\n [options, selected]\n );\n\n const toggle = () => !disabled && setIsOpen((s) => !s);\n\n const selectValue = (val: string) => {\n if (multiSelect) {\n const exists = selected.includes(val);\n const next = exists\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n setSelected(next);\n onChange?.(next);\n } else {\n setSelected([val]);\n onChange?.(val);\n setIsOpen(false);\n }\n };\n\n const clearSelection = (e?: React.MouseEvent) => {\n e?.stopPropagation();\n setSelected([]);\n onChange?.(multiSelect ? [] : \"\");\n };\n\n /* ----------------- Render ----------------- */\n return (\n <div\n ref={ref}\n className={className}\n style={{\n position: \"relative\",\n width,\n fontFamily:\n \"Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial\",\n ...style,\n }}\n >\n {/* Control */}\n <div\n className={controlClassName}\n role=\"button\"\n tabIndex={0}\n onClick={toggle}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n background: colors.controlBg,\n color: colors.textColor,\n padding: \"0.5rem 0.75rem\",\n border: `1px solid ${\n isOpen ? colors.accentColor : colors.borderColor\n }`,\n borderRadius,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n boxShadow: isOpen ? `0 0 0 3px ${colors.accentColor}33` : undefined,\n transition: `all ${transitionDuration} ease`,\n ...controlStyle,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n {iconPrefix}\n {selectedOptions.length ? (\n <span>{selectedOptions.map((s) => s.label).join(\", \")}</span>\n ) : (\n <span style={{ color: colors.placeholderColor }}>\n {placeholder}\n </span>\n )}\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n {clearable && selected.length > 0 && (\n <button\n onClick={clearSelection}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: colors.textColor,\n cursor: \"pointer\",\n }}\n >\n {clearIcon}\n </button>\n )}\n {iconSuffix}\n <div\n style={{\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: `transform ${transitionDuration}`,\n }}\n >\n {dropdownIcon}\n </div>\n </div>\n </div>\n\n {/* Menu */}\n {isOpen && (\n <ul\n className={menuClassName}\n style={{\n position: \"absolute\",\n zIndex: 100,\n top: \"calc(100% + 4px)\",\n left: 0,\n right: 0,\n background: colors.menuBg,\n border: `1px solid ${colors.borderColor}`,\n borderRadius,\n boxShadow,\n maxHeight: dropdownMaxHeight,\n overflowY: \"auto\",\n transition: `opacity ${transitionDuration} ease`,\n ...menuStyle,\n }}\n >\n {options.map((opt) => {\n const isSelected = selected.includes(opt.value);\n return (\n <li\n key={opt.value}\n onClick={() => !opt.disabled && selectValue(opt.value)}\n className={optionClassName}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"0.5rem 0.75rem\",\n background: opt.disabled\n ? colors.disabledBg\n : isSelected\n ? colors.selectedBg\n : \"transparent\",\n color: opt.disabled\n ? colors.disabledTextColor\n : colors.textColor,\n cursor: opt.disabled ? \"not-allowed\" : \"pointer\",\n borderRadius: 6,\n userSelect: \"none\",\n ...optionStyle,\n }}\n onMouseEnter={(e) => {\n if (!opt.disabled && !isSelected)\n e.currentTarget.style.backgroundColor = colors.hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!opt.disabled && !isSelected)\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {multiSelect && (\n <span style={{ width: 18, textAlign: \"center\" }}>\n {isSelected ? checkIcon : \"○\"}\n </span>\n )}\n {opt.icon && <span>{opt.icon}</span>}\n <div style={{ flex: 1 }}>\n {opt.label}\n {opt.description && (\n <div\n style={{\n fontSize: 12,\n color: colors.placeholderColor,\n marginTop: 2,\n }}\n >\n {opt.description}\n </div>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n};\n\nexport const Dropdown = forwardRef(DropdownInner);\nexport default Dropdown;\n","\"use client\";\nimport React, {\n useState,\n useRef,\n useImperativeHandle,\n forwardRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputProps {\n type?:\n | \"text\"\n | \"password\"\n | \"email\"\n | \"number\"\n | \"search\"\n | \"tel\"\n | \"url\"\n | \"textarea\";\n label?: string;\n placeholder?: string;\n name?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n success?: boolean;\n autoFocus?: boolean;\n\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n\n /** 🎨 Full Customization Options */\n labelColor?: string;\n placeholderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n borderColor?: string;\n hoverBorderColor?: string;\n focusBorderColor?: string;\n errorColor?: string;\n successColor?: string;\n iconColor?: string;\n shadow?: string;\n\n /** 🧩 Layout + Style Customization */\n fontSize?: string;\n fontFamily?: string;\n radius?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n rows?: number;\n cols?: number;\n maxLength?: number;\n resize?: boolean;\n showCharacterCount?: boolean;\n paddingX?: string;\n paddingY?: string;\n\n /** 🧱 External customization */\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputProps\n>((props, ref) => {\n const {\n type = \"text\",\n label,\n placeholder = \"\",\n name = \"\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n success = false,\n autoFocus = false,\n\n iconLeft,\n iconRight,\n\n /** 🎨 Styling props */\n labelColor = \"#374151\",\n placeholderColor = \"#9ca3af\",\n backgroundColor = \"#ffffff\",\n textColor = \"#111827\",\n borderColor = \"#d1d5db\",\n hoverBorderColor = \"#9ca3af\",\n focusBorderColor = \"#2563eb\",\n errorColor = \"#dc2626\",\n successColor = \"#16a34a\",\n iconColor = \"#6b7280\",\n shadow = \"0 1px 2px rgba(0,0,0,0.05)\",\n\n /** 📏 Layout + size */\n size = \"md\",\n fontSize = \"14px\",\n fontFamily = \"Inter, system-ui, sans-serif\",\n radius = \"8px\",\n rows = 4,\n cols,\n maxLength,\n resize = true,\n showCharacterCount = true,\n paddingX,\n paddingY,\n\n className,\n style,\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n /** ✅ Make it controlled properly */\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const newValue = e.target.value;\n if (maxLength && newValue.length > maxLength) return;\n setLocalValue(newValue);\n if (onChange) onChange(name, newValue);\n };\n\n const currentValue = value !== undefined ? value : localValue;\n\n /** 🎯 Dynamic border colors */\n const currentBorderColor = error\n ? errorColor\n : success\n ? successColor\n : borderColor;\n\n /** 🧠 Size tokens */\n const sizes = {\n sm: { paddingY: \"6px\", paddingX: \"10px\", font: \"13px\" },\n md: { paddingY: \"10px\", paddingX: \"14px\", font: \"14px\" },\n lg: { paddingY: \"14px\", paddingX: \"18px\", font: \"16px\" },\n }[size];\n\n const px = paddingX || sizes.paddingX;\n const py = paddingY || sizes.paddingY;\n\n /** 💅 Base input styles */\n const baseInputStyle: CSSProperties = {\n width: \"100%\",\n border: `1px solid ${currentBorderColor}`,\n borderRadius: radius,\n backgroundColor,\n color: textColor,\n fontFamily,\n fontSize,\n padding: `${py} ${px}`,\n paddingLeft: iconLeft ? \"40px\" : px,\n paddingRight:\n iconRight || type === \"password\" ? \"40px\" : px,\n outline: \"none\",\n transition: \"border-color 0.25s ease, box-shadow 0.25s ease\",\n resize: type === \"textarea\" && !resize ? \"none\" : undefined,\n boxShadow: shadow,\n ...style,\n };\n\n /** 🧠 Placeholder dynamic color */\n const dynamicPlaceholder = {\n \"::placeholder\": {\n color: placeholderColor,\n opacity: 1,\n },\n } as any;\n\n /** 🎨 Dynamic border behavior */\n const applyDynamicBorder = (\n el: HTMLInputElement | HTMLTextAreaElement,\n color: string\n ) => {\n if (el) el.style.borderColor = color;\n };\n\n const commonEvents = {\n onFocus: (e: any) => applyDynamicBorder(e.currentTarget, focusBorderColor),\n onBlur: (e: any) => applyDynamicBorder(e.currentTarget, currentBorderColor),\n onMouseEnter: (e: any) =>\n applyDynamicBorder(e.currentTarget, hoverBorderColor),\n onMouseLeave: (e: any) =>\n applyDynamicBorder(e.currentTarget, currentBorderColor),\n };\n\n return (\n <div\n className={className}\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n fontFamily,\n }}\n >\n {/* Label */}\n {label && (\n <label\n htmlFor={name}\n style={{\n marginBottom: 6,\n color: labelColor,\n fontWeight: 500,\n fontSize: \"14px\",\n }}\n >\n {label}\n {required && <span style={{ color: errorColor }}> *</span>}\n </label>\n )}\n\n <div style={{ position: \"relative\", width: \"100%\" }}>\n {/* Left icon */}\n {iconLeft && (\n <span\n style={{\n position: \"absolute\",\n left: 12,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: iconColor,\n pointerEvents: \"none\",\n }}\n >\n {iconLeft}\n </span>\n )}\n\n {/* Input or Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n cols={cols}\n maxLength={maxLength}\n autoFocus={autoFocus}\n style={{ ...baseInputStyle, ...dynamicPlaceholder }}\n onChange={handleChange}\n {...commonEvents}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n id={name}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n style={{ ...baseInputStyle, ...dynamicPlaceholder }}\n onChange={handleChange}\n {...commonEvents}\n />\n )}\n\n {/* Password visibility toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n style={{\n position: \"absolute\",\n right: 10,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: iconColor,\n padding: 0,\n }}\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Right icon */}\n {iconRight && type !== \"password\" && (\n <span\n style={{\n position: \"absolute\",\n right: 12,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: iconColor,\n pointerEvents: \"none\",\n }}\n >\n {iconRight}\n </span>\n )}\n </div>\n\n {/* Character counter */}\n {type === \"textarea\" && showCharacterCount && maxLength && (\n <div\n style={{\n textAlign: \"right\",\n fontSize: \"12px\",\n color: \"#6b7280\",\n marginTop: 4,\n }}\n >\n {currentValue.length}/{maxLength}\n </div>\n )}\n\n {/* Error text */}\n {error && (\n <div\n style={{\n color: errorColor,\n fontSize: \"12px\",\n marginTop: 4,\n }}\n >\n {error}\n </div>\n )}\n </div>\n );\n});\n","import React, { useMemo, useCallback } from \"react\";\n\ninterface ImageProps {\n /** Image source URL */\n src?: string;\n /** Alternative text (for SEO + accessibility) */\n alt?: string;\n /** Optional title attribute (SEO hint tooltip) */\n title?: string;\n /** Custom width and height */\n width?: string | number;\n height?: string | number;\n /** Border customization */\n borderRadius?: string | number;\n borderColor?: string;\n borderStyle?: \"solid\" | \"dashed\" | \"dotted\" | \"double\" | \"none\";\n borderWidth?: string | number;\n /** Shadow customization */\n shadow?: boolean;\n boxShadow?: string;\n /** Opacity and fit options */\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n /** Overlay and icon layers */\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n /** Layout and responsiveness */\n responsive?: boolean;\n padding?: string | number;\n margin?: string | number;\n /** Performance */\n lazyLoad?: boolean;\n /** Hover interactivity */\n hoverOpacity?: number;\n hoverShadow?: boolean;\n hoverScale?: number;\n hoverRotate?: number;\n transitionDuration?: string;\n /** Overflow handling */\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Class and style overrides */\n className?: string;\n style?: React.CSSProperties;\n /** Event handlers */\n onClick?: (event: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\n/**\n * ✅ Industry-Standard Image Component\n * - SEO & accessibility optimized\n * - Lazy loading & responsive\n * - Fully customizable styling\n * - Smooth hover transitions\n * - Overlay and SVG support\n */\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"100%\",\n height = \"auto\",\n borderRadius = \"8px\",\n borderColor = \"transparent\",\n borderStyle = \"solid\",\n borderWidth = \"0px\",\n shadow = false,\n boxShadow,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n padding,\n margin,\n lazyLoad = true,\n hoverOpacity,\n hoverShadow = false,\n hoverScale = 1,\n hoverRotate = 0,\n transitionDuration = \"0.3s\",\n overflow = \"hidden\",\n className,\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n // ✅ Memoized base style for performance\n const baseStyle = useMemo<React.CSSProperties>(\n () => ({\n width: responsive ? \"100%\" : width,\n height: responsive ? \"auto\" : height,\n borderRadius,\n border: `${borderWidth} ${borderStyle} ${borderColor}`,\n objectFit,\n opacity,\n boxShadow: shadow\n ? boxShadow || \"0 4px 12px rgba(0,0,0,0.15)\"\n : \"none\",\n transition: `all ${transitionDuration} ease`,\n display: \"block\",\n }),\n [\n responsive,\n width,\n height,\n borderRadius,\n borderColor,\n borderStyle,\n borderWidth,\n objectFit,\n opacity,\n shadow,\n boxShadow,\n transitionDuration,\n ]\n );\n\n // ✅ Hover effects\n const handleMouseEnter = useCallback(\n (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity =\n hoverOpacity !== undefined ? hoverOpacity.toString() : \"1\";\n e.currentTarget.style.boxShadow = hoverShadow\n ? \"0 8px 20px rgba(0,0,0,0.3)\"\n : baseStyle.boxShadow || \"none\";\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n },\n [hoverOpacity, hoverShadow, hoverScale, hoverRotate, baseStyle.boxShadow]\n );\n\n const handleMouseLeave = useCallback((e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = baseStyle.opacity?.toString() || \"1\";\n e.currentTarget.style.boxShadow = baseStyle.boxShadow || \"none\";\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n }, [baseStyle]);\n\n // ✅ Overflow control\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 return (\n <div\n className={className}\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n style={{\n width: responsive ? \"100%\" : width,\n height: responsive ? \"auto\" : height,\n padding,\n margin,\n position: \"relative\",\n cursor: onClick ? \"pointer\" : \"default\",\n display: \"inline-block\",\n transition: `all ${transitionDuration} ease`,\n ...overflowStyles,\n ...style,\n }}\n >\n {/* 🖼 SVG or Image */}\n {svgIcon ? (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {svgIcon}\n </div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading={lazyLoad ? \"lazy\" : \"eager\"}\n style={baseStyle}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onLoad={onLoad}\n onError={onError}\n decoding=\"async\"\n fetchPriority=\"high\"\n />\n )}\n\n {/* 🩶 Optional Overlay Text */}\n {overlayText && (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n backgroundColor: overlayColor,\n color: \"#fff\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontWeight: \"bold\",\n fontSize: \"1.1rem\",\n textAlign: \"center\",\n padding: \"1rem\",\n boxSizing: \"border-box\",\n }}\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};\n","import React, { CSSProperties, ReactNode } from \"react\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Interfaces */\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 bulletColor?: string;\n textColor?: string;\n backgroundColor?: string;\n borderColor?: string;\n\n fontSize?: string;\n fontWeight?: string | number;\n borderRadius?: string;\n padding?: string;\n spacing?: string;\n\n className?: string;\n style?: CSSProperties;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemProps extends ListItemType {\n bulletColor?: string;\n textColor?: string;\n fontSize?: string;\n fontWeight?: string | number;\n spacing?: string;\n isInline?: boolean;\n}\n\nexport const ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n bulletColor = \"#2563eb\",\n textColor = \"#111827\",\n fontSize = \"15px\",\n fontWeight = 500,\n spacing = \"12px\",\n isInline = false,\n}) => {\n const itemContainerStyle: CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n marginBottom: isInline ? \"0\" : spacing,\n };\n\n const contentStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n fontSize,\n fontWeight,\n color: textColor,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n };\n\n const bulletStyle: CSSProperties = {\n width: \"8px\",\n height: \"8px\",\n backgroundColor: bulletColor,\n borderRadius: \"50%\",\n flexShrink: 0,\n };\n\n const subListStyle: CSSProperties = {\n listStyleType: \"disc\",\n paddingLeft: \"20px\",\n margin: 0,\n };\n\n return (\n <li style={itemContainerStyle}>\n <div\n style={contentStyle}\n onClick={onClick}\n onMouseEnter={(e) => (e.currentTarget.style.color = bulletColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = textColor)}\n >\n {icon ? (\n <span style={{ fontSize: \"16px\", color: textColor }}>{icon}</span>\n ) : (\n !isInline && <span style={bulletStyle}></span>\n )}\n <span>{text}</span>\n </div>\n\n {subItems && subItems.length > 0 && (\n <ul style={subListStyle}>\n {subItems.map((sub, index) => (\n <ListItem\n key={index}\n {...sub}\n bulletColor={bulletColor}\n textColor={textColor}\n fontSize={fontSize}\n fontWeight={fontWeight}\n spacing={spacing}\n isInline={false}\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 bulletColor = \"#2563eb\",\n textColor = \"#111827\",\n backgroundColor = \"#fff\",\n borderColor = \"#e5e7eb\",\n\n fontSize = \"15px\",\n fontWeight = 500,\n borderRadius = \"12px\",\n padding = \"16px\",\n spacing = \"12px\",\n\n className,\n style,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const containerStyle: CSSProperties = {\n backgroundColor,\n borderColor,\n color: textColor,\n borderWidth: borderColor ? \"1px\" : \"0px\",\n borderStyle: \"solid\",\n borderRadius,\n padding,\n ...style,\n };\n\n const listStyle: CSSProperties = isInline\n ? {\n display: \"flex\",\n gap: spacing,\n paddingLeft: 0,\n listStyleType: \"none\",\n margin: 0,\n }\n : {\n listStyleType: isOrdered ? \"decimal\" : \"none\",\n paddingLeft: isOrdered ? \"20px\" : \"0\",\n margin: 0,\n };\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div className={className} style={containerStyle}>\n {title && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"17px\",\n fontWeight: 600,\n marginBottom: \"10px\",\n gap: \"8px\",\n }}\n >\n {titleIcon && <span style={{ fontSize: \"18px\" }}>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag style={listStyle}>\n {items.map((item, index) => (\n <ListItem\n key={index}\n {...item}\n bulletColor={bulletColor}\n textColor={textColor}\n fontSize={fontSize}\n fontWeight={fontWeight}\n spacing={spacing}\n isInline={isInline}\n />\n ))}\n </ListTag>\n </div>\n );\n};\n","import React, {\n ReactNode,\n CSSProperties,\n useEffect,\n useRef,\n useCallback,\n} from \"react\";\nimport { X } from \"lucide-react\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n ariaLabel?: string;\n title?: string;\n overlayStyle?: CSSProperties;\n modalStyle?: CSSProperties;\n closeButtonStyle?: CSSProperties;\n disableOverlayClose?: boolean;\n transitionDuration?: number;\n className?: string;\n /** Dark mode toggle */\n darkMode?: boolean;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n ariaLabel,\n title,\n overlayStyle,\n modalStyle,\n closeButtonStyle,\n disableOverlayClose = false,\n transitionDuration = 200,\n className,\n darkMode = false,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* ------------------------------ Escape 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 /* ------------------------------ Click Outside ---------------------------- */\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n /* ------------------------------- Base Styles ----------------------------- */\n const baseOverlay: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: darkMode ? \"rgba(0,0,0,0.8)\" : \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1000,\n opacity: isOpen ? 1 : 0,\n transition: `opacity ${transitionDuration}ms ease`,\n ...overlayStyle,\n };\n\n const baseModal: CSSProperties = {\n position: \"relative\",\n backgroundColor: darkMode ? \"#1f1f1f\" : \"#fff\",\n color: darkMode ? \"#f5f5f5\" : \"#111\",\n borderRadius: 12,\n width: \"90vw\",\n maxWidth: 700,\n maxHeight: \"90vh\",\n overflowY: \"auto\",\n padding: 24,\n boxShadow: darkMode\n ? \"0 10px 40px rgba(0,0,0,0.7)\"\n : \"0 10px 40px rgba(0,0,0,0.25)\",\n transform: isOpen ? \"scale(1)\" : \"scale(0.95)\",\n transition: `transform ${transitionDuration}ms ease, opacity ${transitionDuration}ms ease`,\n ...modalStyle,\n };\n\n const baseCloseBtn: CSSProperties = {\n position: \"absolute\",\n top: 16,\n right: 16,\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n padding: 4,\n color: darkMode ? \"#f5f5f5\" : \"#444\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n ...closeButtonStyle,\n };\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n style={baseOverlay}\n onClick={handleOverlayClick}\n className={className}\n >\n <div\n ref={modalRef}\n style={baseModal}\n onClick={(e) => e.stopPropagation()} // prevent close on content click\n >\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n style={baseCloseBtn}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = darkMode ? \"#fff\" : \"#000\";\n e.currentTarget.style.transform = \"scale(1.1)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = darkMode ? \"#f5f5f5\" : \"#444\";\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n <X size={24} />\n </button>\n\n {title && (\n <h2\n style={{\n fontSize: \"1.25rem\",\n fontWeight: 600,\n marginBottom: \"1rem\",\n }}\n >\n {title}\n </h2>\n )}\n\n {children}\n </div>\n </div>\n );\n};\n","import React, { ReactNode, CSSProperties } from \"react\";\n\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\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <table\n className={className}\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n ...style,\n }}\n >\n {children}\n </table>\n);\n\nexport const THead: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <thead\n className={className}\n style={{\n backgroundColor: \"#f9fafb\",\n borderBottom: \"2px solid #e5e7eb\",\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\nexport const TBody: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tbody className={className} style={style}>\n {children}\n </tbody>\n);\n\nexport const TRow: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tr\n className={className}\n style={{\n borderBottom: \"1px solid #e5e7eb\",\n transition: \"background 0.2s ease\",\n ...style,\n }}\n >\n {children}\n </tr>\n);\n\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={className}\n style={{\n textAlign: \"left\",\n padding: \"12px 16px\",\n fontWeight: 600,\n fontSize: \"0.875rem\",\n color: \"#374151\",\n ...style,\n }}\n >\n {children}\n </th>\n);\n\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={className}\n style={{\n padding: \"12px 16px\",\n fontSize: \"0.875rem\",\n color: \"#4b5563\",\n ...style,\n }}\n >\n {children}\n </td>\n);\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:\n 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:\n 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\"\n ? { borderColor }\n : variant === \"underline\"\n ? { borderBottomColor: \"transparent\" }\n : {}),\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 const layoutDir = isVertical ? \"row\" : \"column\";\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\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: 8,\n gap,\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 >\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};\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","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","typeStyles","jsx","CheckCircle","AlertCircle","AlertTriangle","getPositionStyle","position","base","Alert","title","description","dismissible","duration","onClose","icon","actionButton","backgroundColor","borderColor","textColor","borderRadius","shadow","padding","fontSize","fontWeight","descriptionColor","animationDuration","maxWidth","style","visible","setVisible","useState","exiting","setExiting","useEffect","timer","bg","border","iconColor","positionStyle","containerStyle","useMemo","jsxs","Fragment","Accordion","memo","items","allowMultiple","defaultOpen","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","contentPadding","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","openIndexes","setOpenIndexes","contentRefs","useRef","el","toggleItem","prev","i","item","isOpen","e","sizeMap","fontSizeMap","statusSizeMap","getVariantStyles","variant","getStatusPositionStyle","offset","getSpacingOffset","spacing","dim","Avatar","src","alt","isOnline","isOffline","statusClassName","statusStyle","statusPosition","fallback","ring","ringColor","onClick","imageError","setImageError","isHovered","setIsHovered","isResponsive","dimension","statusSize","initials","n","statusColor","statusLabel","showImage","clickable","AvatarGroup","avatars","max","direction","spacingOffset","visibleAvatars","extraCount","avatar","isFirst","zIndex","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","time","skip","seconds","toggleFullscreen","formatTime","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","percent","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","Badge","text","borderWidth","iconPosition","rounded","horizontalPadding","verticalPadding","margin","notificationDot","dotColor","count","pulse","baseStyle","dotStyle","countStyle","iconStyle","defaultColors","adjustColor","amount","hex","Button","iconBefore","iconAfter","fullWidth","disabled","loading","loadingText","darkMode","baseColor","showBorder","hovered","setHovered","theme","light","dark","s","buttonStyle","CardInner","as","background","boxShadow","hoverShadow","height","hoverStyle","baseVariantStyles","cardStyle","handleMouseEnter","handleMouseLeave","ForwardedCard","Card","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","handleChange","updatedValues","v","option","isChecked","RadioGroup","selectedValue","SwitchGroup","switchBgColor","containerWidths","Container","center","styles","computedPadding","computedMargin","computedBorderRadius","getScreenSize","resolveResponsive","screen","Flexbox","align","justify","wrap","gap","overflow","setScreen","updateScreen","computedStyle","toCssValue","val","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","screenSize","setScreenSize","onResize","resolvedColumns","DrawerButton","label","Drawer","open","backdropColor","showCloseButton","closeIconColor","closeButtonStyle","transform","drawerStyle","overlayStyle","defaultCloseButtonStyle","THEMES","DropdownInner","useId","values","defaultValue","defaultValues","placeholder","searchable","multiSelect","clearable","virtualized","dropdownMaxHeight","accentColor","menuBg","controlBg","hoverBg","selectedBg","disabledBg","disabledTextColor","placeholderColor","controlClassName","menuClassName","optionClassName","controlStyle","menuStyle","optionStyle","iconPrefix","iconSuffix","clearIcon","dropdownIcon","checkIcon","themeVars","colors","setIsOpen","selected","setSelected","selectedOptions","o","toggle","selectValue","next","clearSelection","opt","isSelected","Dropdown","Input","success","autoFocus","iconLeft","iconRight","labelColor","hoverBorderColor","focusBorderColor","errorColor","successColor","fontFamily","radius","rows","cols","maxLength","resize","showCharacterCount","inputRef","localValue","setLocalValue","useImperativeHandle","newValue","currentValue","currentBorderColor","sizes","px","py","baseInputStyle","dynamicPlaceholder","applyDynamicBorder","commonEvents","Image","borderStyle","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","lazyLoad","hoverOpacity","hoverScale","hoverRotate","onLoad","onError","useCallback","overflowStyles","ListItem","subItems","bulletColor","isInline","itemContainerStyle","contentStyle","bulletStyle","subListStyle","sub","List","titleIcon","isOrdered","listStyle","ListTag","Modal","ariaLabel","modalStyle","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","baseOverlay","baseModal","baseCloseBtn","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","contentClassName","activeTabStyle","inactiveTabStyle","active","setActive","isMobile","setIsMobile","drawerOpen","setDrawerOpen","containerRef","check","handleKeyDown","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isDisabled","Text","weight","italic","underline","strikethrough","truncate","selectable","hoverable","Element","lightMode","darkModeTheme","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]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/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","../src/components/basic/Badge.tsx","../src/components/basic/Button.tsx","../src/components/basic/Card.tsx","../src/components/basic/CheckboxGroup.tsx","../src/components/basic/RadioGroup.tsx","../src/components/basic/SwitchGroup.tsx","../src/components/basic/Container.tsx","../src/components/basic/Flexbox.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 = [\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","import React, { useEffect, useState, useMemo } from \"react\";\nimport {\n X,\n Info,\n CheckCircle,\n AlertCircle,\n AlertTriangle,\n} from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\ntype AlertPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport interface AlertProps {\n title?: string;\n description?: string;\n type?: AlertType;\n dismissible?: boolean;\n duration?: number;\n onClose?: () => void;\n\n /** Customization */\n icon?: React.ReactNode;\n actionButton?: React.ReactNode;\n position?: AlertPosition;\n backgroundColor?: string;\n borderColor?: string;\n textColor?: string;\n borderRadius?: string | number;\n shadow?: string;\n padding?: string | number;\n fontSize?: string | number;\n fontWeight?: number | string;\n descriptionColor?: string;\n animationDuration?: string;\n maxWidth?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst typeStyles: Record<AlertType, any> = {\n success: {\n bg: \"#ecfdf5\",\n border: \"#34d399\",\n iconColor: \"#059669\",\n Icon: <CheckCircle size={20} />,\n },\n error: {\n bg: \"#fef2f2\",\n border: \"#f87171\",\n iconColor: \"#dc2626\",\n Icon: <AlertCircle size={20} />,\n },\n warning: {\n bg: \"#fffbeb\",\n border: \"#facc15\",\n iconColor: \"#d97706\",\n Icon: <AlertTriangle size={20} />,\n },\n info: {\n bg: \"#eff6ff\",\n border: \"#3b82f6\",\n iconColor: \"#2563eb\",\n Icon: <Info size={20} />,\n },\n};\n\nconst getPositionStyle = (position: AlertPosition): React.CSSProperties => {\n const base: React.CSSProperties = {\n position: \"fixed\",\n zIndex: 9999,\n pointerEvents: \"auto\",\n };\n\n switch (position) {\n case \"top-left\":\n return { ...base, top: \"1.25rem\", left: \"1.25rem\" };\n case \"top-center\":\n return { ...base, top: \"1.25rem\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"top-right\":\n return { ...base, top: \"1.25rem\", right: \"1.25rem\" };\n case \"bottom-left\":\n return { ...base, bottom: \"1.25rem\", left: \"1.25rem\" };\n case \"bottom-center\":\n return { ...base, bottom: \"1.25rem\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"bottom-right\":\n default:\n return { ...base, bottom: \"1.25rem\", right: \"1.25rem\" };\n }\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n title,\n description,\n type = \"info\",\n dismissible = true,\n duration,\n onClose,\n icon,\n actionButton,\n position = \"top-right\",\n backgroundColor,\n borderColor,\n textColor = \"#111827\",\n borderRadius = \"0.75rem\",\n shadow = \"0 4px 14px rgba(0,0,0,0.1)\",\n padding = \"1rem\",\n fontSize = \"0.95rem\",\n fontWeight = 500,\n descriptionColor = \"#374151\",\n animationDuration = \"300ms\",\n maxWidth = \"480px\",\n className = \"\",\n style,\n}) => {\n const [visible, setVisible] = useState(false);\n const [exiting, setExiting] = useState(false);\n\n useEffect(() => {\n setVisible(true);\n\n if (duration) {\n const timer = setTimeout(() => {\n setExiting(true);\n setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, parseInt(animationDuration));\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose, animationDuration]);\n\n const { bg, border, iconColor, Icon } = typeStyles[type];\n const positionStyle = getPositionStyle(position);\n\n const containerStyle: React.CSSProperties = useMemo(\n () => ({\n ...positionStyle,\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.75rem\",\n backgroundColor: backgroundColor ?? bg,\n borderLeft: `4px solid ${borderColor ?? border}`,\n borderRadius,\n color: textColor,\n boxShadow: shadow,\n padding,\n maxWidth,\n width: \"calc(100% - 2.5rem)\",\n opacity: visible && !exiting ? 1 : 0,\n transform: visible && !exiting\n ? \"translateY(0)\"\n : position.includes(\"bottom\")\n ? \"translateY(20px)\"\n : \"translateY(-20px)\",\n transition: `opacity ${animationDuration} ease, transform ${animationDuration} ease`,\n fontWeight,\n fontSize,\n ...style,\n }),\n [\n visible,\n exiting,\n bg,\n border,\n borderColor,\n borderRadius,\n position,\n shadow,\n padding,\n textColor,\n maxWidth,\n backgroundColor,\n animationDuration,\n style,\n fontSize,\n fontWeight,\n ]\n );\n\n if (!visible) return null;\n\n return (\n <>\n <style>\n {`\n @keyframes alert-slide-in-top {\n from { opacity: 0; transform: translateY(-20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n @keyframes alert-slide-in-bottom {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n `}\n </style>\n <div\n className={className}\n style={{\n ...containerStyle,\n animation: `${position.includes(\"bottom\") ? \"alert-slide-in-bottom\" : \"alert-slide-in-top\"} ${animationDuration} ease`,\n }}\n role=\"alert\"\n >\n <div style={{ color: iconColor, marginTop: \"2px\" }}>{icon || Icon}</div>\n\n <div style={{ flex: 1, minWidth: 0 }}>\n {title && (\n <div style={{ fontWeight: 600, fontSize, marginBottom: \"4px\" }}>\n {title}\n </div>\n )}\n {description && (\n <div style={{ fontSize: \"0.875rem\", color: descriptionColor, lineHeight: 1.4 }}>\n {description}\n </div>\n )}\n {actionButton && <div style={{ marginTop: \"8px\" }}>{actionButton}</div>}\n </div>\n\n {dismissible && (\n <button\n onClick={() => {\n setExiting(true);\n setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, parseInt(animationDuration));\n }}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: \"#6b7280\",\n cursor: \"pointer\",\n marginLeft: \"8px\",\n padding: 0,\n lineHeight: 0,\n }}\n aria-label=\"Close alert\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n </>\n );\n};\n\nAlert.displayName = \"Alert\";\n","import React, { useState, useRef, useEffect, memo } from \"react\";\n\nexport interface AccordionItem {\n title: string;\n content: React.ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n\n /** Allow multiple open items */\n allowMultiple?: boolean;\n\n /** Default open indexes */\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 customization */\n iconOpen?: React.ReactNode;\n iconClose?: React.ReactNode;\n iconSize?: string | number;\n\n /** Motion & style */\n transitionDuration?: string;\n shadow?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * 🧠 Industry-standard, minimal, and fully customizable Accordion\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 = \"#f9fafb\",\n hoverTextColor = \"#111827\",\n contentBgColor = \"#fff\",\n contentTextColor = \"#374151\",\n paddingY = \"1rem\",\n paddingX = \"1rem\",\n marginY = \"0.75rem\",\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 return (\n <div className={className} style={{ width: \"100%\", ...style }}>\n {items.map((item, index) => {\n const isOpen = openIndexes.includes(index);\n\n return (\n <div\n key={index}\n style={{\n border: `1px solid ${borderColor}`,\n borderRadius,\n margin: `${marginY} 0`,\n boxShadow: shadow,\n overflow: \"hidden\",\n transition: `all ${transitionDuration} ease`,\n }}\n >\n {/* Header Button */}\n <button\n onClick={() => toggleItem(index)}\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n backgroundColor,\n color: textColor,\n padding: `${paddingY} ${paddingX}`,\n fontWeight,\n fontSize,\n cursor: \"pointer\",\n border: \"none\",\n outline: \"none\",\n transition: `all ${transitionDuration}`,\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: iconSize }}>\n {isOpen ? iconOpen : iconClose}\n </span>\n </button>\n\n {/* Content */}\n <div\n ref={(el) => {\n contentRefs.current[index] = el;\n }}\n style={{\n overflow: \"hidden\",\n maxHeight: isOpen\n ? `${contentRefs.current[index]?.scrollHeight}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: contentPadding,\n fontSize: 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","import React, { useState } from \"react\";\nimport { User } from \"lucide-react\";\n\ntype AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"responsive\";\ntype AvatarVariant = \"circular\" | \"rounded\" | \"square\";\n\ninterface AvatarProps {\n src?: string;\n alt?: string;\n size?: AvatarSize;\n variant?: AvatarVariant;\n isOnline?: boolean;\n isOffline?: boolean;\n className?: string;\n style?: React.CSSProperties;\n statusClassName?: string;\n statusStyle?: React.CSSProperties;\n statusPosition?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n fallback?: string;\n ring?: boolean;\n ringColor?: string;\n onClick?: () => void;\n}\n\ninterface AvatarGroupProps {\n avatars: AvatarProps[];\n max?: number;\n size?: AvatarSize;\n className?: string;\n style?: React.CSSProperties;\n spacing?: \"tight\" | \"normal\" | \"loose\";\n direction?: \"left\" | \"right\";\n}\n\n// --- Base maps ---\nconst sizeMap = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 64,\n} as const;\n\nconst fontSizeMap = {\n xs: 10,\n sm: 12,\n md: 14,\n lg: 16,\n xl: 18,\n \"2xl\": 20,\n} as const;\n\nconst statusSizeMap = {\n xs: 6,\n sm: 8,\n md: 10,\n lg: 12,\n xl: 14,\n \"2xl\": 16,\n} as const;\n\n// --- Helpers ---\nconst getVariantStyles = (variant: AvatarVariant): string => {\n switch (variant) {\n case \"square\":\n return \"0px\";\n case \"rounded\":\n return \"8px\";\n default:\n return \"50%\";\n }\n};\n\nconst getStatusPositionStyle = (\n position: AvatarProps[\"statusPosition\"],\n offset: number\n): React.CSSProperties => {\n switch (position) {\n case \"top-left\":\n return { top: 2, left: 2 };\n case \"top-right\":\n return { top: 2, right: 2 };\n case \"bottom-left\":\n return { bottom: 2, left: 2 };\n default:\n return { bottom: 2, right: 2 };\n }\n};\n\nconst getSpacingOffset = (spacing: AvatarGroupProps[\"spacing\"], dim: number) => {\n switch (spacing) {\n case \"tight\":\n return -(dim * 0.5);\n case \"loose\":\n return -(dim * 0.15);\n default:\n return -(dim * 0.35);\n }\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 className = \"\",\n style,\n statusClassName = \"\",\n statusStyle,\n statusPosition = \"bottom-right\",\n fallback,\n ring = false,\n ringColor = \"#3b82f6\",\n onClick,\n}) => {\n const [imageError, setImageError] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const isResponsive = size === \"responsive\";\n const dimension = !isResponsive ? sizeMap[size as Exclude<AvatarSize, \"responsive\">] : undefined;\n const fontSize = !isResponsive ? fontSizeMap[size as Exclude<AvatarSize, \"responsive\">] : \"clamp(10px, 2vw, 16px)\";\n const statusSize = !isResponsive ? statusSizeMap[size as Exclude<AvatarSize, \"responsive\">] : 10;\n const borderRadius = getVariantStyles(variant);\n\n const initials = fallback || alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const statusColor = isOnline ? \"#10b981\" : isOffline ? \"#6b7280\" : \"\";\n const statusLabel = isOnline ? \"Online\" : isOffline ? \"Offline\" : \"\";\n\n const showImage = src && !imageError;\n const clickable = !!onClick;\n\n return (\n <div\n className={className}\n role={clickable ? \"button\" : \"img\"}\n tabIndex={clickable ? 0 : -1}\n aria-label={alt}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onKeyDown={(e) => {\n if (clickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n }}\n style={{\n position: \"relative\",\n width: isResponsive ? \"100%\" : dimension,\n height: isResponsive ? \"100%\" : dimension,\n borderRadius,\n overflow: \"visible\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n cursor: clickable ? \"pointer\" : \"default\",\n transition: \"all 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",\n transform: isHovered && clickable ? \"scale(1.05)\" : \"scale(1)\",\n boxShadow: ring\n ? `0 0 0 3px ${ringColor}22, 0 0 0 1px ${ringColor}`\n : isHovered && clickable\n ? \"0 6px 16px rgba(0, 0, 0, 0.15)\"\n : \"0 1px 3px rgba(0, 0, 0, 0.1)\",\n ...style,\n }}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n loading=\"lazy\"\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius,\n transition: \"opacity 0.3s ease-in-out\",\n }}\n />\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n color: \"#fff\",\n fontSize,\n fontWeight: 600,\n borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {initials || <User size={dimension ? dimension * 0.5 : 20} />}\n </div>\n )}\n\n {(isOnline || isOffline) && (\n <div\n className={statusClassName}\n aria-label={statusLabel}\n title={statusLabel}\n style={{\n position: \"absolute\",\n width: statusSize,\n height: statusSize,\n borderRadius: \"50%\",\n backgroundColor: statusColor,\n border: \"2px solid white\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.12)\",\n ...getStatusPositionStyle(statusPosition, statusSize),\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};\n\n// --- AvatarGroup Component ---\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n avatars,\n max = 4,\n size = \"md\",\n className = \"\",\n style,\n spacing = \"normal\",\n direction = \"left\",\n}) => {\n const isResponsive = size === \"responsive\";\n const dimension = !isResponsive ? sizeMap[size as Exclude<AvatarSize, \"responsive\">] : 40;\n const fontSize = !isResponsive ? fontSizeMap[size as Exclude<AvatarSize, \"responsive\">] : \"clamp(10px, 2vw, 14px)\";\n const spacingOffset = getSpacingOffset(spacing, dimension);\n const visibleAvatars = avatars.slice(0, max);\n const extraCount = avatars.length - max;\n\n return (\n <div\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: direction === \"right\" ? \"row-reverse\" : \"row\",\n flexWrap: \"wrap\",\n ...style,\n }}\n role=\"group\"\n aria-label={`Avatar group with ${avatars.length} members`}\n >\n {visibleAvatars.map((avatar, i) => {\n const isFirst = direction === \"left\" ? i === 0 : i === visibleAvatars.length - 1;\n const zIndex = direction === \"left\" ? visibleAvatars.length - i : i + 1;\n\n return (\n <div\n key={i}\n style={{\n marginLeft: direction === \"left\" && !isFirst ? spacingOffset : 0,\n marginRight: direction === \"right\" && !isFirst ? spacingOffset : 0,\n zIndex,\n position: \"relative\",\n transition: \"transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = `translateY(-3px) scale(1.05)`;\n e.currentTarget.style.zIndex = \"100\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = \"translateY(0) scale(1)\";\n e.currentTarget.style.zIndex = zIndex.toString();\n }}\n >\n <Avatar {...avatar} size={size} />\n </div>\n );\n })}\n\n {extraCount > 0 && (\n <div\n style={{\n marginLeft: direction === \"left\" ? spacingOffset : 0,\n marginRight: direction === \"right\" ? spacingOffset : 0,\n width: dimension,\n height: dimension,\n borderRadius: \"50%\",\n background: \"linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%)\",\n color: \"#374151\",\n fontSize,\n fontWeight: 600,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"3px solid white\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.15)\",\n userSelect: \"none\",\n }}\n title={`${extraCount} more members`}\n >\n +{extraCount}\n </div>\n )}\n </div>\n );\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} 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 = \"#000000\",\n primaryColor = \"#10b981\",\n secondaryColor = \"#ffffff\",\n borderRadius = \"12px\",\n padding = \"16px\",\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.5);\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 || !e.currentTarget) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n const time = percent * duration;\n audioRef.current.currentTime = time;\n setCurrentTime(time);\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 position: \"relative\",\n width,\n backgroundColor,\n borderRadius,\n color: secondaryColor,\n boxShadow: \"0 4px 12px rgba(0,0,0,0.3)\",\n overflow: \"hidden\",\n padding,\n boxSizing: \"border-box\",\n maxWidth: \"100%\",\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 && (\n <img\n src={thumbnail}\n alt=\"Audio Thumbnail\"\n style={{\n width: \"100%\",\n objectFit: \"cover\",\n borderRadius,\n marginBottom: \"16px\",\n maxHeight: \"150px\",\n }}\n />\n )}\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"10px\",\n flexShrink: 0,\n marginTop: \"10px\",\n }}\n >\n <button onClick={() => skip(-10)} aria-label=\"Skip Back 10s\">\n <SkipBack size={20} />\n </button>\n <button\n onClick={togglePlayPause}\n style={{\n background: primaryColor,\n borderRadius: \"9999px\",\n padding: \"10px\",\n color: \"#fff\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={20} /> : <Play size={20} />}\n </button>\n <button onClick={() => skip(10)} aria-label=\"Skip Forward 10s\">\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Time & Seek */}\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"12px\",\n width: \"100%\",\n }}\n >\n {/* Time Info */}\n <div style={{ flexShrink: 0, minWidth: \"60px\", textAlign: \"center\" }}>\n <span style={{ fontSize: \"14px\", marginRight: \"4px\" }}>\n {formatTime(currentTime)}\n </span>\n <span style={{ fontSize: \"14px\", color: \"#aaa\" }}>\n / {formatTime(duration)}\n </span>\n </div>\n\n {/* Seek Bar */}\n <div\n onClick={handleSeek}\n style={{\n flex: 1,\n height: \"8px\",\n background: \"#444\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n position: \"relative\",\n minWidth: \"100px\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"4px\",\n }}\n />\n </div>\n\n {/* Extra Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n flexShrink: 0,\n }}\n >\n <button\n onClick={() => setIsLooping(!isLooping)}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={18} color={isLooping ? primaryColor : undefined} />\n </button>\n <button\n onClick={() => setVolume(volume > 0 ? 0 : 0.5)}\n aria-label=\"Toggle Mute\"\n >\n {volume > 0 ? <Volume2 size={18} /> : <VolumeX size={18} />}\n </button>\n <button onClick={toggleFullscreen} aria-label=\"Toggle Fullscreen\">\n {isFullscreen ? <Minimize size={18} /> : <Maximize size={18} />}\n </button>\n </div>\n </div>\n </div>\n );\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","import React, { CSSProperties, ReactNode, memo } from \"react\";\n\nexport interface BadgeProps {\n text?: string;\n color?: string; // background\n textColor?: string;\n borderColor?: string;\n borderWidth?: string;\n\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n\n rounded?: boolean;\n borderRadius?: string;\n\n fontSize?: string;\n fontWeight?: number | string;\n\n horizontalPadding?: string;\n verticalPadding?: string;\n margin?: string;\n shadow?: string;\n\n notificationDot?: boolean;\n dotColor?: string;\n count?: number | string;\n pulse?: boolean;\n\n style?: CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nexport const Badge: React.FC<BadgeProps> = memo(\n ({\n text,\n color = \"#2563eb\",\n textColor = \"#fff\",\n borderColor = \"#2563eb\",\n borderWidth = \"0\",\n\n icon,\n iconPosition = \"left\",\n\n rounded = false,\n borderRadius,\n fontSize = \"13px\",\n fontWeight = 500,\n horizontalPadding = \"10px\",\n verticalPadding = \"4px\",\n margin = \"0\",\n shadow = \"0 1px 3px rgba(0,0,0,0.1)\",\n\n notificationDot = false,\n dotColor = \"#ef4444\",\n count,\n pulse = false,\n\n style,\n className = \"\",\n onClick,\n }) => {\n const baseStyle: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: color,\n color: textColor,\n border: `${borderWidth} solid ${borderColor}`,\n borderRadius: borderRadius || (rounded ? \"9999px\" : \"6px\"),\n padding: `${verticalPadding} ${horizontalPadding}`,\n fontSize,\n fontWeight,\n margin,\n boxShadow: shadow,\n position: \"relative\",\n cursor: onClick ? \"pointer\" : \"default\",\n userSelect: \"none\",\n lineHeight: 1,\n transition: \"all 0.2s ease\",\n ...style,\n };\n\n const dotStyle: CSSProperties = {\n position: \"absolute\",\n top: \"-4px\",\n right: \"-4px\",\n height: \"8px\",\n width: \"8px\",\n backgroundColor: dotColor,\n borderRadius: \"50%\",\n animation: pulse ? \"pulseAnim 1.2s infinite\" : undefined,\n };\n\n const countStyle: CSSProperties = {\n position: \"absolute\",\n top: \"-8px\",\n right: \"-8px\",\n backgroundColor: dotColor,\n color: \"#fff\",\n borderRadius: \"50%\",\n minWidth: \"18px\",\n height: \"18px\",\n fontSize: \"11px\",\n padding: \"0 5px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 1,\n };\n\n const iconStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n margin:\n icon && text\n ? iconPosition === \"left\"\n ? \"0 6px 0 0\"\n : \"0 0 0 6px\"\n : 0,\n };\n\n return (\n <span style={baseStyle} className={className} onClick={onClick}>\n {/* Dot */}\n {notificationDot && <span style={dotStyle} />}\n\n {/* Count */}\n {typeof count !== \"undefined\" && <span style={countStyle}>{count}</span>}\n\n {/* Icon Left */}\n {icon && iconPosition === \"left\" && <span style={iconStyle}>{icon}</span>}\n\n {/* Text */}\n {text && <span>{text}</span>}\n\n {/* Icon Right */}\n {icon && iconPosition === \"right\" && <span style={iconStyle}>{icon}</span>}\n\n {/* Pulse Animation */}\n <style>\n {`\n @keyframes pulseAnim {\n 0% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.5); opacity: 0.5; }\n 100% { transform: scale(1); opacity: 1; }\n }\n `}\n </style>\n </span>\n );\n }\n);\n","\"use client\";\nimport React, { useMemo, useState, CSSProperties, FC } from \"react\";\n\n/** 🌈 Default color palette */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n border: \"#d1d5db\",\n hover: \"#1d4ed8\",\n text: \"#ffffff\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n border: \"#374151\",\n hover: \"#3b82f6\",\n text: \"#000000\",\n },\n};\n\n/** 🎨 Adjust color shade utility */\nfunction adjustColor(color: string, amount: number): string {\n if (!color.startsWith(\"#\") || color.length !== 7) return color;\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/** ⚙️ Props */\nexport interface ButtonProps {\n children: React.ReactNode;\n type?: \"button\" | \"submit\" | \"reset\";\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n iconBefore?: React.ReactNode;\n iconAfter?: React.ReactNode;\n className?: string;\n style?: CSSProperties;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n\n /** 🎨 Theme options */\n darkMode?: boolean;\n baseColor?: string;\n\n /** 🧩 Optional design tweaks */\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: boolean;\n\n /** 🧱 Border visibility */\n showBorder?: boolean; // ✅ new prop\n}\n\n/** 💎 Minimal customizable Button */\nexport const Button: FC<ButtonProps> = ({\n children,\n type = \"button\",\n onClick,\n iconBefore,\n iconAfter,\n className = \"\",\n style,\n fullWidth = false,\n disabled = false,\n loading = false,\n loadingText = \"Loading...\",\n darkMode = false,\n baseColor,\n size = \"md\",\n rounded = true,\n showBorder = false, // ✅ default: no border\n}) => {\n const [hovered, setHovered] = useState(false);\n\n /** 🧠 Theme system */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const light = {\n primary: baseColor,\n hover: adjustColor(baseColor, -40),\n text: \"#ffffff\",\n border: adjustColor(baseColor, -60),\n };\n const dark = {\n primary: adjustColor(baseColor, 60),\n hover: adjustColor(baseColor, 80),\n text: \"#000000\",\n border: adjustColor(baseColor, 40),\n };\n return darkMode ? dark : light;\n }, [baseColor, darkMode]);\n\n /** 📏 Sizes */\n const sizes: Record<\n NonNullable<ButtonProps[\"size\"]>,\n { px: number; py: number; font: string }\n > = {\n sm: { px: 16, py: 6, font: \"0.85rem\" },\n md: { px: 24, py: 10, font: \"1rem\" },\n lg: { px: 32, py: 14, font: \"1.125rem\" },\n };\n\n const s = sizes[size];\n\n /** 💅 Computed styles */\n const buttonStyle: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"8px\",\n padding: `${s.py}px ${s.px}px`,\n fontSize: s.font,\n fontWeight: 500,\n borderRadius: rounded ? 8 : 3,\n border: showBorder ? `1px solid ${theme.border}` : \"none\", // ✅ conditional border\n width: fullWidth ? \"100%\" : \"auto\",\n backgroundColor: hovered && !disabled ? theme.hover : theme.primary,\n color: theme.text,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n transition: \"all 0.25s ease-in-out\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.15)\",\n ...style,\n };\n\n return (\n <button\n type={type}\n className={className}\n style={buttonStyle}\n onClick={!disabled && !loading ? onClick : undefined}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n disabled={disabled}\n >\n {loading ? (\n <>\n <span\n style={{\n width: \"16px\",\n height: \"16px\",\n border: \"2px solid currentColor\",\n borderTopColor: \"transparent\",\n borderRadius: \"50%\",\n animation: \"spin 1s linear infinite\",\n }}\n />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && <span>{iconBefore}</span>}\n <span>{children}</span>\n {iconAfter && <span>{iconAfter}</span>}\n </>\n )}\n\n {/* Spinner animation */}\n <style>\n {`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}\n </style>\n </button>\n );\n};\n\nexport default Button;\n","import React, {\n CSSProperties,\n ReactNode,\n ElementType,\n forwardRef,\n ForwardedRef,\n ReactElement,\n ComponentPropsWithoutRef,\n} from \"react\";\n\n// Allow any string for variant to support fully custom variants\ntype CardVariant = string;\n\ntype CardOwnProps = {\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n variant?: CardVariant;\n background?: string;\n textColor?: string;\n borderRadius?: string | number;\n border?: string;\n boxShadow?: string;\n hoverShadow?: string;\n padding?: string | number;\n margin?: string | number;\n width?: string | number;\n height?: string | number;\n style?: CSSProperties;\n hoverStyle?: CSSProperties;\n onClick?: () => void;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps &\n Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps>;\n\nconst CardInner = <T extends ElementType = \"div\">(\n {\n as,\n children,\n className = \"\",\n variant = \"elevated\",\n background = \"#fff\",\n textColor = \"#000\",\n borderRadius = 12,\n border,\n boxShadow,\n hoverShadow,\n padding = 16,\n margin,\n width,\n height,\n style = {},\n hoverStyle = {},\n onClick,\n ...rest\n }: CardProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) => {\n const Component = as || \"div\";\n\n // Default styling for known variants; unknown variants can be customized\n const baseVariantStyles: Record<string, CSSProperties> = {\n elevated: {\n boxShadow: boxShadow || \"0 4px 12px rgba(0,0,0,0.08)\",\n border: border || \"none\",\n },\n outline: {\n border: border || \"1px solid rgba(0,0,0,0.1)\",\n boxShadow: \"none\",\n },\n flat: {\n border: \"none\",\n boxShadow: \"none\",\n },\n };\n\n const cardStyle: CSSProperties = {\n background,\n color: textColor,\n borderRadius,\n padding,\n margin,\n width,\n height,\n transition: \"all 0.25s ease\",\n cursor: onClick ? \"pointer\" : undefined,\n boxSizing: \"border-box\",\n ...(baseVariantStyles[variant] || {}), // fallback if variant is custom\n ...style,\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLElement>) => {\n Object.assign(\n e.currentTarget.style,\n hoverShadow ? { boxShadow: hoverShadow } : hoverStyle\n );\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n Object.assign(e.currentTarget.style, {\n ...cardStyle,\n ...(baseVariantStyles[variant] || {}),\n });\n };\n\n return (\n <Component\n ref={ref}\n className={`ui-card ${className}`}\n style={cardStyle}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\nconst ForwardedCard = forwardRef(CardInner) as <T extends ElementType = \"div\">(\n props: CardProps<T> & { ref?: ForwardedRef<HTMLDivElement> }\n) => ReactElement;\n\nconst Card = Object.assign(ForwardedCard, { displayName: \"Card\" });\n\nexport { Card };\n","\"use client\";\nimport React from \"react\";\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}\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}) => {\n const handleChange = (value: string) => {\n if (!onChange) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"group\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\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 {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 {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};\n","\"use client\";\nimport React from \"react\";\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}\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}) => {\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"radiogroup\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValue === option.value;\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\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 <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: \"50%\",\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 <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: \"white\",\n }}\n />\n )}\n </span>\n </label>\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};\n","\"use client\";\nimport React from \"react\";\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}\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}) => {\n const handleChange = (value: string) => {\n if (!onChange) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"group\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\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 <span\n style={{\n position: \"relative\",\n width: iconSize * 2,\n height: iconSize * 1.1,\n borderRadius: 9999,\n backgroundColor: isChecked ? iconCheckedBgColor : switchBgColor,\n transition: \"background-color 0.25s ease\",\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 {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};\n","import React, { useMemo } from \"react\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n /** Predefined max-width based on common breakpoints */\n size?: ContainerSize;\n\n /** Padding (accepts number in px or CSS string, e.g., '2rem') */\n padding?: number | string;\n\n /** Margin (accepts number in px or CSS string, e.g., 'auto' or '16px 8px') */\n margin?: number | string;\n\n /** Background color (any valid CSS color) */\n backgroundColor?: string;\n\n /** Center the container horizontally (adds `margin: 0 auto`) */\n center?: boolean;\n\n /** Custom width override (defaults to container max width) */\n width?: string;\n\n /** Optional height */\n height?: string;\n\n /** Border radius (accepts number in px or CSS string) */\n borderRadius?: number | string;\n\n /** Additional inline styles */\n style?: React.CSSProperties;\n\n /** Tailwind or custom class names */\n className?: string;\n\n /** Container content */\n children: React.ReactNode;\n}\n\n/** Tailwind-like container widths */\nconst containerWidths: Record<ContainerSize, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n full: \"100%\",\n};\n\n/**\n * 🧱 Container Component\n * A flexible, responsive layout wrapper inspired by Tailwind's container.\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = 0,\n margin = \"0 auto\",\n backgroundColor = \"transparent\",\n center = true,\n width,\n height = \"auto\",\n borderRadius = 0,\n style,\n className = \"\",\n children,\n}) => {\n const styles = useMemo<React.CSSProperties>(() => {\n const computedPadding =\n typeof padding === \"number\" ? `${padding}px` : padding;\n\n const computedMargin =\n center && margin === \"0 auto\" ? \"0 auto\" : margin;\n\n const computedBorderRadius =\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius;\n\n return {\n maxWidth: width ?? containerWidths[size],\n margin: computedMargin,\n padding: computedPadding,\n backgroundColor,\n height,\n borderRadius: computedBorderRadius,\n boxSizing: \"border-box\",\n width: width ?? \"100%\",\n ...style,\n };\n }, [\n size,\n padding,\n margin,\n backgroundColor,\n width,\n height,\n borderRadius,\n center,\n style,\n ]);\n\n return (\n <div className={className} style={styles}>\n {children}\n </div>\n );\n};\n\nexport default Container;\n","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexboxProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\n \"flex-start\" | \"flex-end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"\n >;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<number | string>;\n padding?: ResponsiveValue<number | string>;\n margin?: ResponsiveValue<number | string>;\n backgroundColor?: ResponsiveValue<string>;\n width?: ResponsiveValue<string>;\n maxWidth?: ResponsiveValue<string>;\n height?: ResponsiveValue<string>;\n borderRadius?: ResponsiveValue<string>;\n border?: ResponsiveValue<string>;\n boxShadow?: ResponsiveValue<string>;\n overflow?: ResponsiveValue<\"visible\" | \"hidden\" | \"auto\" | \"scroll\">;\n children: React.ReactNode;\n style?: React.CSSProperties;\n className?: string; // for Tailwind or other classes\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nconst resolveResponsive = <T,>(\n prop: ResponsiveValue<T> | undefined,\n screen: ScreenSize,\n fallback?: T\n): T | undefined => {\n if (prop == null) return fallback;\n if (typeof prop !== \"object\") return prop;\n return (prop as Partial<Record<ScreenSize, T>>)[screen] ?? fallback;\n};\n\nexport const Flexbox: React.FC<FlexboxProps> = ({\n direction = { sm: \"column\", md: \"row\", lg: \"row\" },\n align = \"center\",\n justify = \"space-between\",\n wrap = \"wrap\",\n gap = 16,\n padding,\n margin,\n backgroundColor = \"transparent\",\n width = \"100%\",\n maxWidth = \"100%\",\n height = \"auto\",\n borderRadius,\n border,\n boxShadow,\n overflow,\n children,\n style,\n className,\n}) => {\n const [screen, setScreen] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n const updateScreen = () => setScreen(getScreenSize(window.innerWidth));\n updateScreen();\n window.addEventListener(\"resize\", updateScreen);\n return () => window.removeEventListener(\"resize\", updateScreen);\n }, []);\n\n const computedStyle = useMemo<React.CSSProperties>(() => {\n const toCssValue = (val?: string | number) =>\n typeof val === \"number\" ? `${val}px` : val;\n\n return {\n display: \"flex\",\n flexDirection: resolveResponsive(direction, screen, \"row\"),\n alignItems: resolveResponsive(align, screen, \"center\"),\n justifyContent: resolveResponsive(justify, screen, \"flex-start\"),\n flexWrap: resolveResponsive(wrap, screen, \"wrap\"),\n gap: toCssValue(resolveResponsive(gap, screen, undefined)),\n padding: toCssValue(resolveResponsive(padding, screen, undefined)),\n margin: toCssValue(resolveResponsive(margin, screen, undefined)),\n backgroundColor: resolveResponsive(backgroundColor, screen, undefined),\n width: resolveResponsive(width, screen, \"100%\"),\n maxWidth: resolveResponsive(maxWidth, screen, undefined),\n height: resolveResponsive(height, screen, undefined),\n borderRadius: resolveResponsive(borderRadius, screen, undefined),\n border: resolveResponsive(border, screen, undefined),\n boxShadow: resolveResponsive(boxShadow, screen, undefined),\n overflow: resolveResponsive(overflow, screen, undefined),\n boxSizing: \"border-box\",\n ...style,\n };\n }, [\n direction,\n align,\n justify,\n wrap,\n gap,\n padding,\n margin,\n backgroundColor,\n width,\n maxWidth,\n height,\n borderRadius,\n border,\n boxShadow,\n overflow,\n screen,\n style,\n ]);\n\n return (\n <div className={className} style={computedStyle}>\n {children}\n </div>\n );\n};\n","import React, { useState, useEffect, useMemo } from \"react\";\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<number | string>;\n align?: ResponsiveValue<\"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\n \"flex-start\" | \"flex-end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"\n >;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n padding?: ResponsiveValue<number | string>;\n margin?: ResponsiveValue<number | string>;\n width?: ResponsiveValue<string>;\n maxWidth?: ResponsiveValue<string>;\n height?: ResponsiveValue<string>;\n backgroundColor?: ResponsiveValue<string>;\n borderRadius?: ResponsiveValue<string>;\n border?: ResponsiveValue<string>;\n boxShadow?: ResponsiveValue<string>;\n overflow?: ResponsiveValue<\"visible\" | \"hidden\" | \"auto\" | \"scroll\">;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nconst resolveResponsive = <T,>(\n prop: ResponsiveValue<T> | undefined,\n screen: ScreenSize,\n fallback?: T\n): T | undefined => {\n if (prop == null) return fallback;\n if (typeof prop !== \"object\") return prop;\n return (prop as Partial<Record<ScreenSize, T>>)[screen] ?? fallback;\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\", lg: \"horizontal\" },\n gap = 12,\n align = \"center\",\n justify = \"flex-start\",\n wrap = \"nowrap\",\n padding,\n margin,\n width = \"100%\",\n maxWidth,\n height = \"auto\",\n backgroundColor = \"transparent\",\n borderRadius,\n border,\n boxShadow,\n overflow,\n className,\n style,\n children,\n}) => {\n const [screen, setScreen] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n const updateScreen = () => setScreen(getScreenSize(window.innerWidth));\n updateScreen();\n window.addEventListener(\"resize\", updateScreen);\n return () => window.removeEventListener(\"resize\", updateScreen);\n }, []);\n\n const computedStyle = useMemo<React.CSSProperties>(() => {\n const toCssValue = (val?: string | number) =>\n typeof val === \"number\" ? `${val}px` : val;\n\n const resolvedDir = resolveResponsive(direction, screen, \"vertical\");\n const flexDir = resolvedDir === \"vertical\" ? \"column\" : \"row\";\n\n return {\n display: \"flex\",\n flexDirection: flexDir,\n alignItems: resolveResponsive(align, screen, \"center\"),\n justifyContent: resolveResponsive(justify, screen, \"flex-start\"),\n flexWrap: resolveResponsive(wrap, screen, \"nowrap\"),\n gap: toCssValue(resolveResponsive(gap, screen, 12)),\n padding: toCssValue(resolveResponsive(padding, screen, undefined)),\n margin: toCssValue(resolveResponsive(margin, screen, undefined)),\n width: resolveResponsive(width, screen, \"100%\"),\n maxWidth: resolveResponsive(maxWidth, screen, undefined),\n height: resolveResponsive(height, screen, undefined),\n backgroundColor: resolveResponsive(backgroundColor, screen, undefined),\n borderRadius: resolveResponsive(borderRadius, screen, undefined),\n border: resolveResponsive(border, screen, undefined),\n boxShadow: resolveResponsive(boxShadow, screen, undefined),\n overflow: resolveResponsive(overflow, screen, undefined),\n boxSizing: \"border-box\",\n ...style,\n };\n }, [\n direction,\n gap,\n align,\n justify,\n wrap,\n padding,\n margin,\n width,\n maxWidth,\n height,\n backgroundColor,\n borderRadius,\n border,\n boxShadow,\n overflow,\n style,\n screen,\n ]);\n\n return (\n <div className={className} style={computedStyle}>\n {children}\n </div>\n );\n};\n\n\n\nexport const HStack: React.FC<StackProps> = (props) => {\n return <Stack direction=\"horizontal\" {...props} />;\n};\n\nexport const VStack: React.FC<StackProps> = (props) => {\n return <Stack direction=\"vertical\" {...props} />;\n};","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface GridProps {\n columns?: number | Partial<Record<ScreenSize, number>>; // responsive column config\n gap?: number | string; // grid gap\n padding?: number | string;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n backgroundColor?: string;\n width?: string;\n maxWidth?: string;\n height?: string;\n margin?: number | string;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 16,\n padding = 0,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n backgroundColor = \"transparent\",\n width = \"100%\",\n maxWidth = \"100%\",\n height = \"auto\",\n margin = 0,\n style,\n className = \"\",\n children,\n}) => {\n const [screenSize, setScreenSize] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n setScreenSize(getScreenSize(window.innerWidth));\n const onResize = () => setScreenSize(getScreenSize(window.innerWidth));\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, []);\n\n const resolvedColumns = useMemo(() => {\n if (typeof columns === \"number\") return columns;\n return columns[screenSize] ?? 1;\n }, [columns, screenSize]);\n\n const styles: React.CSSProperties = useMemo(\n () => ({\n display: \"grid\",\n gridTemplateColumns: `repeat(${resolvedColumns}, 1fr)`,\n gap: typeof gap === \"number\" ? `${gap}px` : gap,\n padding: typeof padding === \"number\" ? `${padding}px` : padding,\n margin: typeof margin === \"number\" ? `${margin}px` : margin,\n alignItems,\n justifyItems,\n backgroundColor,\n width,\n maxWidth,\n height,\n boxSizing: \"border-box\",\n ...style,\n }),\n [\n resolvedColumns,\n gap,\n padding,\n margin,\n alignItems,\n justifyItems,\n backgroundColor,\n width,\n maxWidth,\n height,\n style,\n ]\n );\n\n return (\n <div style={styles} className={className}>\n {children}\n </div>\n );\n};\n","import React, { useState, useEffect, useMemo, CSSProperties, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\n\nexport interface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n color?: string;\n textColor?: string;\n borderRadius?: string;\n padding?: string;\n fontSize?: string;\n gap?: string;\n style?: CSSProperties;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n color = \"#2563eb\",\n textColor = \"#fff\",\n borderRadius = \"6px\",\n padding = \"10px 16px\",\n fontSize = \"14px\",\n gap = \"8px\",\n style,\n className = \"\",\n}) => (\n <button\n onClick={onClick}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: color,\n color: textColor,\n border: \"none\",\n borderRadius,\n padding,\n fontSize,\n gap,\n cursor: \"pointer\",\n fontWeight: 500,\n transition: \"all 0.2s ease\",\n boxShadow: \"0 1px 3px rgba(0,0,0,0.1)\",\n ...style,\n }}\n className={className}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n);\n\n/* ---------------- 🧱 Drawer ---------------- */\n\nexport interface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n width?: string;\n height?: string;\n backgroundColor?: string;\n backdropColor?: string;\n transitionDuration?: number;\n style?: CSSProperties;\n className?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeIconColor?: string;\n closeButtonStyle?: CSSProperties;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n width = \"320px\",\n height = \"320px\",\n backgroundColor = \"#fff\",\n backdropColor = \"rgba(0,0,0,0.5)\",\n transitionDuration = 300,\n style,\n className = \"\",\n children,\n showCloseButton = true,\n closeIconColor = \"#000\",\n closeButtonStyle,\n}) => {\n const [visible, setVisible] = useState(open);\n\n // Handle mount/unmount delay for smooth fade-out\n useEffect(() => {\n if (open) setVisible(true);\n else setTimeout(() => setVisible(false), transitionDuration);\n }, [open, transitionDuration]);\n\n // Drawer transform direction\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 const drawerStyle: CSSProperties = {\n position: \"fixed\",\n backgroundColor,\n transition: `transform ${transitionDuration}ms ease, opacity ${transitionDuration}ms ease`,\n transform,\n opacity: open ? 1 : 0,\n zIndex: 1001,\n ...style,\n ...(position === \"left\" || position === \"right\"\n ? { top: 0, bottom: 0, [position]: 0, width, height: \"100%\" }\n : { left: 0, right: 0, [position]: 0, height, width: \"100%\" }),\n };\n\n const overlayStyle: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: backdropColor,\n opacity: open ? 1 : 0,\n transition: `opacity ${transitionDuration}ms ease`,\n zIndex: 1000,\n display: visible ? \"block\" : \"none\",\n pointerEvents: open ? \"auto\" : \"none\",\n };\n\n const defaultCloseButtonStyle: CSSProperties = {\n position: \"absolute\",\n top: \"12px\",\n right: \"12px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"transform 0.2s ease, opacity 0.2s ease\",\n };\n\n return (\n <>\n {/* Overlay */}\n <div style={overlayStyle} onClick={onClose} />\n\n {/* Drawer Panel */}\n <div\n style={{\n ...drawerStyle,\n display: \"flex\",\n flexDirection: \"column\",\n visibility: visible ? \"visible\" : \"hidden\",\n pointerEvents: open ? \"auto\" : \"none\",\n boxShadow: \"0 0 20px rgba(0,0,0,0.15)\",\n }}\n className={className}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n style={{ ...defaultCloseButtonStyle, ...closeButtonStyle }}\n aria-label=\"Close drawer\"\n >\n <X size={22} color={closeIconColor} />\n </button>\n )}\n\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: \"16px\",\n scrollbarWidth: \"thin\",\n }}\n >\n {children}\n </div>\n </div>\n </>\n );\n};\n","\"use client\";\nimport React, {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n forwardRef,\n ForwardRefRenderFunction,\n} from \"react\";\n\n/* ----------------------\n * Types\n * ---------------------*/\nexport interface Option {\n label: string;\n value: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n description?: string;\n}\n\nexport interface DropdownProps {\n options: Option[];\n\n value?: string;\n values?: string[];\n defaultValue?: string;\n defaultValues?: string[];\n\n onChange?: (value: string | string[]) => void;\n\n placeholder?: string;\n disabled?: boolean;\n searchable?: boolean;\n multiSelect?: boolean;\n clearable?: boolean;\n virtualized?: boolean;\n\n width?: string | number;\n dropdownMaxHeight?: string;\n borderRadius?: string;\n boxShadow?: string;\n borderColor?: string;\n accentColor?: string; // ✅ accent color (focus ring + selected)\n theme?: \"light\" | \"dark\" | \"custom\"; // ✅ global theme\n menuBg?: string; // ✅ background override\n controlBg?: string; // ✅ control background\n textColor?: string;\n hoverBg?: string;\n selectedBg?: string;\n disabledBg?: string;\n disabledTextColor?: string;\n placeholderColor?: string;\n\n // animation & transitions\n transitionDuration?: string;\n\n // class/style hooks\n className?: string;\n controlClassName?: string;\n menuClassName?: string;\n optionClassName?: string;\n style?: React.CSSProperties;\n controlStyle?: React.CSSProperties;\n menuStyle?: React.CSSProperties;\n optionStyle?: React.CSSProperties;\n\n // icons\n iconPrefix?: React.ReactNode;\n iconSuffix?: React.ReactNode;\n clearIcon?: React.ReactNode;\n dropdownIcon?: React.ReactNode;\n checkIcon?: React.ReactNode;\n}\n\n/* ----------------------\n * Default theme tokens\n * ---------------------*/\nconst THEMES = {\n light: {\n controlBg: \"#ffffff\",\n menuBg: \"#ffffff\",\n textColor: \"#111827\",\n placeholderColor: \"#6b7280\",\n hoverBg: \"#f9fafb\",\n selectedBg: \"#eff6ff\",\n disabledBg: \"#f3f4f6\",\n disabledTextColor: \"#9ca3af\",\n borderColor: \"#e5e7eb\",\n accentColor: \"#3b82f6\",\n },\n dark: {\n controlBg: \"#1f2937\",\n menuBg: \"#111827\",\n textColor: \"#f9fafb\",\n placeholderColor: \"#9ca3af\",\n hoverBg: \"#374151\",\n selectedBg: \"#2563eb33\",\n disabledBg: \"#374151\",\n disabledTextColor: \"#6b7280\",\n borderColor: \"#374151\",\n accentColor: \"#60a5fa\",\n },\n custom: {} as any,\n};\n\n/* ----------------------\n * Component\n * ---------------------*/\nconst DropdownInner: ForwardRefRenderFunction<HTMLDivElement, DropdownProps> = (\n props,\n ref\n) => {\n const id = useId();\n const {\n options,\n value,\n values,\n defaultValue,\n defaultValues,\n onChange,\n\n placeholder = \"Select...\",\n disabled = false,\n searchable = false,\n multiSelect = false,\n clearable = false,\n virtualized = false,\n\n width = \"100%\",\n dropdownMaxHeight = \"320px\",\n borderRadius = \"8px\",\n boxShadow = \"0 8px 28px rgba(0,0,0,0.1)\",\n borderColor,\n accentColor,\n theme = \"light\",\n menuBg,\n controlBg,\n textColor,\n hoverBg,\n selectedBg,\n disabledBg,\n disabledTextColor,\n placeholderColor,\n transitionDuration = \"180ms\",\n\n className,\n controlClassName,\n menuClassName,\n optionClassName,\n style,\n controlStyle,\n menuStyle,\n optionStyle,\n\n iconPrefix,\n iconSuffix,\n clearIcon = \"×\",\n dropdownIcon = \"▾\",\n checkIcon = \"✓\",\n } = props;\n\n // merge theme colors\n const themeVars = {\n ...THEMES[theme],\n ...(theme === \"custom\" ? {} : {}),\n };\n const colors = {\n borderColor: borderColor ?? themeVars.borderColor,\n accentColor: accentColor ?? themeVars.accentColor,\n controlBg: controlBg ?? themeVars.controlBg,\n menuBg: menuBg ?? themeVars.menuBg,\n textColor: textColor ?? themeVars.textColor,\n hoverBg: hoverBg ?? themeVars.hoverBg,\n selectedBg: selectedBg ?? themeVars.selectedBg,\n disabledBg: disabledBg ?? themeVars.disabledBg,\n disabledTextColor: disabledTextColor ?? themeVars.disabledTextColor,\n placeholderColor: placeholderColor ?? themeVars.placeholderColor,\n };\n\n /* ----------------- State ----------------- */\n const [isOpen, setIsOpen] = useState(false);\n const [selected, setSelected] = useState<string[]>(\n defaultValues ?? (defaultValue ? [defaultValue] : [])\n );\n\n useEffect(() => {\n if (value) setSelected([value]);\n if (values) setSelected(values);\n }, [value, values]);\n\n const selectedOptions = useMemo(\n () => options.filter((o) => selected.includes(o.value)),\n [options, selected]\n );\n\n const toggle = () => !disabled && setIsOpen((s) => !s);\n\n const selectValue = (val: string) => {\n if (multiSelect) {\n const exists = selected.includes(val);\n const next = exists\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n setSelected(next);\n onChange?.(next);\n } else {\n setSelected([val]);\n onChange?.(val);\n setIsOpen(false);\n }\n };\n\n const clearSelection = (e?: React.MouseEvent) => {\n e?.stopPropagation();\n setSelected([]);\n onChange?.(multiSelect ? [] : \"\");\n };\n\n /* ----------------- Render ----------------- */\n return (\n <div\n ref={ref}\n className={className}\n style={{\n position: \"relative\",\n width,\n fontFamily:\n \"Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial\",\n ...style,\n }}\n >\n {/* Control */}\n <div\n className={controlClassName}\n role=\"button\"\n tabIndex={0}\n onClick={toggle}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n background: colors.controlBg,\n color: colors.textColor,\n padding: \"0.5rem 0.75rem\",\n border: `1px solid ${\n isOpen ? colors.accentColor : colors.borderColor\n }`,\n borderRadius,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n boxShadow: isOpen ? `0 0 0 3px ${colors.accentColor}33` : undefined,\n transition: `all ${transitionDuration} ease`,\n ...controlStyle,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n {iconPrefix}\n {selectedOptions.length ? (\n <span>{selectedOptions.map((s) => s.label).join(\", \")}</span>\n ) : (\n <span style={{ color: colors.placeholderColor }}>\n {placeholder}\n </span>\n )}\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n {clearable && selected.length > 0 && (\n <button\n onClick={clearSelection}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: colors.textColor,\n cursor: \"pointer\",\n }}\n >\n {clearIcon}\n </button>\n )}\n {iconSuffix}\n <div\n style={{\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: `transform ${transitionDuration}`,\n }}\n >\n {dropdownIcon}\n </div>\n </div>\n </div>\n\n {/* Menu */}\n {isOpen && (\n <ul\n className={menuClassName}\n style={{\n position: \"absolute\",\n zIndex: 100,\n top: \"calc(100% + 4px)\",\n left: 0,\n right: 0,\n background: colors.menuBg,\n border: `1px solid ${colors.borderColor}`,\n borderRadius,\n boxShadow,\n maxHeight: dropdownMaxHeight,\n overflowY: \"auto\",\n transition: `opacity ${transitionDuration} ease`,\n ...menuStyle,\n }}\n >\n {options.map((opt) => {\n const isSelected = selected.includes(opt.value);\n return (\n <li\n key={opt.value}\n onClick={() => !opt.disabled && selectValue(opt.value)}\n className={optionClassName}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"0.5rem 0.75rem\",\n background: opt.disabled\n ? colors.disabledBg\n : isSelected\n ? colors.selectedBg\n : \"transparent\",\n color: opt.disabled\n ? colors.disabledTextColor\n : colors.textColor,\n cursor: opt.disabled ? \"not-allowed\" : \"pointer\",\n borderRadius: 6,\n userSelect: \"none\",\n ...optionStyle,\n }}\n onMouseEnter={(e) => {\n if (!opt.disabled && !isSelected)\n e.currentTarget.style.backgroundColor = colors.hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!opt.disabled && !isSelected)\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {multiSelect && (\n <span style={{ width: 18, textAlign: \"center\" }}>\n {isSelected ? checkIcon : \"○\"}\n </span>\n )}\n {opt.icon && <span>{opt.icon}</span>}\n <div style={{ flex: 1 }}>\n {opt.label}\n {opt.description && (\n <div\n style={{\n fontSize: 12,\n color: colors.placeholderColor,\n marginTop: 2,\n }}\n >\n {opt.description}\n </div>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n};\n\nexport const Dropdown = forwardRef(DropdownInner);\nexport default Dropdown;\n","\"use client\";\nimport React, {\n useState,\n useRef,\n useImperativeHandle,\n forwardRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputProps {\n type?:\n | \"text\"\n | \"password\"\n | \"email\"\n | \"number\"\n | \"search\"\n | \"tel\"\n | \"url\"\n | \"textarea\";\n label?: string;\n placeholder?: string;\n name?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n success?: boolean;\n autoFocus?: boolean;\n\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n\n /** 🎨 Full Customization Options */\n labelColor?: string;\n placeholderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n borderColor?: string;\n hoverBorderColor?: string;\n focusBorderColor?: string;\n errorColor?: string;\n successColor?: string;\n iconColor?: string;\n shadow?: string;\n\n /** 🧩 Layout + Style Customization */\n fontSize?: string;\n fontFamily?: string;\n radius?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n rows?: number;\n cols?: number;\n maxLength?: number;\n resize?: boolean;\n showCharacterCount?: boolean;\n paddingX?: string;\n paddingY?: string;\n\n /** 🧱 External customization */\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputProps\n>((props, ref) => {\n const {\n type = \"text\",\n label,\n placeholder = \"\",\n name = \"\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n success = false,\n autoFocus = false,\n\n iconLeft,\n iconRight,\n\n /** 🎨 Styling props */\n labelColor = \"#374151\",\n placeholderColor = \"#9ca3af\",\n backgroundColor = \"#ffffff\",\n textColor = \"#111827\",\n borderColor = \"#d1d5db\",\n hoverBorderColor = \"#9ca3af\",\n focusBorderColor = \"#2563eb\",\n errorColor = \"#dc2626\",\n successColor = \"#16a34a\",\n iconColor = \"#6b7280\",\n shadow = \"0 1px 2px rgba(0,0,0,0.05)\",\n\n /** 📏 Layout + size */\n size = \"md\",\n fontSize = \"14px\",\n fontFamily = \"Inter, system-ui, sans-serif\",\n radius = \"8px\",\n rows = 4,\n cols,\n maxLength,\n resize = true,\n showCharacterCount = true,\n paddingX,\n paddingY,\n\n className,\n style,\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n /** ✅ Make it controlled properly */\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const newValue = e.target.value;\n if (maxLength && newValue.length > maxLength) return;\n setLocalValue(newValue);\n if (onChange) onChange(name, newValue);\n };\n\n const currentValue = value !== undefined ? value : localValue;\n\n /** 🎯 Dynamic border colors */\n const currentBorderColor = error\n ? errorColor\n : success\n ? successColor\n : borderColor;\n\n /** 🧠 Size tokens */\n const sizes = {\n sm: { paddingY: \"6px\", paddingX: \"10px\", font: \"13px\" },\n md: { paddingY: \"10px\", paddingX: \"14px\", font: \"14px\" },\n lg: { paddingY: \"14px\", paddingX: \"18px\", font: \"16px\" },\n }[size];\n\n const px = paddingX || sizes.paddingX;\n const py = paddingY || sizes.paddingY;\n\n /** 💅 Base input styles */\n const baseInputStyle: CSSProperties = {\n width: \"100%\",\n border: `1px solid ${currentBorderColor}`,\n borderRadius: radius,\n backgroundColor,\n color: textColor,\n fontFamily,\n fontSize,\n padding: `${py} ${px}`,\n paddingLeft: iconLeft ? \"40px\" : px,\n paddingRight:\n iconRight || type === \"password\" ? \"40px\" : px,\n outline: \"none\",\n transition: \"border-color 0.25s ease, box-shadow 0.25s ease\",\n resize: type === \"textarea\" && !resize ? \"none\" : undefined,\n boxShadow: shadow,\n ...style,\n };\n\n /** 🧠 Placeholder dynamic color */\n const dynamicPlaceholder = {\n \"::placeholder\": {\n color: placeholderColor,\n opacity: 1,\n },\n } as any;\n\n /** 🎨 Dynamic border behavior */\n const applyDynamicBorder = (\n el: HTMLInputElement | HTMLTextAreaElement,\n color: string\n ) => {\n if (el) el.style.borderColor = color;\n };\n\n const commonEvents = {\n onFocus: (e: any) => applyDynamicBorder(e.currentTarget, focusBorderColor),\n onBlur: (e: any) => applyDynamicBorder(e.currentTarget, currentBorderColor),\n onMouseEnter: (e: any) =>\n applyDynamicBorder(e.currentTarget, hoverBorderColor),\n onMouseLeave: (e: any) =>\n applyDynamicBorder(e.currentTarget, currentBorderColor),\n };\n\n return (\n <div\n className={className}\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n fontFamily,\n }}\n >\n {/* Label */}\n {label && (\n <label\n htmlFor={name}\n style={{\n marginBottom: 6,\n color: labelColor,\n fontWeight: 500,\n fontSize: \"14px\",\n }}\n >\n {label}\n {required && <span style={{ color: errorColor }}> *</span>}\n </label>\n )}\n\n <div style={{ position: \"relative\", width: \"100%\" }}>\n {/* Left icon */}\n {iconLeft && (\n <span\n style={{\n position: \"absolute\",\n left: 12,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: iconColor,\n pointerEvents: \"none\",\n }}\n >\n {iconLeft}\n </span>\n )}\n\n {/* Input or Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n cols={cols}\n maxLength={maxLength}\n autoFocus={autoFocus}\n style={{ ...baseInputStyle, ...dynamicPlaceholder }}\n onChange={handleChange}\n {...commonEvents}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n id={name}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n style={{ ...baseInputStyle, ...dynamicPlaceholder }}\n onChange={handleChange}\n {...commonEvents}\n />\n )}\n\n {/* Password visibility toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n style={{\n position: \"absolute\",\n right: 10,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: iconColor,\n padding: 0,\n }}\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Right icon */}\n {iconRight && type !== \"password\" && (\n <span\n style={{\n position: \"absolute\",\n right: 12,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: iconColor,\n pointerEvents: \"none\",\n }}\n >\n {iconRight}\n </span>\n )}\n </div>\n\n {/* Character counter */}\n {type === \"textarea\" && showCharacterCount && maxLength && (\n <div\n style={{\n textAlign: \"right\",\n fontSize: \"12px\",\n color: \"#6b7280\",\n marginTop: 4,\n }}\n >\n {currentValue.length}/{maxLength}\n </div>\n )}\n\n {/* Error text */}\n {error && (\n <div\n style={{\n color: errorColor,\n fontSize: \"12px\",\n marginTop: 4,\n }}\n >\n {error}\n </div>\n )}\n </div>\n );\n});\n","import React, { useMemo, useCallback } from \"react\";\n\ninterface ImageProps {\n /** Image source URL */\n src?: string;\n /** Alternative text (for SEO + accessibility) */\n alt?: string;\n /** Optional title attribute (SEO hint tooltip) */\n title?: string;\n /** Custom width and height */\n width?: string | number;\n height?: string | number;\n /** Border customization */\n borderRadius?: string | number;\n borderColor?: string;\n borderStyle?: \"solid\" | \"dashed\" | \"dotted\" | \"double\" | \"none\";\n borderWidth?: string | number;\n /** Shadow customization */\n shadow?: boolean;\n boxShadow?: string;\n /** Opacity and fit options */\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n /** Overlay and icon layers */\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n /** Layout and responsiveness */\n responsive?: boolean;\n padding?: string | number;\n margin?: string | number;\n /** Performance */\n lazyLoad?: boolean;\n /** Hover interactivity */\n hoverOpacity?: number;\n hoverShadow?: boolean;\n hoverScale?: number;\n hoverRotate?: number;\n transitionDuration?: string;\n /** Overflow handling */\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Class and style overrides */\n className?: string;\n style?: React.CSSProperties;\n /** Event handlers */\n onClick?: (event: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\n/**\n * ✅ Industry-Standard Image Component\n * - SEO & accessibility optimized\n * - Lazy loading & responsive\n * - Fully customizable styling\n * - Smooth hover transitions\n * - Overlay and SVG support\n */\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"100%\",\n height = \"auto\",\n borderRadius = \"8px\",\n borderColor = \"transparent\",\n borderStyle = \"solid\",\n borderWidth = \"0px\",\n shadow = false,\n boxShadow,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n padding,\n margin,\n lazyLoad = true,\n hoverOpacity,\n hoverShadow = false,\n hoverScale = 1,\n hoverRotate = 0,\n transitionDuration = \"0.3s\",\n overflow = \"hidden\",\n className,\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n // ✅ Memoized base style for performance\n const baseStyle = useMemo<React.CSSProperties>(\n () => ({\n width: responsive ? \"100%\" : width,\n height: responsive ? \"auto\" : height,\n borderRadius,\n border: `${borderWidth} ${borderStyle} ${borderColor}`,\n objectFit,\n opacity,\n boxShadow: shadow\n ? boxShadow || \"0 4px 12px rgba(0,0,0,0.15)\"\n : \"none\",\n transition: `all ${transitionDuration} ease`,\n display: \"block\",\n }),\n [\n responsive,\n width,\n height,\n borderRadius,\n borderColor,\n borderStyle,\n borderWidth,\n objectFit,\n opacity,\n shadow,\n boxShadow,\n transitionDuration,\n ]\n );\n\n // ✅ Hover effects\n const handleMouseEnter = useCallback(\n (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity =\n hoverOpacity !== undefined ? hoverOpacity.toString() : \"1\";\n e.currentTarget.style.boxShadow = hoverShadow\n ? \"0 8px 20px rgba(0,0,0,0.3)\"\n : baseStyle.boxShadow || \"none\";\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n },\n [hoverOpacity, hoverShadow, hoverScale, hoverRotate, baseStyle.boxShadow]\n );\n\n const handleMouseLeave = useCallback((e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = baseStyle.opacity?.toString() || \"1\";\n e.currentTarget.style.boxShadow = baseStyle.boxShadow || \"none\";\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n }, [baseStyle]);\n\n // ✅ Overflow control\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 return (\n <div\n className={className}\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n style={{\n width: responsive ? \"100%\" : width,\n height: responsive ? \"auto\" : height,\n padding,\n margin,\n position: \"relative\",\n cursor: onClick ? \"pointer\" : \"default\",\n display: \"inline-block\",\n transition: `all ${transitionDuration} ease`,\n ...overflowStyles,\n ...style,\n }}\n >\n {/* 🖼 SVG or Image */}\n {svgIcon ? (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {svgIcon}\n </div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading={lazyLoad ? \"lazy\" : \"eager\"}\n style={baseStyle}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onLoad={onLoad}\n onError={onError}\n decoding=\"async\"\n fetchPriority=\"high\"\n />\n )}\n\n {/* 🩶 Optional Overlay Text */}\n {overlayText && (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n backgroundColor: overlayColor,\n color: \"#fff\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontWeight: \"bold\",\n fontSize: \"1.1rem\",\n textAlign: \"center\",\n padding: \"1rem\",\n boxSizing: \"border-box\",\n }}\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};\n","import React, { CSSProperties, ReactNode } from \"react\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Interfaces */\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 bulletColor?: string;\n textColor?: string;\n backgroundColor?: string;\n borderColor?: string;\n\n fontSize?: string;\n fontWeight?: string | number;\n borderRadius?: string;\n padding?: string;\n spacing?: string;\n\n className?: string;\n style?: CSSProperties;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemProps extends ListItemType {\n bulletColor?: string;\n textColor?: string;\n fontSize?: string;\n fontWeight?: string | number;\n spacing?: string;\n isInline?: boolean;\n}\n\nexport const ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n bulletColor = \"#2563eb\",\n textColor = \"#111827\",\n fontSize = \"15px\",\n fontWeight = 500,\n spacing = \"12px\",\n isInline = false,\n}) => {\n const itemContainerStyle: CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n marginBottom: isInline ? \"0\" : spacing,\n };\n\n const contentStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n fontSize,\n fontWeight,\n color: textColor,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n };\n\n const bulletStyle: CSSProperties = {\n width: \"8px\",\n height: \"8px\",\n backgroundColor: bulletColor,\n borderRadius: \"50%\",\n flexShrink: 0,\n };\n\n const subListStyle: CSSProperties = {\n listStyleType: \"disc\",\n paddingLeft: \"20px\",\n margin: 0,\n };\n\n return (\n <li style={itemContainerStyle}>\n <div\n style={contentStyle}\n onClick={onClick}\n onMouseEnter={(e) => (e.currentTarget.style.color = bulletColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = textColor)}\n >\n {icon ? (\n <span style={{ fontSize: \"16px\", color: textColor }}>{icon}</span>\n ) : (\n !isInline && <span style={bulletStyle}></span>\n )}\n <span>{text}</span>\n </div>\n\n {subItems && subItems.length > 0 && (\n <ul style={subListStyle}>\n {subItems.map((sub, index) => (\n <ListItem\n key={index}\n {...sub}\n bulletColor={bulletColor}\n textColor={textColor}\n fontSize={fontSize}\n fontWeight={fontWeight}\n spacing={spacing}\n isInline={false}\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 bulletColor = \"#2563eb\",\n textColor = \"#111827\",\n backgroundColor = \"#fff\",\n borderColor = \"#e5e7eb\",\n\n fontSize = \"15px\",\n fontWeight = 500,\n borderRadius = \"12px\",\n padding = \"16px\",\n spacing = \"12px\",\n\n className,\n style,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const containerStyle: CSSProperties = {\n backgroundColor,\n borderColor,\n color: textColor,\n borderWidth: borderColor ? \"1px\" : \"0px\",\n borderStyle: \"solid\",\n borderRadius,\n padding,\n ...style,\n };\n\n const listStyle: CSSProperties = isInline\n ? {\n display: \"flex\",\n gap: spacing,\n paddingLeft: 0,\n listStyleType: \"none\",\n margin: 0,\n }\n : {\n listStyleType: isOrdered ? \"decimal\" : \"none\",\n paddingLeft: isOrdered ? \"20px\" : \"0\",\n margin: 0,\n };\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div className={className} style={containerStyle}>\n {title && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"17px\",\n fontWeight: 600,\n marginBottom: \"10px\",\n gap: \"8px\",\n }}\n >\n {titleIcon && <span style={{ fontSize: \"18px\" }}>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag style={listStyle}>\n {items.map((item, index) => (\n <ListItem\n key={index}\n {...item}\n bulletColor={bulletColor}\n textColor={textColor}\n fontSize={fontSize}\n fontWeight={fontWeight}\n spacing={spacing}\n isInline={isInline}\n />\n ))}\n </ListTag>\n </div>\n );\n};\n","import React, {\n ReactNode,\n CSSProperties,\n useEffect,\n useRef,\n useCallback,\n} from \"react\";\nimport { X } from \"lucide-react\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n ariaLabel?: string;\n title?: string;\n overlayStyle?: CSSProperties;\n modalStyle?: CSSProperties;\n closeButtonStyle?: CSSProperties;\n disableOverlayClose?: boolean;\n transitionDuration?: number;\n className?: string;\n /** Dark mode toggle */\n darkMode?: boolean;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n ariaLabel,\n title,\n overlayStyle,\n modalStyle,\n closeButtonStyle,\n disableOverlayClose = false,\n transitionDuration = 200,\n className,\n darkMode = false,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* ------------------------------ Escape 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 /* ------------------------------ Click Outside ---------------------------- */\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n /* ------------------------------- Base Styles ----------------------------- */\n const baseOverlay: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: darkMode ? \"rgba(0,0,0,0.8)\" : \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1000,\n opacity: isOpen ? 1 : 0,\n transition: `opacity ${transitionDuration}ms ease`,\n ...overlayStyle,\n };\n\n const baseModal: CSSProperties = {\n position: \"relative\",\n backgroundColor: darkMode ? \"#1f1f1f\" : \"#fff\",\n color: darkMode ? \"#f5f5f5\" : \"#111\",\n borderRadius: 12,\n width: \"90vw\",\n maxWidth: 700,\n maxHeight: \"90vh\",\n overflowY: \"auto\",\n padding: 24,\n boxShadow: darkMode\n ? \"0 10px 40px rgba(0,0,0,0.7)\"\n : \"0 10px 40px rgba(0,0,0,0.25)\",\n transform: isOpen ? \"scale(1)\" : \"scale(0.95)\",\n transition: `transform ${transitionDuration}ms ease, opacity ${transitionDuration}ms ease`,\n ...modalStyle,\n };\n\n const baseCloseBtn: CSSProperties = {\n position: \"absolute\",\n top: 16,\n right: 16,\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n padding: 4,\n color: darkMode ? \"#f5f5f5\" : \"#444\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n ...closeButtonStyle,\n };\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n style={baseOverlay}\n onClick={handleOverlayClick}\n className={className}\n >\n <div\n ref={modalRef}\n style={baseModal}\n onClick={(e) => e.stopPropagation()} // prevent close on content click\n >\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n style={baseCloseBtn}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = darkMode ? \"#fff\" : \"#000\";\n e.currentTarget.style.transform = \"scale(1.1)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = darkMode ? \"#f5f5f5\" : \"#444\";\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n <X size={24} />\n </button>\n\n {title && (\n <h2\n style={{\n fontSize: \"1.25rem\",\n fontWeight: 600,\n marginBottom: \"1rem\",\n }}\n >\n {title}\n </h2>\n )}\n\n {children}\n </div>\n </div>\n );\n};\n","import React, { ReactNode, CSSProperties } from \"react\";\n\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 style={{\n overflowX: \"auto\",\n background: \"#ffffff\",\n borderRadius: 12,\n boxShadow: \"0 2px 6px rgba(0,0,0,0.05)\",\n border: \"1px solid #e5e7eb\",\n ...style,\n }}\n className={className}\n >\n <table\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\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={className}\n style={{\n backgroundColor: \"#f3f4f6\",\n color: \"#111827\",\n fontWeight: 600,\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\n/* ---------------------------- Table Body ---------------------------- */\nexport const TBody: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <tbody\n className={className}\n style={{\n backgroundColor: \"#ffffff\",\n ...style,\n }}\n >\n {children}\n </tbody>\n);\n\n/* ---------------------------- Table Row ---------------------------- */\nexport const TRow: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <tr\n className={className}\n style={{\n borderBottom: \"1px solid #e5e7eb\",\n transition: \"background 0.2s ease\",\n cursor: \"default\",\n ...style,\n }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"#f9fafb\")\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={className}\n style={{\n textAlign: \"left\",\n padding: \"12px 16px\",\n fontSize: \"0.875rem\",\n color: \"#374151\",\n borderBottom: \"2px solid #e5e7eb\",\n ...style,\n }}\n >\n {children}\n </th>\n);\n\n/* ---------------------------- Table Data Cell ---------------------------- */\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={className}\n style={{\n padding: \"12px 16px\",\n fontSize: \"0.875rem\",\n color: \"#4b5563\",\n ...style,\n }}\n >\n {children}\n </td>\n);\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:\n 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:\n 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\"\n ? { borderColor }\n : variant === \"underline\"\n ? { borderBottomColor: \"transparent\" }\n : {}),\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 const layoutDir = isVertical ? \"row\" : \"column\";\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\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: 8,\n gap,\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 >\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};\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","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","typeStyles","jsx","CheckCircle","AlertCircle","AlertTriangle","getPositionStyle","position","base","Alert","title","description","dismissible","duration","onClose","icon","actionButton","backgroundColor","borderColor","textColor","borderRadius","shadow","padding","fontSize","fontWeight","descriptionColor","animationDuration","maxWidth","style","visible","setVisible","useState","exiting","setExiting","useEffect","timer","bg","border","iconColor","positionStyle","containerStyle","useMemo","jsxs","Fragment","Accordion","memo","items","allowMultiple","defaultOpen","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","contentPadding","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","openIndexes","setOpenIndexes","contentRefs","useRef","el","toggleItem","prev","i","item","isOpen","e","sizeMap","fontSizeMap","statusSizeMap","getVariantStyles","variant","getStatusPositionStyle","offset","getSpacingOffset","spacing","dim","Avatar","src","alt","isOnline","isOffline","statusClassName","statusStyle","statusPosition","fallback","ring","ringColor","onClick","imageError","setImageError","isHovered","setIsHovered","isResponsive","dimension","statusSize","initials","n","statusColor","statusLabel","showImage","clickable","AvatarGroup","avatars","max","direction","spacingOffset","visibleAvatars","extraCount","avatar","isFirst","zIndex","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","time","skip","seconds","toggleFullscreen","formatTime","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","percent","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","Badge","text","borderWidth","iconPosition","rounded","horizontalPadding","verticalPadding","margin","notificationDot","dotColor","count","pulse","baseStyle","dotStyle","countStyle","iconStyle","defaultColors","adjustColor","amount","hex","Button","iconBefore","iconAfter","fullWidth","disabled","loading","loadingText","darkMode","baseColor","showBorder","hovered","setHovered","theme","light","dark","s","buttonStyle","CardInner","as","background","boxShadow","hoverShadow","height","hoverStyle","baseVariantStyles","cardStyle","handleMouseEnter","handleMouseLeave","ForwardedCard","Card","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","handleChange","updatedValues","v","option","isChecked","RadioGroup","selectedValue","SwitchGroup","switchBgColor","containerWidths","Container","center","styles","computedPadding","computedMargin","computedBorderRadius","getScreenSize","resolveResponsive","screen","Flexbox","align","justify","wrap","gap","overflow","setScreen","updateScreen","computedStyle","toCssValue","val","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","screenSize","setScreenSize","onResize","resolvedColumns","DrawerButton","label","Drawer","open","backdropColor","showCloseButton","closeIconColor","closeButtonStyle","transform","drawerStyle","overlayStyle","defaultCloseButtonStyle","THEMES","DropdownInner","useId","values","defaultValue","defaultValues","placeholder","searchable","multiSelect","clearable","virtualized","dropdownMaxHeight","accentColor","menuBg","controlBg","hoverBg","selectedBg","disabledBg","disabledTextColor","placeholderColor","controlClassName","menuClassName","optionClassName","controlStyle","menuStyle","optionStyle","iconPrefix","iconSuffix","clearIcon","dropdownIcon","checkIcon","themeVars","colors","setIsOpen","selected","setSelected","selectedOptions","o","toggle","selectValue","next","clearSelection","opt","isSelected","Dropdown","Input","success","autoFocus","iconLeft","iconRight","labelColor","hoverBorderColor","focusBorderColor","errorColor","successColor","fontFamily","radius","rows","cols","maxLength","resize","showCharacterCount","inputRef","localValue","setLocalValue","useImperativeHandle","newValue","currentValue","currentBorderColor","sizes","px","py","baseInputStyle","dynamicPlaceholder","applyDynamicBorder","commonEvents","Image","borderStyle","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","lazyLoad","hoverOpacity","hoverScale","hoverRotate","onLoad","onError","useCallback","overflowStyles","ListItem","subItems","bulletColor","isInline","itemContainerStyle","contentStyle","bulletStyle","subListStyle","sub","List","titleIcon","isOrdered","listStyle","ListTag","Modal","ariaLabel","modalStyle","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","baseOverlay","baseModal","baseCloseBtn","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","contentClassName","activeTabStyle","inactiveTabStyle","active","setActive","isMobile","setIsMobile","drawerOpen","setDrawerOpen","containerRef","check","handleKeyDown","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isDisabled","Text","weight","italic","underline","strikethrough","truncate","selectable","hoverable","Element","lightMode","darkModeTheme","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]}