@neuctra/ui 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/components/basic/Accordation.d.ts +9 -13
  2. package/dist/components/basic/Alert.d.ts +10 -23
  3. package/dist/components/basic/Avatar.d.ts +7 -16
  4. package/dist/components/basic/Badge.d.ts +9 -14
  5. package/dist/components/basic/Button.d.ts +9 -19
  6. package/dist/components/basic/CheckboxGroup.d.ts +1 -0
  7. package/dist/components/basic/Container.d.ts +2 -19
  8. package/dist/components/basic/Drawer.d.ts +7 -18
  9. package/dist/components/basic/DropDown.d.ts +20 -40
  10. package/dist/components/basic/FlexView.d.ts +16 -0
  11. package/dist/components/basic/GridView.d.ts +4 -9
  12. package/dist/components/basic/Image.d.ts +10 -31
  13. package/dist/components/basic/Input.d.ts +22 -35
  14. package/dist/components/basic/List.d.ts +6 -20
  15. package/dist/components/basic/Modal.d.ts +8 -8
  16. package/dist/components/basic/RadioGroup.d.ts +1 -0
  17. package/dist/components/basic/Stack.d.ts +4 -14
  18. package/dist/components/basic/SwitchGroup.d.ts +1 -0
  19. package/dist/components/basic/Table.d.ts +6 -1
  20. package/dist/index.cjs.js +82 -52
  21. package/dist/index.cjs.js.map +1 -1
  22. package/dist/index.d.ts +3 -4
  23. package/dist/index.es.js +2060 -2902
  24. package/dist/index.es.js.map +1 -1
  25. package/dist/src/components/basic/Accordation.js +25 -26
  26. package/dist/src/components/basic/Alert.js +33 -138
  27. package/dist/src/components/basic/AudioPlayer.js +54 -40
  28. package/dist/src/components/basic/Avatar.js +41 -154
  29. package/dist/src/components/basic/Badge.js +23 -62
  30. package/dist/src/components/basic/Button.js +24 -97
  31. package/dist/src/components/basic/CheckboxGroup.js +36 -13
  32. package/dist/src/components/basic/Container.js +19 -38
  33. package/dist/src/components/basic/Drawer.js +22 -73
  34. package/dist/src/components/basic/DropDown.js +94 -158
  35. package/dist/src/components/basic/FlexView.js +19 -0
  36. package/dist/src/components/basic/GridView.js +15 -48
  37. package/dist/src/components/basic/Image.js +39 -79
  38. package/dist/src/components/basic/Input.js +68 -109
  39. package/dist/src/components/basic/List.js +20 -62
  40. package/dist/src/components/basic/Modal.js +6 -58
  41. package/dist/src/components/basic/RadioGroup.js +35 -18
  42. package/dist/src/components/basic/Stack.js +19 -72
  43. package/dist/src/components/basic/SwitchGroup.js +42 -16
  44. package/dist/src/components/basic/Table.js +15 -36
  45. package/dist/src/components/basic/Tabs.js +3 -12
  46. package/dist/src/index.js +3 -5
  47. package/dist/types/src/components/basic/Accordation.d.ts +9 -13
  48. package/dist/types/src/components/basic/Alert.d.ts +10 -23
  49. package/dist/types/src/components/basic/Avatar.d.ts +7 -16
  50. package/dist/types/src/components/basic/Badge.d.ts +9 -14
  51. package/dist/types/src/components/basic/Button.d.ts +9 -19
  52. package/dist/types/src/components/basic/CheckboxGroup.d.ts +1 -0
  53. package/dist/types/src/components/basic/Container.d.ts +2 -19
  54. package/dist/types/src/components/basic/Drawer.d.ts +7 -18
  55. package/dist/types/src/components/basic/DropDown.d.ts +20 -40
  56. package/dist/types/src/components/basic/FlexView.d.ts +16 -0
  57. package/dist/types/src/components/basic/GridView.d.ts +4 -9
  58. package/dist/types/src/components/basic/Image.d.ts +10 -31
  59. package/dist/types/src/components/basic/Input.d.ts +22 -35
  60. package/dist/types/src/components/basic/List.d.ts +6 -20
  61. package/dist/types/src/components/basic/Modal.d.ts +8 -8
  62. package/dist/types/src/components/basic/RadioGroup.d.ts +1 -0
  63. package/dist/types/src/components/basic/Stack.d.ts +4 -14
  64. package/dist/types/src/components/basic/SwitchGroup.d.ts +1 -0
  65. package/dist/types/src/components/basic/Table.d.ts +6 -1
  66. package/dist/types/src/index.d.ts +3 -4
  67. package/dist/ui.css +1 -1
  68. package/package.json +2 -1
  69. package/dist/components/basic/Card.d.ts +0 -28
  70. package/dist/components/basic/Flexbox.d.ts +0 -25
  71. package/dist/components/basic/Section.d.ts +0 -36
  72. package/dist/src/components/basic/Card.js +0 -47
  73. package/dist/src/components/basic/Flexbox.js +0 -67
  74. package/dist/src/components/basic/Section.js +0 -100
  75. package/dist/types/src/components/basic/Card.d.ts +0 -28
  76. package/dist/types/src/components/basic/Flexbox.d.ts +0 -25
  77. package/dist/types/src/components/basic/Section.d.ts +0 -36
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/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]}
1
+ {"version":3,"file":"index.es.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/eye-off.js","../node_modules/lucide-react/dist/esm/icons/eye.js","../node_modules/lucide-react/dist/esm/icons/heart.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/maximize.js","../node_modules/lucide-react/dist/esm/icons/minimize.js","../node_modules/lucide-react/dist/esm/icons/music.js","../node_modules/lucide-react/dist/esm/icons/pause.js","../node_modules/lucide-react/dist/esm/icons/play.js","../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js","../node_modules/lucide-react/dist/esm/icons/shuffle.js","../node_modules/lucide-react/dist/esm/icons/skip-back.js","../node_modules/lucide-react/dist/esm/icons/skip-forward.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/volume-2.js","../node_modules/lucide-react/dist/esm/icons/volume-x.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/basic/Alert.tsx","../src/components/basic/Accordation.tsx","../src/components/basic/Avatar.tsx","../src/components/basic/AudioPlayer.tsx","../src/components/basic/AudioGallery.tsx","../node_modules/clsx/dist/clsx.mjs","../src/components/basic/Badge.tsx","../src/components/basic/Button.tsx","../src/components/basic/CheckboxGroup.tsx","../src/components/basic/RadioGroup.tsx","../src/components/basic/SwitchGroup.tsx","../src/components/basic/Container.tsx","../src/components/basic/FlexView.tsx","../src/components/basic/Stack.tsx","../src/components/basic/GridView.tsx","../src/components/basic/Drawer.tsx","../src/components/basic/DropDown.tsx","../src/components/basic/Input.tsx","../src/components/basic/Image.tsx","../src/components/basic/List.tsx","../src/components/basic/Modal.tsx","../src/components/basic/Table.tsx","../src/components/basic/Tabs.tsx","../src/components/basic/Text.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\"path\", { d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\", key: \"151rxh\" }],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst EyeOff = createLucideIcon(\"eye-off\", __iconNode);\n\nexport { __iconNode, EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\n key: \"mvr1a0\"\n }\n ]\n];\nconst Heart = createLucideIcon(\"heart\", __iconNode);\n\nexport { __iconNode, Heart as default };\n//# sourceMappingURL=heart.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3H5a2 2 0 0 0-2 2v3\", key: \"1dcmit\" }],\n [\"path\", { d: \"M21 8V5a2 2 0 0 0-2-2h-3\", key: \"1e4gt3\" }],\n [\"path\", { d: \"M3 16v3a2 2 0 0 0 2 2h3\", key: \"wsl5sc\" }],\n [\"path\", { d: \"M16 21h3a2 2 0 0 0 2-2v-3\", key: \"18trek\" }]\n];\nconst Maximize = createLucideIcon(\"maximize\", __iconNode);\n\nexport { __iconNode, Maximize as default };\n//# sourceMappingURL=maximize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3v3a2 2 0 0 1-2 2H3\", key: \"hohbtr\" }],\n [\"path\", { d: \"M21 8h-3a2 2 0 0 1-2-2V3\", key: \"5jw1f3\" }],\n [\"path\", { d: \"M3 16h3a2 2 0 0 1 2 2v3\", key: \"198tvr\" }],\n [\"path\", { d: \"M16 21v-3a2 2 0 0 1 2-2h3\", key: \"ph8mxp\" }]\n];\nconst Minimize = createLucideIcon(\"minimize\", __iconNode);\n\nexport { __iconNode, Minimize as default };\n//# sourceMappingURL=minimize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 18V5l12-2v13\", key: \"1jmyc2\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"circle\", { cx: \"18\", cy: \"16\", r: \"3\", key: \"1hluhg\" }]\n];\nconst Music = createLucideIcon(\"music\", __iconNode);\n\nexport { __iconNode, Music as default };\n//# sourceMappingURL=music.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m18 14 4 4-4 4\", key: \"10pe0f\" }],\n [\"path\", { d: \"m18 2 4 4-4 4\", key: \"pucp1d\" }],\n [\"path\", { d: \"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22\", key: \"1ailkh\" }],\n [\"path\", { d: \"M2 6h1.972a4 4 0 0 1 3.6 2.2\", key: \"km57vx\" }],\n [\"path\", { d: \"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45\", key: \"os18l9\" }]\n];\nconst Shuffle = createLucideIcon(\"shuffle\", __iconNode);\n\nexport { __iconNode, Shuffle as default };\n//# sourceMappingURL=shuffle.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z\",\n key: \"15892j\"\n }\n ],\n [\"path\", { d: \"M3 20V4\", key: \"1ptbpl\" }]\n];\nconst SkipBack = createLucideIcon(\"skip-back\", __iconNode);\n\nexport { __iconNode, SkipBack as default };\n//# sourceMappingURL=skip-back.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 4v16\", key: \"7j8fe9\" }],\n [\n \"path\",\n {\n d: \"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z\",\n key: \"zs4d6\"\n }\n ]\n];\nconst SkipForward = createLucideIcon(\"skip-forward\", __iconNode);\n\nexport { __iconNode, SkipForward as default };\n//# sourceMappingURL=skip-forward.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"path\", { d: \"M16 9a5 5 0 0 1 0 6\", key: \"1q6k2b\" }],\n [\"path\", { d: \"M19.364 18.364a9 9 0 0 0 0-12.728\", key: \"ijwkga\" }]\n];\nconst Volume2 = createLucideIcon(\"volume-2\", __iconNode);\n\nexport { __iconNode, Volume2 as default };\n//# sourceMappingURL=volume-2.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"9\", y2: \"15\", key: \"1ewh16\" }],\n [\"line\", { x1: \"16\", x2: \"22\", y1: \"9\", y2: \"15\", key: \"5ykzw1\" }]\n];\nconst VolumeX = createLucideIcon(\"volume-x\", __iconNode);\n\nexport { __iconNode, VolumeX as default };\n//# sourceMappingURL=volume-x.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","\"use client\";\n\nimport React, { createContext, useContext, useState, ReactNode, useCallback } from \"react\";\nimport { X, Info, CheckCircle, AlertCircle, AlertTriangle } from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\n\ninterface Toast {\n id: number;\n title?: string;\n description?: string;\n type?: AlertType;\n duration?: number;\n}\n\ninterface ToastContextProps {\n addToast: (toast: Omit<Toast, \"id\">) => void;\n}\n\nconst ToastContext = createContext<ToastContextProps | undefined>(undefined);\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) throw new Error(\"useToast must be used within ToastProvider\");\n return context;\n};\n\nexport const ToastProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const removeToast = useCallback((id: number) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const addToast = useCallback((toast: Omit<Toast, \"id\">) => {\n const id = Date.now() + Math.random();\n setToasts((prev) => [...prev, { ...toast, id }]);\n if (toast.duration !== 0) {\n setTimeout(() => removeToast(id), toast.duration ?? 4000);\n }\n }, [removeToast]);\n\n return (\n <ToastContext.Provider value={{ addToast }}>\n {children}\n {/* Toast container */}\n <div className=\"fixed top-5 right-5 flex flex-col gap-3 z-50\">\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onClose={() => removeToast(toast.id)} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n};\n\nconst typeStyles: Record<AlertType, { bg: string; border: string; icon: ReactNode }> = {\n success: { bg: \"bg-green-50\", border: \"border-green-400\", icon: <CheckCircle size={20} className=\"text-green-600\" /> },\n error: { bg: \"bg-red-50\", border: \"border-red-400\", icon: <AlertCircle size={20} className=\"text-red-600\" /> },\n warning: { bg: \"bg-yellow-50\", border: \"border-yellow-400\", icon: <AlertTriangle size={20} className=\"text-yellow-600\" /> },\n info: { bg: \"bg-blue-50\", border: \"border-blue-400\", icon: <Info size={20} className=\"text-blue-600\" /> },\n};\n\nconst ToastItem: React.FC<{ toast: Toast; onClose: () => void }> = ({ toast, onClose }) => {\n const { title, description, type = \"info\" } = toast;\n const { bg, border, icon } = typeStyles[type];\n\n return (\n <div\n className={`flex items-start gap-3 p-4 border-l-4 rounded shadow ${bg} ${border} animate-slide-in-right`}\n role=\"alert\"\n >\n <div>{icon}</div>\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"font-semibold text-sm mb-1\">{title}</div>}\n {description && <div className=\"text-sm text-gray-700\">{description}</div>}\n </div>\n <button onClick={onClose} className=\"text-gray-500 hover:text-gray-700\">\n <X size={16} />\n </button>\n </div>\n );\n};\n\n// Add this animation to your global CSS (Tailwind + @layer utilities)\n// @keyframes slide-in-right {\n// 0% { transform: translateX(100%); opacity: 0; }\n// 100% { transform: translateX(0); opacity: 1; }\n// }\n// .animate-slide-in-right { animation: slide-in-right 0.3s ease forwards; }","\"use client\";\nimport React, {\n useState,\n useRef,\n useEffect,\n memo,\n ReactNode,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\n\nexport interface AccordionItem {\n title: string | ReactNode;\n content: ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n allowMultiple?: boolean;\n defaultOpen?: number[];\n\n /** Appearance */\n borderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverBgColor?: string;\n hoverTextColor?: string;\n contentBgColor?: string;\n contentTextColor?: string;\n\n /** Layout & spacing */\n paddingY?: string | number;\n paddingX?: string | number;\n marginY?: string | number;\n borderRadius?: string | number;\n contentPadding?: string | number;\n\n /** Typography */\n fontSize?: string | number;\n fontWeight?: string | number;\n contentFontSize?: string | number;\n contentFontWeight?: string | number;\n\n /** Icon */\n iconOpen?: ReactNode;\n iconClose?: ReactNode;\n iconSize?: string | number;\n\n /** Motion */\n transitionDuration?: string;\n shadow?: string;\n\n /** Class overrides */\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Accordion: React.FC<AccordionProps> = memo(\n ({\n items,\n allowMultiple = false,\n defaultOpen = [],\n borderColor = \"#e5e7eb\",\n backgroundColor = \"#fff\",\n textColor = \"#111827\",\n hoverBgColor = \"#f3f4f6\",\n hoverTextColor = \"#111827\",\n contentBgColor = \"#fff\",\n contentTextColor = \"#374151\",\n paddingY = \"1rem\",\n paddingX = \"1rem\",\n marginY = \"0.5rem\",\n borderRadius = \"0.5rem\",\n contentPadding = \"1rem\",\n fontSize = \"1rem\",\n fontWeight = 600,\n contentFontSize = \"0.95rem\",\n contentFontWeight = 400,\n iconOpen,\n iconClose,\n iconSize = \"1.25rem\",\n transitionDuration = \"300ms\",\n shadow = \"0 1px 4px rgba(0,0,0,0.08)\",\n className = \"\",\n style,\n }) => {\n const [openIndexes, setOpenIndexes] = useState<number[]>(defaultOpen);\n const contentRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n useEffect(() => {\n contentRefs.current.forEach((el, index) => {\n if (el) {\n el.style.maxHeight = openIndexes.includes(index)\n ? `${el.scrollHeight}px`\n : \"0px\";\n }\n });\n }, [openIndexes]);\n\n const toggleItem = (index: number) => {\n setOpenIndexes((prev) =>\n allowMultiple\n ? prev.includes(index)\n ? prev.filter((i) => i !== index)\n : [...prev, index]\n : prev.includes(index)\n ? []\n : [index],\n );\n };\n\n // Helper to normalize CSS values (number -> px)\n const toCssValue = (value: string | number | undefined) =>\n value !== undefined\n ? typeof value === \"number\"\n ? `${value}px`\n : value\n : undefined;\n\n return (\n <div\n className={`space-y-2 ${className}`}\n style={{ width: \"100%\", ...style }}\n >\n {items.map((item, index) => {\n const isOpen = openIndexes.includes(index);\n\n return (\n <div\n key={index}\n className=\"border shadow-sm overflow-hidden transition-all duration-300\"\n style={{\n borderColor,\n borderRadius: toCssValue(borderRadius),\n margin: `${toCssValue(marginY)} 0`,\n boxShadow: shadow,\n }}\n >\n {/* Header */}\n <button\n onClick={() => toggleItem(index)}\n className=\"w-full flex justify-between items-center transition-colors duration-300\"\n style={{\n backgroundColor,\n color: textColor,\n padding: `${toCssValue(paddingY)} ${toCssValue(paddingX)}`,\n fontWeight,\n fontSize: toCssValue(fontSize),\n cursor: \"pointer\",\n border: \"none\",\n outline: \"none\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = hoverBgColor;\n e.currentTarget.style.color = hoverTextColor;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = backgroundColor;\n e.currentTarget.style.color = textColor;\n }}\n >\n <span>{item.title}</span>\n <span style={{ fontSize: toCssValue(iconSize) }}>\n {isOpen\n ? iconOpen || <ChevronUp size={16} />\n : iconClose || <ChevronDown size={16} />}\n </span>\n </button>\n\n {/* Content */}\n <div\n ref={(el) => {\n contentRefs.current[index] = el;\n }}\n className=\"overflow-hidden transition-all duration-300\"\n style={{\n maxHeight: isOpen\n ? `${contentRefs.current[index]?.scrollHeight ?? 0}px`\n : \"0px\",\n transition: `max-height ${transitionDuration} ease-in-out`,\n }}\n >\n <div\n style={{\n borderTop: `1px solid ${borderColor}`,\n backgroundColor: contentBgColor,\n color: contentTextColor,\n padding: toCssValue(contentPadding),\n fontSize: toCssValue(contentFontSize),\n fontWeight: contentFontWeight,\n }}\n >\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n\nAccordion.displayName = \"Accordion\";\n","\"use client\";\n\nimport React, { useState, CSSProperties } from \"react\";\nimport { User } from \"lucide-react\";\n\ntype AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"responsive\";\ntype AvatarVariant = \"circular\" | \"rounded\" | \"square\";\ntype StatusPosition = \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n\ninterface AvatarProps {\n src?: string;\n alt?: string;\n size?: AvatarSize;\n variant?: AvatarVariant;\n isOnline?: boolean;\n isOffline?: boolean;\n ring?: boolean;\n ringColor?: string;\n fallback?: string;\n onClick?: () => void;\n statusPosition?: StatusPosition;\n className?: string;\n statusClassName?: string;\n style?: CSSProperties;\n statusStyle?: CSSProperties;\n}\n\n// --- Base maps ---\nconst sizeMap: Record<Exclude<AvatarSize, \"responsive\">, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 64,\n};\n\nconst fontSizeMap: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"text-[10px]\",\n sm: \"text-[12px]\",\n md: \"text-[14px]\",\n lg: \"text-[16px]\",\n xl: \"text-[18px]\",\n \"2xl\": \"text-[20px]\",\n};\n\nconst dimensionMap: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"w-6 h-6\",\n sm: \"w-8 h-8\",\n md: \"w-10 h-10\",\n lg: \"w-12 h-12\",\n xl: \"w-14 h-14\",\n \"2xl\": \"w-16 h-16\",\n};\n\nconst variantMap: Record<AvatarVariant, string> = {\n circular: \"rounded-full\",\n rounded: \"rounded-lg\",\n square: \"rounded-none\",\n};\n\nconst statusPositionMap: Record<StatusPosition, string> = {\n \"top-left\": \"top-0 left-0\",\n \"top-right\": \"top-0 right-0\",\n \"bottom-left\": \"bottom-0 left-0\",\n \"bottom-right\": \"bottom-0 right-0\",\n};\n\n// --- Avatar Component ---\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"User avatar\",\n size = \"md\",\n variant = \"circular\",\n isOnline = false,\n isOffline = false,\n fallback,\n ring = false,\n ringColor = \"#3b82f6\",\n onClick,\n statusPosition = \"bottom-right\",\n className = \"\",\n statusClassName = \"\",\n style,\n statusStyle,\n}) => {\n const [imageError, setImageError] = useState(false);\n const clickable = !!onClick;\n\n const initials =\n fallback ||\n alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const statusColor = isOnline ? \"bg-green-500\" : isOffline ? \"bg-gray-400\" : \"\";\n\n // Width/height for inline styles\n const dimensionPx = sizeMap[size as Exclude<AvatarSize, \"responsive\">];\n\n return (\n <div\n role={clickable ? \"button\" : \"img\"}\n tabIndex={clickable ? 0 : -1}\n aria-label={alt}\n onClick={onClick}\n className={`relative inline-flex items-center justify-center overflow-hidden ${dimensionMap[size as Exclude<AvatarSize, \"responsive\">]} ${variantMap[variant]} transition-all duration-200 ${\n clickable ? \"cursor-pointer hover:scale-105\" : \"\"\n } ${ring ? \"ring-2\" : \"\"} ${className}`}\n style={{\n ...style,\n ...(ring ? { boxShadow: `0 0 0 2px ${ringColor}` } : {}),\n }}\n onKeyDown={(e) => {\n if (clickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {src && !imageError ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n className={`w-full h-full object-cover ${variantMap[variant]} transition-opacity duration-300`}\n />\n ) : (\n <div\n className={`w-full h-full flex items-center justify-center bg-gradient-to-tr from-purple-500 to-blue-500 text-white font-semibold ${fontSizeMap[size as Exclude<AvatarSize, \"responsive\">]} ${variantMap[variant]}`}\n >\n {initials || <User className=\"text-white\" />}\n </div>\n )}\n\n {(isOnline || isOffline) && (\n <span\n aria-label={isOnline ? \"Online\" : \"Offline\"}\n title={isOnline ? \"Online\" : \"Offline\"}\n className={`absolute ${statusPositionMap[statusPosition]} ${statusColor} border-2 border-white rounded-full shadow-sm ${statusClassName}`}\n style={{\n width: dimensionPx / 3,\n height: dimensionPx / 3,\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};","\"use client\";\n\nimport React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n} from \"lucide-react\";\n\ninterface AudioPlayerProps {\n src: string;\n thumbnail?: string;\n autoPlay?: boolean;\n loop?: boolean;\n backgroundColor?: string;\n primaryColor?: string;\n secondaryColor?: string;\n borderRadius?: string;\n className?: string;\n padding?: string;\n width?: string;\n}\n\nexport const AudioPlayer: React.FC<AudioPlayerProps> = ({\n src,\n thumbnail,\n autoPlay = false,\n loop = false,\n backgroundColor = \"#0a0a0a\",\n primaryColor = \"#10b981\",\n secondaryColor = \"#ffffff\",\n borderRadius = \"12px\",\n padding = \"12px\",\n width = \"100%\",\n className,\n}) => {\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const [isPlaying, setIsPlaying] = useState(autoPlay);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.volume = volume;\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.loop = isLooping;\n }, [isLooping]);\n\n const togglePlayPause = () => {\n if (!audioRef.current) return;\n isPlaying ? audioRef.current.pause() : audioRef.current.play();\n setIsPlaying(!isPlaying);\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n setDuration(audioRef.current.duration);\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n audioRef.current.currentTime = percent * duration;\n setCurrentTime(percent * duration);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current) audioRef.current.currentTime += seconds;\n };\n\n const toggleFullscreen = () => {\n if (!playerRef.current) return;\n isFullscreen\n ? document.exitFullscreen?.()\n : playerRef.current.requestFullscreen?.();\n setIsFullscreen(!isFullscreen);\n };\n\n const formatTime = (time: number) => {\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n return (\n <div\n ref={playerRef}\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n width,\n backgroundColor,\n borderRadius,\n padding,\n boxSizing: \"border-box\",\n color: secondaryColor,\n boxShadow: \"0 6px 16px rgba(0,0,0,0.2)\",\n flexWrap: \"wrap\",\n }}\n >\n <audio\n ref={audioRef}\n src={src}\n autoPlay={autoPlay}\n loop={loop}\n onTimeUpdate={handleTimeUpdate}\n onLoadedMetadata={handleTimeUpdate}\n />\n\n {/* Thumbnail / Avatar */}\n {thumbnail && (\n <img\n src={thumbnail}\n alt=\"Audio Thumbnail\"\n style={{\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n />\n )}\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n flex: 1,\n minWidth: \"0\",\n }}\n >\n <button\n onClick={() => skip(-10)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: secondaryColor,\n cursor: \"pointer\",\n }}\n aria-label=\"Skip Back 10s\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={togglePlayPause}\n style={{\n background: primaryColor,\n borderRadius: \"50%\",\n padding: \"10px\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={20} /> : <Play size={20} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: secondaryColor,\n cursor: \"pointer\",\n }}\n aria-label=\"Skip Forward 10s\"\n >\n <SkipForward size={20} />\n </button>\n\n {/* Seek Bar */}\n <div\n onClick={handleSeek}\n style={{\n flex: 1,\n height: \"6px\",\n background: \"#444\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"3px\",\n }}\n />\n </div>\n\n {/* Time */}\n <div style={{ minWidth: \"70px\", textAlign: \"right\", fontSize: \"0.8rem\" }}>\n {formatTime(currentTime)} / {formatTime(duration)}\n </div>\n\n {/* Extra Controls */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: isLooping ? primaryColor : secondaryColor,\n }}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={18} />\n </button>\n\n <button\n onClick={() => setVolume(volume > 0 ? 0 : 0.7)}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: secondaryColor,\n }}\n aria-label=\"Toggle Mute\"\n >\n {volume > 0 ? <Volume2 size={18} /> : <VolumeX size={18} />}\n </button>\n\n <button\n onClick={toggleFullscreen}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: secondaryColor,\n }}\n aria-label=\"Toggle Fullscreen\"\n >\n {isFullscreen ? <Minimize size={18} /> : <Maximize size={18} />}\n </button>\n </div>\n </div>\n </div>\n );\n};","import React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n Download,\n Heart,\n Share2,\n Music,\n Shuffle,\n} from \"lucide-react\";\n\ninterface AudioTrack {\n src: string;\n title: string;\n artist?: string;\n thumbnail?: string;\n duration?: string;\n}\n\ninterface AudioGalleryProps {\n tracks?: AudioTrack[];\n className?: string;\n galleryTitle?: string;\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n secondaryColor?: string;\n autoplay?: boolean;\n borderColor?: string;\n border?: number;\n maxWidth?: number;\n loop?: boolean;\n}\n\nconst defaultTracks: AudioTrack[] = [\n {\n src: \"https://www.soundjay.com/misc/sounds/bell-ringing-05.wav\",\n title: \"Morning Bell\",\n artist: \"Nature Sounds\",\n duration: \"0:15\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-4.wav\",\n title: \"Digital Click\",\n artist: \"Tech Audio\",\n duration: \"0:05\",\n thumbnail:\n \"https://images.unsplash.com/photo-1514525253161-7a46d19cd819?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-10.wav\",\n title: \"Soft Chime\",\n artist: \"Ambient Studio\",\n duration: \"0:08\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n];\n\nexport function AudioGallery({\n tracks = defaultTracks,\n className = \"\",\n galleryTitle = \"Audio Gallery\",\n primaryColor = \"#8b5cf6\",\n backgroundColor = \"#0f0f23\",\n textColor = \"#e4e4e7\",\n secondaryColor = \"#1a1a2e\",\n border = 0,\n borderColor,\n maxWidth = 420,\n autoplay = false,\n loop = false,\n}: AudioGalleryProps) {\n const [currentTrackIndex, setCurrentTrackIndex] = useState<number | null>(\n null\n );\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n const [isShuffle, setIsShuffle] = useState(false);\n const [isLiked, setIsLiked] = useState(false);\n const [showVolumeSlider, setShowVolumeSlider] = useState(false);\n\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const volumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.volume = volume;\n }\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.loop = isLooping;\n }\n }, [isLooping]);\n\n useEffect(() => {\n if (currentTrackIndex === null && audioRef.current) {\n audioRef.current.pause();\n setIsPlaying(false);\n setCurrentTime(0);\n setDuration(0);\n }\n }, [currentTrackIndex]);\n\n const playPauseTrack = (index: number) => {\n if (currentTrackIndex === index) {\n if (!audioRef.current) return;\n if (audioRef.current.paused) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n } else {\n audioRef.current.pause();\n setIsPlaying(false);\n }\n } else {\n setCurrentTrackIndex(index);\n setTimeout(() => {\n if (audioRef.current) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }, 100);\n }\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n if (audioRef.current.duration) {\n setDuration(audioRef.current.duration);\n }\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current || !duration) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const seekTime = percent * duration;\n audioRef.current.currentTime = seekTime;\n setCurrentTime(seekTime);\n };\n\n const handleVolumeChange = (e: React.MouseEvent<HTMLDivElement>) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const newVolume = Math.max(0, Math.min(1, percent));\n setVolume(newVolume);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current && duration) {\n let newTime = audioRef.current.currentTime + seconds;\n newTime = Math.min(Math.max(newTime, 0), duration);\n audioRef.current.currentTime = newTime;\n setCurrentTime(newTime);\n }\n };\n\n const nextTrack = () => {\n if (currentTrackIndex === null) return;\n let nextIndex;\n if (isShuffle) {\n nextIndex = Math.floor(Math.random() * tracks.length);\n } else {\n nextIndex = (currentTrackIndex + 1) % tracks.length;\n }\n playPauseTrack(nextIndex);\n };\n\n const prevTrack = () => {\n if (currentTrackIndex === null) return;\n let prevIndex;\n if (isShuffle) {\n prevIndex = Math.floor(Math.random() * tracks.length);\n } else {\n prevIndex = (currentTrackIndex - 1 + tracks.length) % tracks.length;\n }\n playPauseTrack(prevIndex);\n };\n\n const toggleMute = () => {\n setVolume((prev) => (prev > 0 ? 0 : 0.7));\n };\n\n const showVolume = () => {\n setShowVolumeSlider(true);\n if (volumeTimeoutRef.current) {\n clearTimeout(volumeTimeoutRef.current);\n }\n volumeTimeoutRef.current = setTimeout(() => {\n setShowVolumeSlider(false);\n }, 3000);\n };\n\n const formatTime = (time: number) => {\n if (isNaN(time)) return \"0:00\";\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n const currentTrack =\n currentTrackIndex !== null ? tracks[currentTrackIndex] : null;\n\n return (\n <div\n className={className}\n style={{\n maxWidth: `${maxWidth}px`,\n margin: \"20px auto\",\n background: `linear-gradient(145deg, ${backgroundColor}, ${secondaryColor})`,\n color: textColor,\n borderRadius: \"24px\",\n padding: \"24px 16px\",\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n userSelect: \"none\",\n backdropFilter: \"blur(20px)\",\n border: `${border}px solid ${borderColor}40`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"12px\",\n background: `linear-gradient(135deg, ${primaryColor}, ${secondaryColor})`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Music size={20} color=\"white\" />\n </div>\n <div>\n <h2\n style={{\n margin: 0,\n fontSize: \"1.25rem\",\n fontWeight: \"700\",\n color: primaryColor, // fallback for browsers without WebkitTextFillColor\n }}\n >\n {galleryTitle}\n </h2>\n <p style={{ margin: 0, fontSize: \"0.875rem\", opacity: 0.7 }}>\n {tracks.length} tracks\n </p>\n </div>\n </div>\n\n <button\n onClick={() => setIsShuffle(!isShuffle)}\n style={{\n background: isShuffle ? primaryColor : \"transparent\",\n border: \"none\",\n borderRadius: \"12px\",\n padding: \"8px\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n opacity: isShuffle ? 1 : 0.6,\n }}\n aria-label=\"Toggle Shuffle\"\n >\n <Shuffle size={18} color={isShuffle ? \"white\" : textColor} />\n </button>\n </div>\n\n {/* Track List */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n marginBottom: \"20px\",\n maxHeight: \"240px\",\n overflowY: \"auto\",\n paddingRight: \"4px\",\n }}\n >\n {tracks.map((track, index) => {\n const isActive = currentTrackIndex === index;\n const isCurrentlyPlaying = isActive && isPlaying;\n\n return (\n <div\n key={index}\n onClick={() => playPauseTrack(index)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"12px 16px\",\n borderRadius: \"16px\",\n background: isActive\n ? `linear-gradient(135deg, ${primaryColor}20, ${primaryColor}10)`\n : \"rgba(255,255,255,0.05)\",\n border: isActive\n ? `1px solid ${primaryColor}40`\n : \"1px solid transparent\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n backdropFilter: isActive ? `blur(20px)` : \"none\",\n }}\n >\n {/* Thumbnail */}\n <div\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"12px\",\n background: track.thumbnail\n ? `url(${track.thumbnail}) center/cover`\n : primaryColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"12px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {!track.thumbnail && <Music size={20} color=\"white\" />}\n {isCurrentlyPlaying && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n width: \"16px\",\n height: \"16px\",\n display: \"flex\",\n gap: \"2px\",\n alignItems: \"end\",\n justifyContent: \"center\",\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n style={{\n width: \"3px\",\n background: \"white\",\n borderRadius: \"2px\",\n animation: `equalizer 1s ease-in-out infinite ${\n i * 0.2\n }s`,\n height: \"12px\",\n }}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Track Info */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontWeight: \"600\",\n fontSize: \"0.95rem\",\n color: isActive ? primaryColor : textColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.title}\n </div>\n {track.artist && (\n <div\n style={{\n fontSize: \"0.8rem\",\n opacity: 0.7,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.artist}\n </div>\n )}\n </div>\n\n {/* Duration & Play Button */}\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n >\n {track.duration && (\n <span style={{ fontSize: \"0.8rem\", opacity: 0.6 }}>\n {track.duration}\n </span>\n )}\n <div\n style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"8px\",\n background: isActive\n ? primaryColor\n : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n }}\n >\n {isCurrentlyPlaying ? (\n <Pause size={16} color=\"white\" />\n ) : (\n <Play size={16} color=\"white\" />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Current Track Display & Controls */}\n {currentTrack && (\n <div\n ref={playerRef}\n style={{\n background: `linear-gradient(135deg, ${secondaryColor}, ${backgroundColor})`,\n borderRadius: \"20px\",\n padding: \"20px\",\n border: `1px solid ${primaryColor}40`,\n backdropFilter: \"blur(20px)\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {/* Background Blur Effect */}\n {currentTrack.thumbnail && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundImage: `url(${currentTrack.thumbnail})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n filter: \"blur(60px) opacity(0.1)\",\n transform: \"scale(1.1)\",\n }}\n />\n )}\n\n {/* Content */}\n <div style={{ position: \"relative\", zIndex: 1 }}>\n {/* Track Info */}\n <div style={{ textAlign: \"center\", marginBottom: \"20px\" }}>\n <h3\n style={{\n margin: \"0 0 4px 0\",\n fontSize: \"1.1rem\",\n fontWeight: \"700\",\n color: primaryColor,\n }}\n >\n {currentTrack.title}\n </h3>\n {currentTrack.artist && (\n <p style={{ margin: 0, opacity: 0.7, fontSize: \"0.9rem\" }}>\n {currentTrack.artist}\n </p>\n )}\n </div>\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"20px\",\n marginBottom: \"20px\",\n }}\n >\n <button\n onClick={prevTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Previous Track\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={() => skip(-10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip back 10 seconds\"\n >\n <SkipBack size={16} />\n <span style={{ fontSize: \"0.7rem\", marginLeft: \"2px\" }}>\n 10\n </span>\n </button>\n\n <button\n onClick={() => {\n if (!audioRef.current) return;\n if (isPlaying) {\n audioRef.current.pause();\n setIsPlaying(false);\n } else {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }}\n style={{\n ...controlButtonStyle(\"#fff\", primaryColor),\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n boxShadow: `0 8px 25px ${primaryColor}40`,\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={24} /> : <Play size={24} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip forward 10 seconds\"\n >\n <span style={{ fontSize: \"0.7rem\", marginRight: \"2px\" }}>\n 10\n </span>\n <SkipForward size={16} />\n </button>\n\n <button\n onClick={nextTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Next Track\"\n >\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Progress Bar */}\n <div style={{ marginBottom: \"16px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"8px\",\n fontSize: \"0.8rem\",\n opacity: 0.7,\n }}\n >\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n\n <div\n onClick={handleSeek}\n style={{\n height: \"6px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: `linear-gradient(90deg, ${primaryColor}, #ec4899)`,\n borderRadius: \"3px\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n right: \"-6px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: \"12px\",\n height: \"12px\",\n background: primaryColor,\n borderRadius: \"50%\",\n boxShadow: `0 2px 8px ${primaryColor}60`,\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Additional Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLiked(!isLiked)}\n style={controlButtonStyle(\n isLiked ? \"#ec4899\" : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Like\"\n >\n <Heart size={16} fill={isLiked ? \"#ec4899\" : \"none\"} />\n </button>\n\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={controlButtonStyle(\n isLooping ? primaryColor : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={16} />\n </button>\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n position: \"relative\",\n }}\n >\n {showVolumeSlider && (\n <div\n onClick={handleVolumeChange}\n style={{\n width: \"80px\",\n height: \"4px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"2px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${volume * 100}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"2px\",\n }}\n />\n </div>\n )}\n\n <button\n onClick={toggleMute}\n onMouseEnter={showVolume}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label={volume > 0 ? \"Mute\" : \"Unmute\"}\n >\n {volume > 0 ? <Volume2 size={16} /> : <VolumeX size={16} />}\n </button>\n </div>\n </div>\n </div>\n\n <audio\n ref={audioRef}\n src={currentTrack.src}\n autoPlay={autoplay}\n loop={isLooping}\n onTimeUpdate={handleTimeUpdate}\n onEnded={() => {\n setIsPlaying(false);\n if (!isLooping) {\n nextTrack();\n }\n }}\n onLoadedMetadata={handleTimeUpdate}\n preload=\"metadata\"\n style={{ display: \"none\" }}\n />\n </div>\n )}\n\n <style>{`\n @keyframes equalizer {\n 0%, 100% { height: 4px; }\n 50% { height: 12px; }\n }\n \n /* Custom Scrollbar */\n div::-webkit-scrollbar {\n width: 4px;\n }\n \n div::-webkit-scrollbar-track {\n background: rgba(255,255,255,0.1);\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb {\n background: ${primaryColor};\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb:hover {\n background: ${primaryColor}dd;\n }\n `}</style>\n </div>\n );\n}\n\nfunction controlButtonStyle(\n color: string,\n backgroundColor: string\n): React.CSSProperties {\n return {\n border: \"none\",\n backgroundColor,\n color,\n cursor: \"pointer\",\n padding: \"10px\",\n borderRadius: \"12px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n backdropFilter: \"blur(10px)\",\n };\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport React, { memo } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface BadgeProps {\n text?: string;\n\n icon?: React.ReactNode;\n iconPosition?: \"left\" | \"right\";\n\n /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n /** Shape */\n rounded?: boolean;\n\n /** Notification */\n notificationDot?: boolean;\n dotColor?: string;\n count?: number | string;\n pulse?: boolean;\n\n className?: string;\n onClick?: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🏷 Badge */\n/* -------------------------------------------------------------------------- */\n\nexport const Badge: React.FC<BadgeProps> = memo(\n ({\n text,\n icon,\n iconPosition = \"left\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n rounded = true,\n\n notificationDot = false,\n dotColor = \"#ef4444\",\n count,\n pulse = false,\n\n className,\n onClick,\n }) => {\n /** 📏 Sizes */\n const sizes = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-3 py-1 text-xs\",\n lg: \"px-4 py-1.5 text-sm\",\n };\n\n /** 🎨 Theme */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white\"\n : \"\";\n\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <span\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"relative inline-flex items-center justify-center gap-1 font-medium\",\n \"transition-all duration-200 select-none\",\n rounded ? \"rounded-full\" : \"rounded-md\",\n sizes[size],\n themeClasses,\n onClick && \"cursor-pointer hover:opacity-90\",\n className\n )}\n >\n {/* 🔴 Dot */}\n {notificationDot && (\n <span\n style={!primaryTheme ? { backgroundColor: dotColor } : undefined}\n className={clsx(\n \"absolute -top-1 -right-1 w-2 h-2 rounded-full\",\n pulse && \"animate-ping\",\n primaryTheme ? \"bg-red-500\" : \"\"\n )}\n />\n )}\n\n {/* 🔢 Count */}\n {count !== undefined && (\n <span\n style={!primaryTheme ? { backgroundColor: dotColor } : undefined}\n className={clsx(\n \"absolute -top-2 -right-2 min-w-[18px] h-[18px] px-1 text-[10px]\",\n \"flex items-center justify-center rounded-full text-white\",\n primaryTheme ? \"bg-red-500\" : \"\"\n )}\n >\n {count}\n </span>\n )}\n\n {/* Icon Left */}\n {icon && iconPosition === \"left\" && (\n <span className=\"flex items-center\">{icon}</span>\n )}\n\n {/* Text */}\n {text && <span>{text}</span>}\n\n {/* Icon Right */}\n {icon && iconPosition === \"right\" && (\n <span className=\"flex items-center\">{icon}</span>\n )}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n\n iconBefore?: React.ReactNode;\n iconAfter?: React.ReactNode;\n\n loading?: boolean;\n loadingText?: string;\n\n fullWidth?: boolean;\n\n /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🔘 Button */\n/* -------------------------------------------------------------------------- */\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n iconBefore,\n iconAfter,\n loading = false,\n loadingText = \"Loading...\",\n fullWidth = false,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n /** 📏 Sizes */\n const sizeClasses = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-5 py-2.5 text-sm\",\n lg: \"px-6 py-3 text-base\",\n };\n\n /** 🎨 Theme styles */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white hover:bg-[var(--primary)]/90 focus:ring-[var(--primary)]/30\"\n : \"\";\n\n /** 🎨 Dynamic fallback for non-primary theme */\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"inline-flex items-center justify-center gap-2 font-medium rounded-lg transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-1\",\n sizeClasses[size],\n themeClasses,\n fullWidth && \"w-full\",\n (disabled || loading) && \"opacity-60 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {loading ? (\n <>\n <span className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\" />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && (\n <span className=\"flex items-center justify-center\">{iconBefore}</span>\n )}\n <span>{children}</span>\n {iconAfter && (\n <span className=\"flex items-center justify-center\">{iconAfter}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface CheckboxGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n customIcon?: (checked: boolean) => React.ReactNode;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n customIcon,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation (space/enter toggle)\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n if (focusedIndex === null) return;\n\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n setFocusedIndex((currentIndex + 1) % options.length);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n setFocusedIndex((currentIndex - 1 + options.length) % options.length);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Custom or default icon */}\n {customIcon ? (\n customIcon(isChecked)\n ) : (\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: 4,\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ width: iconSize * 0.6, height: iconSize * 0.6 }}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n name?: string;\n options: Option[];\n selectedValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n selectedValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n const currentIndex = focusedIndex ?? options.findIndex((o) => o.value === selectedValue) ?? 0;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n onChange && onChange(options[nextIndex].value);\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n onChange && onChange(options[prevIndex].value);\n setFocusedIndex(prevIndex);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValue, onChange, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"radiogroup\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n tabIndex={0} // allow keyboard focus\n >\n {options.map((option, index) => {\n const isChecked = selectedValue === option.value;\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none gap-2\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\",\n )}\n style={{ ...labelStyle }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => onChange && onChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n <span\n className={clsx(\"inline-flex items-center justify-center rounded-full transition-all\")}\n style={{\n width: iconSize,\n height: iconSize,\n border: `2px solid ${isChecked ? iconCheckedBgColor : iconUncheckedBorderColor}`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.2s ease\",\n }}\n >\n {isChecked && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: darkMode ? \"#fff\" : \"#fff\",\n }}\n />\n )}\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface SwitchGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const SwitchGroup: React.FC<SwitchGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n switchBgColor = \"#d1d5db\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (focusedIndex === null) return;\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n setFocusedIndex(prevIndex);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Switch */}\n <span\n className={clsx(\"relative inline-flex rounded-full transition-colors\")}\n style={{\n width: iconSize * 2,\n height: iconSize * 1.1,\n backgroundColor: isChecked\n ? iconCheckedBgColor\n : switchBgColor,\n transition: \"background-color 0.25s ease\",\n borderRadius: 9999,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: isChecked\n ? `calc(100% - ${iconSize - 4}px - 2px)`\n : \"2px\",\n transform: \"translateY(-50%)\",\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.3)\",\n transition: \"left 0.25s ease\",\n }}\n />\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n size?: ContainerSize;\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n center?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nconst sizeMap: Record<ContainerSize, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n \"2xl\": \"max-w-2xl\",\n full: \"w-full\",\n};\n\nconst paddingMap: Record<NonNullable<ContainerProps[\"padding\"]>, string> = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n/**\n * 🧱 Container Component\n * Fully responsive, Tailwind-first layout wrapper\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = \"md\",\n center = true,\n className = \"\",\n children,\n}) => {\n const classes = clsx(\n \"w-full box-border\",\n sizeMap[size],\n paddingMap[padding],\n center && \"mx-auto\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\nexport default Container;","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexViewProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n margin?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const FlexView: React.FC<FlexViewProps> = ({\n direction = { sm: \"column\", md: \"row\" },\n align = \"center\",\n justify = \"between\",\n wrap = \"wrap\",\n gap,\n padding,\n margin,\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction),\n toResponsiveClass(\"items\", align),\n toResponsiveClass(\"justify\", justify),\n toResponsiveClass(\"flex\", wrap), // wrap classes: flex-wrap, flex-nowrap, flex-wrap-reverse\n gap ? toResponsiveClass(\"gap\", gap) : \"\",\n padding ? toResponsiveClass(\"p\", padding) : \"\",\n margin ? toResponsiveClass(\"m\", margin) : \"\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface StackProps {\n direction?: ResponsiveValue<\"vertical\" | \"horizontal\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n align?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Convert responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\" },\n gap = 4,\n align = \"center\",\n justify = \"start\",\n wrap = \"nowrap\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction), // flex-col or flex-row\n toResponsiveClass(\"gap\", gap),\n align !== \"stretch\" ? `items-${align}` : \"items-stretch\",\n justify !== \"start\" ? `justify-${justify}` : \"justify-start\",\n wrap !== \"nowrap\" ? `flex-${wrap}` : \"flex-nowrap\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\n/** Shortcuts for horizontal & vertical stacks */\nexport const HStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"horizontal\" {...props} />\n);\n\nexport const VStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"vertical\" {...props} />\n);","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\nexport interface GridProps {\n columns?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6>;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 4,\n padding = 4,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"grid\",\n toResponsiveClass(\"grid-cols\", columns),\n toResponsiveClass(\"gap\", gap),\n toResponsiveClass(\"p\", padding),\n alignItems !== \"stretch\" ? `items-${alignItems}` : \"items-stretch\",\n justifyItems !== \"stretch\" ? `justify-items-${justifyItems}` : \"justify-items-stretch\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","\"use client\";\nimport React, { useState, useEffect, useMemo, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\ninterface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n className = \"\",\n}) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`inline-flex items-center justify-center gap-2 px-4 py-2 rounded-md font-medium text-white bg-blue-600 hover:bg-blue-700 transition-colors focus:outline-none focus:ring-2 focus:ring-blue-400 ${className}`}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n );\n};\n\n/* ---------------- 🧱 Drawer ---------------- */\ninterface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n size?: string; // width for left/right, height for top/bottom\n className?: string;\n overlayClassName?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeButtonClassName?: string;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n size = \"320px\",\n children,\n showCloseButton = true,\n className = \"\",\n overlayClassName = \"\",\n closeButtonClassName = \"\",\n}) => {\n const [mounted, setMounted] = useState(open);\n\n useEffect(() => {\n if (open) setMounted(true);\n else setTimeout(() => setMounted(false), 300); // smooth exit\n }, [open]);\n\n const transform = useMemo(() => {\n if (open) return \"translate(0,0)\";\n switch (position) {\n case \"left\":\n return \"translateX(-100%)\";\n case \"right\":\n return \"translateX(100%)\";\n case \"top\":\n return \"translateY(-100%)\";\n case \"bottom\":\n return \"translateY(100%)\";\n default:\n return \"translate(0,0)\";\n }\n }, [open, position]);\n\n if (!mounted && !open) return null;\n\n return (\n <>\n {/* Overlay */}\n <div\n onClick={onClose}\n className={`fixed inset-0 bg-black/50 transition-opacity ${\n open ? \"opacity-100\" : \"opacity-0\"\n } ${overlayClassName}`}\n />\n\n {/* Drawer Panel */}\n <div\n className={`fixed bg-white shadow-lg flex flex-col transition-transform duration-300 ${className}`}\n style={{\n width: position === \"left\" || position === \"right\" ? size : \"100%\",\n height: position === \"top\" || position === \"bottom\" ? size : \"100%\",\n top: position === \"bottom\" || position === \"top\" ? (position === \"bottom\" ? \"auto\" : 0) : 0,\n bottom: position === \"bottom\" ? 0 : \"auto\",\n left: position === \"left\" ? 0 : position === \"right\" ? \"auto\" : 0,\n right: position === \"right\" ? 0 : position === \"left\" ? \"auto\" : 0,\n transform,\n }}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n className={`absolute top-4 right-4 p-1 rounded-full hover:bg-gray-200 transition-colors ${closeButtonClassName}`}\n aria-label=\"Close drawer\"\n >\n <X size={20} />\n </button>\n )}\n\n <div className=\"flex-1 overflow-auto p-4\">{children}</div>\n </div>\n </>\n );\n};","\"use client\";\n\nimport React, {\n useEffect,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n label?: string;\n name?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n options?: SelectOption[];\n\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n labelIcon?: React.ElementType;\n prefixIcon?: React.ElementType;\n\n variant?: \"dark\" | \"light\";\n\n /** 🔥 THEME SYSTEM */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n containerClassName?: string;\n labelClassName?: string;\n triggerClassName?: string;\n dropdownClassName?: string;\n optionClassName?: string;\n\n className?: string;\n}\n\nexport const Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (props, ref) => {\n const {\n label,\n name = \"\",\n value,\n defaultValue,\n onChange,\n options = [],\n placeholder = \"Select an option\",\n required,\n disabled,\n error,\n success,\n helperText,\n\n labelIcon: LabelIcon,\n prefixIcon: PrefixIcon,\n\n variant = \"dark\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n containerClassName = \"\",\n labelClassName = \"\",\n triggerClassName = \"\",\n dropdownClassName = \"\",\n optionClassName = \"\",\n\n className = \"\",\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => containerRef.current!);\n\n const [open, setOpen] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n\n const currentValue = value !== undefined ? value : localValue;\n const selectedOption = options.find((o) => o.value === currentValue);\n\n /** Close outside */\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const handleSelect = (option: SelectOption) => {\n setLocalValue(option.value);\n onChange?.(name, option.value);\n setOpen(false);\n };\n\n /** 🎨 Theme base */\n const theme = {\n dark: {\n bg: \"bg-zinc-900\",\n text: \"text-white\",\n border: \"border-zinc-800\",\n dropdown: \"bg-black border-zinc-800\",\n option: \"text-zinc-300 hover:bg-zinc-800\",\n },\n light: {\n bg: \"bg-white\",\n text: \"text-gray-900\",\n border: \"border-gray-300\",\n dropdown: \"bg-white border-gray-200\",\n option: \"text-gray-700 hover:bg-gray-100\",\n },\n }[variant];\n\n /** 🎨 Dynamic styles */\n const dynamicPrimary: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const dynamicBorder: CSSProperties = !primaryTheme\n ? { borderColor: primaryColor }\n : {};\n\n const dynamicBgActive: CSSProperties = !primaryTheme\n ? { backgroundColor: `${primaryColor}20` } // light tint\n : {};\n\n /** Border state */\n const borderState = error\n ? \"border-rose-500\"\n : success\n ? \"border-emerald-500\"\n : theme.border;\n\n const paddingLeft = PrefixIcon ? \"pl-12 pr-10\" : \"px-4\";\n\n return (\n <div\n ref={containerRef}\n className={`w-full space-y-1 ${containerClassName} ${className}`}\n >\n {/* Label */}\n {label && (\n <label\n className={`flex items-center gap-2 text-[13px] font-medium ${labelClassName}`}\n >\n {LabelIcon && (\n <LabelIcon\n className={\n primaryTheme ? \"w-4 h-4 text-[var(--primary)]\" : \"w-4 h-4\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-rose-500\">*</span>}\n </label>\n )}\n\n <div className=\"relative group\">\n {/* Prefix Icon */}\n {PrefixIcon && (\n <div className=\"absolute left-4 top-1/2 -translate-y-1/2 z-10\">\n <PrefixIcon\n className={\n primaryTheme\n ? \"w-4 h-4 text-zinc-500 group-focus-within:text-[var(--primary)]\"\n : \"w-4 h-4 text-zinc-500\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n </div>\n )}\n\n {/* Trigger */}\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setOpen((p) => !p)}\n style={!primaryTheme ? dynamicBorder : undefined}\n className={`\n w-full py-2.5 rounded-lg text-left text-sm\n border transition-all duration-200\n ${theme.bg} ${theme.text}\n ${paddingLeft}\n ${borderState}\n focus:ring-2\n ${\n primaryTheme\n ? \"focus:ring-[var(--primary)]/30 focus:border-[var(--primary)]\"\n : \"\"\n }\n disabled:opacity-50 disabled:cursor-not-allowed\n ${triggerClassName}\n `}\n >\n <span className={selectedOption ? theme.text : \"text-zinc-500\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n\n <ChevronDown\n className={`absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 transition-transform ${\n open ? \"rotate-180\" : \"\"\n } text-zinc-400`}\n />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div\n className={`\n absolute z-50 mt-2 w-full rounded-xl border shadow-xl overflow-hidden\n ${theme.dropdown}\n ${dropdownClassName}\n `}\n >\n <ul className=\"max-h-60 overflow-y-auto\">\n {options.map((opt) => {\n const isActive = currentValue === opt.value;\n\n return (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n style={\n !primaryTheme && isActive ? dynamicBgActive : undefined\n }\n className={`\n px-4 py-3 cursor-pointer text-sm flex items-center gap-2\n ${\n isActive\n ? primaryTheme\n ? \"bg-[var(--primary)]/15 text-[var(--primary)]\"\n : \"\"\n : theme.option\n }\n ${optionClassName}\n `}\n >\n {opt.icon && <span>{opt.icon}</span>}\n {opt.label}\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n\n {/* Helper */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-rose-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";","\"use client\";\n\nimport React, {\n forwardRef,\n useState,\n useImperativeHandle,\n useRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputFieldProps {\n label?: string;\n name?: string;\n type?: \"text\" | \"password\" | \"email\" | \"number\" | \"textarea\";\n placeholder?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n /** Icons */\n icon?: React.ElementType;\n prefix?: string;\n prefixIcon?: React.ElementType;\n suffixIcon?: React.ReactNode;\n\n /** Number props */\n min?: number;\n max?: number;\n step?: number;\n\n /** Textarea */\n rows?: number;\n\n /** 🔥 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** Styling */\n className?: string;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputFieldProps\n>((props, ref) => {\n const {\n label,\n name = \"\",\n type = \"text\",\n placeholder = \"\",\n value,\n defaultValue,\n onChange,\n required,\n disabled,\n readOnly,\n\n error,\n success,\n helperText,\n\n icon: LabelIcon,\n prefix,\n prefixIcon: PrefixIcon,\n suffixIcon,\n\n min,\n max,\n step,\n\n rows = 4,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className = \"\",\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n useImperativeHandle(ref, () => inputRef.current!);\n\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n const hasPrefixIcon = Boolean(PrefixIcon);\n const hasPrefixText = Boolean(prefix);\n const hasPrefix = hasPrefixIcon || hasPrefixText;\n\n const currentValue = value !== undefined ? value : localValue;\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const val = e.target.value;\n setLocalValue(val);\n onChange?.(name, val);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === \"number\" && e.key === \"-\") e.preventDefault();\n };\n\n /** Padding logic */\n const getPadding = () => {\n if (!hasPrefix) return \"px-4\";\n if (hasPrefixIcon && hasPrefixText) return \"pl-20 pr-4\";\n if (hasPrefixText) return \"pl-14 pr-4\";\n if (hasPrefixIcon) return \"pl-10 pr-4\";\n return \"px-4\";\n };\n\n /** 🔥 Theme Styles */\n const dynamicFocusStyle: CSSProperties = !primaryTheme\n ? {\n borderColor: primaryColor,\n boxShadow: `0 0 0 1px ${primaryColor}`,\n }\n : {};\n\n const dynamicColorStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n /** Border */\n const borderStyle = error\n ? \"border-red-500\"\n : success\n ? \"border-emerald-500\"\n : \"border-zinc-300 dark:border-zinc-800\";\n\n return (\n <div className={`w-full space-y-1 ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"flex items-center gap-2 text-[12px] font-medium text-gray-700 dark:text-zinc-100\">\n {LabelIcon && (\n <LabelIcon\n size={16}\n className={primaryTheme ? \"text-[var(--primary)]\" : \"\"}\n style={!primaryTheme ? dynamicColorStyle : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-red-500\">*</span>}\n </label>\n )}\n\n {/* Input Wrapper */}\n <div className=\"relative\">\n {/* Prefix */}\n {hasPrefix && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3 gap-2 text-sm text-zinc-400 pointer-events-none\">\n {PrefixIcon && <PrefixIcon size={14} />}\n {hasPrefixText && (\n <>\n <span className=\"font-medium text-zinc-600 dark:text-zinc-200\">\n {prefix}\n </span>\n <span className=\"h-4 w-px bg-zinc-300 dark:bg-zinc-700\" />\n </>\n )}\n </div>\n )}\n\n {/* Input / Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n min={type === \"number\" ? min ?? 0 : undefined}\n max={max}\n step={step}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n disabled:opacity-50 disabled:cursor-not-allowed\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n )}\n\n {/* Password toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\"\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Suffix */}\n {suffixIcon && type !== \"password\" && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\">\n {suffixIcon}\n </span>\n )}\n </div>\n\n {/* Helper / Error */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-red-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {error && typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n});","\"use client\";\n\nimport React, { useMemo } from \"react\";\n\ninterface ImageProps {\n src?: string;\n alt?: string;\n title?: string;\n /** Tailwind width/height classes or numbers */\n width?: string | number;\n height?: string | number;\n /** Tailwind rounded classes */\n rounded?: string;\n borderColor?: string;\n borderWidth?: string | number;\n shadow?: boolean;\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n responsive?: boolean;\n p?: string;\n m?: string;\n /** Hover Effects */\n hoverScale?: number;\n hoverRotate?: number;\n hoverOpacity?: number;\n hoverShadow?: boolean;\n transitionDuration?: string;\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Custom Tailwind classes */\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"w-full\",\n height = \"h-auto\",\n rounded = \"rounded-lg\",\n borderColor = \"transparent\",\n borderWidth = \"0\",\n shadow = false,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n p,\n m,\n hoverScale = 1.05,\n hoverRotate = 0,\n hoverOpacity,\n hoverShadow = false,\n transitionDuration = \"300ms\",\n overflow = \"hidden\",\n className = \"\",\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n /** Base Tailwind classes */\n const baseClasses = useMemo(() => {\n const classes = [\n \"relative inline-block transition-all\",\n shadow ? \"shadow-md\" : \"\",\n rounded,\n p ?? \"\",\n m ?? \"\",\n responsive ? \"w-full h-auto\" : \"\",\n className,\n ];\n return classes.join(\" \");\n }, [shadow, rounded, p, m, responsive, className]);\n\n /** Inline styles for custom widths, hover, borders, etc. */\n const inlineStyles: React.CSSProperties = useMemo(\n () => ({\n width: typeof width === \"number\" ? width : undefined,\n height: typeof height === \"number\" ? height : undefined,\n objectFit,\n opacity,\n borderColor,\n borderWidth,\n transition: `all ${transitionDuration} ease`,\n ...style,\n }),\n [width, height, objectFit, opacity, borderColor, borderWidth, transitionDuration, style]\n );\n\n /** Overflow handling */\n const overflowStyles: React.CSSProperties = useMemo(() => {\n switch (overflow) {\n case \"x\":\n return { overflowX: \"hidden\" };\n case \"y\":\n return { overflowY: \"hidden\" };\n default:\n return { overflow };\n }\n }, [overflow]);\n\n /** Hover effects */\n const handleMouseEnter = (e: React.MouseEvent<HTMLImageElement>) => {\n if (hoverOpacity !== undefined) e.currentTarget.style.opacity = hoverOpacity.toString();\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n if (hoverShadow) e.currentTarget.style.boxShadow = \"0 8px 20px rgba(0,0,0,0.3)\";\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = opacity.toString();\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n if (hoverShadow) e.currentTarget.style.boxShadow = \"\";\n };\n\n return (\n <div\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n className={baseClasses}\n style={{ position: \"relative\", cursor: onClick ? \"pointer\" : \"default\", ...overflowStyles }}\n >\n {/* SVG fallback */}\n {svgIcon ? (\n <div className=\"w-full h-full flex items-center justify-center\">{svgIcon}</div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading=\"lazy\"\n style={inlineStyles}\n className=\"block\"\n onLoad={onLoad}\n onError={onError}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n />\n )}\n\n {/* Overlay */}\n {overlayText && (\n <div\n style={{ backgroundColor: overlayColor }}\n className=\"absolute inset-0 flex items-center justify-center text-white font-bold text-center p-4\"\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};","import React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemType {\n text: string;\n icon?: ReactNode;\n onClick?: () => void;\n subItems?: ListItemType[];\n}\n\nexport interface ListProps {\n title?: string;\n titleIcon?: ReactNode;\n items: ListItemType[];\n\n type?: \"unordered\" | \"ordered\" | \"inline\";\n\n // 🔥 THEME CONTROL\n primaryTheme?: boolean; // use CSS var\n primaryColor?: string; // fallback color\n\n className?: string;\n itemClassName?: string;\n titleClassName?: string;\n bulletClassName?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\ninterface ListItemProps extends ListItemType {\n isInline?: boolean;\n isOrdered?: boolean;\n\n primaryTheme?: boolean;\n primaryColor?: string;\n\n itemClassName?: string;\n bulletClassName?: string;\n}\n\nconst ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n isInline,\n isOrdered,\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n itemClassName,\n bulletClassName,\n}) => {\n // ✅ Dynamic style for primary color\n const dynamicStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const bulletStyle: CSSProperties = !primaryTheme\n ? { backgroundColor: primaryColor }\n : {};\n\n return (\n <li className={clsx(!isInline && \"mb-3\")}>\n <div\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"flex items-center gap-2 text-sm text-zinc-800 dark:text-zinc-200 transition-all\",\n onClick &&\n (primaryTheme\n ? \"cursor-pointer hover:text-[var(--primary)]\"\n : \"cursor-pointer\"),\n itemClassName\n )}\n >\n {/* ICON */}\n {icon ? (\n <span className=\"text-base\">{icon}</span>\n ) : (\n !isInline &&\n !isOrdered && (\n <span\n style={!primaryTheme ? bulletStyle : undefined}\n className={clsx(\n \"w-2 h-2 rounded-full\",\n primaryTheme && \"bg-[var(--primary)]\",\n bulletClassName\n )}\n />\n )\n )}\n\n <span>{text}</span>\n </div>\n\n {/* Nested */}\n {subItems && subItems.length > 0 && (\n <ul\n className={clsx(\n \"pl-5 mt-2 space-y-2\",\n isOrdered ? \"list-decimal\" : \"list-none\"\n )}\n >\n {subItems.map((sub, i) => (\n <ListItem\n key={i}\n {...sub}\n isInline={false}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\n/* -------------------------------------------------------------------------- */\n/* 📋 List */\n/* -------------------------------------------------------------------------- */\n\nexport const List: React.FC<ListProps> = ({\n title,\n titleIcon,\n items,\n type = \"unordered\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className,\n itemClassName,\n titleClassName,\n bulletClassName,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div\n className={clsx(\n \"bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl p-4\",\n className\n )}\n >\n {title && (\n <div\n className={clsx(\n \"flex items-center gap-2 mb-3 text-base font-semibold text-zinc-900 dark:text-white\",\n titleClassName\n )}\n >\n {titleIcon && <span>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag\n className={clsx(\n isInline\n ? \"flex flex-wrap gap-4\"\n : isOrdered\n ? \"list-decimal pl-5 space-y-2\"\n : \"list-none p-0\"\n )}\n >\n {items.map((item, i) => (\n <ListItem\n key={i}\n {...item}\n isInline={isInline}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ListTag>\n </div>\n );\n};","import React, { ReactNode, useEffect, useRef, useCallback } from \"react\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n title?: string;\n icon?: ReactNode; // <-- Optional icon in header\n ariaLabel?: string;\n className?: string;\n overlayClassName?: string;\n contentClassName?: string;\n closeButtonClassName?: string;\n disableOverlayClose?: boolean;\n darkMode?: boolean;\n transitionDuration?: number; // in ms\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n title,\n icon,\n ariaLabel,\n className,\n overlayClassName,\n contentClassName,\n closeButtonClassName,\n disableOverlayClose = false,\n darkMode = false,\n transitionDuration = 200,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* Escape key close */\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n if (isOpen) document.addEventListener(\"keydown\", handleEsc);\n return () => document.removeEventListener(\"keydown\", handleEsc);\n }, [isOpen, onClose]);\n\n /* Scroll lock */\n useEffect(() => {\n if (isOpen) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [isOpen]);\n\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n className={clsx(\n \"fixed inset-0 flex items-center justify-center z-50 transition-opacity\",\n darkMode ? \"bg-black/80\" : \"bg-black/60\",\n overlayClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={handleOverlayClick}\n >\n <div\n ref={modalRef}\n className={clsx(\n \"relative w-[90vw] max-w-2xl max-h-[90vh] overflow-y-auto p-6 rounded-lg shadow-lg transition-transform\",\n darkMode ? \"bg-zinc-900 text-white\" : \"bg-white text-gray-900\",\n \"scale-100\",\n contentClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Close Button */}\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n className={clsx(\n \"absolute top-4 right-4 p-1 rounded-full hover:scale-110 transition-transform\",\n darkMode ? \"text-white hover:text-gray-200\" : \"text-gray-700 hover:text-gray-900\",\n closeButtonClassName\n )}\n >\n <X size={24} />\n </button>\n\n {/* Header */}\n {title && (\n <div className=\"flex items-center gap-2 mb-4\">\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\n <h2 className=\"text-xl font-semibold\">{title}</h2>\n </div>\n )}\n\n {/* Content */}\n {children}\n </div>\n </div>\n );\n};","\"use client\";\nimport React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* ---------------------------- Types ---------------------------- */\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\n/* ---------------------------- Table Container ---------------------------- */\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <div\n className={clsx(\"overflow-x-auto rounded-lg shadow-sm border border-gray-200\", className)}\n style={{\n background: \"#ffffff\",\n ...style,\n }}\n >\n <table\n className=\"w-full border-collapse\"\n style={{\n borderSpacing: 0,\n borderRadius: 12,\n overflow: \"hidden\",\n }}\n >\n {children}\n </table>\n </div>\n);\n\n/* ---------------------------- Table Head ---------------------------- */\nexport const THead: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <thead\n className={clsx(\"bg-gray-100 text-gray-900 font-semibold\", className)}\n style={{\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\n/* ---------------------------- Table Body ---------------------------- */\nexport const TBody: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tbody className={clsx(\"bg-white\", className)} style={{ ...style }}>\n {children}\n </tbody>\n);\n\n/* ---------------------------- Table Row ---------------------------- */\ninterface TRowProps extends TableSectionProps {\n onClick?: () => void;\n hoverBgColor?: string;\n darkMode?: boolean;\n}\n\nexport const TRow: React.FC<TRowProps> = ({\n children,\n style,\n className,\n onClick,\n hoverBgColor = \"#f9fafb\",\n darkMode = false,\n}) => (\n <tr\n className={clsx(\n \"transition-colors duration-200 cursor-default\",\n onClick ? \"hover:cursor-pointer\" : \"\",\n className\n )}\n style={{ borderBottom: \"1px solid #e5e7eb\", ...style }}\n onClick={onClick}\n onMouseEnter={(e) => {\n if (!darkMode) e.currentTarget.style.backgroundColor = hoverBgColor;\n else e.currentTarget.style.backgroundColor = \"#1f2937\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {children}\n </tr>\n);\n\n/* ---------------------------- Table Head Cell ---------------------------- */\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={clsx(\"text-left px-4 py-3 text-sm text-gray-700 border-b-2 border-gray-200\", className)}\n style={{ ...style }}\n >\n {children}\n </th>\n);\n\n/* ---------------------------- Table Data Cell ---------------------------- */\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={clsx(\"px-4 py-3 text-sm text-gray-600\", className)}\n style={{ ...style }}\n >\n {children}\n </td>\n);","\"use client\";\nimport React, { useState, CSSProperties, useEffect, useRef } from \"react\";\n\n/** 🧩 Types */\ninterface TabItem {\n label: React.ReactNode;\n content: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActive?: number;\n position?: \"top\" | \"left\" | \"right\";\n variant?: \"solid\" | \"outline\" | \"underline\";\n fullWidth?: boolean;\n gap?: number;\n radius?: number;\n padding?: string;\n transitionDuration?: number;\n elevation?: number;\n bordered?: boolean;\n\n /** 🎨 Colors */\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverColor?: string;\n activeColor?: string;\n borderColor?: string;\n disabledColor?: string;\n\n /** 📱 Responsive */\n responsiveBreakpoint?: number;\n showDrawerLabel?: string;\n drawerIcon?: React.ReactNode;\n\n /** ⚙️ Callbacks */\n onTabChange?: (index: number) => void;\n\n /** 🧱 Classes and Styles */\n className?: string;\n style?: CSSProperties;\n tabClassName?: string;\n contentClassName?: string;\n activeTabStyle?: CSSProperties;\n inactiveTabStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n}\n\n/** 💎 Modern, Fully Customizable Tabs */\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n gap = 8,\n radius = 8,\n padding = \"12px 18px\",\n transitionDuration = 200,\n elevation = 1,\n bordered = false,\n\n primaryColor = \"#2563eb\",\n backgroundColor = \"transparent\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n activeColor = \"#ffffff\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n\n responsiveBreakpoint = 768,\n showDrawerLabel = \"Select Tab\",\n drawerIcon = \"☰\",\n\n onTabChange,\n className = \"\",\n style,\n tabClassName = \"\",\n contentClassName = \"\",\n activeTabStyle,\n inactiveTabStyle,\n contentStyle,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [hovered, setHovered] = useState<number | null>(null);\n const [isMobile, setIsMobile] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** 📱 Responsive detection */\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth <= responsiveBreakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [responsiveBreakpoint]);\n\n /** 🎛 Handle tab change */\n const handleChange = (i: number) => {\n if (tabs[i].disabled) return;\n setActive(i);\n onTabChange?.(i);\n if (isMobile) setDrawerOpen(false);\n };\n\n /** ⚡ Keyboard navigation */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, i: number) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n handleChange((i + 1) % tabs.length);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n handleChange((i - 1 + tabs.length) % tabs.length);\n }\n };\n\n /** 🎨 Base styles */\n const baseTab: CSSProperties = {\n padding,\n borderRadius: radius,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n justifyContent: \"center\",\n fontWeight: 500,\n transition: `all ${transitionDuration}ms ease`,\n background: \"transparent\",\n border: variant === \"outline\" ? `1px solid ${borderColor}` : \"none\",\n borderBottom: variant === \"underline\" ? `2px solid transparent` : undefined,\n color: textColor,\n width: fullWidth ? \"100%\" : \"auto\",\n userSelect: \"none\",\n };\n\n const activeTab: CSSProperties = {\n background: variant === \"solid\" ? primaryColor : \"transparent\",\n color: activeColor,\n borderBottom: variant === \"underline\" ? `2px solid ${primaryColor}` : undefined,\n boxShadow:\n elevation > 0 ? `0 ${elevation}px ${elevation * 4}px ${primaryColor}33` : undefined,\n ...activeTabStyle,\n };\n\n const inactiveTab: CSSProperties = {\n ...(variant === \"outline\" ? { borderColor } : {}),\n ...(variant === \"underline\" ? { borderBottomColor: \"transparent\" } : {}),\n ...inactiveTabStyle,\n };\n\n const hoverTab: CSSProperties = {\n color: hoverColor,\n background:\n variant === \"solid\"\n ? `${primaryColor}11`\n : variant === \"outline\"\n ? `${primaryColor}11`\n : \"transparent\",\n };\n\n const disabledTab: CSSProperties = {\n color: disabledColor,\n cursor: \"not-allowed\",\n opacity: 0.6,\n };\n\n const contentBox: CSSProperties = {\n flexGrow: 1,\n borderTop: bordered && position === \"top\" ? `1px solid ${borderColor}` : undefined,\n borderLeft: bordered && position === \"left\" ? `1px solid ${borderColor}` : undefined,\n borderRight: bordered && position === \"right\" ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n ...contentStyle,\n };\n\n /** 🧱 Layout */\n const isVertical = position === \"left\" || position === \"right\";\n\n return (\n <div\n ref={containerRef}\n className={`modern-tabs ${className}`}\n style={{\n display: \"flex\",\n flexDirection: isVertical ? (position === \"right\" ? \"row-reverse\" : \"row\") : \"column\",\n background: backgroundColor,\n border: bordered ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>\n {`\n @keyframes tab-fade {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .modern-tabs__content {\n animation: tab-fade ${transitionDuration}ms ease;\n }\n `}\n </style>\n\n {/* 📱 Mobile Drawer */}\n {isMobile ? (\n <div style={{ width: \"100%\", padding: 8 }}>\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n style={{\n ...baseTab,\n ...activeTab,\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: 16,\n }}\n >\n {showDrawerLabel}\n <span>{drawerIcon}</span>\n </button>\n {drawerOpen && (\n <div style={{ display: \"flex\", flexDirection: \"column\", marginTop: 8, gap }}>\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap,\n padding: 8,\n minWidth: isVertical ? 200 : undefined,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n role=\"tab\"\n aria-selected={isActive}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n\n {/* 🧠 Tab Content */}\n <div\n className={`modern-tabs__content ${contentClassName}`}\n style={contentBox}\n role=\"tabpanel\"\n >\n {tabs[active]?.content}\n </div>\n </div>\n );\n};","import React, { useMemo } from \"react\";\n\n/** 🎯 Limit to only HTML elements to avoid SVG union explosion */\ntype HTMLElementTag = keyof HTMLElementTagNameMap;\n\ntype TextProps<T extends HTMLElementTag = \"p\"> = {\n as?: T;\n children: React.ReactNode;\n color?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | string;\n weight?: React.CSSProperties[\"fontWeight\"];\n align?: React.CSSProperties[\"textAlign\"];\n transform?: React.CSSProperties[\"textTransform\"];\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n truncate?: boolean;\n selectable?: boolean;\n hoverable?: boolean;\n darkMode?: boolean;\n baseColor?: string;\n className?: string;\n style?: React.CSSProperties;\n onClick?: () => void;\n} & Omit<React.HTMLAttributes<HTMLElementTagNameMap[HTMLElementTag]>, \"color\" | \"style\">;\n\n/** 🎨 Utility: generate lighter/darker shades */\nfunction adjustColor(color: string, amount: number): string {\n return (\n \"#\" +\n color\n .replace(/^#/, \"\")\n .replace(/../g, (hex) =>\n (\n \"0\" +\n Math.min(255, Math.max(0, parseInt(hex, 16) + amount)).toString(16)\n ).slice(-2)\n )\n );\n}\n\n/** 🌈 Default color palettes */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n secondary: \"#64748b\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n secondary: \"#94a3b8\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n },\n};\n\n/** 💬 Main Component (HTML-only tags) */\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n color = \"default\",\n size = \"md\",\n weight = \"normal\",\n align = \"left\",\n transform = \"none\",\n italic = false,\n underline = false,\n strikethrough = false,\n truncate = false,\n selectable = true,\n hoverable = false,\n onClick,\n darkMode = false,\n baseColor,\n className = \"\",\n style = {},\n ...rest\n}: TextProps<T>) {\n // element type as provided (constrained to HTML tags)\n const Element = (as || (\"p\" as T)) as T;\n\n /** 🎨 Dynamic color palette generation */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const lightMode = {\n default: \"#111\",\n primary: baseColor,\n secondary: adjustColor(baseColor, -50),\n success: adjustColor(baseColor, -30),\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n };\n const darkModeTheme = {\n default: \"#f8fafc\",\n primary: adjustColor(baseColor, 80),\n secondary: adjustColor(baseColor, 120),\n success: adjustColor(baseColor, 100),\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n };\n return darkMode ? darkModeTheme : lightMode;\n }, [baseColor, darkMode]);\n\n /** 📏 Font sizes */\n const sizes: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n xl: \"1.5rem\",\n \"2xl\": \"2rem\",\n };\n\n /** 💅 Computed styles */\n const computedStyle: React.CSSProperties = {\n color: (theme as any)[color] || color,\n fontSize: sizes[size] || size,\n fontWeight: weight,\n textAlign: align,\n textTransform: transform,\n fontStyle: italic ? \"italic\" : \"normal\",\n textDecoration: underline ? \"underline\" : strikethrough ? \"line-through\" : \"none\",\n userSelect: selectable ? \"text\" : \"none\",\n overflow: truncate ? \"hidden\" : undefined,\n whiteSpace: truncate ? \"nowrap\" : undefined,\n textOverflow: truncate ? \"ellipsis\" : undefined,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.25s ease-in-out\",\n ...style,\n };\n\n /** 🧠 Hover events (narrow to HTMLElement at runtime) */\n const handleMouseEnter = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"0.8\";\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"1\";\n }\n };\n\n /**\n * Build props object. We cast only once to the correct intrinsic props type.\n * This prevents TypeScript from having to compute giant unions for event types.\n */\n const props = {\n className,\n style: computedStyle,\n onClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...rest,\n } as React.ComponentPropsWithoutRef<T>;\n\n // Use React.createElement to avoid JSX generic complexity\n return React.createElement(Element as any, props, children);\n}\n\nexport default Text;\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ChevronDown","ChevronUp","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","ToastContext","createContext","useToast","context","useContext","ToastProvider","toasts","setToasts","useState","removeToast","useCallback","id","prev","t","addToast","toast","jsx","ToastItem","typeStyles","CheckCircle","AlertCircle","AlertTriangle","onClose","title","description","bg","border","icon","jsxs","Accordion","memo","items","allowMultiple","defaultOpen","borderColor","backgroundColor","textColor","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","borderRadius","contentPadding","fontSize","fontWeight","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","shadow","style","openIndexes","setOpenIndexes","contentRefs","useRef","useEffect","el","toggleItem","i","toCssValue","item","isOpen","e","sizeMap","fontSizeMap","dimensionMap","variantMap","statusPositionMap","Avatar","src","alt","variant","isOnline","isOffline","fallback","ring","ringColor","onClick","statusPosition","statusClassName","statusStyle","imageError","setImageError","clickable","initials","n","statusColor","dimensionPx","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","padding","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","duration","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","percent","skip","seconds","toggleFullscreen","formatTime","time","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","maxWidth","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","r","f","clsx","Badge","text","iconPosition","primaryTheme","rounded","notificationDot","dotColor","count","pulse","sizes","themeClasses","dynamicStyle","Button","iconBefore","iconAfter","loading","loadingText","fullWidth","disabled","sizeClasses","Fragment","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","darkMode","containerRef","focusedIndex","setFocusedIndex","handleChange","updatedValues","v","container","handleKeyDown","currentIndex","option","isChecked","isFocused","RadioGroup","selectedValue","o","SwitchGroup","switchBgColor","paddingMap","Container","center","toResponsiveClass","prefix","bp","val","FlexView","direction","align","justify","wrap","gap","margin","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","DrawerButton","label","Drawer","open","position","showCloseButton","overlayClassName","closeButtonClassName","mounted","setMounted","transform","useMemo","Dropdown","defaultValue","placeholder","success","helperText","LabelIcon","PrefixIcon","containerClassName","labelClassName","triggerClassName","dropdownClassName","optionClassName","useImperativeHandle","setOpen","localValue","setLocalValue","currentValue","selectedOption","handler","handleSelect","theme","dynamicPrimary","dynamicBorder","dynamicBgActive","borderState","paddingLeft","p","opt","Input","suffixIcon","min","max","step","rows","inputRef","visible","setVisible","hasPrefixIcon","hasPrefixText","hasPrefix","getPadding","dynamicFocusStyle","dynamicColorStyle","borderStyle","Image","height","borderWidth","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","m","hoverScale","hoverRotate","hoverOpacity","hoverShadow","overflow","onLoad","onError","baseClasses","inlineStyles","overflowStyles","handleMouseEnter","handleMouseLeave","ListItem","subItems","isInline","isOrdered","itemClassName","bulletClassName","bulletStyle","sub","List","titleIcon","titleClassName","ListTag","Modal","ariaLabel","contentClassName","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","radius","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","activeTabStyle","inactiveTabStyle","contentStyle","active","setActive","hovered","setHovered","isMobile","setIsMobile","drawerOpen","setDrawerOpen","check","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isHovered","isDisabled","adjustColor","amount","hex","defaultColors","Text","as","weight","italic","underline","strikethrough","truncate","selectable","hoverable","baseColor","Element","lightMode","darkModeTheme","computedStyle","target"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,34]}