@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.
- package/dist/components/basic/Accordation.d.ts +9 -13
- package/dist/components/basic/Alert.d.ts +10 -23
- package/dist/components/basic/Avatar.d.ts +7 -16
- package/dist/components/basic/Badge.d.ts +9 -14
- package/dist/components/basic/Button.d.ts +9 -19
- package/dist/components/basic/CheckboxGroup.d.ts +1 -0
- package/dist/components/basic/Container.d.ts +2 -19
- package/dist/components/basic/Drawer.d.ts +7 -18
- package/dist/components/basic/DropDown.d.ts +20 -40
- package/dist/components/basic/FlexView.d.ts +16 -0
- package/dist/components/basic/GridView.d.ts +4 -9
- package/dist/components/basic/Image.d.ts +10 -31
- package/dist/components/basic/Input.d.ts +22 -35
- package/dist/components/basic/List.d.ts +6 -20
- package/dist/components/basic/Modal.d.ts +8 -8
- package/dist/components/basic/RadioGroup.d.ts +1 -0
- package/dist/components/basic/Stack.d.ts +4 -14
- package/dist/components/basic/SwitchGroup.d.ts +1 -0
- package/dist/components/basic/Table.d.ts +6 -1
- package/dist/index.cjs.js +82 -52
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.es.js +2060 -2902
- package/dist/index.es.js.map +1 -1
- package/dist/src/components/basic/Accordation.js +25 -26
- package/dist/src/components/basic/Alert.js +33 -138
- package/dist/src/components/basic/AudioPlayer.js +54 -40
- package/dist/src/components/basic/Avatar.js +41 -154
- package/dist/src/components/basic/Badge.js +23 -62
- package/dist/src/components/basic/Button.js +24 -97
- package/dist/src/components/basic/CheckboxGroup.js +36 -13
- package/dist/src/components/basic/Container.js +19 -38
- package/dist/src/components/basic/Drawer.js +22 -73
- package/dist/src/components/basic/DropDown.js +94 -158
- package/dist/src/components/basic/FlexView.js +19 -0
- package/dist/src/components/basic/GridView.js +15 -48
- package/dist/src/components/basic/Image.js +39 -79
- package/dist/src/components/basic/Input.js +68 -109
- package/dist/src/components/basic/List.js +20 -62
- package/dist/src/components/basic/Modal.js +6 -58
- package/dist/src/components/basic/RadioGroup.js +35 -18
- package/dist/src/components/basic/Stack.js +19 -72
- package/dist/src/components/basic/SwitchGroup.js +42 -16
- package/dist/src/components/basic/Table.js +15 -36
- package/dist/src/components/basic/Tabs.js +3 -12
- package/dist/src/index.js +3 -5
- package/dist/types/src/components/basic/Accordation.d.ts +9 -13
- package/dist/types/src/components/basic/Alert.d.ts +10 -23
- package/dist/types/src/components/basic/Avatar.d.ts +7 -16
- package/dist/types/src/components/basic/Badge.d.ts +9 -14
- package/dist/types/src/components/basic/Button.d.ts +9 -19
- package/dist/types/src/components/basic/CheckboxGroup.d.ts +1 -0
- package/dist/types/src/components/basic/Container.d.ts +2 -19
- package/dist/types/src/components/basic/Drawer.d.ts +7 -18
- package/dist/types/src/components/basic/DropDown.d.ts +20 -40
- package/dist/types/src/components/basic/FlexView.d.ts +16 -0
- package/dist/types/src/components/basic/GridView.d.ts +4 -9
- package/dist/types/src/components/basic/Image.d.ts +10 -31
- package/dist/types/src/components/basic/Input.d.ts +22 -35
- package/dist/types/src/components/basic/List.d.ts +6 -20
- package/dist/types/src/components/basic/Modal.d.ts +8 -8
- package/dist/types/src/components/basic/RadioGroup.d.ts +1 -0
- package/dist/types/src/components/basic/Stack.d.ts +4 -14
- package/dist/types/src/components/basic/SwitchGroup.d.ts +1 -0
- package/dist/types/src/components/basic/Table.d.ts +6 -1
- package/dist/types/src/index.d.ts +3 -4
- package/dist/ui.css +1 -1
- package/package.json +2 -1
- package/dist/components/basic/Card.d.ts +0 -28
- package/dist/components/basic/Flexbox.d.ts +0 -25
- package/dist/components/basic/Section.d.ts +0 -36
- package/dist/src/components/basic/Card.js +0 -47
- package/dist/src/components/basic/Flexbox.js +0 -67
- package/dist/src/components/basic/Section.js +0 -100
- package/dist/types/src/components/basic/Card.d.ts +0 -28
- package/dist/types/src/components/basic/Flexbox.d.ts +0 -25
- package/dist/types/src/components/basic/Section.d.ts +0 -36
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/eye-off.js","../node_modules/lucide-react/dist/esm/icons/eye.js","../node_modules/lucide-react/dist/esm/icons/heart.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/maximize.js","../node_modules/lucide-react/dist/esm/icons/minimize.js","../node_modules/lucide-react/dist/esm/icons/music.js","../node_modules/lucide-react/dist/esm/icons/pause.js","../node_modules/lucide-react/dist/esm/icons/play.js","../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js","../node_modules/lucide-react/dist/esm/icons/shuffle.js","../node_modules/lucide-react/dist/esm/icons/skip-back.js","../node_modules/lucide-react/dist/esm/icons/skip-forward.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/volume-2.js","../node_modules/lucide-react/dist/esm/icons/volume-x.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/basic/Alert.tsx","../src/components/basic/Accordation.tsx","../src/components/basic/Avatar.tsx","../src/components/basic/AudioPlayer.tsx","../src/components/basic/AudioGallery.tsx","../src/components/basic/Badge.tsx","../src/components/basic/Button.tsx","../src/components/basic/Card.tsx","../src/components/basic/CheckboxGroup.tsx","../src/components/basic/RadioGroup.tsx","../src/components/basic/SwitchGroup.tsx","../src/components/basic/Container.tsx","../src/components/basic/Flexbox.tsx","../src/components/basic/Stack.tsx","../src/components/basic/GridView.tsx","../src/components/basic/Drawer.tsx","../src/components/basic/DropDown.tsx","../src/components/basic/Input.tsx","../src/components/basic/Image.tsx","../src/components/basic/List.tsx","../src/components/basic/Modal.tsx","../src/components/basic/Table.tsx","../src/components/basic/Tabs.tsx","../src/components/basic/Text.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\"path\", { d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\", key: \"151rxh\" }],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst EyeOff = createLucideIcon(\"eye-off\", __iconNode);\n\nexport { __iconNode, EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\n key: \"mvr1a0\"\n }\n ]\n];\nconst Heart = createLucideIcon(\"heart\", __iconNode);\n\nexport { __iconNode, Heart as default };\n//# sourceMappingURL=heart.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3H5a2 2 0 0 0-2 2v3\", key: \"1dcmit\" }],\n [\"path\", { d: \"M21 8V5a2 2 0 0 0-2-2h-3\", key: \"1e4gt3\" }],\n [\"path\", { d: \"M3 16v3a2 2 0 0 0 2 2h3\", key: \"wsl5sc\" }],\n [\"path\", { d: \"M16 21h3a2 2 0 0 0 2-2v-3\", key: \"18trek\" }]\n];\nconst Maximize = createLucideIcon(\"maximize\", __iconNode);\n\nexport { __iconNode, Maximize as default };\n//# sourceMappingURL=maximize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3v3a2 2 0 0 1-2 2H3\", key: \"hohbtr\" }],\n [\"path\", { d: \"M21 8h-3a2 2 0 0 1-2-2V3\", key: \"5jw1f3\" }],\n [\"path\", { d: \"M3 16h3a2 2 0 0 1 2 2v3\", key: \"198tvr\" }],\n [\"path\", { d: \"M16 21v-3a2 2 0 0 1 2-2h3\", key: \"ph8mxp\" }]\n];\nconst Minimize = createLucideIcon(\"minimize\", __iconNode);\n\nexport { __iconNode, Minimize as default };\n//# sourceMappingURL=minimize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 18V5l12-2v13\", key: \"1jmyc2\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"circle\", { cx: \"18\", cy: \"16\", r: \"3\", key: \"1hluhg\" }]\n];\nconst Music = createLucideIcon(\"music\", __iconNode);\n\nexport { __iconNode, Music as default };\n//# sourceMappingURL=music.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m18 14 4 4-4 4\", key: \"10pe0f\" }],\n [\"path\", { d: \"m18 2 4 4-4 4\", key: \"pucp1d\" }],\n [\"path\", { d: \"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22\", key: \"1ailkh\" }],\n [\"path\", { d: \"M2 6h1.972a4 4 0 0 1 3.6 2.2\", key: \"km57vx\" }],\n [\"path\", { d: \"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45\", key: \"os18l9\" }]\n];\nconst Shuffle = createLucideIcon(\"shuffle\", __iconNode);\n\nexport { __iconNode, Shuffle as default };\n//# sourceMappingURL=shuffle.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z\",\n key: \"15892j\"\n }\n ],\n [\"path\", { d: \"M3 20V4\", key: \"1ptbpl\" }]\n];\nconst SkipBack = createLucideIcon(\"skip-back\", __iconNode);\n\nexport { __iconNode, SkipBack as default };\n//# sourceMappingURL=skip-back.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 4v16\", key: \"7j8fe9\" }],\n [\n \"path\",\n {\n d: \"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z\",\n key: \"zs4d6\"\n }\n ]\n];\nconst SkipForward = createLucideIcon(\"skip-forward\", __iconNode);\n\nexport { __iconNode, SkipForward as default };\n//# sourceMappingURL=skip-forward.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"path\", { d: \"M16 9a5 5 0 0 1 0 6\", key: \"1q6k2b\" }],\n [\"path\", { d: \"M19.364 18.364a9 9 0 0 0 0-12.728\", key: \"ijwkga\" }]\n];\nconst Volume2 = createLucideIcon(\"volume-2\", __iconNode);\n\nexport { __iconNode, Volume2 as default };\n//# sourceMappingURL=volume-2.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"9\", y2: \"15\", key: \"1ewh16\" }],\n [\"line\", { x1: \"16\", x2: \"22\", y1: \"9\", y2: \"15\", key: \"5ykzw1\" }]\n];\nconst VolumeX = createLucideIcon(\"volume-x\", __iconNode);\n\nexport { __iconNode, VolumeX as default };\n//# sourceMappingURL=volume-x.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import React, { useEffect, useState, useMemo } from \"react\";\nimport {\n X,\n Info,\n CheckCircle,\n AlertCircle,\n AlertTriangle,\n} from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\ntype AlertPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport interface AlertProps {\n title?: string;\n description?: string;\n type?: AlertType;\n dismissible?: boolean;\n duration?: number;\n onClose?: () => void;\n\n /** Customization */\n icon?: React.ReactNode;\n actionButton?: React.ReactNode;\n position?: AlertPosition;\n backgroundColor?: string;\n borderColor?: string;\n textColor?: string;\n borderRadius?: string | number;\n shadow?: string;\n padding?: string | number;\n fontSize?: string | number;\n fontWeight?: number | string;\n descriptionColor?: string;\n animationDuration?: string;\n maxWidth?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst typeStyles: Record<AlertType, any> = {\n success: {\n bg: \"#ecfdf5\",\n border: \"#34d399\",\n iconColor: \"#059669\",\n Icon: <CheckCircle size={20} />,\n },\n error: {\n bg: \"#fef2f2\",\n border: \"#f87171\",\n iconColor: \"#dc2626\",\n Icon: <AlertCircle size={20} />,\n },\n warning: {\n bg: \"#fffbeb\",\n border: \"#facc15\",\n iconColor: \"#d97706\",\n Icon: <AlertTriangle size={20} />,\n },\n info: {\n bg: \"#eff6ff\",\n border: \"#3b82f6\",\n iconColor: \"#2563eb\",\n Icon: <Info size={20} />,\n },\n};\n\nconst getPositionStyle = (position: AlertPosition): React.CSSProperties => {\n const base: React.CSSProperties = {\n position: \"fixed\",\n zIndex: 9999,\n pointerEvents: \"auto\",\n };\n\n switch (position) {\n case \"top-left\":\n return { ...base, top: \"1.25rem\", left: \"1.25rem\" };\n case \"top-center\":\n return { ...base, top: \"1.25rem\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"top-right\":\n return { ...base, top: \"1.25rem\", right: \"1.25rem\" };\n case \"bottom-left\":\n return { ...base, bottom: \"1.25rem\", left: \"1.25rem\" };\n case \"bottom-center\":\n return { ...base, bottom: \"1.25rem\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"bottom-right\":\n default:\n return { ...base, bottom: \"1.25rem\", right: \"1.25rem\" };\n }\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n title,\n description,\n type = \"info\",\n dismissible = true,\n duration,\n onClose,\n icon,\n actionButton,\n position = \"top-right\",\n backgroundColor,\n borderColor,\n textColor = \"#111827\",\n borderRadius = \"0.75rem\",\n shadow = \"0 4px 14px rgba(0,0,0,0.1)\",\n padding = \"1rem\",\n fontSize = \"0.95rem\",\n fontWeight = 500,\n descriptionColor = \"#374151\",\n animationDuration = \"300ms\",\n maxWidth = \"480px\",\n className = \"\",\n style,\n}) => {\n const [visible, setVisible] = useState(false);\n const [exiting, setExiting] = useState(false);\n\n useEffect(() => {\n setVisible(true);\n\n if (duration) {\n const timer = setTimeout(() => {\n setExiting(true);\n setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, parseInt(animationDuration));\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose, animationDuration]);\n\n const { bg, border, iconColor, Icon } = typeStyles[type];\n const positionStyle = getPositionStyle(position);\n\n const containerStyle: React.CSSProperties = useMemo(\n () => ({\n ...positionStyle,\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.75rem\",\n backgroundColor: backgroundColor ?? bg,\n borderLeft: `4px solid ${borderColor ?? border}`,\n borderRadius,\n color: textColor,\n boxShadow: shadow,\n padding,\n maxWidth,\n width: \"calc(100% - 2.5rem)\",\n opacity: visible && !exiting ? 1 : 0,\n transform: visible && !exiting\n ? \"translateY(0)\"\n : position.includes(\"bottom\")\n ? \"translateY(20px)\"\n : \"translateY(-20px)\",\n transition: `opacity ${animationDuration} ease, transform ${animationDuration} ease`,\n fontWeight,\n fontSize,\n ...style,\n }),\n [\n visible,\n exiting,\n bg,\n border,\n borderColor,\n borderRadius,\n position,\n shadow,\n padding,\n textColor,\n maxWidth,\n backgroundColor,\n animationDuration,\n style,\n fontSize,\n fontWeight,\n ]\n );\n\n if (!visible) return null;\n\n return (\n <>\n <style>\n {`\n @keyframes alert-slide-in-top {\n from { opacity: 0; transform: translateY(-20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n @keyframes alert-slide-in-bottom {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n `}\n </style>\n <div\n className={className}\n style={{\n ...containerStyle,\n animation: `${position.includes(\"bottom\") ? \"alert-slide-in-bottom\" : \"alert-slide-in-top\"} ${animationDuration} ease`,\n }}\n role=\"alert\"\n >\n <div style={{ color: iconColor, marginTop: \"2px\" }}>{icon || Icon}</div>\n\n <div style={{ flex: 1, minWidth: 0 }}>\n {title && (\n <div style={{ fontWeight: 600, fontSize, marginBottom: \"4px\" }}>\n {title}\n </div>\n )}\n {description && (\n <div style={{ fontSize: \"0.875rem\", color: descriptionColor, lineHeight: 1.4 }}>\n {description}\n </div>\n )}\n {actionButton && <div style={{ marginTop: \"8px\" }}>{actionButton}</div>}\n </div>\n\n {dismissible && (\n <button\n onClick={() => {\n setExiting(true);\n setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, parseInt(animationDuration));\n }}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: \"#6b7280\",\n cursor: \"pointer\",\n marginLeft: \"8px\",\n padding: 0,\n lineHeight: 0,\n }}\n aria-label=\"Close alert\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n </>\n );\n};\n\nAlert.displayName = \"Alert\";\n","import React, { useState, useRef, useEffect, memo } from \"react\";\n\nexport interface AccordionItem {\n title: string;\n content: React.ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n\n /** Allow multiple open items */\n allowMultiple?: boolean;\n\n /** Default open indexes */\n defaultOpen?: number[];\n\n /** Appearance */\n borderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverBgColor?: string;\n hoverTextColor?: string;\n contentBgColor?: string;\n contentTextColor?: string;\n\n /** Layout & spacing */\n paddingY?: string | number;\n paddingX?: string | number;\n marginY?: string | number;\n borderRadius?: string | number;\n contentPadding?: string | number;\n\n /** Typography */\n fontSize?: string | number;\n fontWeight?: string | number;\n contentFontSize?: string | number;\n contentFontWeight?: string | number;\n\n /** Icon customization */\n iconOpen?: React.ReactNode;\n iconClose?: React.ReactNode;\n iconSize?: string | number;\n\n /** Motion & style */\n transitionDuration?: string;\n shadow?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * 🧠 Industry-standard, minimal, and fully customizable Accordion\n */\nexport const Accordion: React.FC<AccordionProps> = memo(\n ({\n items,\n allowMultiple = false,\n defaultOpen = [],\n borderColor = \"#e5e7eb\",\n backgroundColor = \"#fff\",\n textColor = \"#111827\",\n hoverBgColor = \"#f9fafb\",\n hoverTextColor = \"#111827\",\n contentBgColor = \"#fff\",\n contentTextColor = \"#374151\",\n paddingY = \"1rem\",\n paddingX = \"1rem\",\n marginY = \"0.75rem\",\n borderRadius = \"0.5rem\",\n contentPadding = \"1rem\",\n fontSize = \"1rem\",\n fontWeight = 600,\n contentFontSize = \"0.95rem\",\n contentFontWeight = 400,\n iconOpen = \"−\",\n iconClose = \"+\",\n iconSize = \"1.25rem\",\n transitionDuration = \"300ms\",\n shadow = \"0 1px 4px rgba(0,0,0,0.08)\",\n className = \"\",\n style,\n }) => {\n const [openIndexes, setOpenIndexes] = useState<number[]>(defaultOpen);\n const contentRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n useEffect(() => {\n contentRefs.current.forEach((el, index) => {\n if (el) {\n el.style.maxHeight = openIndexes.includes(index)\n ? `${el.scrollHeight}px`\n : \"0px\";\n }\n });\n }, [openIndexes]);\n\n const toggleItem = (index: number) => {\n setOpenIndexes((prev) =>\n allowMultiple\n ? prev.includes(index)\n ? prev.filter((i) => i !== index)\n : [...prev, index]\n : prev.includes(index)\n ? []\n : [index]\n );\n };\n\n return (\n <div className={className} style={{ width: \"100%\", ...style }}>\n {items.map((item, index) => {\n const isOpen = openIndexes.includes(index);\n\n return (\n <div\n key={index}\n style={{\n border: `1px solid ${borderColor}`,\n borderRadius,\n margin: `${marginY} 0`,\n boxShadow: shadow,\n overflow: \"hidden\",\n transition: `all ${transitionDuration} ease`,\n }}\n >\n {/* Header Button */}\n <button\n onClick={() => toggleItem(index)}\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n backgroundColor,\n color: textColor,\n padding: `${paddingY} ${paddingX}`,\n fontWeight,\n fontSize,\n cursor: \"pointer\",\n border: \"none\",\n outline: \"none\",\n transition: `all ${transitionDuration}`,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = hoverBgColor;\n e.currentTarget.style.color = hoverTextColor;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = backgroundColor;\n e.currentTarget.style.color = textColor;\n }}\n >\n <span>{item.title}</span>\n <span style={{ fontSize: iconSize }}>\n {isOpen ? iconOpen : iconClose}\n </span>\n </button>\n\n {/* Content */}\n <div\n ref={(el) => {\n contentRefs.current[index] = el;\n }}\n style={{\n overflow: \"hidden\",\n maxHeight: isOpen\n ? `${contentRefs.current[index]?.scrollHeight}px`\n : \"0px\",\n transition: `max-height ${transitionDuration} ease-in-out`,\n }}\n >\n <div\n style={{\n borderTop: `1px solid ${borderColor}`,\n backgroundColor: contentBgColor,\n color: contentTextColor,\n padding: contentPadding,\n fontSize: contentFontSize,\n fontWeight: contentFontWeight,\n }}\n >\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n);\n\nAccordion.displayName = \"Accordion\";\n","import React, { useState } from \"react\";\nimport { User } from \"lucide-react\";\n\ntype AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"responsive\";\ntype AvatarVariant = \"circular\" | \"rounded\" | \"square\";\n\ninterface AvatarProps {\n src?: string;\n alt?: string;\n size?: AvatarSize;\n variant?: AvatarVariant;\n isOnline?: boolean;\n isOffline?: boolean;\n className?: string;\n style?: React.CSSProperties;\n statusClassName?: string;\n statusStyle?: React.CSSProperties;\n statusPosition?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n fallback?: string;\n ring?: boolean;\n ringColor?: string;\n onClick?: () => void;\n}\n\ninterface AvatarGroupProps {\n avatars: AvatarProps[];\n max?: number;\n size?: AvatarSize;\n className?: string;\n style?: React.CSSProperties;\n spacing?: \"tight\" | \"normal\" | \"loose\";\n direction?: \"left\" | \"right\";\n}\n\n// --- Base maps ---\nconst sizeMap = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 64,\n} as const;\n\nconst fontSizeMap = {\n xs: 10,\n sm: 12,\n md: 14,\n lg: 16,\n xl: 18,\n \"2xl\": 20,\n} as const;\n\nconst statusSizeMap = {\n xs: 6,\n sm: 8,\n md: 10,\n lg: 12,\n xl: 14,\n \"2xl\": 16,\n} as const;\n\n// --- Helpers ---\nconst getVariantStyles = (variant: AvatarVariant): string => {\n switch (variant) {\n case \"square\":\n return \"0px\";\n case \"rounded\":\n return \"8px\";\n default:\n return \"50%\";\n }\n};\n\nconst getStatusPositionStyle = (\n position: AvatarProps[\"statusPosition\"],\n offset: number\n): React.CSSProperties => {\n switch (position) {\n case \"top-left\":\n return { top: 2, left: 2 };\n case \"top-right\":\n return { top: 2, right: 2 };\n case \"bottom-left\":\n return { bottom: 2, left: 2 };\n default:\n return { bottom: 2, right: 2 };\n }\n};\n\nconst getSpacingOffset = (spacing: AvatarGroupProps[\"spacing\"], dim: number) => {\n switch (spacing) {\n case \"tight\":\n return -(dim * 0.5);\n case \"loose\":\n return -(dim * 0.15);\n default:\n return -(dim * 0.35);\n }\n};\n\n// --- Avatar Component ---\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"User avatar\",\n size = \"md\",\n variant = \"circular\",\n isOnline = false,\n isOffline = false,\n className = \"\",\n style,\n statusClassName = \"\",\n statusStyle,\n statusPosition = \"bottom-right\",\n fallback,\n ring = false,\n ringColor = \"#3b82f6\",\n onClick,\n}) => {\n const [imageError, setImageError] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const isResponsive = size === \"responsive\";\n const dimension = !isResponsive ? sizeMap[size as Exclude<AvatarSize, \"responsive\">] : undefined;\n const fontSize = !isResponsive ? fontSizeMap[size as Exclude<AvatarSize, \"responsive\">] : \"clamp(10px, 2vw, 16px)\";\n const statusSize = !isResponsive ? statusSizeMap[size as Exclude<AvatarSize, \"responsive\">] : 10;\n const borderRadius = getVariantStyles(variant);\n\n const initials = fallback || alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const statusColor = isOnline ? \"#10b981\" : isOffline ? \"#6b7280\" : \"\";\n const statusLabel = isOnline ? \"Online\" : isOffline ? \"Offline\" : \"\";\n\n const showImage = src && !imageError;\n const clickable = !!onClick;\n\n return (\n <div\n className={className}\n role={clickable ? \"button\" : \"img\"}\n tabIndex={clickable ? 0 : -1}\n aria-label={alt}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onKeyDown={(e) => {\n if (clickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n }}\n style={{\n position: \"relative\",\n width: isResponsive ? \"100%\" : dimension,\n height: isResponsive ? \"100%\" : dimension,\n borderRadius,\n overflow: \"visible\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n cursor: clickable ? \"pointer\" : \"default\",\n transition: \"all 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",\n transform: isHovered && clickable ? \"scale(1.05)\" : \"scale(1)\",\n boxShadow: ring\n ? `0 0 0 3px ${ringColor}22, 0 0 0 1px ${ringColor}`\n : isHovered && clickable\n ? \"0 6px 16px rgba(0, 0, 0, 0.15)\"\n : \"0 1px 3px rgba(0, 0, 0, 0.1)\",\n ...style,\n }}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n loading=\"lazy\"\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius,\n transition: \"opacity 0.3s ease-in-out\",\n }}\n />\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n color: \"#fff\",\n fontSize,\n fontWeight: 600,\n borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {initials || <User size={dimension ? dimension * 0.5 : 20} />}\n </div>\n )}\n\n {(isOnline || isOffline) && (\n <div\n className={statusClassName}\n aria-label={statusLabel}\n title={statusLabel}\n style={{\n position: \"absolute\",\n width: statusSize,\n height: statusSize,\n borderRadius: \"50%\",\n backgroundColor: statusColor,\n border: \"2px solid white\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.12)\",\n ...getStatusPositionStyle(statusPosition, statusSize),\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};\n\n// --- AvatarGroup Component ---\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n avatars,\n max = 4,\n size = \"md\",\n className = \"\",\n style,\n spacing = \"normal\",\n direction = \"left\",\n}) => {\n const isResponsive = size === \"responsive\";\n const dimension = !isResponsive ? sizeMap[size as Exclude<AvatarSize, \"responsive\">] : 40;\n const fontSize = !isResponsive ? fontSizeMap[size as Exclude<AvatarSize, \"responsive\">] : \"clamp(10px, 2vw, 14px)\";\n const spacingOffset = getSpacingOffset(spacing, dimension);\n const visibleAvatars = avatars.slice(0, max);\n const extraCount = avatars.length - max;\n\n return (\n <div\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: direction === \"right\" ? \"row-reverse\" : \"row\",\n flexWrap: \"wrap\",\n ...style,\n }}\n role=\"group\"\n aria-label={`Avatar group with ${avatars.length} members`}\n >\n {visibleAvatars.map((avatar, i) => {\n const isFirst = direction === \"left\" ? i === 0 : i === visibleAvatars.length - 1;\n const zIndex = direction === \"left\" ? visibleAvatars.length - i : i + 1;\n\n return (\n <div\n key={i}\n style={{\n marginLeft: direction === \"left\" && !isFirst ? spacingOffset : 0,\n marginRight: direction === \"right\" && !isFirst ? spacingOffset : 0,\n zIndex,\n position: \"relative\",\n transition: \"transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = `translateY(-3px) scale(1.05)`;\n e.currentTarget.style.zIndex = \"100\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = \"translateY(0) scale(1)\";\n e.currentTarget.style.zIndex = zIndex.toString();\n }}\n >\n <Avatar {...avatar} size={size} />\n </div>\n );\n })}\n\n {extraCount > 0 && (\n <div\n style={{\n marginLeft: direction === \"left\" ? spacingOffset : 0,\n marginRight: direction === \"right\" ? spacingOffset : 0,\n width: dimension,\n height: dimension,\n borderRadius: \"50%\",\n background: \"linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%)\",\n color: \"#374151\",\n fontSize,\n fontWeight: 600,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"3px solid white\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.15)\",\n userSelect: \"none\",\n }}\n title={`${extraCount} more members`}\n >\n +{extraCount}\n </div>\n )}\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n} from \"lucide-react\";\n\ninterface AudioPlayerProps {\n src: string;\n thumbnail?: string;\n autoPlay?: boolean;\n loop?: boolean;\n backgroundColor?: string;\n primaryColor?: string;\n secondaryColor?: string;\n borderRadius?: string;\n className?: string;\n padding?: string;\n width?: string;\n}\n\nexport const AudioPlayer: React.FC<AudioPlayerProps> = ({\n src,\n thumbnail,\n autoPlay = false,\n loop = false,\n backgroundColor = \"#000000\",\n primaryColor = \"#10b981\",\n secondaryColor = \"#ffffff\",\n borderRadius = \"12px\",\n padding = \"16px\",\n width = \"100%\",\n className,\n}) => {\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const [isPlaying, setIsPlaying] = useState(autoPlay);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.5);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.volume = volume;\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.loop = isLooping;\n }, [isLooping]);\n\n const togglePlayPause = () => {\n if (!audioRef.current) return;\n isPlaying ? audioRef.current.pause() : audioRef.current.play();\n setIsPlaying(!isPlaying);\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n setDuration(audioRef.current.duration);\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current || !e.currentTarget) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n const time = percent * duration;\n audioRef.current.currentTime = time;\n setCurrentTime(time);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current) audioRef.current.currentTime += seconds;\n };\n\n const toggleFullscreen = () => {\n if (!playerRef.current) return;\n isFullscreen\n ? document.exitFullscreen?.()\n : playerRef.current.requestFullscreen?.();\n setIsFullscreen(!isFullscreen);\n };\n\n const formatTime = (time: number) => {\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n return (\n <div\n ref={playerRef}\n className={className}\n style={{\n position: \"relative\",\n width,\n backgroundColor,\n borderRadius,\n color: secondaryColor,\n boxShadow: \"0 4px 12px rgba(0,0,0,0.3)\",\n overflow: \"hidden\",\n padding,\n boxSizing: \"border-box\",\n maxWidth: \"100%\",\n }}\n >\n <audio\n ref={audioRef}\n src={src}\n autoPlay={autoPlay}\n loop={loop}\n onTimeUpdate={handleTimeUpdate}\n onLoadedMetadata={handleTimeUpdate}\n />\n\n {thumbnail && (\n <img\n src={thumbnail}\n alt=\"Audio Thumbnail\"\n style={{\n width: \"100%\",\n objectFit: \"cover\",\n borderRadius,\n marginBottom: \"16px\",\n maxHeight: \"150px\",\n }}\n />\n )}\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"10px\",\n flexShrink: 0,\n marginTop: \"10px\",\n }}\n >\n <button onClick={() => skip(-10)} aria-label=\"Skip Back 10s\">\n <SkipBack size={20} />\n </button>\n <button\n onClick={togglePlayPause}\n style={{\n background: primaryColor,\n borderRadius: \"9999px\",\n padding: \"10px\",\n color: \"#fff\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={20} /> : <Play size={20} />}\n </button>\n <button onClick={() => skip(10)} aria-label=\"Skip Forward 10s\">\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Time & Seek */}\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"12px\",\n width: \"100%\",\n }}\n >\n {/* Time Info */}\n <div style={{ flexShrink: 0, minWidth: \"60px\", textAlign: \"center\" }}>\n <span style={{ fontSize: \"14px\", marginRight: \"4px\" }}>\n {formatTime(currentTime)}\n </span>\n <span style={{ fontSize: \"14px\", color: \"#aaa\" }}>\n / {formatTime(duration)}\n </span>\n </div>\n\n {/* Seek Bar */}\n <div\n onClick={handleSeek}\n style={{\n flex: 1,\n height: \"8px\",\n background: \"#444\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n position: \"relative\",\n minWidth: \"100px\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"4px\",\n }}\n />\n </div>\n\n {/* Extra Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n flexShrink: 0,\n }}\n >\n <button\n onClick={() => setIsLooping(!isLooping)}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={18} color={isLooping ? primaryColor : undefined} />\n </button>\n <button\n onClick={() => setVolume(volume > 0 ? 0 : 0.5)}\n aria-label=\"Toggle Mute\"\n >\n {volume > 0 ? <Volume2 size={18} /> : <VolumeX size={18} />}\n </button>\n <button onClick={toggleFullscreen} aria-label=\"Toggle Fullscreen\">\n {isFullscreen ? <Minimize size={18} /> : <Maximize size={18} />}\n </button>\n </div>\n </div>\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n Download,\n Heart,\n Share2,\n Music,\n Shuffle,\n} from \"lucide-react\";\n\ninterface AudioTrack {\n src: string;\n title: string;\n artist?: string;\n thumbnail?: string;\n duration?: string;\n}\n\ninterface AudioGalleryProps {\n tracks?: AudioTrack[];\n className?: string;\n galleryTitle?: string;\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n secondaryColor?: string;\n autoplay?: boolean;\n borderColor?: string;\n border?: number;\n maxWidth?: number;\n loop?: boolean;\n}\n\nconst defaultTracks: AudioTrack[] = [\n {\n src: \"https://www.soundjay.com/misc/sounds/bell-ringing-05.wav\",\n title: \"Morning Bell\",\n artist: \"Nature Sounds\",\n duration: \"0:15\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-4.wav\",\n title: \"Digital Click\",\n artist: \"Tech Audio\",\n duration: \"0:05\",\n thumbnail:\n \"https://images.unsplash.com/photo-1514525253161-7a46d19cd819?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-10.wav\",\n title: \"Soft Chime\",\n artist: \"Ambient Studio\",\n duration: \"0:08\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n];\n\nexport function AudioGallery({\n tracks = defaultTracks,\n className = \"\",\n galleryTitle = \"Audio Gallery\",\n primaryColor = \"#8b5cf6\",\n backgroundColor = \"#0f0f23\",\n textColor = \"#e4e4e7\",\n secondaryColor = \"#1a1a2e\",\n border = 0,\n borderColor,\n maxWidth = 420,\n autoplay = false,\n loop = false,\n}: AudioGalleryProps) {\n const [currentTrackIndex, setCurrentTrackIndex] = useState<number | null>(\n null\n );\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n const [isShuffle, setIsShuffle] = useState(false);\n const [isLiked, setIsLiked] = useState(false);\n const [showVolumeSlider, setShowVolumeSlider] = useState(false);\n\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const volumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.volume = volume;\n }\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.loop = isLooping;\n }\n }, [isLooping]);\n\n useEffect(() => {\n if (currentTrackIndex === null && audioRef.current) {\n audioRef.current.pause();\n setIsPlaying(false);\n setCurrentTime(0);\n setDuration(0);\n }\n }, [currentTrackIndex]);\n\n const playPauseTrack = (index: number) => {\n if (currentTrackIndex === index) {\n if (!audioRef.current) return;\n if (audioRef.current.paused) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n } else {\n audioRef.current.pause();\n setIsPlaying(false);\n }\n } else {\n setCurrentTrackIndex(index);\n setTimeout(() => {\n if (audioRef.current) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }, 100);\n }\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n if (audioRef.current.duration) {\n setDuration(audioRef.current.duration);\n }\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current || !duration) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const seekTime = percent * duration;\n audioRef.current.currentTime = seekTime;\n setCurrentTime(seekTime);\n };\n\n const handleVolumeChange = (e: React.MouseEvent<HTMLDivElement>) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const newVolume = Math.max(0, Math.min(1, percent));\n setVolume(newVolume);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current && duration) {\n let newTime = audioRef.current.currentTime + seconds;\n newTime = Math.min(Math.max(newTime, 0), duration);\n audioRef.current.currentTime = newTime;\n setCurrentTime(newTime);\n }\n };\n\n const nextTrack = () => {\n if (currentTrackIndex === null) return;\n let nextIndex;\n if (isShuffle) {\n nextIndex = Math.floor(Math.random() * tracks.length);\n } else {\n nextIndex = (currentTrackIndex + 1) % tracks.length;\n }\n playPauseTrack(nextIndex);\n };\n\n const prevTrack = () => {\n if (currentTrackIndex === null) return;\n let prevIndex;\n if (isShuffle) {\n prevIndex = Math.floor(Math.random() * tracks.length);\n } else {\n prevIndex = (currentTrackIndex - 1 + tracks.length) % tracks.length;\n }\n playPauseTrack(prevIndex);\n };\n\n const toggleMute = () => {\n setVolume((prev) => (prev > 0 ? 0 : 0.7));\n };\n\n const showVolume = () => {\n setShowVolumeSlider(true);\n if (volumeTimeoutRef.current) {\n clearTimeout(volumeTimeoutRef.current);\n }\n volumeTimeoutRef.current = setTimeout(() => {\n setShowVolumeSlider(false);\n }, 3000);\n };\n\n const formatTime = (time: number) => {\n if (isNaN(time)) return \"0:00\";\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n const currentTrack =\n currentTrackIndex !== null ? tracks[currentTrackIndex] : null;\n\n return (\n <div\n className={className}\n style={{\n maxWidth: `${maxWidth}px`,\n margin: \"20px auto\",\n background: `linear-gradient(145deg, ${backgroundColor}, ${secondaryColor})`,\n color: textColor,\n borderRadius: \"24px\",\n padding: \"24px 16px\",\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n userSelect: \"none\",\n backdropFilter: \"blur(20px)\",\n border: `${border}px solid ${borderColor}40`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"12px\",\n background: `linear-gradient(135deg, ${primaryColor}, ${secondaryColor})`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Music size={20} color=\"white\" />\n </div>\n <div>\n <h2\n style={{\n margin: 0,\n fontSize: \"1.25rem\",\n fontWeight: \"700\",\n color: primaryColor, // fallback for browsers without WebkitTextFillColor\n }}\n >\n {galleryTitle}\n </h2>\n <p style={{ margin: 0, fontSize: \"0.875rem\", opacity: 0.7 }}>\n {tracks.length} tracks\n </p>\n </div>\n </div>\n\n <button\n onClick={() => setIsShuffle(!isShuffle)}\n style={{\n background: isShuffle ? primaryColor : \"transparent\",\n border: \"none\",\n borderRadius: \"12px\",\n padding: \"8px\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n opacity: isShuffle ? 1 : 0.6,\n }}\n aria-label=\"Toggle Shuffle\"\n >\n <Shuffle size={18} color={isShuffle ? \"white\" : textColor} />\n </button>\n </div>\n\n {/* Track List */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n marginBottom: \"20px\",\n maxHeight: \"240px\",\n overflowY: \"auto\",\n paddingRight: \"4px\",\n }}\n >\n {tracks.map((track, index) => {\n const isActive = currentTrackIndex === index;\n const isCurrentlyPlaying = isActive && isPlaying;\n\n return (\n <div\n key={index}\n onClick={() => playPauseTrack(index)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"12px 16px\",\n borderRadius: \"16px\",\n background: isActive\n ? `linear-gradient(135deg, ${primaryColor}20, ${primaryColor}10)`\n : \"rgba(255,255,255,0.05)\",\n border: isActive\n ? `1px solid ${primaryColor}40`\n : \"1px solid transparent\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n backdropFilter: isActive ? `blur(20px)` : \"none\",\n }}\n >\n {/* Thumbnail */}\n <div\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"12px\",\n background: track.thumbnail\n ? `url(${track.thumbnail}) center/cover`\n : primaryColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"12px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {!track.thumbnail && <Music size={20} color=\"white\" />}\n {isCurrentlyPlaying && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n width: \"16px\",\n height: \"16px\",\n display: \"flex\",\n gap: \"2px\",\n alignItems: \"end\",\n justifyContent: \"center\",\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n style={{\n width: \"3px\",\n background: \"white\",\n borderRadius: \"2px\",\n animation: `equalizer 1s ease-in-out infinite ${\n i * 0.2\n }s`,\n height: \"12px\",\n }}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Track Info */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontWeight: \"600\",\n fontSize: \"0.95rem\",\n color: isActive ? primaryColor : textColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.title}\n </div>\n {track.artist && (\n <div\n style={{\n fontSize: \"0.8rem\",\n opacity: 0.7,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.artist}\n </div>\n )}\n </div>\n\n {/* Duration & Play Button */}\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n >\n {track.duration && (\n <span style={{ fontSize: \"0.8rem\", opacity: 0.6 }}>\n {track.duration}\n </span>\n )}\n <div\n style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"8px\",\n background: isActive\n ? primaryColor\n : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n }}\n >\n {isCurrentlyPlaying ? (\n <Pause size={16} color=\"white\" />\n ) : (\n <Play size={16} color=\"white\" />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Current Track Display & Controls */}\n {currentTrack && (\n <div\n ref={playerRef}\n style={{\n background: `linear-gradient(135deg, ${secondaryColor}, ${backgroundColor})`,\n borderRadius: \"20px\",\n padding: \"20px\",\n border: `1px solid ${primaryColor}40`,\n backdropFilter: \"blur(20px)\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {/* Background Blur Effect */}\n {currentTrack.thumbnail && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundImage: `url(${currentTrack.thumbnail})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n filter: \"blur(60px) opacity(0.1)\",\n transform: \"scale(1.1)\",\n }}\n />\n )}\n\n {/* Content */}\n <div style={{ position: \"relative\", zIndex: 1 }}>\n {/* Track Info */}\n <div style={{ textAlign: \"center\", marginBottom: \"20px\" }}>\n <h3\n style={{\n margin: \"0 0 4px 0\",\n fontSize: \"1.1rem\",\n fontWeight: \"700\",\n color: primaryColor,\n }}\n >\n {currentTrack.title}\n </h3>\n {currentTrack.artist && (\n <p style={{ margin: 0, opacity: 0.7, fontSize: \"0.9rem\" }}>\n {currentTrack.artist}\n </p>\n )}\n </div>\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"20px\",\n marginBottom: \"20px\",\n }}\n >\n <button\n onClick={prevTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Previous Track\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={() => skip(-10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip back 10 seconds\"\n >\n <SkipBack size={16} />\n <span style={{ fontSize: \"0.7rem\", marginLeft: \"2px\" }}>\n 10\n </span>\n </button>\n\n <button\n onClick={() => {\n if (!audioRef.current) return;\n if (isPlaying) {\n audioRef.current.pause();\n setIsPlaying(false);\n } else {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }}\n style={{\n ...controlButtonStyle(\"#fff\", primaryColor),\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n boxShadow: `0 8px 25px ${primaryColor}40`,\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={24} /> : <Play size={24} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip forward 10 seconds\"\n >\n <span style={{ fontSize: \"0.7rem\", marginRight: \"2px\" }}>\n 10\n </span>\n <SkipForward size={16} />\n </button>\n\n <button\n onClick={nextTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Next Track\"\n >\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Progress Bar */}\n <div style={{ marginBottom: \"16px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"8px\",\n fontSize: \"0.8rem\",\n opacity: 0.7,\n }}\n >\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n\n <div\n onClick={handleSeek}\n style={{\n height: \"6px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: `linear-gradient(90deg, ${primaryColor}, #ec4899)`,\n borderRadius: \"3px\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n right: \"-6px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: \"12px\",\n height: \"12px\",\n background: primaryColor,\n borderRadius: \"50%\",\n boxShadow: `0 2px 8px ${primaryColor}60`,\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Additional Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLiked(!isLiked)}\n style={controlButtonStyle(\n isLiked ? \"#ec4899\" : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Like\"\n >\n <Heart size={16} fill={isLiked ? \"#ec4899\" : \"none\"} />\n </button>\n\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={controlButtonStyle(\n isLooping ? primaryColor : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={16} />\n </button>\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n position: \"relative\",\n }}\n >\n {showVolumeSlider && (\n <div\n onClick={handleVolumeChange}\n style={{\n width: \"80px\",\n height: \"4px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"2px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${volume * 100}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"2px\",\n }}\n />\n </div>\n )}\n\n <button\n onClick={toggleMute}\n onMouseEnter={showVolume}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label={volume > 0 ? \"Mute\" : \"Unmute\"}\n >\n {volume > 0 ? <Volume2 size={16} /> : <VolumeX size={16} />}\n </button>\n </div>\n </div>\n </div>\n\n <audio\n ref={audioRef}\n src={currentTrack.src}\n autoPlay={autoplay}\n loop={isLooping}\n onTimeUpdate={handleTimeUpdate}\n onEnded={() => {\n setIsPlaying(false);\n if (!isLooping) {\n nextTrack();\n }\n }}\n onLoadedMetadata={handleTimeUpdate}\n preload=\"metadata\"\n style={{ display: \"none\" }}\n />\n </div>\n )}\n\n <style>{`\n @keyframes equalizer {\n 0%, 100% { height: 4px; }\n 50% { height: 12px; }\n }\n \n /* Custom Scrollbar */\n div::-webkit-scrollbar {\n width: 4px;\n }\n \n div::-webkit-scrollbar-track {\n background: rgba(255,255,255,0.1);\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb {\n background: ${primaryColor};\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb:hover {\n background: ${primaryColor}dd;\n }\n `}</style>\n </div>\n );\n}\n\nfunction controlButtonStyle(\n color: string,\n backgroundColor: string\n): React.CSSProperties {\n return {\n border: \"none\",\n backgroundColor,\n color,\n cursor: \"pointer\",\n padding: \"10px\",\n borderRadius: \"12px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n backdropFilter: \"blur(10px)\",\n };\n}\n","import React, { CSSProperties, ReactNode, memo } from \"react\";\n\nexport interface BadgeProps {\n text?: string;\n color?: string; // background\n textColor?: string;\n borderColor?: string;\n borderWidth?: string;\n\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n\n rounded?: boolean;\n borderRadius?: string;\n\n fontSize?: string;\n fontWeight?: number | string;\n\n horizontalPadding?: string;\n verticalPadding?: string;\n margin?: string;\n shadow?: string;\n\n notificationDot?: boolean;\n dotColor?: string;\n count?: number | string;\n pulse?: boolean;\n\n style?: CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nexport const Badge: React.FC<BadgeProps> = memo(\n ({\n text,\n color = \"#2563eb\",\n textColor = \"#fff\",\n borderColor = \"#2563eb\",\n borderWidth = \"0\",\n\n icon,\n iconPosition = \"left\",\n\n rounded = false,\n borderRadius,\n fontSize = \"13px\",\n fontWeight = 500,\n horizontalPadding = \"10px\",\n verticalPadding = \"4px\",\n margin = \"0\",\n shadow = \"0 1px 3px rgba(0,0,0,0.1)\",\n\n notificationDot = false,\n dotColor = \"#ef4444\",\n count,\n pulse = false,\n\n style,\n className = \"\",\n onClick,\n }) => {\n const baseStyle: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: color,\n color: textColor,\n border: `${borderWidth} solid ${borderColor}`,\n borderRadius: borderRadius || (rounded ? \"9999px\" : \"6px\"),\n padding: `${verticalPadding} ${horizontalPadding}`,\n fontSize,\n fontWeight,\n margin,\n boxShadow: shadow,\n position: \"relative\",\n cursor: onClick ? \"pointer\" : \"default\",\n userSelect: \"none\",\n lineHeight: 1,\n transition: \"all 0.2s ease\",\n ...style,\n };\n\n const dotStyle: CSSProperties = {\n position: \"absolute\",\n top: \"-4px\",\n right: \"-4px\",\n height: \"8px\",\n width: \"8px\",\n backgroundColor: dotColor,\n borderRadius: \"50%\",\n animation: pulse ? \"pulseAnim 1.2s infinite\" : undefined,\n };\n\n const countStyle: CSSProperties = {\n position: \"absolute\",\n top: \"-8px\",\n right: \"-8px\",\n backgroundColor: dotColor,\n color: \"#fff\",\n borderRadius: \"50%\",\n minWidth: \"18px\",\n height: \"18px\",\n fontSize: \"11px\",\n padding: \"0 5px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 1,\n };\n\n const iconStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n margin:\n icon && text\n ? iconPosition === \"left\"\n ? \"0 6px 0 0\"\n : \"0 0 0 6px\"\n : 0,\n };\n\n return (\n <span style={baseStyle} className={className} onClick={onClick}>\n {/* Dot */}\n {notificationDot && <span style={dotStyle} />}\n\n {/* Count */}\n {typeof count !== \"undefined\" && <span style={countStyle}>{count}</span>}\n\n {/* Icon Left */}\n {icon && iconPosition === \"left\" && <span style={iconStyle}>{icon}</span>}\n\n {/* Text */}\n {text && <span>{text}</span>}\n\n {/* Icon Right */}\n {icon && iconPosition === \"right\" && <span style={iconStyle}>{icon}</span>}\n\n {/* Pulse Animation */}\n <style>\n {`\n @keyframes pulseAnim {\n 0% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.5); opacity: 0.5; }\n 100% { transform: scale(1); opacity: 1; }\n }\n `}\n </style>\n </span>\n );\n }\n);\n","\"use client\";\nimport React, { useMemo, useState, CSSProperties, FC } from \"react\";\n\n/** 🌈 Default color palette */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n border: \"#d1d5db\",\n hover: \"#1d4ed8\",\n text: \"#ffffff\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n border: \"#374151\",\n hover: \"#3b82f6\",\n text: \"#000000\",\n },\n};\n\n/** 🎨 Adjust color shade utility */\nfunction adjustColor(color: string, amount: number): string {\n if (!color.startsWith(\"#\") || color.length !== 7) return color;\n return (\n \"#\" +\n color\n .replace(/^#/, \"\")\n .replace(/../g, (hex) =>\n (\n \"0\" +\n Math.min(255, Math.max(0, parseInt(hex, 16) + amount)).toString(16)\n ).slice(-2)\n )\n );\n}\n\n/** ⚙️ Props */\nexport interface ButtonProps {\n children: React.ReactNode;\n type?: \"button\" | \"submit\" | \"reset\";\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n iconBefore?: React.ReactNode;\n iconAfter?: React.ReactNode;\n className?: string;\n style?: CSSProperties;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n\n /** 🎨 Theme options */\n darkMode?: boolean;\n baseColor?: string;\n\n /** 🧩 Optional design tweaks */\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: boolean;\n\n /** 🧱 Border visibility */\n showBorder?: boolean; // ✅ new prop\n}\n\n/** 💎 Minimal customizable Button */\nexport const Button: FC<ButtonProps> = ({\n children,\n type = \"button\",\n onClick,\n iconBefore,\n iconAfter,\n className = \"\",\n style,\n fullWidth = false,\n disabled = false,\n loading = false,\n loadingText = \"Loading...\",\n darkMode = false,\n baseColor,\n size = \"md\",\n rounded = true,\n showBorder = false, // ✅ default: no border\n}) => {\n const [hovered, setHovered] = useState(false);\n\n /** 🧠 Theme system */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const light = {\n primary: baseColor,\n hover: adjustColor(baseColor, -40),\n text: \"#ffffff\",\n border: adjustColor(baseColor, -60),\n };\n const dark = {\n primary: adjustColor(baseColor, 60),\n hover: adjustColor(baseColor, 80),\n text: \"#000000\",\n border: adjustColor(baseColor, 40),\n };\n return darkMode ? dark : light;\n }, [baseColor, darkMode]);\n\n /** 📏 Sizes */\n const sizes: Record<\n NonNullable<ButtonProps[\"size\"]>,\n { px: number; py: number; font: string }\n > = {\n sm: { px: 16, py: 6, font: \"0.85rem\" },\n md: { px: 24, py: 10, font: \"1rem\" },\n lg: { px: 32, py: 14, font: \"1.125rem\" },\n };\n\n const s = sizes[size];\n\n /** 💅 Computed styles */\n const buttonStyle: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"8px\",\n padding: `${s.py}px ${s.px}px`,\n fontSize: s.font,\n fontWeight: 500,\n borderRadius: rounded ? 8 : 3,\n border: showBorder ? `1px solid ${theme.border}` : \"none\", // ✅ conditional border\n width: fullWidth ? \"100%\" : \"auto\",\n backgroundColor: hovered && !disabled ? theme.hover : theme.primary,\n color: theme.text,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n transition: \"all 0.25s ease-in-out\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.15)\",\n ...style,\n };\n\n return (\n <button\n type={type}\n className={className}\n style={buttonStyle}\n onClick={!disabled && !loading ? onClick : undefined}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n disabled={disabled}\n >\n {loading ? (\n <>\n <span\n style={{\n width: \"16px\",\n height: \"16px\",\n border: \"2px solid currentColor\",\n borderTopColor: \"transparent\",\n borderRadius: \"50%\",\n animation: \"spin 1s linear infinite\",\n }}\n />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && <span>{iconBefore}</span>}\n <span>{children}</span>\n {iconAfter && <span>{iconAfter}</span>}\n </>\n )}\n\n {/* Spinner animation */}\n <style>\n {`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}\n </style>\n </button>\n );\n};\n\nexport default Button;\n","import React, {\n CSSProperties,\n ReactNode,\n ElementType,\n forwardRef,\n ForwardedRef,\n ReactElement,\n ComponentPropsWithoutRef,\n} from \"react\";\n\n// Allow any string for variant to support fully custom variants\ntype CardVariant = string;\n\ntype CardOwnProps = {\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n variant?: CardVariant;\n background?: string;\n textColor?: string;\n borderRadius?: string | number;\n border?: string;\n boxShadow?: string;\n hoverShadow?: string;\n padding?: string | number;\n margin?: string | number;\n width?: string | number;\n height?: string | number;\n style?: CSSProperties;\n hoverStyle?: CSSProperties;\n onClick?: () => void;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps &\n Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps>;\n\nconst CardInner = <T extends ElementType = \"div\">(\n {\n as,\n children,\n className = \"\",\n variant = \"elevated\",\n background = \"#fff\",\n textColor = \"#000\",\n borderRadius = 12,\n border,\n boxShadow,\n hoverShadow,\n padding = 16,\n margin,\n width,\n height,\n style = {},\n hoverStyle = {},\n onClick,\n ...rest\n }: CardProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) => {\n const Component = as || \"div\";\n\n // Default styling for known variants; unknown variants can be customized\n const baseVariantStyles: Record<string, CSSProperties> = {\n elevated: {\n boxShadow: boxShadow || \"0 4px 12px rgba(0,0,0,0.08)\",\n border: border || \"none\",\n },\n outline: {\n border: border || \"1px solid rgba(0,0,0,0.1)\",\n boxShadow: \"none\",\n },\n flat: {\n border: \"none\",\n boxShadow: \"none\",\n },\n };\n\n const cardStyle: CSSProperties = {\n background,\n color: textColor,\n borderRadius,\n padding,\n margin,\n width,\n height,\n transition: \"all 0.25s ease\",\n cursor: onClick ? \"pointer\" : undefined,\n boxSizing: \"border-box\",\n ...(baseVariantStyles[variant] || {}), // fallback if variant is custom\n ...style,\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLElement>) => {\n Object.assign(\n e.currentTarget.style,\n hoverShadow ? { boxShadow: hoverShadow } : hoverStyle\n );\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n Object.assign(e.currentTarget.style, {\n ...cardStyle,\n ...(baseVariantStyles[variant] || {}),\n });\n };\n\n return (\n <Component\n ref={ref}\n className={`ui-card ${className}`}\n style={cardStyle}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\nconst ForwardedCard = forwardRef(CardInner) as <T extends ElementType = \"div\">(\n props: CardProps<T> & { ref?: ForwardedRef<HTMLDivElement> }\n) => ReactElement;\n\nconst Card = Object.assign(ForwardedCard, { displayName: \"Card\" });\n\nexport { Card };\n","\"use client\";\nimport React from \"react\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface CheckboxGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n customIcon?: (checked: boolean) => React.ReactNode;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className = \"\",\n customIcon,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n}) => {\n const handleChange = (value: string) => {\n if (!onChange) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"group\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n {customIcon ? (\n customIcon(isChecked)\n ) : (\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: 4,\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ width: iconSize * 0.6, height: iconSize * 0.6 }}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n </label>\n );\n })}\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React from \"react\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n name?: string;\n options: Option[];\n selectedValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n selectedValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className = \"\",\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n}) => {\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"radiogroup\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValue === option.value;\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => onChange && onChange(option.value)}\n style={{ display: \"none\" }}\n />\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: \"50%\",\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: \"white\",\n }}\n />\n )}\n </span>\n </label>\n );\n })}\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React from \"react\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface SwitchGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n}\n\nexport const SwitchGroup: React.FC<SwitchGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className = \"\",\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n switchBgColor = \"#d1d5db\",\n textColor = \"#374151\",\n errorStyle,\n}) => {\n const handleChange = (value: string) => {\n if (!onChange) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"group\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n <span\n style={{\n position: \"relative\",\n width: iconSize * 2,\n height: iconSize * 1.1,\n borderRadius: 9999,\n backgroundColor: isChecked ? iconCheckedBgColor : switchBgColor,\n transition: \"background-color 0.25s ease\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: isChecked\n ? `calc(100% - ${iconSize - 4}px - 2px)`\n : \"2px\",\n transform: \"translateY(-50%)\",\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.3)\",\n transition: \"left 0.25s ease\",\n }}\n />\n </span>\n </label>\n );\n })}\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};\n","import React, { useMemo } from \"react\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n /** Predefined max-width based on common breakpoints */\n size?: ContainerSize;\n\n /** Padding (accepts number in px or CSS string, e.g., '2rem') */\n padding?: number | string;\n\n /** Margin (accepts number in px or CSS string, e.g., 'auto' or '16px 8px') */\n margin?: number | string;\n\n /** Background color (any valid CSS color) */\n backgroundColor?: string;\n\n /** Center the container horizontally (adds `margin: 0 auto`) */\n center?: boolean;\n\n /** Custom width override (defaults to container max width) */\n width?: string;\n\n /** Optional height */\n height?: string;\n\n /** Border radius (accepts number in px or CSS string) */\n borderRadius?: number | string;\n\n /** Additional inline styles */\n style?: React.CSSProperties;\n\n /** Tailwind or custom class names */\n className?: string;\n\n /** Container content */\n children: React.ReactNode;\n}\n\n/** Tailwind-like container widths */\nconst containerWidths: Record<ContainerSize, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n full: \"100%\",\n};\n\n/**\n * 🧱 Container Component\n * A flexible, responsive layout wrapper inspired by Tailwind's container.\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = 0,\n margin = \"0 auto\",\n backgroundColor = \"transparent\",\n center = true,\n width,\n height = \"auto\",\n borderRadius = 0,\n style,\n className = \"\",\n children,\n}) => {\n const styles = useMemo<React.CSSProperties>(() => {\n const computedPadding =\n typeof padding === \"number\" ? `${padding}px` : padding;\n\n const computedMargin =\n center && margin === \"0 auto\" ? \"0 auto\" : margin;\n\n const computedBorderRadius =\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius;\n\n return {\n maxWidth: width ?? containerWidths[size],\n margin: computedMargin,\n padding: computedPadding,\n backgroundColor,\n height,\n borderRadius: computedBorderRadius,\n boxSizing: \"border-box\",\n width: width ?? \"100%\",\n ...style,\n };\n }, [\n size,\n padding,\n margin,\n backgroundColor,\n width,\n height,\n borderRadius,\n center,\n style,\n ]);\n\n return (\n <div className={className} style={styles}>\n {children}\n </div>\n );\n};\n\nexport default Container;\n","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexboxProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\n \"flex-start\" | \"flex-end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"\n >;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<number | string>;\n padding?: ResponsiveValue<number | string>;\n margin?: ResponsiveValue<number | string>;\n backgroundColor?: ResponsiveValue<string>;\n width?: ResponsiveValue<string>;\n maxWidth?: ResponsiveValue<string>;\n height?: ResponsiveValue<string>;\n borderRadius?: ResponsiveValue<string>;\n border?: ResponsiveValue<string>;\n boxShadow?: ResponsiveValue<string>;\n overflow?: ResponsiveValue<\"visible\" | \"hidden\" | \"auto\" | \"scroll\">;\n children: React.ReactNode;\n style?: React.CSSProperties;\n className?: string; // for Tailwind or other classes\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nconst resolveResponsive = <T,>(\n prop: ResponsiveValue<T> | undefined,\n screen: ScreenSize,\n fallback?: T\n): T | undefined => {\n if (prop == null) return fallback;\n if (typeof prop !== \"object\") return prop;\n return (prop as Partial<Record<ScreenSize, T>>)[screen] ?? fallback;\n};\n\nexport const Flexbox: React.FC<FlexboxProps> = ({\n direction = { sm: \"column\", md: \"row\", lg: \"row\" },\n align = \"center\",\n justify = \"space-between\",\n wrap = \"wrap\",\n gap = 16,\n padding,\n margin,\n backgroundColor = \"transparent\",\n width = \"100%\",\n maxWidth = \"100%\",\n height = \"auto\",\n borderRadius,\n border,\n boxShadow,\n overflow,\n children,\n style,\n className,\n}) => {\n const [screen, setScreen] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n const updateScreen = () => setScreen(getScreenSize(window.innerWidth));\n updateScreen();\n window.addEventListener(\"resize\", updateScreen);\n return () => window.removeEventListener(\"resize\", updateScreen);\n }, []);\n\n const computedStyle = useMemo<React.CSSProperties>(() => {\n const toCssValue = (val?: string | number) =>\n typeof val === \"number\" ? `${val}px` : val;\n\n return {\n display: \"flex\",\n flexDirection: resolveResponsive(direction, screen, \"row\"),\n alignItems: resolveResponsive(align, screen, \"center\"),\n justifyContent: resolveResponsive(justify, screen, \"flex-start\"),\n flexWrap: resolveResponsive(wrap, screen, \"wrap\"),\n gap: toCssValue(resolveResponsive(gap, screen, undefined)),\n padding: toCssValue(resolveResponsive(padding, screen, undefined)),\n margin: toCssValue(resolveResponsive(margin, screen, undefined)),\n backgroundColor: resolveResponsive(backgroundColor, screen, undefined),\n width: resolveResponsive(width, screen, \"100%\"),\n maxWidth: resolveResponsive(maxWidth, screen, undefined),\n height: resolveResponsive(height, screen, undefined),\n borderRadius: resolveResponsive(borderRadius, screen, undefined),\n border: resolveResponsive(border, screen, undefined),\n boxShadow: resolveResponsive(boxShadow, screen, undefined),\n overflow: resolveResponsive(overflow, screen, undefined),\n boxSizing: \"border-box\",\n ...style,\n };\n }, [\n direction,\n align,\n justify,\n wrap,\n gap,\n padding,\n margin,\n backgroundColor,\n width,\n maxWidth,\n height,\n borderRadius,\n border,\n boxShadow,\n overflow,\n screen,\n style,\n ]);\n\n return (\n <div className={className} style={computedStyle}>\n {children}\n </div>\n );\n};\n","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface StackProps {\n direction?: ResponsiveValue<\"vertical\" | \"horizontal\">;\n gap?: ResponsiveValue<number | string>;\n align?: ResponsiveValue<\"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\n \"flex-start\" | \"flex-end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"\n >;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n padding?: ResponsiveValue<number | string>;\n margin?: ResponsiveValue<number | string>;\n width?: ResponsiveValue<string>;\n maxWidth?: ResponsiveValue<string>;\n height?: ResponsiveValue<string>;\n backgroundColor?: ResponsiveValue<string>;\n borderRadius?: ResponsiveValue<string>;\n border?: ResponsiveValue<string>;\n boxShadow?: ResponsiveValue<string>;\n overflow?: ResponsiveValue<\"visible\" | \"hidden\" | \"auto\" | \"scroll\">;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nconst resolveResponsive = <T,>(\n prop: ResponsiveValue<T> | undefined,\n screen: ScreenSize,\n fallback?: T\n): T | undefined => {\n if (prop == null) return fallback;\n if (typeof prop !== \"object\") return prop;\n return (prop as Partial<Record<ScreenSize, T>>)[screen] ?? fallback;\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\", lg: \"horizontal\" },\n gap = 12,\n align = \"center\",\n justify = \"flex-start\",\n wrap = \"nowrap\",\n padding,\n margin,\n width = \"100%\",\n maxWidth,\n height = \"auto\",\n backgroundColor = \"transparent\",\n borderRadius,\n border,\n boxShadow,\n overflow,\n className,\n style,\n children,\n}) => {\n const [screen, setScreen] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n const updateScreen = () => setScreen(getScreenSize(window.innerWidth));\n updateScreen();\n window.addEventListener(\"resize\", updateScreen);\n return () => window.removeEventListener(\"resize\", updateScreen);\n }, []);\n\n const computedStyle = useMemo<React.CSSProperties>(() => {\n const toCssValue = (val?: string | number) =>\n typeof val === \"number\" ? `${val}px` : val;\n\n const resolvedDir = resolveResponsive(direction, screen, \"vertical\");\n const flexDir = resolvedDir === \"vertical\" ? \"column\" : \"row\";\n\n return {\n display: \"flex\",\n flexDirection: flexDir,\n alignItems: resolveResponsive(align, screen, \"center\"),\n justifyContent: resolveResponsive(justify, screen, \"flex-start\"),\n flexWrap: resolveResponsive(wrap, screen, \"nowrap\"),\n gap: toCssValue(resolveResponsive(gap, screen, 12)),\n padding: toCssValue(resolveResponsive(padding, screen, undefined)),\n margin: toCssValue(resolveResponsive(margin, screen, undefined)),\n width: resolveResponsive(width, screen, \"100%\"),\n maxWidth: resolveResponsive(maxWidth, screen, undefined),\n height: resolveResponsive(height, screen, undefined),\n backgroundColor: resolveResponsive(backgroundColor, screen, undefined),\n borderRadius: resolveResponsive(borderRadius, screen, undefined),\n border: resolveResponsive(border, screen, undefined),\n boxShadow: resolveResponsive(boxShadow, screen, undefined),\n overflow: resolveResponsive(overflow, screen, undefined),\n boxSizing: \"border-box\",\n ...style,\n };\n }, [\n direction,\n gap,\n align,\n justify,\n wrap,\n padding,\n margin,\n width,\n maxWidth,\n height,\n backgroundColor,\n borderRadius,\n border,\n boxShadow,\n overflow,\n style,\n screen,\n ]);\n\n return (\n <div className={className} style={computedStyle}>\n {children}\n </div>\n );\n};\n\n\n\nexport const HStack: React.FC<StackProps> = (props) => {\n return <Stack direction=\"horizontal\" {...props} />;\n};\n\nexport const VStack: React.FC<StackProps> = (props) => {\n return <Stack direction=\"vertical\" {...props} />;\n};","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface GridProps {\n columns?: number | Partial<Record<ScreenSize, number>>; // responsive column config\n gap?: number | string; // grid gap\n padding?: number | string;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n backgroundColor?: string;\n width?: string;\n maxWidth?: string;\n height?: string;\n margin?: number | string;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 16,\n padding = 0,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n backgroundColor = \"transparent\",\n width = \"100%\",\n maxWidth = \"100%\",\n height = \"auto\",\n margin = 0,\n style,\n className = \"\",\n children,\n}) => {\n const [screenSize, setScreenSize] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n setScreenSize(getScreenSize(window.innerWidth));\n const onResize = () => setScreenSize(getScreenSize(window.innerWidth));\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, []);\n\n const resolvedColumns = useMemo(() => {\n if (typeof columns === \"number\") return columns;\n return columns[screenSize] ?? 1;\n }, [columns, screenSize]);\n\n const styles: React.CSSProperties = useMemo(\n () => ({\n display: \"grid\",\n gridTemplateColumns: `repeat(${resolvedColumns}, 1fr)`,\n gap: typeof gap === \"number\" ? `${gap}px` : gap,\n padding: typeof padding === \"number\" ? `${padding}px` : padding,\n margin: typeof margin === \"number\" ? `${margin}px` : margin,\n alignItems,\n justifyItems,\n backgroundColor,\n width,\n maxWidth,\n height,\n boxSizing: \"border-box\",\n ...style,\n }),\n [\n resolvedColumns,\n gap,\n padding,\n margin,\n alignItems,\n justifyItems,\n backgroundColor,\n width,\n maxWidth,\n height,\n style,\n ]\n );\n\n return (\n <div style={styles} className={className}>\n {children}\n </div>\n );\n};\n","import React, { useState, useEffect, useMemo, CSSProperties, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\n\nexport interface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n color?: string;\n textColor?: string;\n borderRadius?: string;\n padding?: string;\n fontSize?: string;\n gap?: string;\n style?: CSSProperties;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n color = \"#2563eb\",\n textColor = \"#fff\",\n borderRadius = \"6px\",\n padding = \"10px 16px\",\n fontSize = \"14px\",\n gap = \"8px\",\n style,\n className = \"\",\n}) => (\n <button\n onClick={onClick}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: color,\n color: textColor,\n border: \"none\",\n borderRadius,\n padding,\n fontSize,\n gap,\n cursor: \"pointer\",\n fontWeight: 500,\n transition: \"all 0.2s ease\",\n boxShadow: \"0 1px 3px rgba(0,0,0,0.1)\",\n ...style,\n }}\n className={className}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n);\n\n/* ---------------- 🧱 Drawer ---------------- */\n\nexport interface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n width?: string;\n height?: string;\n backgroundColor?: string;\n backdropColor?: string;\n transitionDuration?: number;\n style?: CSSProperties;\n className?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeIconColor?: string;\n closeButtonStyle?: CSSProperties;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n width = \"320px\",\n height = \"320px\",\n backgroundColor = \"#fff\",\n backdropColor = \"rgba(0,0,0,0.5)\",\n transitionDuration = 300,\n style,\n className = \"\",\n children,\n showCloseButton = true,\n closeIconColor = \"#000\",\n closeButtonStyle,\n}) => {\n const [visible, setVisible] = useState(open);\n\n // Handle mount/unmount delay for smooth fade-out\n useEffect(() => {\n if (open) setVisible(true);\n else setTimeout(() => setVisible(false), transitionDuration);\n }, [open, transitionDuration]);\n\n // Drawer transform direction\n const transform = useMemo(() => {\n if (open) return \"translate(0, 0)\";\n switch (position) {\n case \"left\":\n return \"translateX(-100%)\";\n case \"right\":\n return \"translateX(100%)\";\n case \"top\":\n return \"translateY(-100%)\";\n case \"bottom\":\n return \"translateY(100%)\";\n default:\n return \"translate(0, 0)\";\n }\n }, [open, position]);\n\n const drawerStyle: CSSProperties = {\n position: \"fixed\",\n backgroundColor,\n transition: `transform ${transitionDuration}ms ease, opacity ${transitionDuration}ms ease`,\n transform,\n opacity: open ? 1 : 0,\n zIndex: 1001,\n ...style,\n ...(position === \"left\" || position === \"right\"\n ? { top: 0, bottom: 0, [position]: 0, width, height: \"100%\" }\n : { left: 0, right: 0, [position]: 0, height, width: \"100%\" }),\n };\n\n const overlayStyle: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: backdropColor,\n opacity: open ? 1 : 0,\n transition: `opacity ${transitionDuration}ms ease`,\n zIndex: 1000,\n display: visible ? \"block\" : \"none\",\n pointerEvents: open ? \"auto\" : \"none\",\n };\n\n const defaultCloseButtonStyle: CSSProperties = {\n position: \"absolute\",\n top: \"12px\",\n right: \"12px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"transform 0.2s ease, opacity 0.2s ease\",\n };\n\n return (\n <>\n {/* Overlay */}\n <div style={overlayStyle} onClick={onClose} />\n\n {/* Drawer Panel */}\n <div\n style={{\n ...drawerStyle,\n display: \"flex\",\n flexDirection: \"column\",\n visibility: visible ? \"visible\" : \"hidden\",\n pointerEvents: open ? \"auto\" : \"none\",\n boxShadow: \"0 0 20px rgba(0,0,0,0.15)\",\n }}\n className={className}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n style={{ ...defaultCloseButtonStyle, ...closeButtonStyle }}\n aria-label=\"Close drawer\"\n >\n <X size={22} color={closeIconColor} />\n </button>\n )}\n\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: \"16px\",\n scrollbarWidth: \"thin\",\n }}\n >\n {children}\n </div>\n </div>\n </>\n );\n};\n","\"use client\";\nimport React, {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n forwardRef,\n ForwardRefRenderFunction,\n} from \"react\";\n\n/* ----------------------\n * Types\n * ---------------------*/\nexport interface Option {\n label: string;\n value: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n description?: string;\n}\n\nexport interface DropdownProps {\n options: Option[];\n\n value?: string;\n values?: string[];\n defaultValue?: string;\n defaultValues?: string[];\n\n onChange?: (value: string | string[]) => void;\n\n placeholder?: string;\n disabled?: boolean;\n searchable?: boolean;\n multiSelect?: boolean;\n clearable?: boolean;\n virtualized?: boolean;\n\n width?: string | number;\n dropdownMaxHeight?: string;\n borderRadius?: string;\n boxShadow?: string;\n borderColor?: string;\n accentColor?: string; // ✅ accent color (focus ring + selected)\n theme?: \"light\" | \"dark\" | \"custom\"; // ✅ global theme\n menuBg?: string; // ✅ background override\n controlBg?: string; // ✅ control background\n textColor?: string;\n hoverBg?: string;\n selectedBg?: string;\n disabledBg?: string;\n disabledTextColor?: string;\n placeholderColor?: string;\n\n // animation & transitions\n transitionDuration?: string;\n\n // class/style hooks\n className?: string;\n controlClassName?: string;\n menuClassName?: string;\n optionClassName?: string;\n style?: React.CSSProperties;\n controlStyle?: React.CSSProperties;\n menuStyle?: React.CSSProperties;\n optionStyle?: React.CSSProperties;\n\n // icons\n iconPrefix?: React.ReactNode;\n iconSuffix?: React.ReactNode;\n clearIcon?: React.ReactNode;\n dropdownIcon?: React.ReactNode;\n checkIcon?: React.ReactNode;\n}\n\n/* ----------------------\n * Default theme tokens\n * ---------------------*/\nconst THEMES = {\n light: {\n controlBg: \"#ffffff\",\n menuBg: \"#ffffff\",\n textColor: \"#111827\",\n placeholderColor: \"#6b7280\",\n hoverBg: \"#f9fafb\",\n selectedBg: \"#eff6ff\",\n disabledBg: \"#f3f4f6\",\n disabledTextColor: \"#9ca3af\",\n borderColor: \"#e5e7eb\",\n accentColor: \"#3b82f6\",\n },\n dark: {\n controlBg: \"#1f2937\",\n menuBg: \"#111827\",\n textColor: \"#f9fafb\",\n placeholderColor: \"#9ca3af\",\n hoverBg: \"#374151\",\n selectedBg: \"#2563eb33\",\n disabledBg: \"#374151\",\n disabledTextColor: \"#6b7280\",\n borderColor: \"#374151\",\n accentColor: \"#60a5fa\",\n },\n custom: {} as any,\n};\n\n/* ----------------------\n * Component\n * ---------------------*/\nconst DropdownInner: ForwardRefRenderFunction<HTMLDivElement, DropdownProps> = (\n props,\n ref\n) => {\n const id = useId();\n const {\n options,\n value,\n values,\n defaultValue,\n defaultValues,\n onChange,\n\n placeholder = \"Select...\",\n disabled = false,\n searchable = false,\n multiSelect = false,\n clearable = false,\n virtualized = false,\n\n width = \"100%\",\n dropdownMaxHeight = \"320px\",\n borderRadius = \"8px\",\n boxShadow = \"0 8px 28px rgba(0,0,0,0.1)\",\n borderColor,\n accentColor,\n theme = \"light\",\n menuBg,\n controlBg,\n textColor,\n hoverBg,\n selectedBg,\n disabledBg,\n disabledTextColor,\n placeholderColor,\n transitionDuration = \"180ms\",\n\n className,\n controlClassName,\n menuClassName,\n optionClassName,\n style,\n controlStyle,\n menuStyle,\n optionStyle,\n\n iconPrefix,\n iconSuffix,\n clearIcon = \"×\",\n dropdownIcon = \"▾\",\n checkIcon = \"✓\",\n } = props;\n\n // merge theme colors\n const themeVars = {\n ...THEMES[theme],\n ...(theme === \"custom\" ? {} : {}),\n };\n const colors = {\n borderColor: borderColor ?? themeVars.borderColor,\n accentColor: accentColor ?? themeVars.accentColor,\n controlBg: controlBg ?? themeVars.controlBg,\n menuBg: menuBg ?? themeVars.menuBg,\n textColor: textColor ?? themeVars.textColor,\n hoverBg: hoverBg ?? themeVars.hoverBg,\n selectedBg: selectedBg ?? themeVars.selectedBg,\n disabledBg: disabledBg ?? themeVars.disabledBg,\n disabledTextColor: disabledTextColor ?? themeVars.disabledTextColor,\n placeholderColor: placeholderColor ?? themeVars.placeholderColor,\n };\n\n /* ----------------- State ----------------- */\n const [isOpen, setIsOpen] = useState(false);\n const [selected, setSelected] = useState<string[]>(\n defaultValues ?? (defaultValue ? [defaultValue] : [])\n );\n\n useEffect(() => {\n if (value) setSelected([value]);\n if (values) setSelected(values);\n }, [value, values]);\n\n const selectedOptions = useMemo(\n () => options.filter((o) => selected.includes(o.value)),\n [options, selected]\n );\n\n const toggle = () => !disabled && setIsOpen((s) => !s);\n\n const selectValue = (val: string) => {\n if (multiSelect) {\n const exists = selected.includes(val);\n const next = exists\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n setSelected(next);\n onChange?.(next);\n } else {\n setSelected([val]);\n onChange?.(val);\n setIsOpen(false);\n }\n };\n\n const clearSelection = (e?: React.MouseEvent) => {\n e?.stopPropagation();\n setSelected([]);\n onChange?.(multiSelect ? [] : \"\");\n };\n\n /* ----------------- Render ----------------- */\n return (\n <div\n ref={ref}\n className={className}\n style={{\n position: \"relative\",\n width,\n fontFamily:\n \"Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial\",\n ...style,\n }}\n >\n {/* Control */}\n <div\n className={controlClassName}\n role=\"button\"\n tabIndex={0}\n onClick={toggle}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n background: colors.controlBg,\n color: colors.textColor,\n padding: \"0.5rem 0.75rem\",\n border: `1px solid ${\n isOpen ? colors.accentColor : colors.borderColor\n }`,\n borderRadius,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n boxShadow: isOpen ? `0 0 0 3px ${colors.accentColor}33` : undefined,\n transition: `all ${transitionDuration} ease`,\n ...controlStyle,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n {iconPrefix}\n {selectedOptions.length ? (\n <span>{selectedOptions.map((s) => s.label).join(\", \")}</span>\n ) : (\n <span style={{ color: colors.placeholderColor }}>\n {placeholder}\n </span>\n )}\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n {clearable && selected.length > 0 && (\n <button\n onClick={clearSelection}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: colors.textColor,\n cursor: \"pointer\",\n }}\n >\n {clearIcon}\n </button>\n )}\n {iconSuffix}\n <div\n style={{\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: `transform ${transitionDuration}`,\n }}\n >\n {dropdownIcon}\n </div>\n </div>\n </div>\n\n {/* Menu */}\n {isOpen && (\n <ul\n className={menuClassName}\n style={{\n position: \"absolute\",\n zIndex: 100,\n top: \"calc(100% + 4px)\",\n left: 0,\n right: 0,\n background: colors.menuBg,\n border: `1px solid ${colors.borderColor}`,\n borderRadius,\n boxShadow,\n maxHeight: dropdownMaxHeight,\n overflowY: \"auto\",\n transition: `opacity ${transitionDuration} ease`,\n ...menuStyle,\n }}\n >\n {options.map((opt) => {\n const isSelected = selected.includes(opt.value);\n return (\n <li\n key={opt.value}\n onClick={() => !opt.disabled && selectValue(opt.value)}\n className={optionClassName}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"0.5rem 0.75rem\",\n background: opt.disabled\n ? colors.disabledBg\n : isSelected\n ? colors.selectedBg\n : \"transparent\",\n color: opt.disabled\n ? colors.disabledTextColor\n : colors.textColor,\n cursor: opt.disabled ? \"not-allowed\" : \"pointer\",\n borderRadius: 6,\n userSelect: \"none\",\n ...optionStyle,\n }}\n onMouseEnter={(e) => {\n if (!opt.disabled && !isSelected)\n e.currentTarget.style.backgroundColor = colors.hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!opt.disabled && !isSelected)\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {multiSelect && (\n <span style={{ width: 18, textAlign: \"center\" }}>\n {isSelected ? checkIcon : \"○\"}\n </span>\n )}\n {opt.icon && <span>{opt.icon}</span>}\n <div style={{ flex: 1 }}>\n {opt.label}\n {opt.description && (\n <div\n style={{\n fontSize: 12,\n color: colors.placeholderColor,\n marginTop: 2,\n }}\n >\n {opt.description}\n </div>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n};\n\nexport const Dropdown = forwardRef(DropdownInner);\nexport default Dropdown;\n","\"use client\";\nimport React, {\n useState,\n useRef,\n useImperativeHandle,\n forwardRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputProps {\n type?:\n | \"text\"\n | \"password\"\n | \"email\"\n | \"number\"\n | \"search\"\n | \"tel\"\n | \"url\"\n | \"textarea\";\n label?: string;\n placeholder?: string;\n name?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n success?: boolean;\n autoFocus?: boolean;\n\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n\n /** 🎨 Full Customization Options */\n labelColor?: string;\n placeholderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n borderColor?: string;\n hoverBorderColor?: string;\n focusBorderColor?: string;\n errorColor?: string;\n successColor?: string;\n iconColor?: string;\n shadow?: string;\n\n /** 🧩 Layout + Style Customization */\n fontSize?: string;\n fontFamily?: string;\n radius?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n rows?: number;\n cols?: number;\n maxLength?: number;\n resize?: boolean;\n showCharacterCount?: boolean;\n paddingX?: string;\n paddingY?: string;\n\n /** 🧱 External customization */\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputProps\n>((props, ref) => {\n const {\n type = \"text\",\n label,\n placeholder = \"\",\n name = \"\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n success = false,\n autoFocus = false,\n\n iconLeft,\n iconRight,\n\n /** 🎨 Styling props */\n labelColor = \"#374151\",\n placeholderColor = \"#9ca3af\",\n backgroundColor = \"#ffffff\",\n textColor = \"#111827\",\n borderColor = \"#d1d5db\",\n hoverBorderColor = \"#9ca3af\",\n focusBorderColor = \"#2563eb\",\n errorColor = \"#dc2626\",\n successColor = \"#16a34a\",\n iconColor = \"#6b7280\",\n shadow = \"0 1px 2px rgba(0,0,0,0.05)\",\n\n /** 📏 Layout + size */\n size = \"md\",\n fontSize = \"14px\",\n fontFamily = \"Inter, system-ui, sans-serif\",\n radius = \"8px\",\n rows = 4,\n cols,\n maxLength,\n resize = true,\n showCharacterCount = true,\n paddingX,\n paddingY,\n\n className,\n style,\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n /** ✅ Make it controlled properly */\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const newValue = e.target.value;\n if (maxLength && newValue.length > maxLength) return;\n setLocalValue(newValue);\n if (onChange) onChange(name, newValue);\n };\n\n const currentValue = value !== undefined ? value : localValue;\n\n /** 🎯 Dynamic border colors */\n const currentBorderColor = error\n ? errorColor\n : success\n ? successColor\n : borderColor;\n\n /** 🧠 Size tokens */\n const sizes = {\n sm: { paddingY: \"6px\", paddingX: \"10px\", font: \"13px\" },\n md: { paddingY: \"10px\", paddingX: \"14px\", font: \"14px\" },\n lg: { paddingY: \"14px\", paddingX: \"18px\", font: \"16px\" },\n }[size];\n\n const px = paddingX || sizes.paddingX;\n const py = paddingY || sizes.paddingY;\n\n /** 💅 Base input styles */\n const baseInputStyle: CSSProperties = {\n width: \"100%\",\n border: `1px solid ${currentBorderColor}`,\n borderRadius: radius,\n backgroundColor,\n color: textColor,\n fontFamily,\n fontSize,\n padding: `${py} ${px}`,\n paddingLeft: iconLeft ? \"40px\" : px,\n paddingRight:\n iconRight || type === \"password\" ? \"40px\" : px,\n outline: \"none\",\n transition: \"border-color 0.25s ease, box-shadow 0.25s ease\",\n resize: type === \"textarea\" && !resize ? \"none\" : undefined,\n boxShadow: shadow,\n ...style,\n };\n\n /** 🧠 Placeholder dynamic color */\n const dynamicPlaceholder = {\n \"::placeholder\": {\n color: placeholderColor,\n opacity: 1,\n },\n } as any;\n\n /** 🎨 Dynamic border behavior */\n const applyDynamicBorder = (\n el: HTMLInputElement | HTMLTextAreaElement,\n color: string\n ) => {\n if (el) el.style.borderColor = color;\n };\n\n const commonEvents = {\n onFocus: (e: any) => applyDynamicBorder(e.currentTarget, focusBorderColor),\n onBlur: (e: any) => applyDynamicBorder(e.currentTarget, currentBorderColor),\n onMouseEnter: (e: any) =>\n applyDynamicBorder(e.currentTarget, hoverBorderColor),\n onMouseLeave: (e: any) =>\n applyDynamicBorder(e.currentTarget, currentBorderColor),\n };\n\n return (\n <div\n className={className}\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n fontFamily,\n }}\n >\n {/* Label */}\n {label && (\n <label\n htmlFor={name}\n style={{\n marginBottom: 6,\n color: labelColor,\n fontWeight: 500,\n fontSize: \"14px\",\n }}\n >\n {label}\n {required && <span style={{ color: errorColor }}> *</span>}\n </label>\n )}\n\n <div style={{ position: \"relative\", width: \"100%\" }}>\n {/* Left icon */}\n {iconLeft && (\n <span\n style={{\n position: \"absolute\",\n left: 12,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: iconColor,\n pointerEvents: \"none\",\n }}\n >\n {iconLeft}\n </span>\n )}\n\n {/* Input or Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n cols={cols}\n maxLength={maxLength}\n autoFocus={autoFocus}\n style={{ ...baseInputStyle, ...dynamicPlaceholder }}\n onChange={handleChange}\n {...commonEvents}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n id={name}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n style={{ ...baseInputStyle, ...dynamicPlaceholder }}\n onChange={handleChange}\n {...commonEvents}\n />\n )}\n\n {/* Password visibility toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n style={{\n position: \"absolute\",\n right: 10,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: iconColor,\n padding: 0,\n }}\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Right icon */}\n {iconRight && type !== \"password\" && (\n <span\n style={{\n position: \"absolute\",\n right: 12,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: iconColor,\n pointerEvents: \"none\",\n }}\n >\n {iconRight}\n </span>\n )}\n </div>\n\n {/* Character counter */}\n {type === \"textarea\" && showCharacterCount && maxLength && (\n <div\n style={{\n textAlign: \"right\",\n fontSize: \"12px\",\n color: \"#6b7280\",\n marginTop: 4,\n }}\n >\n {currentValue.length}/{maxLength}\n </div>\n )}\n\n {/* Error text */}\n {error && (\n <div\n style={{\n color: errorColor,\n fontSize: \"12px\",\n marginTop: 4,\n }}\n >\n {error}\n </div>\n )}\n </div>\n );\n});\n","import React, { useMemo, useCallback } from \"react\";\n\ninterface ImageProps {\n /** Image source URL */\n src?: string;\n /** Alternative text (for SEO + accessibility) */\n alt?: string;\n /** Optional title attribute (SEO hint tooltip) */\n title?: string;\n /** Custom width and height */\n width?: string | number;\n height?: string | number;\n /** Border customization */\n borderRadius?: string | number;\n borderColor?: string;\n borderStyle?: \"solid\" | \"dashed\" | \"dotted\" | \"double\" | \"none\";\n borderWidth?: string | number;\n /** Shadow customization */\n shadow?: boolean;\n boxShadow?: string;\n /** Opacity and fit options */\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n /** Overlay and icon layers */\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n /** Layout and responsiveness */\n responsive?: boolean;\n padding?: string | number;\n margin?: string | number;\n /** Performance */\n lazyLoad?: boolean;\n /** Hover interactivity */\n hoverOpacity?: number;\n hoverShadow?: boolean;\n hoverScale?: number;\n hoverRotate?: number;\n transitionDuration?: string;\n /** Overflow handling */\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Class and style overrides */\n className?: string;\n style?: React.CSSProperties;\n /** Event handlers */\n onClick?: (event: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\n/**\n * ✅ Industry-Standard Image Component\n * - SEO & accessibility optimized\n * - Lazy loading & responsive\n * - Fully customizable styling\n * - Smooth hover transitions\n * - Overlay and SVG support\n */\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"100%\",\n height = \"auto\",\n borderRadius = \"8px\",\n borderColor = \"transparent\",\n borderStyle = \"solid\",\n borderWidth = \"0px\",\n shadow = false,\n boxShadow,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n padding,\n margin,\n lazyLoad = true,\n hoverOpacity,\n hoverShadow = false,\n hoverScale = 1,\n hoverRotate = 0,\n transitionDuration = \"0.3s\",\n overflow = \"hidden\",\n className,\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n // ✅ Memoized base style for performance\n const baseStyle = useMemo<React.CSSProperties>(\n () => ({\n width: responsive ? \"100%\" : width,\n height: responsive ? \"auto\" : height,\n borderRadius,\n border: `${borderWidth} ${borderStyle} ${borderColor}`,\n objectFit,\n opacity,\n boxShadow: shadow\n ? boxShadow || \"0 4px 12px rgba(0,0,0,0.15)\"\n : \"none\",\n transition: `all ${transitionDuration} ease`,\n display: \"block\",\n }),\n [\n responsive,\n width,\n height,\n borderRadius,\n borderColor,\n borderStyle,\n borderWidth,\n objectFit,\n opacity,\n shadow,\n boxShadow,\n transitionDuration,\n ]\n );\n\n // ✅ Hover effects\n const handleMouseEnter = useCallback(\n (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity =\n hoverOpacity !== undefined ? hoverOpacity.toString() : \"1\";\n e.currentTarget.style.boxShadow = hoverShadow\n ? \"0 8px 20px rgba(0,0,0,0.3)\"\n : baseStyle.boxShadow || \"none\";\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n },\n [hoverOpacity, hoverShadow, hoverScale, hoverRotate, baseStyle.boxShadow]\n );\n\n const handleMouseLeave = useCallback((e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = baseStyle.opacity?.toString() || \"1\";\n e.currentTarget.style.boxShadow = baseStyle.boxShadow || \"none\";\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n }, [baseStyle]);\n\n // ✅ Overflow control\n const overflowStyles: React.CSSProperties = useMemo(() => {\n switch (overflow) {\n case \"x\":\n return { overflowX: \"hidden\" };\n case \"y\":\n return { overflowY: \"hidden\" };\n default:\n return { overflow };\n }\n }, [overflow]);\n\n return (\n <div\n className={className}\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n style={{\n width: responsive ? \"100%\" : width,\n height: responsive ? \"auto\" : height,\n padding,\n margin,\n position: \"relative\",\n cursor: onClick ? \"pointer\" : \"default\",\n display: \"inline-block\",\n transition: `all ${transitionDuration} ease`,\n ...overflowStyles,\n ...style,\n }}\n >\n {/* 🖼 SVG or Image */}\n {svgIcon ? (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {svgIcon}\n </div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading={lazyLoad ? \"lazy\" : \"eager\"}\n style={baseStyle}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onLoad={onLoad}\n onError={onError}\n decoding=\"async\"\n fetchPriority=\"high\"\n />\n )}\n\n {/* 🩶 Optional Overlay Text */}\n {overlayText && (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n backgroundColor: overlayColor,\n color: \"#fff\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontWeight: \"bold\",\n fontSize: \"1.1rem\",\n textAlign: \"center\",\n padding: \"1rem\",\n boxSizing: \"border-box\",\n }}\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};\n","import React, { CSSProperties, ReactNode } from \"react\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Interfaces */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemType {\n text: string;\n icon?: ReactNode;\n onClick?: () => void;\n subItems?: ListItemType[];\n}\n\nexport interface ListProps {\n title?: string;\n titleIcon?: ReactNode;\n items: ListItemType[];\n\n type?: \"unordered\" | \"ordered\" | \"inline\";\n\n bulletColor?: string;\n textColor?: string;\n backgroundColor?: string;\n borderColor?: string;\n\n fontSize?: string;\n fontWeight?: string | number;\n borderRadius?: string;\n padding?: string;\n spacing?: string;\n\n className?: string;\n style?: CSSProperties;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemProps extends ListItemType {\n bulletColor?: string;\n textColor?: string;\n fontSize?: string;\n fontWeight?: string | number;\n spacing?: string;\n isInline?: boolean;\n}\n\nexport const ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n bulletColor = \"#2563eb\",\n textColor = \"#111827\",\n fontSize = \"15px\",\n fontWeight = 500,\n spacing = \"12px\",\n isInline = false,\n}) => {\n const itemContainerStyle: CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n marginBottom: isInline ? \"0\" : spacing,\n };\n\n const contentStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n fontSize,\n fontWeight,\n color: textColor,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n };\n\n const bulletStyle: CSSProperties = {\n width: \"8px\",\n height: \"8px\",\n backgroundColor: bulletColor,\n borderRadius: \"50%\",\n flexShrink: 0,\n };\n\n const subListStyle: CSSProperties = {\n listStyleType: \"disc\",\n paddingLeft: \"20px\",\n margin: 0,\n };\n\n return (\n <li style={itemContainerStyle}>\n <div\n style={contentStyle}\n onClick={onClick}\n onMouseEnter={(e) => (e.currentTarget.style.color = bulletColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = textColor)}\n >\n {icon ? (\n <span style={{ fontSize: \"16px\", color: textColor }}>{icon}</span>\n ) : (\n !isInline && <span style={bulletStyle}></span>\n )}\n <span>{text}</span>\n </div>\n\n {subItems && subItems.length > 0 && (\n <ul style={subListStyle}>\n {subItems.map((sub, index) => (\n <ListItem\n key={index}\n {...sub}\n bulletColor={bulletColor}\n textColor={textColor}\n fontSize={fontSize}\n fontWeight={fontWeight}\n spacing={spacing}\n isInline={false}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\n/* -------------------------------------------------------------------------- */\n/* 📋 List */\n/* -------------------------------------------------------------------------- */\n\nexport const List: React.FC<ListProps> = ({\n title,\n titleIcon,\n items,\n type = \"unordered\",\n\n bulletColor = \"#2563eb\",\n textColor = \"#111827\",\n backgroundColor = \"#fff\",\n borderColor = \"#e5e7eb\",\n\n fontSize = \"15px\",\n fontWeight = 500,\n borderRadius = \"12px\",\n padding = \"16px\",\n spacing = \"12px\",\n\n className,\n style,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const containerStyle: CSSProperties = {\n backgroundColor,\n borderColor,\n color: textColor,\n borderWidth: borderColor ? \"1px\" : \"0px\",\n borderStyle: \"solid\",\n borderRadius,\n padding,\n ...style,\n };\n\n const listStyle: CSSProperties = isInline\n ? {\n display: \"flex\",\n gap: spacing,\n paddingLeft: 0,\n listStyleType: \"none\",\n margin: 0,\n }\n : {\n listStyleType: isOrdered ? \"decimal\" : \"none\",\n paddingLeft: isOrdered ? \"20px\" : \"0\",\n margin: 0,\n };\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div className={className} style={containerStyle}>\n {title && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"17px\",\n fontWeight: 600,\n marginBottom: \"10px\",\n gap: \"8px\",\n }}\n >\n {titleIcon && <span style={{ fontSize: \"18px\" }}>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag style={listStyle}>\n {items.map((item, index) => (\n <ListItem\n key={index}\n {...item}\n bulletColor={bulletColor}\n textColor={textColor}\n fontSize={fontSize}\n fontWeight={fontWeight}\n spacing={spacing}\n isInline={isInline}\n />\n ))}\n </ListTag>\n </div>\n );\n};\n","import React, {\n ReactNode,\n CSSProperties,\n useEffect,\n useRef,\n useCallback,\n} from \"react\";\nimport { X } from \"lucide-react\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n ariaLabel?: string;\n title?: string;\n overlayStyle?: CSSProperties;\n modalStyle?: CSSProperties;\n closeButtonStyle?: CSSProperties;\n disableOverlayClose?: boolean;\n transitionDuration?: number;\n className?: string;\n /** Dark mode toggle */\n darkMode?: boolean;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n ariaLabel,\n title,\n overlayStyle,\n modalStyle,\n closeButtonStyle,\n disableOverlayClose = false,\n transitionDuration = 200,\n className,\n darkMode = false,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* ------------------------------ Escape Close ----------------------------- */\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n if (isOpen) document.addEventListener(\"keydown\", handleEsc);\n return () => document.removeEventListener(\"keydown\", handleEsc);\n }, [isOpen, onClose]);\n\n /* ------------------------------ Scroll Lock ------------------------------ */\n useEffect(() => {\n if (isOpen) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [isOpen]);\n\n /* ------------------------------ Click Outside ---------------------------- */\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n /* ------------------------------- Base Styles ----------------------------- */\n const baseOverlay: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: darkMode ? \"rgba(0,0,0,0.8)\" : \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1000,\n opacity: isOpen ? 1 : 0,\n transition: `opacity ${transitionDuration}ms ease`,\n ...overlayStyle,\n };\n\n const baseModal: CSSProperties = {\n position: \"relative\",\n backgroundColor: darkMode ? \"#1f1f1f\" : \"#fff\",\n color: darkMode ? \"#f5f5f5\" : \"#111\",\n borderRadius: 12,\n width: \"90vw\",\n maxWidth: 700,\n maxHeight: \"90vh\",\n overflowY: \"auto\",\n padding: 24,\n boxShadow: darkMode\n ? \"0 10px 40px rgba(0,0,0,0.7)\"\n : \"0 10px 40px rgba(0,0,0,0.25)\",\n transform: isOpen ? \"scale(1)\" : \"scale(0.95)\",\n transition: `transform ${transitionDuration}ms ease, opacity ${transitionDuration}ms ease`,\n ...modalStyle,\n };\n\n const baseCloseBtn: CSSProperties = {\n position: \"absolute\",\n top: 16,\n right: 16,\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n padding: 4,\n color: darkMode ? \"#f5f5f5\" : \"#444\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n ...closeButtonStyle,\n };\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n style={baseOverlay}\n onClick={handleOverlayClick}\n className={className}\n >\n <div\n ref={modalRef}\n style={baseModal}\n onClick={(e) => e.stopPropagation()} // prevent close on content click\n >\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n style={baseCloseBtn}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = darkMode ? \"#fff\" : \"#000\";\n e.currentTarget.style.transform = \"scale(1.1)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = darkMode ? \"#f5f5f5\" : \"#444\";\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n <X size={24} />\n </button>\n\n {title && (\n <h2\n style={{\n fontSize: \"1.25rem\",\n fontWeight: 600,\n marginBottom: \"1rem\",\n }}\n >\n {title}\n </h2>\n )}\n\n {children}\n </div>\n </div>\n );\n};\n","import React, { ReactNode, CSSProperties } from \"react\";\n\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\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.cjs.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/eye-off.js","../node_modules/lucide-react/dist/esm/icons/eye.js","../node_modules/lucide-react/dist/esm/icons/heart.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/maximize.js","../node_modules/lucide-react/dist/esm/icons/minimize.js","../node_modules/lucide-react/dist/esm/icons/music.js","../node_modules/lucide-react/dist/esm/icons/pause.js","../node_modules/lucide-react/dist/esm/icons/play.js","../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js","../node_modules/lucide-react/dist/esm/icons/shuffle.js","../node_modules/lucide-react/dist/esm/icons/skip-back.js","../node_modules/lucide-react/dist/esm/icons/skip-forward.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/volume-2.js","../node_modules/lucide-react/dist/esm/icons/volume-x.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/basic/Alert.tsx","../src/components/basic/Accordation.tsx","../src/components/basic/Avatar.tsx","../src/components/basic/AudioPlayer.tsx","../src/components/basic/AudioGallery.tsx","../node_modules/clsx/dist/clsx.mjs","../src/components/basic/Badge.tsx","../src/components/basic/Button.tsx","../src/components/basic/CheckboxGroup.tsx","../src/components/basic/RadioGroup.tsx","../src/components/basic/SwitchGroup.tsx","../src/components/basic/Container.tsx","../src/components/basic/FlexView.tsx","../src/components/basic/Stack.tsx","../src/components/basic/GridView.tsx","../src/components/basic/Drawer.tsx","../src/components/basic/DropDown.tsx","../src/components/basic/Input.tsx","../src/components/basic/Image.tsx","../src/components/basic/List.tsx","../src/components/basic/Modal.tsx","../src/components/basic/Table.tsx","../src/components/basic/Tabs.tsx","../src/components/basic/Text.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\"path\", { d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\", key: \"151rxh\" }],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst EyeOff = createLucideIcon(\"eye-off\", __iconNode);\n\nexport { __iconNode, EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\n key: \"mvr1a0\"\n }\n ]\n];\nconst Heart = createLucideIcon(\"heart\", __iconNode);\n\nexport { __iconNode, Heart as default };\n//# sourceMappingURL=heart.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3H5a2 2 0 0 0-2 2v3\", key: \"1dcmit\" }],\n [\"path\", { d: \"M21 8V5a2 2 0 0 0-2-2h-3\", key: \"1e4gt3\" }],\n [\"path\", { d: \"M3 16v3a2 2 0 0 0 2 2h3\", key: \"wsl5sc\" }],\n [\"path\", { d: \"M16 21h3a2 2 0 0 0 2-2v-3\", key: \"18trek\" }]\n];\nconst Maximize = createLucideIcon(\"maximize\", __iconNode);\n\nexport { __iconNode, Maximize as default };\n//# sourceMappingURL=maximize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3v3a2 2 0 0 1-2 2H3\", key: \"hohbtr\" }],\n [\"path\", { d: \"M21 8h-3a2 2 0 0 1-2-2V3\", key: \"5jw1f3\" }],\n [\"path\", { d: \"M3 16h3a2 2 0 0 1 2 2v3\", key: \"198tvr\" }],\n [\"path\", { d: \"M16 21v-3a2 2 0 0 1 2-2h3\", key: \"ph8mxp\" }]\n];\nconst Minimize = createLucideIcon(\"minimize\", __iconNode);\n\nexport { __iconNode, Minimize as default };\n//# sourceMappingURL=minimize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 18V5l12-2v13\", key: \"1jmyc2\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"circle\", { cx: \"18\", cy: \"16\", r: \"3\", key: \"1hluhg\" }]\n];\nconst Music = createLucideIcon(\"music\", __iconNode);\n\nexport { __iconNode, Music as default };\n//# sourceMappingURL=music.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m18 14 4 4-4 4\", key: \"10pe0f\" }],\n [\"path\", { d: \"m18 2 4 4-4 4\", key: \"pucp1d\" }],\n [\"path\", { d: \"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22\", key: \"1ailkh\" }],\n [\"path\", { d: \"M2 6h1.972a4 4 0 0 1 3.6 2.2\", key: \"km57vx\" }],\n [\"path\", { d: \"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45\", key: \"os18l9\" }]\n];\nconst Shuffle = createLucideIcon(\"shuffle\", __iconNode);\n\nexport { __iconNode, Shuffle as default };\n//# sourceMappingURL=shuffle.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z\",\n key: \"15892j\"\n }\n ],\n [\"path\", { d: \"M3 20V4\", key: \"1ptbpl\" }]\n];\nconst SkipBack = createLucideIcon(\"skip-back\", __iconNode);\n\nexport { __iconNode, SkipBack as default };\n//# sourceMappingURL=skip-back.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 4v16\", key: \"7j8fe9\" }],\n [\n \"path\",\n {\n d: \"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z\",\n key: \"zs4d6\"\n }\n ]\n];\nconst SkipForward = createLucideIcon(\"skip-forward\", __iconNode);\n\nexport { __iconNode, SkipForward as default };\n//# sourceMappingURL=skip-forward.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"path\", { d: \"M16 9a5 5 0 0 1 0 6\", key: \"1q6k2b\" }],\n [\"path\", { d: \"M19.364 18.364a9 9 0 0 0 0-12.728\", key: \"ijwkga\" }]\n];\nconst Volume2 = createLucideIcon(\"volume-2\", __iconNode);\n\nexport { __iconNode, Volume2 as default };\n//# sourceMappingURL=volume-2.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"9\", y2: \"15\", key: \"1ewh16\" }],\n [\"line\", { x1: \"16\", x2: \"22\", y1: \"9\", y2: \"15\", key: \"5ykzw1\" }]\n];\nconst VolumeX = createLucideIcon(\"volume-x\", __iconNode);\n\nexport { __iconNode, VolumeX as default };\n//# sourceMappingURL=volume-x.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","\"use client\";\n\nimport React, { createContext, useContext, useState, ReactNode, useCallback } from \"react\";\nimport { X, Info, CheckCircle, AlertCircle, AlertTriangle } from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\n\ninterface Toast {\n id: number;\n title?: string;\n description?: string;\n type?: AlertType;\n duration?: number;\n}\n\ninterface ToastContextProps {\n addToast: (toast: Omit<Toast, \"id\">) => void;\n}\n\nconst ToastContext = createContext<ToastContextProps | undefined>(undefined);\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) throw new Error(\"useToast must be used within ToastProvider\");\n return context;\n};\n\nexport const ToastProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const removeToast = useCallback((id: number) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const addToast = useCallback((toast: Omit<Toast, \"id\">) => {\n const id = Date.now() + Math.random();\n setToasts((prev) => [...prev, { ...toast, id }]);\n if (toast.duration !== 0) {\n setTimeout(() => removeToast(id), toast.duration ?? 4000);\n }\n }, [removeToast]);\n\n return (\n <ToastContext.Provider value={{ addToast }}>\n {children}\n {/* Toast container */}\n <div className=\"fixed top-5 right-5 flex flex-col gap-3 z-50\">\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onClose={() => removeToast(toast.id)} />\n ))}\n </div>\n </ToastContext.Provider>\n );\n};\n\nconst typeStyles: Record<AlertType, { bg: string; border: string; icon: ReactNode }> = {\n success: { bg: \"bg-green-50\", border: \"border-green-400\", icon: <CheckCircle size={20} className=\"text-green-600\" /> },\n error: { bg: \"bg-red-50\", border: \"border-red-400\", icon: <AlertCircle size={20} className=\"text-red-600\" /> },\n warning: { bg: \"bg-yellow-50\", border: \"border-yellow-400\", icon: <AlertTriangle size={20} className=\"text-yellow-600\" /> },\n info: { bg: \"bg-blue-50\", border: \"border-blue-400\", icon: <Info size={20} className=\"text-blue-600\" /> },\n};\n\nconst ToastItem: React.FC<{ toast: Toast; onClose: () => void }> = ({ toast, onClose }) => {\n const { title, description, type = \"info\" } = toast;\n const { bg, border, icon } = typeStyles[type];\n\n return (\n <div\n className={`flex items-start gap-3 p-4 border-l-4 rounded shadow ${bg} ${border} animate-slide-in-right`}\n role=\"alert\"\n >\n <div>{icon}</div>\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"font-semibold text-sm mb-1\">{title}</div>}\n {description && <div className=\"text-sm text-gray-700\">{description}</div>}\n </div>\n <button onClick={onClose} className=\"text-gray-500 hover:text-gray-700\">\n <X size={16} />\n </button>\n </div>\n );\n};\n\n// Add this animation to your global CSS (Tailwind + @layer utilities)\n// @keyframes slide-in-right {\n// 0% { transform: translateX(100%); opacity: 0; }\n// 100% { transform: translateX(0); opacity: 1; }\n// }\n// .animate-slide-in-right { animation: slide-in-right 0.3s ease forwards; }","\"use client\";\nimport React, {\n useState,\n useRef,\n useEffect,\n memo,\n ReactNode,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\n\nexport interface AccordionItem {\n title: string | ReactNode;\n content: ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n allowMultiple?: boolean;\n defaultOpen?: number[];\n\n /** Appearance */\n borderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverBgColor?: string;\n hoverTextColor?: string;\n contentBgColor?: string;\n contentTextColor?: string;\n\n /** Layout & spacing */\n paddingY?: string | number;\n paddingX?: string | number;\n marginY?: string | number;\n borderRadius?: string | number;\n contentPadding?: string | number;\n\n /** Typography */\n fontSize?: string | number;\n fontWeight?: string | number;\n contentFontSize?: string | number;\n contentFontWeight?: string | number;\n\n /** Icon */\n iconOpen?: ReactNode;\n iconClose?: ReactNode;\n iconSize?: string | number;\n\n /** Motion */\n transitionDuration?: string;\n shadow?: string;\n\n /** Class overrides */\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Accordion: React.FC<AccordionProps> = memo(\n ({\n items,\n allowMultiple = false,\n defaultOpen = [],\n borderColor = \"#e5e7eb\",\n backgroundColor = \"#fff\",\n textColor = \"#111827\",\n hoverBgColor = \"#f3f4f6\",\n hoverTextColor = \"#111827\",\n contentBgColor = \"#fff\",\n contentTextColor = \"#374151\",\n paddingY = \"1rem\",\n paddingX = \"1rem\",\n marginY = \"0.5rem\",\n borderRadius = \"0.5rem\",\n contentPadding = \"1rem\",\n fontSize = \"1rem\",\n fontWeight = 600,\n contentFontSize = \"0.95rem\",\n contentFontWeight = 400,\n iconOpen,\n iconClose,\n iconSize = \"1.25rem\",\n transitionDuration = \"300ms\",\n shadow = \"0 1px 4px rgba(0,0,0,0.08)\",\n className = \"\",\n style,\n }) => {\n const [openIndexes, setOpenIndexes] = useState<number[]>(defaultOpen);\n const contentRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n useEffect(() => {\n contentRefs.current.forEach((el, index) => {\n if (el) {\n el.style.maxHeight = openIndexes.includes(index)\n ? `${el.scrollHeight}px`\n : \"0px\";\n }\n });\n }, [openIndexes]);\n\n const toggleItem = (index: number) => {\n setOpenIndexes((prev) =>\n allowMultiple\n ? prev.includes(index)\n ? prev.filter((i) => i !== index)\n : [...prev, index]\n : prev.includes(index)\n ? []\n : [index],\n );\n };\n\n // Helper to normalize CSS values (number -> px)\n const toCssValue = (value: string | number | undefined) =>\n value !== undefined\n ? typeof value === \"number\"\n ? `${value}px`\n : value\n : undefined;\n\n return (\n <div\n className={`space-y-2 ${className}`}\n style={{ width: \"100%\", ...style }}\n >\n {items.map((item, index) => {\n const isOpen = openIndexes.includes(index);\n\n return (\n <div\n key={index}\n className=\"border shadow-sm overflow-hidden transition-all duration-300\"\n style={{\n borderColor,\n borderRadius: toCssValue(borderRadius),\n margin: `${toCssValue(marginY)} 0`,\n boxShadow: shadow,\n }}\n >\n {/* Header */}\n <button\n onClick={() => toggleItem(index)}\n className=\"w-full flex justify-between items-center transition-colors duration-300\"\n style={{\n backgroundColor,\n color: textColor,\n padding: `${toCssValue(paddingY)} ${toCssValue(paddingX)}`,\n fontWeight,\n fontSize: toCssValue(fontSize),\n cursor: \"pointer\",\n border: \"none\",\n outline: \"none\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = hoverBgColor;\n e.currentTarget.style.color = hoverTextColor;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = backgroundColor;\n e.currentTarget.style.color = textColor;\n }}\n >\n <span>{item.title}</span>\n <span style={{ fontSize: toCssValue(iconSize) }}>\n {isOpen\n ? iconOpen || <ChevronUp size={16} />\n : iconClose || <ChevronDown size={16} />}\n </span>\n </button>\n\n {/* Content */}\n <div\n ref={(el) => {\n contentRefs.current[index] = el;\n }}\n className=\"overflow-hidden transition-all duration-300\"\n style={{\n maxHeight: isOpen\n ? `${contentRefs.current[index]?.scrollHeight ?? 0}px`\n : \"0px\",\n transition: `max-height ${transitionDuration} ease-in-out`,\n }}\n >\n <div\n style={{\n borderTop: `1px solid ${borderColor}`,\n backgroundColor: contentBgColor,\n color: contentTextColor,\n padding: toCssValue(contentPadding),\n fontSize: toCssValue(contentFontSize),\n fontWeight: contentFontWeight,\n }}\n >\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n },\n);\n\nAccordion.displayName = \"Accordion\";\n","\"use client\";\n\nimport React, { useState, CSSProperties } from \"react\";\nimport { User } from \"lucide-react\";\n\ntype AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"responsive\";\ntype AvatarVariant = \"circular\" | \"rounded\" | \"square\";\ntype StatusPosition = \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n\ninterface AvatarProps {\n src?: string;\n alt?: string;\n size?: AvatarSize;\n variant?: AvatarVariant;\n isOnline?: boolean;\n isOffline?: boolean;\n ring?: boolean;\n ringColor?: string;\n fallback?: string;\n onClick?: () => void;\n statusPosition?: StatusPosition;\n className?: string;\n statusClassName?: string;\n style?: CSSProperties;\n statusStyle?: CSSProperties;\n}\n\n// --- Base maps ---\nconst sizeMap: Record<Exclude<AvatarSize, \"responsive\">, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 64,\n};\n\nconst fontSizeMap: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"text-[10px]\",\n sm: \"text-[12px]\",\n md: \"text-[14px]\",\n lg: \"text-[16px]\",\n xl: \"text-[18px]\",\n \"2xl\": \"text-[20px]\",\n};\n\nconst dimensionMap: Record<Exclude<AvatarSize, \"responsive\">, string> = {\n xs: \"w-6 h-6\",\n sm: \"w-8 h-8\",\n md: \"w-10 h-10\",\n lg: \"w-12 h-12\",\n xl: \"w-14 h-14\",\n \"2xl\": \"w-16 h-16\",\n};\n\nconst variantMap: Record<AvatarVariant, string> = {\n circular: \"rounded-full\",\n rounded: \"rounded-lg\",\n square: \"rounded-none\",\n};\n\nconst statusPositionMap: Record<StatusPosition, string> = {\n \"top-left\": \"top-0 left-0\",\n \"top-right\": \"top-0 right-0\",\n \"bottom-left\": \"bottom-0 left-0\",\n \"bottom-right\": \"bottom-0 right-0\",\n};\n\n// --- Avatar Component ---\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"User avatar\",\n size = \"md\",\n variant = \"circular\",\n isOnline = false,\n isOffline = false,\n fallback,\n ring = false,\n ringColor = \"#3b82f6\",\n onClick,\n statusPosition = \"bottom-right\",\n className = \"\",\n statusClassName = \"\",\n style,\n statusStyle,\n}) => {\n const [imageError, setImageError] = useState(false);\n const clickable = !!onClick;\n\n const initials =\n fallback ||\n alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const statusColor = isOnline ? \"bg-green-500\" : isOffline ? \"bg-gray-400\" : \"\";\n\n // Width/height for inline styles\n const dimensionPx = sizeMap[size as Exclude<AvatarSize, \"responsive\">];\n\n return (\n <div\n role={clickable ? \"button\" : \"img\"}\n tabIndex={clickable ? 0 : -1}\n aria-label={alt}\n onClick={onClick}\n className={`relative inline-flex items-center justify-center overflow-hidden ${dimensionMap[size as Exclude<AvatarSize, \"responsive\">]} ${variantMap[variant]} transition-all duration-200 ${\n clickable ? \"cursor-pointer hover:scale-105\" : \"\"\n } ${ring ? \"ring-2\" : \"\"} ${className}`}\n style={{\n ...style,\n ...(ring ? { boxShadow: `0 0 0 2px ${ringColor}` } : {}),\n }}\n onKeyDown={(e) => {\n if (clickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {src && !imageError ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n className={`w-full h-full object-cover ${variantMap[variant]} transition-opacity duration-300`}\n />\n ) : (\n <div\n className={`w-full h-full flex items-center justify-center bg-gradient-to-tr from-purple-500 to-blue-500 text-white font-semibold ${fontSizeMap[size as Exclude<AvatarSize, \"responsive\">]} ${variantMap[variant]}`}\n >\n {initials || <User className=\"text-white\" />}\n </div>\n )}\n\n {(isOnline || isOffline) && (\n <span\n aria-label={isOnline ? \"Online\" : \"Offline\"}\n title={isOnline ? \"Online\" : \"Offline\"}\n className={`absolute ${statusPositionMap[statusPosition]} ${statusColor} border-2 border-white rounded-full shadow-sm ${statusClassName}`}\n style={{\n width: dimensionPx / 3,\n height: dimensionPx / 3,\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};","\"use client\";\n\nimport React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n} from \"lucide-react\";\n\ninterface AudioPlayerProps {\n src: string;\n thumbnail?: string;\n autoPlay?: boolean;\n loop?: boolean;\n backgroundColor?: string;\n primaryColor?: string;\n secondaryColor?: string;\n borderRadius?: string;\n className?: string;\n padding?: string;\n width?: string;\n}\n\nexport const AudioPlayer: React.FC<AudioPlayerProps> = ({\n src,\n thumbnail,\n autoPlay = false,\n loop = false,\n backgroundColor = \"#0a0a0a\",\n primaryColor = \"#10b981\",\n secondaryColor = \"#ffffff\",\n borderRadius = \"12px\",\n padding = \"12px\",\n width = \"100%\",\n className,\n}) => {\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const [isPlaying, setIsPlaying] = useState(autoPlay);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.volume = volume;\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.loop = isLooping;\n }, [isLooping]);\n\n const togglePlayPause = () => {\n if (!audioRef.current) return;\n isPlaying ? audioRef.current.pause() : audioRef.current.play();\n setIsPlaying(!isPlaying);\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n setDuration(audioRef.current.duration);\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n audioRef.current.currentTime = percent * duration;\n setCurrentTime(percent * duration);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current) audioRef.current.currentTime += seconds;\n };\n\n const toggleFullscreen = () => {\n if (!playerRef.current) return;\n isFullscreen\n ? document.exitFullscreen?.()\n : playerRef.current.requestFullscreen?.();\n setIsFullscreen(!isFullscreen);\n };\n\n const formatTime = (time: number) => {\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n return (\n <div\n ref={playerRef}\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n width,\n backgroundColor,\n borderRadius,\n padding,\n boxSizing: \"border-box\",\n color: secondaryColor,\n boxShadow: \"0 6px 16px rgba(0,0,0,0.2)\",\n flexWrap: \"wrap\",\n }}\n >\n <audio\n ref={audioRef}\n src={src}\n autoPlay={autoPlay}\n loop={loop}\n onTimeUpdate={handleTimeUpdate}\n onLoadedMetadata={handleTimeUpdate}\n />\n\n {/* Thumbnail / Avatar */}\n {thumbnail && (\n <img\n src={thumbnail}\n alt=\"Audio Thumbnail\"\n style={{\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n objectFit: \"cover\",\n flexShrink: 0,\n }}\n />\n )}\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"12px\",\n flex: 1,\n minWidth: \"0\",\n }}\n >\n <button\n onClick={() => skip(-10)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: secondaryColor,\n cursor: \"pointer\",\n }}\n aria-label=\"Skip Back 10s\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={togglePlayPause}\n style={{\n background: primaryColor,\n borderRadius: \"50%\",\n padding: \"10px\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={20} /> : <Play size={20} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: secondaryColor,\n cursor: \"pointer\",\n }}\n aria-label=\"Skip Forward 10s\"\n >\n <SkipForward size={20} />\n </button>\n\n {/* Seek Bar */}\n <div\n onClick={handleSeek}\n style={{\n flex: 1,\n height: \"6px\",\n background: \"#444\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"3px\",\n }}\n />\n </div>\n\n {/* Time */}\n <div style={{ minWidth: \"70px\", textAlign: \"right\", fontSize: \"0.8rem\" }}>\n {formatTime(currentTime)} / {formatTime(duration)}\n </div>\n\n {/* Extra Controls */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: isLooping ? primaryColor : secondaryColor,\n }}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={18} />\n </button>\n\n <button\n onClick={() => setVolume(volume > 0 ? 0 : 0.7)}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: secondaryColor,\n }}\n aria-label=\"Toggle Mute\"\n >\n {volume > 0 ? <Volume2 size={18} /> : <VolumeX size={18} />}\n </button>\n\n <button\n onClick={toggleFullscreen}\n style={{\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: secondaryColor,\n }}\n aria-label=\"Toggle Fullscreen\"\n >\n {isFullscreen ? <Minimize size={18} /> : <Maximize size={18} />}\n </button>\n </div>\n </div>\n </div>\n );\n};","import React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n Download,\n Heart,\n Share2,\n Music,\n Shuffle,\n} from \"lucide-react\";\n\ninterface AudioTrack {\n src: string;\n title: string;\n artist?: string;\n thumbnail?: string;\n duration?: string;\n}\n\ninterface AudioGalleryProps {\n tracks?: AudioTrack[];\n className?: string;\n galleryTitle?: string;\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n secondaryColor?: string;\n autoplay?: boolean;\n borderColor?: string;\n border?: number;\n maxWidth?: number;\n loop?: boolean;\n}\n\nconst defaultTracks: AudioTrack[] = [\n {\n src: \"https://www.soundjay.com/misc/sounds/bell-ringing-05.wav\",\n title: \"Morning Bell\",\n artist: \"Nature Sounds\",\n duration: \"0:15\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-4.wav\",\n title: \"Digital Click\",\n artist: \"Tech Audio\",\n duration: \"0:05\",\n thumbnail:\n \"https://images.unsplash.com/photo-1514525253161-7a46d19cd819?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-10.wav\",\n title: \"Soft Chime\",\n artist: \"Ambient Studio\",\n duration: \"0:08\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n];\n\nexport function AudioGallery({\n tracks = defaultTracks,\n className = \"\",\n galleryTitle = \"Audio Gallery\",\n primaryColor = \"#8b5cf6\",\n backgroundColor = \"#0f0f23\",\n textColor = \"#e4e4e7\",\n secondaryColor = \"#1a1a2e\",\n border = 0,\n borderColor,\n maxWidth = 420,\n autoplay = false,\n loop = false,\n}: AudioGalleryProps) {\n const [currentTrackIndex, setCurrentTrackIndex] = useState<number | null>(\n null\n );\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n const [isShuffle, setIsShuffle] = useState(false);\n const [isLiked, setIsLiked] = useState(false);\n const [showVolumeSlider, setShowVolumeSlider] = useState(false);\n\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const volumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.volume = volume;\n }\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.loop = isLooping;\n }\n }, [isLooping]);\n\n useEffect(() => {\n if (currentTrackIndex === null && audioRef.current) {\n audioRef.current.pause();\n setIsPlaying(false);\n setCurrentTime(0);\n setDuration(0);\n }\n }, [currentTrackIndex]);\n\n const playPauseTrack = (index: number) => {\n if (currentTrackIndex === index) {\n if (!audioRef.current) return;\n if (audioRef.current.paused) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n } else {\n audioRef.current.pause();\n setIsPlaying(false);\n }\n } else {\n setCurrentTrackIndex(index);\n setTimeout(() => {\n if (audioRef.current) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }, 100);\n }\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n if (audioRef.current.duration) {\n setDuration(audioRef.current.duration);\n }\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current || !duration) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const seekTime = percent * duration;\n audioRef.current.currentTime = seekTime;\n setCurrentTime(seekTime);\n };\n\n const handleVolumeChange = (e: React.MouseEvent<HTMLDivElement>) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const newVolume = Math.max(0, Math.min(1, percent));\n setVolume(newVolume);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current && duration) {\n let newTime = audioRef.current.currentTime + seconds;\n newTime = Math.min(Math.max(newTime, 0), duration);\n audioRef.current.currentTime = newTime;\n setCurrentTime(newTime);\n }\n };\n\n const nextTrack = () => {\n if (currentTrackIndex === null) return;\n let nextIndex;\n if (isShuffle) {\n nextIndex = Math.floor(Math.random() * tracks.length);\n } else {\n nextIndex = (currentTrackIndex + 1) % tracks.length;\n }\n playPauseTrack(nextIndex);\n };\n\n const prevTrack = () => {\n if (currentTrackIndex === null) return;\n let prevIndex;\n if (isShuffle) {\n prevIndex = Math.floor(Math.random() * tracks.length);\n } else {\n prevIndex = (currentTrackIndex - 1 + tracks.length) % tracks.length;\n }\n playPauseTrack(prevIndex);\n };\n\n const toggleMute = () => {\n setVolume((prev) => (prev > 0 ? 0 : 0.7));\n };\n\n const showVolume = () => {\n setShowVolumeSlider(true);\n if (volumeTimeoutRef.current) {\n clearTimeout(volumeTimeoutRef.current);\n }\n volumeTimeoutRef.current = setTimeout(() => {\n setShowVolumeSlider(false);\n }, 3000);\n };\n\n const formatTime = (time: number) => {\n if (isNaN(time)) return \"0:00\";\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n const currentTrack =\n currentTrackIndex !== null ? tracks[currentTrackIndex] : null;\n\n return (\n <div\n className={className}\n style={{\n maxWidth: `${maxWidth}px`,\n margin: \"20px auto\",\n background: `linear-gradient(145deg, ${backgroundColor}, ${secondaryColor})`,\n color: textColor,\n borderRadius: \"24px\",\n padding: \"24px 16px\",\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n userSelect: \"none\",\n backdropFilter: \"blur(20px)\",\n border: `${border}px solid ${borderColor}40`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"12px\",\n background: `linear-gradient(135deg, ${primaryColor}, ${secondaryColor})`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Music size={20} color=\"white\" />\n </div>\n <div>\n <h2\n style={{\n margin: 0,\n fontSize: \"1.25rem\",\n fontWeight: \"700\",\n color: primaryColor, // fallback for browsers without WebkitTextFillColor\n }}\n >\n {galleryTitle}\n </h2>\n <p style={{ margin: 0, fontSize: \"0.875rem\", opacity: 0.7 }}>\n {tracks.length} tracks\n </p>\n </div>\n </div>\n\n <button\n onClick={() => setIsShuffle(!isShuffle)}\n style={{\n background: isShuffle ? primaryColor : \"transparent\",\n border: \"none\",\n borderRadius: \"12px\",\n padding: \"8px\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n opacity: isShuffle ? 1 : 0.6,\n }}\n aria-label=\"Toggle Shuffle\"\n >\n <Shuffle size={18} color={isShuffle ? \"white\" : textColor} />\n </button>\n </div>\n\n {/* Track List */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n marginBottom: \"20px\",\n maxHeight: \"240px\",\n overflowY: \"auto\",\n paddingRight: \"4px\",\n }}\n >\n {tracks.map((track, index) => {\n const isActive = currentTrackIndex === index;\n const isCurrentlyPlaying = isActive && isPlaying;\n\n return (\n <div\n key={index}\n onClick={() => playPauseTrack(index)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"12px 16px\",\n borderRadius: \"16px\",\n background: isActive\n ? `linear-gradient(135deg, ${primaryColor}20, ${primaryColor}10)`\n : \"rgba(255,255,255,0.05)\",\n border: isActive\n ? `1px solid ${primaryColor}40`\n : \"1px solid transparent\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n backdropFilter: isActive ? `blur(20px)` : \"none\",\n }}\n >\n {/* Thumbnail */}\n <div\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"12px\",\n background: track.thumbnail\n ? `url(${track.thumbnail}) center/cover`\n : primaryColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"12px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {!track.thumbnail && <Music size={20} color=\"white\" />}\n {isCurrentlyPlaying && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n width: \"16px\",\n height: \"16px\",\n display: \"flex\",\n gap: \"2px\",\n alignItems: \"end\",\n justifyContent: \"center\",\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n style={{\n width: \"3px\",\n background: \"white\",\n borderRadius: \"2px\",\n animation: `equalizer 1s ease-in-out infinite ${\n i * 0.2\n }s`,\n height: \"12px\",\n }}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Track Info */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontWeight: \"600\",\n fontSize: \"0.95rem\",\n color: isActive ? primaryColor : textColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.title}\n </div>\n {track.artist && (\n <div\n style={{\n fontSize: \"0.8rem\",\n opacity: 0.7,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.artist}\n </div>\n )}\n </div>\n\n {/* Duration & Play Button */}\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n >\n {track.duration && (\n <span style={{ fontSize: \"0.8rem\", opacity: 0.6 }}>\n {track.duration}\n </span>\n )}\n <div\n style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"8px\",\n background: isActive\n ? primaryColor\n : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n }}\n >\n {isCurrentlyPlaying ? (\n <Pause size={16} color=\"white\" />\n ) : (\n <Play size={16} color=\"white\" />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Current Track Display & Controls */}\n {currentTrack && (\n <div\n ref={playerRef}\n style={{\n background: `linear-gradient(135deg, ${secondaryColor}, ${backgroundColor})`,\n borderRadius: \"20px\",\n padding: \"20px\",\n border: `1px solid ${primaryColor}40`,\n backdropFilter: \"blur(20px)\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {/* Background Blur Effect */}\n {currentTrack.thumbnail && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundImage: `url(${currentTrack.thumbnail})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n filter: \"blur(60px) opacity(0.1)\",\n transform: \"scale(1.1)\",\n }}\n />\n )}\n\n {/* Content */}\n <div style={{ position: \"relative\", zIndex: 1 }}>\n {/* Track Info */}\n <div style={{ textAlign: \"center\", marginBottom: \"20px\" }}>\n <h3\n style={{\n margin: \"0 0 4px 0\",\n fontSize: \"1.1rem\",\n fontWeight: \"700\",\n color: primaryColor,\n }}\n >\n {currentTrack.title}\n </h3>\n {currentTrack.artist && (\n <p style={{ margin: 0, opacity: 0.7, fontSize: \"0.9rem\" }}>\n {currentTrack.artist}\n </p>\n )}\n </div>\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"20px\",\n marginBottom: \"20px\",\n }}\n >\n <button\n onClick={prevTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Previous Track\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={() => skip(-10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip back 10 seconds\"\n >\n <SkipBack size={16} />\n <span style={{ fontSize: \"0.7rem\", marginLeft: \"2px\" }}>\n 10\n </span>\n </button>\n\n <button\n onClick={() => {\n if (!audioRef.current) return;\n if (isPlaying) {\n audioRef.current.pause();\n setIsPlaying(false);\n } else {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }}\n style={{\n ...controlButtonStyle(\"#fff\", primaryColor),\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n boxShadow: `0 8px 25px ${primaryColor}40`,\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={24} /> : <Play size={24} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip forward 10 seconds\"\n >\n <span style={{ fontSize: \"0.7rem\", marginRight: \"2px\" }}>\n 10\n </span>\n <SkipForward size={16} />\n </button>\n\n <button\n onClick={nextTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Next Track\"\n >\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Progress Bar */}\n <div style={{ marginBottom: \"16px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"8px\",\n fontSize: \"0.8rem\",\n opacity: 0.7,\n }}\n >\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n\n <div\n onClick={handleSeek}\n style={{\n height: \"6px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: `linear-gradient(90deg, ${primaryColor}, #ec4899)`,\n borderRadius: \"3px\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n right: \"-6px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: \"12px\",\n height: \"12px\",\n background: primaryColor,\n borderRadius: \"50%\",\n boxShadow: `0 2px 8px ${primaryColor}60`,\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Additional Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLiked(!isLiked)}\n style={controlButtonStyle(\n isLiked ? \"#ec4899\" : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Like\"\n >\n <Heart size={16} fill={isLiked ? \"#ec4899\" : \"none\"} />\n </button>\n\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={controlButtonStyle(\n isLooping ? primaryColor : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={16} />\n </button>\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n position: \"relative\",\n }}\n >\n {showVolumeSlider && (\n <div\n onClick={handleVolumeChange}\n style={{\n width: \"80px\",\n height: \"4px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"2px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${volume * 100}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"2px\",\n }}\n />\n </div>\n )}\n\n <button\n onClick={toggleMute}\n onMouseEnter={showVolume}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label={volume > 0 ? \"Mute\" : \"Unmute\"}\n >\n {volume > 0 ? <Volume2 size={16} /> : <VolumeX size={16} />}\n </button>\n </div>\n </div>\n </div>\n\n <audio\n ref={audioRef}\n src={currentTrack.src}\n autoPlay={autoplay}\n loop={isLooping}\n onTimeUpdate={handleTimeUpdate}\n onEnded={() => {\n setIsPlaying(false);\n if (!isLooping) {\n nextTrack();\n }\n }}\n onLoadedMetadata={handleTimeUpdate}\n preload=\"metadata\"\n style={{ display: \"none\" }}\n />\n </div>\n )}\n\n <style>{`\n @keyframes equalizer {\n 0%, 100% { height: 4px; }\n 50% { height: 12px; }\n }\n \n /* Custom Scrollbar */\n div::-webkit-scrollbar {\n width: 4px;\n }\n \n div::-webkit-scrollbar-track {\n background: rgba(255,255,255,0.1);\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb {\n background: ${primaryColor};\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb:hover {\n background: ${primaryColor}dd;\n }\n `}</style>\n </div>\n );\n}\n\nfunction controlButtonStyle(\n color: string,\n backgroundColor: string\n): React.CSSProperties {\n return {\n border: \"none\",\n backgroundColor,\n color,\n cursor: \"pointer\",\n padding: \"10px\",\n borderRadius: \"12px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n backdropFilter: \"blur(10px)\",\n };\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport React, { memo } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface BadgeProps {\n text?: string;\n\n icon?: React.ReactNode;\n iconPosition?: \"left\" | \"right\";\n\n /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n /** Shape */\n rounded?: boolean;\n\n /** Notification */\n notificationDot?: boolean;\n dotColor?: string;\n count?: number | string;\n pulse?: boolean;\n\n className?: string;\n onClick?: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🏷 Badge */\n/* -------------------------------------------------------------------------- */\n\nexport const Badge: React.FC<BadgeProps> = memo(\n ({\n text,\n icon,\n iconPosition = \"left\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n rounded = true,\n\n notificationDot = false,\n dotColor = \"#ef4444\",\n count,\n pulse = false,\n\n className,\n onClick,\n }) => {\n /** 📏 Sizes */\n const sizes = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-3 py-1 text-xs\",\n lg: \"px-4 py-1.5 text-sm\",\n };\n\n /** 🎨 Theme */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white\"\n : \"\";\n\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <span\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"relative inline-flex items-center justify-center gap-1 font-medium\",\n \"transition-all duration-200 select-none\",\n rounded ? \"rounded-full\" : \"rounded-md\",\n sizes[size],\n themeClasses,\n onClick && \"cursor-pointer hover:opacity-90\",\n className\n )}\n >\n {/* 🔴 Dot */}\n {notificationDot && (\n <span\n style={!primaryTheme ? { backgroundColor: dotColor } : undefined}\n className={clsx(\n \"absolute -top-1 -right-1 w-2 h-2 rounded-full\",\n pulse && \"animate-ping\",\n primaryTheme ? \"bg-red-500\" : \"\"\n )}\n />\n )}\n\n {/* 🔢 Count */}\n {count !== undefined && (\n <span\n style={!primaryTheme ? { backgroundColor: dotColor } : undefined}\n className={clsx(\n \"absolute -top-2 -right-2 min-w-[18px] h-[18px] px-1 text-[10px]\",\n \"flex items-center justify-center rounded-full text-white\",\n primaryTheme ? \"bg-red-500\" : \"\"\n )}\n >\n {count}\n </span>\n )}\n\n {/* Icon Left */}\n {icon && iconPosition === \"left\" && (\n <span className=\"flex items-center\">{icon}</span>\n )}\n\n {/* Text */}\n {text && <span>{text}</span>}\n\n {/* Icon Right */}\n {icon && iconPosition === \"right\" && (\n <span className=\"flex items-center\">{icon}</span>\n )}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n\n iconBefore?: React.ReactNode;\n iconAfter?: React.ReactNode;\n\n loading?: boolean;\n loadingText?: string;\n\n fullWidth?: boolean;\n\n /** 🎨 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** 📏 Sizes */\n size?: \"sm\" | \"md\" | \"lg\";\n\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🔘 Button */\n/* -------------------------------------------------------------------------- */\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n iconBefore,\n iconAfter,\n loading = false,\n loadingText = \"Loading...\",\n fullWidth = false,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n size = \"md\",\n\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n /** 📏 Sizes */\n const sizeClasses = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-5 py-2.5 text-sm\",\n lg: \"px-6 py-3 text-base\",\n };\n\n /** 🎨 Theme styles */\n const themeClasses = primaryTheme\n ? \"bg-[var(--primary)] text-white hover:bg-[var(--primary)]/90 focus:ring-[var(--primary)]/30\"\n : \"\";\n\n /** 🎨 Dynamic fallback for non-primary theme */\n const dynamicStyle = !primaryTheme\n ? {\n backgroundColor: primaryColor,\n color: \"#fff\",\n }\n : {};\n\n return (\n <button\n ref={ref}\n disabled={disabled || loading}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"inline-flex items-center justify-center gap-2 font-medium rounded-lg transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-1\",\n sizeClasses[size],\n themeClasses,\n fullWidth && \"w-full\",\n (disabled || loading) && \"opacity-60 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {loading ? (\n <>\n <span className=\"w-4 h-4 border-2 border-current border-t-transparent rounded-full animate-spin\" />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && (\n <span className=\"flex items-center justify-center\">{iconBefore}</span>\n )}\n <span>{children}</span>\n {iconAfter && (\n <span className=\"flex items-center justify-center\">{iconAfter}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface CheckboxGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n customIcon?: (checked: boolean) => React.ReactNode;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n customIcon,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation (space/enter toggle)\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n if (focusedIndex === null) return;\n\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n setFocusedIndex((currentIndex + 1) % options.length);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n setFocusedIndex((currentIndex - 1 + options.length) % options.length);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Custom or default icon */}\n {customIcon ? (\n customIcon(isChecked)\n ) : (\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: 4,\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ width: iconSize * 0.6, height: iconSize * 0.6 }}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n name?: string;\n options: Option[];\n selectedValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n selectedValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n const currentIndex = focusedIndex ?? options.findIndex((o) => o.value === selectedValue) ?? 0;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n onChange && onChange(options[nextIndex].value);\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowUp\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n onChange && onChange(options[prevIndex].value);\n setFocusedIndex(prevIndex);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValue, onChange, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"radiogroup\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n tabIndex={0} // allow keyboard focus\n >\n {options.map((option, index) => {\n const isChecked = selectedValue === option.value;\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none gap-2\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\",\n )}\n style={{ ...labelStyle }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => onChange && onChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n <span\n className={clsx(\"inline-flex items-center justify-center rounded-full transition-all\")}\n style={{\n width: iconSize,\n height: iconSize,\n border: `2px solid ${isChecked ? iconCheckedBgColor : iconUncheckedBorderColor}`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.2s ease\",\n }}\n >\n {isChecked && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: darkMode ? \"#fff\" : \"#fff\",\n }}\n />\n )}\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","\"use client\";\nimport React, { useState, useEffect, useRef } from \"react\";\nimport clsx from \"clsx\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface SwitchGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n darkMode?: boolean;\n}\n\nexport const SwitchGroup: React.FC<SwitchGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n switchBgColor = \"#d1d5db\",\n textColor = \"#374151\",\n errorStyle,\n darkMode = false,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const handleChange = (value: string) => {\n if (!onChange || disabled || readOnly) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n // Keyboard navigation\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (focusedIndex === null) return;\n const currentIndex = focusedIndex;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex = (currentIndex + 1) % options.length;\n setFocusedIndex(nextIndex);\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex = (currentIndex - 1 + options.length) % options.length;\n setFocusedIndex(prevIndex);\n }\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n handleChange(options[currentIndex].value);\n }\n };\n\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [focusedIndex, options, selectedValues, disabled]);\n\n return (\n <div\n ref={containerRef}\n role=\"group\"\n aria-disabled={disabled}\n aria-invalid={!!error}\n tabIndex={0}\n className={clsx(\"flex flex-col gap-2\", className)}\n style={{ ...style }}\n >\n {options.map((option, index) => {\n const isChecked = selectedValues.includes(option.value);\n const isFocused = focusedIndex === index;\n\n return (\n <label\n key={option.value}\n className={clsx(\n \"flex items-center justify-between cursor-pointer select-none transition-opacity\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"opacity-100\",\n isFocused ? \"ring-2 ring-blue-400\" : \"\"\n )}\n style={{ ...labelStyle }}\n onFocus={() => setFocusedIndex(index)}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n\n {/* Switch */}\n <span\n className={clsx(\"relative inline-flex rounded-full transition-colors\")}\n style={{\n width: iconSize * 2,\n height: iconSize * 1.1,\n backgroundColor: isChecked\n ? iconCheckedBgColor\n : switchBgColor,\n transition: \"background-color 0.25s ease\",\n borderRadius: 9999,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: isChecked\n ? `calc(100% - ${iconSize - 4}px - 2px)`\n : \"2px\",\n transform: \"translateY(-50%)\",\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.3)\",\n transition: \"left 0.25s ease\",\n }}\n />\n </span>\n </label>\n );\n })}\n\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n size?: ContainerSize;\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n center?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nconst sizeMap: Record<ContainerSize, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n \"2xl\": \"max-w-2xl\",\n full: \"w-full\",\n};\n\nconst paddingMap: Record<NonNullable<ContainerProps[\"padding\"]>, string> = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n/**\n * 🧱 Container Component\n * Fully responsive, Tailwind-first layout wrapper\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = \"md\",\n center = true,\n className = \"\",\n children,\n}) => {\n const classes = clsx(\n \"w-full box-border\",\n sizeMap[size],\n paddingMap[padding],\n center && \"mx-auto\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\nexport default Container;","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexViewProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"end\" | \"center\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n margin?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const FlexView: React.FC<FlexViewProps> = ({\n direction = { sm: \"column\", md: \"row\" },\n align = \"center\",\n justify = \"between\",\n wrap = \"wrap\",\n gap,\n padding,\n margin,\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction),\n toResponsiveClass(\"items\", align),\n toResponsiveClass(\"justify\", justify),\n toResponsiveClass(\"flex\", wrap), // wrap classes: flex-wrap, flex-nowrap, flex-wrap-reverse\n gap ? toResponsiveClass(\"gap\", gap) : \"\",\n padding ? toResponsiveClass(\"p\", padding) : \"\",\n margin ? toResponsiveClass(\"m\", margin) : \"\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface StackProps {\n direction?: ResponsiveValue<\"vertical\" | \"horizontal\">;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n align?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\">;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Convert responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\" },\n gap = 4,\n align = \"center\",\n justify = \"start\",\n wrap = \"nowrap\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"flex\",\n toResponsiveClass(\"flex\", direction), // flex-col or flex-row\n toResponsiveClass(\"gap\", gap),\n align !== \"stretch\" ? `items-${align}` : \"items-stretch\",\n justify !== \"start\" ? `justify-${justify}` : \"justify-start\",\n wrap !== \"nowrap\" ? `flex-${wrap}` : \"flex-nowrap\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};\n\n/** Shortcuts for horizontal & vertical stacks */\nexport const HStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"horizontal\" {...props} />\n);\n\nexport const VStack: React.FC<StackProps> = (props) => (\n <Stack direction=\"vertical\" {...props} />\n);","import React from \"react\";\nimport clsx from \"clsx\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\nexport interface GridProps {\n columns?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6>;\n gap?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n padding?: ResponsiveValue<1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12>;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Converts responsive prop to Tailwind class string\n */\nconst toResponsiveClass = <T extends string | number>(\n prefix: string,\n value?: ResponsiveValue<T>\n) => {\n if (value == null) return \"\";\n if (typeof value !== \"object\") return `${prefix}-${value}`;\n return Object.entries(value)\n .map(([bp, val]) => `${bp}:${prefix}-${val}`)\n .join(\" \");\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 4,\n padding = 4,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n className,\n children,\n}) => {\n const classes = clsx(\n \"grid\",\n toResponsiveClass(\"grid-cols\", columns),\n toResponsiveClass(\"gap\", gap),\n toResponsiveClass(\"p\", padding),\n alignItems !== \"stretch\" ? `items-${alignItems}` : \"items-stretch\",\n justifyItems !== \"stretch\" ? `justify-items-${justifyItems}` : \"justify-items-stretch\",\n className\n );\n\n return <div className={classes}>{children}</div>;\n};","\"use client\";\nimport React, { useState, useEffect, useMemo, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\ninterface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n className = \"\",\n}) => {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`inline-flex items-center justify-center gap-2 px-4 py-2 rounded-md font-medium text-white bg-blue-600 hover:bg-blue-700 transition-colors focus:outline-none focus:ring-2 focus:ring-blue-400 ${className}`}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n );\n};\n\n/* ---------------- 🧱 Drawer ---------------- */\ninterface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n size?: string; // width for left/right, height for top/bottom\n className?: string;\n overlayClassName?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeButtonClassName?: string;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n size = \"320px\",\n children,\n showCloseButton = true,\n className = \"\",\n overlayClassName = \"\",\n closeButtonClassName = \"\",\n}) => {\n const [mounted, setMounted] = useState(open);\n\n useEffect(() => {\n if (open) setMounted(true);\n else setTimeout(() => setMounted(false), 300); // smooth exit\n }, [open]);\n\n const transform = useMemo(() => {\n if (open) return \"translate(0,0)\";\n switch (position) {\n case \"left\":\n return \"translateX(-100%)\";\n case \"right\":\n return \"translateX(100%)\";\n case \"top\":\n return \"translateY(-100%)\";\n case \"bottom\":\n return \"translateY(100%)\";\n default:\n return \"translate(0,0)\";\n }\n }, [open, position]);\n\n if (!mounted && !open) return null;\n\n return (\n <>\n {/* Overlay */}\n <div\n onClick={onClose}\n className={`fixed inset-0 bg-black/50 transition-opacity ${\n open ? \"opacity-100\" : \"opacity-0\"\n } ${overlayClassName}`}\n />\n\n {/* Drawer Panel */}\n <div\n className={`fixed bg-white shadow-lg flex flex-col transition-transform duration-300 ${className}`}\n style={{\n width: position === \"left\" || position === \"right\" ? size : \"100%\",\n height: position === \"top\" || position === \"bottom\" ? size : \"100%\",\n top: position === \"bottom\" || position === \"top\" ? (position === \"bottom\" ? \"auto\" : 0) : 0,\n bottom: position === \"bottom\" ? 0 : \"auto\",\n left: position === \"left\" ? 0 : position === \"right\" ? \"auto\" : 0,\n right: position === \"right\" ? 0 : position === \"left\" ? \"auto\" : 0,\n transform,\n }}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n className={`absolute top-4 right-4 p-1 rounded-full hover:bg-gray-200 transition-colors ${closeButtonClassName}`}\n aria-label=\"Close drawer\"\n >\n <X size={20} />\n </button>\n )}\n\n <div className=\"flex-1 overflow-auto p-4\">{children}</div>\n </div>\n </>\n );\n};","\"use client\";\n\nimport React, {\n useEffect,\n useRef,\n useState,\n forwardRef,\n useImperativeHandle,\n CSSProperties,\n} from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n label?: string;\n name?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n options?: SelectOption[];\n\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n labelIcon?: React.ElementType;\n prefixIcon?: React.ElementType;\n\n variant?: \"dark\" | \"light\";\n\n /** 🔥 THEME SYSTEM */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n containerClassName?: string;\n labelClassName?: string;\n triggerClassName?: string;\n dropdownClassName?: string;\n optionClassName?: string;\n\n className?: string;\n}\n\nexport const Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (props, ref) => {\n const {\n label,\n name = \"\",\n value,\n defaultValue,\n onChange,\n options = [],\n placeholder = \"Select an option\",\n required,\n disabled,\n error,\n success,\n helperText,\n\n labelIcon: LabelIcon,\n prefixIcon: PrefixIcon,\n\n variant = \"dark\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n containerClassName = \"\",\n labelClassName = \"\",\n triggerClassName = \"\",\n dropdownClassName = \"\",\n optionClassName = \"\",\n\n className = \"\",\n } = props;\n\n const containerRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => containerRef.current!);\n\n const [open, setOpen] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n\n const currentValue = value !== undefined ? value : localValue;\n const selectedOption = options.find((o) => o.value === currentValue);\n\n /** Close outside */\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const handleSelect = (option: SelectOption) => {\n setLocalValue(option.value);\n onChange?.(name, option.value);\n setOpen(false);\n };\n\n /** 🎨 Theme base */\n const theme = {\n dark: {\n bg: \"bg-zinc-900\",\n text: \"text-white\",\n border: \"border-zinc-800\",\n dropdown: \"bg-black border-zinc-800\",\n option: \"text-zinc-300 hover:bg-zinc-800\",\n },\n light: {\n bg: \"bg-white\",\n text: \"text-gray-900\",\n border: \"border-gray-300\",\n dropdown: \"bg-white border-gray-200\",\n option: \"text-gray-700 hover:bg-gray-100\",\n },\n }[variant];\n\n /** 🎨 Dynamic styles */\n const dynamicPrimary: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const dynamicBorder: CSSProperties = !primaryTheme\n ? { borderColor: primaryColor }\n : {};\n\n const dynamicBgActive: CSSProperties = !primaryTheme\n ? { backgroundColor: `${primaryColor}20` } // light tint\n : {};\n\n /** Border state */\n const borderState = error\n ? \"border-rose-500\"\n : success\n ? \"border-emerald-500\"\n : theme.border;\n\n const paddingLeft = PrefixIcon ? \"pl-12 pr-10\" : \"px-4\";\n\n return (\n <div\n ref={containerRef}\n className={`w-full space-y-1 ${containerClassName} ${className}`}\n >\n {/* Label */}\n {label && (\n <label\n className={`flex items-center gap-2 text-[13px] font-medium ${labelClassName}`}\n >\n {LabelIcon && (\n <LabelIcon\n className={\n primaryTheme ? \"w-4 h-4 text-[var(--primary)]\" : \"w-4 h-4\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-rose-500\">*</span>}\n </label>\n )}\n\n <div className=\"relative group\">\n {/* Prefix Icon */}\n {PrefixIcon && (\n <div className=\"absolute left-4 top-1/2 -translate-y-1/2 z-10\">\n <PrefixIcon\n className={\n primaryTheme\n ? \"w-4 h-4 text-zinc-500 group-focus-within:text-[var(--primary)]\"\n : \"w-4 h-4 text-zinc-500\"\n }\n style={!primaryTheme ? dynamicPrimary : undefined}\n />\n </div>\n )}\n\n {/* Trigger */}\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setOpen((p) => !p)}\n style={!primaryTheme ? dynamicBorder : undefined}\n className={`\n w-full py-2.5 rounded-lg text-left text-sm\n border transition-all duration-200\n ${theme.bg} ${theme.text}\n ${paddingLeft}\n ${borderState}\n focus:ring-2\n ${\n primaryTheme\n ? \"focus:ring-[var(--primary)]/30 focus:border-[var(--primary)]\"\n : \"\"\n }\n disabled:opacity-50 disabled:cursor-not-allowed\n ${triggerClassName}\n `}\n >\n <span className={selectedOption ? theme.text : \"text-zinc-500\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n\n <ChevronDown\n className={`absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 transition-transform ${\n open ? \"rotate-180\" : \"\"\n } text-zinc-400`}\n />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div\n className={`\n absolute z-50 mt-2 w-full rounded-xl border shadow-xl overflow-hidden\n ${theme.dropdown}\n ${dropdownClassName}\n `}\n >\n <ul className=\"max-h-60 overflow-y-auto\">\n {options.map((opt) => {\n const isActive = currentValue === opt.value;\n\n return (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n style={\n !primaryTheme && isActive ? dynamicBgActive : undefined\n }\n className={`\n px-4 py-3 cursor-pointer text-sm flex items-center gap-2\n ${\n isActive\n ? primaryTheme\n ? \"bg-[var(--primary)]/15 text-[var(--primary)]\"\n : \"\"\n : theme.option\n }\n ${optionClassName}\n `}\n >\n {opt.icon && <span>{opt.icon}</span>}\n {opt.label}\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n\n {/* Helper */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-rose-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";","\"use client\";\n\nimport React, {\n forwardRef,\n useState,\n useImperativeHandle,\n useRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputFieldProps {\n label?: string;\n name?: string;\n type?: \"text\" | \"password\" | \"email\" | \"number\" | \"textarea\";\n placeholder?: string;\n\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n\n error?: string | boolean;\n success?: boolean;\n helperText?: string;\n\n /** Icons */\n icon?: React.ElementType;\n prefix?: string;\n prefixIcon?: React.ElementType;\n suffixIcon?: React.ReactNode;\n\n /** Number props */\n min?: number;\n max?: number;\n step?: number;\n\n /** Textarea */\n rows?: number;\n\n /** 🔥 Theme */\n primaryTheme?: boolean;\n primaryColor?: string;\n\n /** Styling */\n className?: string;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputFieldProps\n>((props, ref) => {\n const {\n label,\n name = \"\",\n type = \"text\",\n placeholder = \"\",\n value,\n defaultValue,\n onChange,\n required,\n disabled,\n readOnly,\n\n error,\n success,\n helperText,\n\n icon: LabelIcon,\n prefix,\n prefixIcon: PrefixIcon,\n suffixIcon,\n\n min,\n max,\n step,\n\n rows = 4,\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className = \"\",\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n useImperativeHandle(ref, () => inputRef.current!);\n\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n const hasPrefixIcon = Boolean(PrefixIcon);\n const hasPrefixText = Boolean(prefix);\n const hasPrefix = hasPrefixIcon || hasPrefixText;\n\n const currentValue = value !== undefined ? value : localValue;\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const val = e.target.value;\n setLocalValue(val);\n onChange?.(name, val);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === \"number\" && e.key === \"-\") e.preventDefault();\n };\n\n /** Padding logic */\n const getPadding = () => {\n if (!hasPrefix) return \"px-4\";\n if (hasPrefixIcon && hasPrefixText) return \"pl-20 pr-4\";\n if (hasPrefixText) return \"pl-14 pr-4\";\n if (hasPrefixIcon) return \"pl-10 pr-4\";\n return \"px-4\";\n };\n\n /** 🔥 Theme Styles */\n const dynamicFocusStyle: CSSProperties = !primaryTheme\n ? {\n borderColor: primaryColor,\n boxShadow: `0 0 0 1px ${primaryColor}`,\n }\n : {};\n\n const dynamicColorStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n /** Border */\n const borderStyle = error\n ? \"border-red-500\"\n : success\n ? \"border-emerald-500\"\n : \"border-zinc-300 dark:border-zinc-800\";\n\n return (\n <div className={`w-full space-y-1 ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"flex items-center gap-2 text-[12px] font-medium text-gray-700 dark:text-zinc-100\">\n {LabelIcon && (\n <LabelIcon\n size={16}\n className={primaryTheme ? \"text-[var(--primary)]\" : \"\"}\n style={!primaryTheme ? dynamicColorStyle : undefined}\n />\n )}\n {label}\n {required && <span className=\"text-red-500\">*</span>}\n </label>\n )}\n\n {/* Input Wrapper */}\n <div className=\"relative\">\n {/* Prefix */}\n {hasPrefix && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3 gap-2 text-sm text-zinc-400 pointer-events-none\">\n {PrefixIcon && <PrefixIcon size={14} />}\n {hasPrefixText && (\n <>\n <span className=\"font-medium text-zinc-600 dark:text-zinc-200\">\n {prefix}\n </span>\n <span className=\"h-4 w-px bg-zinc-300 dark:bg-zinc-700\" />\n </>\n )}\n </div>\n )}\n\n {/* Input / Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n min={type === \"number\" ? min ?? 0 : undefined}\n max={max}\n step={step}\n style={!primaryTheme ? dynamicFocusStyle : undefined}\n className={`\n w-full rounded-lg text-sm\n bg-white dark:bg-zinc-900 border\n text-gray-900 dark:text-white\n placeholder:text-zinc-400\n py-2.5 outline-none\n focus:ring-1\n disabled:opacity-50 disabled:cursor-not-allowed\n ${primaryTheme && \"focus:ring-[var(--primary)] focus:border-[var(--primary)]\"}\n ${getPadding()}\n ${borderStyle}\n `}\n />\n )}\n\n {/* Password toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\"\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Suffix */}\n {suffixIcon && type !== \"password\" && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 text-zinc-400\">\n {suffixIcon}\n </span>\n )}\n </div>\n\n {/* Helper / Error */}\n {(helperText || error) && (\n <p\n className={`text-xs ${\n error\n ? \"text-red-500\"\n : success\n ? \"text-emerald-500\"\n : \"text-zinc-500\"\n }`}\n >\n {error && typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n});","\"use client\";\n\nimport React, { useMemo } from \"react\";\n\ninterface ImageProps {\n src?: string;\n alt?: string;\n title?: string;\n /** Tailwind width/height classes or numbers */\n width?: string | number;\n height?: string | number;\n /** Tailwind rounded classes */\n rounded?: string;\n borderColor?: string;\n borderWidth?: string | number;\n shadow?: boolean;\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n responsive?: boolean;\n p?: string;\n m?: string;\n /** Hover Effects */\n hoverScale?: number;\n hoverRotate?: number;\n hoverOpacity?: number;\n hoverShadow?: boolean;\n transitionDuration?: string;\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Custom Tailwind classes */\n className?: string;\n style?: React.CSSProperties;\n onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"w-full\",\n height = \"h-auto\",\n rounded = \"rounded-lg\",\n borderColor = \"transparent\",\n borderWidth = \"0\",\n shadow = false,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n p,\n m,\n hoverScale = 1.05,\n hoverRotate = 0,\n hoverOpacity,\n hoverShadow = false,\n transitionDuration = \"300ms\",\n overflow = \"hidden\",\n className = \"\",\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n /** Base Tailwind classes */\n const baseClasses = useMemo(() => {\n const classes = [\n \"relative inline-block transition-all\",\n shadow ? \"shadow-md\" : \"\",\n rounded,\n p ?? \"\",\n m ?? \"\",\n responsive ? \"w-full h-auto\" : \"\",\n className,\n ];\n return classes.join(\" \");\n }, [shadow, rounded, p, m, responsive, className]);\n\n /** Inline styles for custom widths, hover, borders, etc. */\n const inlineStyles: React.CSSProperties = useMemo(\n () => ({\n width: typeof width === \"number\" ? width : undefined,\n height: typeof height === \"number\" ? height : undefined,\n objectFit,\n opacity,\n borderColor,\n borderWidth,\n transition: `all ${transitionDuration} ease`,\n ...style,\n }),\n [width, height, objectFit, opacity, borderColor, borderWidth, transitionDuration, style]\n );\n\n /** Overflow handling */\n const overflowStyles: React.CSSProperties = useMemo(() => {\n switch (overflow) {\n case \"x\":\n return { overflowX: \"hidden\" };\n case \"y\":\n return { overflowY: \"hidden\" };\n default:\n return { overflow };\n }\n }, [overflow]);\n\n /** Hover effects */\n const handleMouseEnter = (e: React.MouseEvent<HTMLImageElement>) => {\n if (hoverOpacity !== undefined) e.currentTarget.style.opacity = hoverOpacity.toString();\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n if (hoverShadow) e.currentTarget.style.boxShadow = \"0 8px 20px rgba(0,0,0,0.3)\";\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = opacity.toString();\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n if (hoverShadow) e.currentTarget.style.boxShadow = \"\";\n };\n\n return (\n <div\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n className={baseClasses}\n style={{ position: \"relative\", cursor: onClick ? \"pointer\" : \"default\", ...overflowStyles }}\n >\n {/* SVG fallback */}\n {svgIcon ? (\n <div className=\"w-full h-full flex items-center justify-center\">{svgIcon}</div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading=\"lazy\"\n style={inlineStyles}\n className=\"block\"\n onLoad={onLoad}\n onError={onError}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n />\n )}\n\n {/* Overlay */}\n {overlayText && (\n <div\n style={{ backgroundColor: overlayColor }}\n className=\"absolute inset-0 flex items-center justify-center text-white font-bold text-center p-4\"\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};","import React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemType {\n text: string;\n icon?: ReactNode;\n onClick?: () => void;\n subItems?: ListItemType[];\n}\n\nexport interface ListProps {\n title?: string;\n titleIcon?: ReactNode;\n items: ListItemType[];\n\n type?: \"unordered\" | \"ordered\" | \"inline\";\n\n // 🔥 THEME CONTROL\n primaryTheme?: boolean; // use CSS var\n primaryColor?: string; // fallback color\n\n className?: string;\n itemClassName?: string;\n titleClassName?: string;\n bulletClassName?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\ninterface ListItemProps extends ListItemType {\n isInline?: boolean;\n isOrdered?: boolean;\n\n primaryTheme?: boolean;\n primaryColor?: string;\n\n itemClassName?: string;\n bulletClassName?: string;\n}\n\nconst ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n isInline,\n isOrdered,\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n itemClassName,\n bulletClassName,\n}) => {\n // ✅ Dynamic style for primary color\n const dynamicStyle: CSSProperties = !primaryTheme\n ? { color: primaryColor }\n : {};\n\n const bulletStyle: CSSProperties = !primaryTheme\n ? { backgroundColor: primaryColor }\n : {};\n\n return (\n <li className={clsx(!isInline && \"mb-3\")}>\n <div\n onClick={onClick}\n style={!primaryTheme ? dynamicStyle : undefined}\n className={clsx(\n \"flex items-center gap-2 text-sm text-zinc-800 dark:text-zinc-200 transition-all\",\n onClick &&\n (primaryTheme\n ? \"cursor-pointer hover:text-[var(--primary)]\"\n : \"cursor-pointer\"),\n itemClassName\n )}\n >\n {/* ICON */}\n {icon ? (\n <span className=\"text-base\">{icon}</span>\n ) : (\n !isInline &&\n !isOrdered && (\n <span\n style={!primaryTheme ? bulletStyle : undefined}\n className={clsx(\n \"w-2 h-2 rounded-full\",\n primaryTheme && \"bg-[var(--primary)]\",\n bulletClassName\n )}\n />\n )\n )}\n\n <span>{text}</span>\n </div>\n\n {/* Nested */}\n {subItems && subItems.length > 0 && (\n <ul\n className={clsx(\n \"pl-5 mt-2 space-y-2\",\n isOrdered ? \"list-decimal\" : \"list-none\"\n )}\n >\n {subItems.map((sub, i) => (\n <ListItem\n key={i}\n {...sub}\n isInline={false}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\n/* -------------------------------------------------------------------------- */\n/* 📋 List */\n/* -------------------------------------------------------------------------- */\n\nexport const List: React.FC<ListProps> = ({\n title,\n titleIcon,\n items,\n type = \"unordered\",\n\n primaryTheme = true,\n primaryColor = \"#3b82f6\",\n\n className,\n itemClassName,\n titleClassName,\n bulletClassName,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div\n className={clsx(\n \"bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl p-4\",\n className\n )}\n >\n {title && (\n <div\n className={clsx(\n \"flex items-center gap-2 mb-3 text-base font-semibold text-zinc-900 dark:text-white\",\n titleClassName\n )}\n >\n {titleIcon && <span>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag\n className={clsx(\n isInline\n ? \"flex flex-wrap gap-4\"\n : isOrdered\n ? \"list-decimal pl-5 space-y-2\"\n : \"list-none p-0\"\n )}\n >\n {items.map((item, i) => (\n <ListItem\n key={i}\n {...item}\n isInline={isInline}\n isOrdered={isOrdered}\n primaryTheme={primaryTheme}\n primaryColor={primaryColor}\n itemClassName={itemClassName}\n bulletClassName={bulletClassName}\n />\n ))}\n </ListTag>\n </div>\n );\n};","import React, { ReactNode, useEffect, useRef, useCallback } from \"react\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n title?: string;\n icon?: ReactNode; // <-- Optional icon in header\n ariaLabel?: string;\n className?: string;\n overlayClassName?: string;\n contentClassName?: string;\n closeButtonClassName?: string;\n disableOverlayClose?: boolean;\n darkMode?: boolean;\n transitionDuration?: number; // in ms\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n title,\n icon,\n ariaLabel,\n className,\n overlayClassName,\n contentClassName,\n closeButtonClassName,\n disableOverlayClose = false,\n darkMode = false,\n transitionDuration = 200,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* Escape key close */\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n if (isOpen) document.addEventListener(\"keydown\", handleEsc);\n return () => document.removeEventListener(\"keydown\", handleEsc);\n }, [isOpen, onClose]);\n\n /* Scroll lock */\n useEffect(() => {\n if (isOpen) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [isOpen]);\n\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n className={clsx(\n \"fixed inset-0 flex items-center justify-center z-50 transition-opacity\",\n darkMode ? \"bg-black/80\" : \"bg-black/60\",\n overlayClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={handleOverlayClick}\n >\n <div\n ref={modalRef}\n className={clsx(\n \"relative w-[90vw] max-w-2xl max-h-[90vh] overflow-y-auto p-6 rounded-lg shadow-lg transition-transform\",\n darkMode ? \"bg-zinc-900 text-white\" : \"bg-white text-gray-900\",\n \"scale-100\",\n contentClassName\n )}\n style={{ transitionDuration: `${transitionDuration}ms` }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Close Button */}\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n className={clsx(\n \"absolute top-4 right-4 p-1 rounded-full hover:scale-110 transition-transform\",\n darkMode ? \"text-white hover:text-gray-200\" : \"text-gray-700 hover:text-gray-900\",\n closeButtonClassName\n )}\n >\n <X size={24} />\n </button>\n\n {/* Header */}\n {title && (\n <div className=\"flex items-center gap-2 mb-4\">\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\n <h2 className=\"text-xl font-semibold\">{title}</h2>\n </div>\n )}\n\n {/* Content */}\n {children}\n </div>\n </div>\n );\n};","\"use client\";\nimport React, { ReactNode, CSSProperties } from \"react\";\nimport clsx from \"clsx\";\n\n/* ---------------------------- Types ---------------------------- */\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\n/* ---------------------------- Table Container ---------------------------- */\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <div\n className={clsx(\"overflow-x-auto rounded-lg shadow-sm border border-gray-200\", className)}\n style={{\n background: \"#ffffff\",\n ...style,\n }}\n >\n <table\n className=\"w-full border-collapse\"\n style={{\n borderSpacing: 0,\n borderRadius: 12,\n overflow: \"hidden\",\n }}\n >\n {children}\n </table>\n </div>\n);\n\n/* ---------------------------- Table Head ---------------------------- */\nexport const THead: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <thead\n className={clsx(\"bg-gray-100 text-gray-900 font-semibold\", className)}\n style={{\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\n/* ---------------------------- Table Body ---------------------------- */\nexport const TBody: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tbody className={clsx(\"bg-white\", className)} style={{ ...style }}>\n {children}\n </tbody>\n);\n\n/* ---------------------------- Table Row ---------------------------- */\ninterface TRowProps extends TableSectionProps {\n onClick?: () => void;\n hoverBgColor?: string;\n darkMode?: boolean;\n}\n\nexport const TRow: React.FC<TRowProps> = ({\n children,\n style,\n className,\n onClick,\n hoverBgColor = \"#f9fafb\",\n darkMode = false,\n}) => (\n <tr\n className={clsx(\n \"transition-colors duration-200 cursor-default\",\n onClick ? \"hover:cursor-pointer\" : \"\",\n className\n )}\n style={{ borderBottom: \"1px solid #e5e7eb\", ...style }}\n onClick={onClick}\n onMouseEnter={(e) => {\n if (!darkMode) e.currentTarget.style.backgroundColor = hoverBgColor;\n else e.currentTarget.style.backgroundColor = \"#1f2937\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {children}\n </tr>\n);\n\n/* ---------------------------- Table Head Cell ---------------------------- */\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={clsx(\"text-left px-4 py-3 text-sm text-gray-700 border-b-2 border-gray-200\", className)}\n style={{ ...style }}\n >\n {children}\n </th>\n);\n\n/* ---------------------------- Table Data Cell ---------------------------- */\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={clsx(\"px-4 py-3 text-sm text-gray-600\", className)}\n style={{ ...style }}\n >\n {children}\n </td>\n);","\"use client\";\nimport React, { useState, CSSProperties, useEffect, useRef } from \"react\";\n\n/** 🧩 Types */\ninterface TabItem {\n label: React.ReactNode;\n content: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActive?: number;\n position?: \"top\" | \"left\" | \"right\";\n variant?: \"solid\" | \"outline\" | \"underline\";\n fullWidth?: boolean;\n gap?: number;\n radius?: number;\n padding?: string;\n transitionDuration?: number;\n elevation?: number;\n bordered?: boolean;\n\n /** 🎨 Colors */\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverColor?: string;\n activeColor?: string;\n borderColor?: string;\n disabledColor?: string;\n\n /** 📱 Responsive */\n responsiveBreakpoint?: number;\n showDrawerLabel?: string;\n drawerIcon?: React.ReactNode;\n\n /** ⚙️ Callbacks */\n onTabChange?: (index: number) => void;\n\n /** 🧱 Classes and Styles */\n className?: string;\n style?: CSSProperties;\n tabClassName?: string;\n contentClassName?: string;\n activeTabStyle?: CSSProperties;\n inactiveTabStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n}\n\n/** 💎 Modern, Fully Customizable Tabs */\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n gap = 8,\n radius = 8,\n padding = \"12px 18px\",\n transitionDuration = 200,\n elevation = 1,\n bordered = false,\n\n primaryColor = \"#2563eb\",\n backgroundColor = \"transparent\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n activeColor = \"#ffffff\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n\n responsiveBreakpoint = 768,\n showDrawerLabel = \"Select Tab\",\n drawerIcon = \"☰\",\n\n onTabChange,\n className = \"\",\n style,\n tabClassName = \"\",\n contentClassName = \"\",\n activeTabStyle,\n inactiveTabStyle,\n contentStyle,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [hovered, setHovered] = useState<number | null>(null);\n const [isMobile, setIsMobile] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** 📱 Responsive detection */\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth <= responsiveBreakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [responsiveBreakpoint]);\n\n /** 🎛 Handle tab change */\n const handleChange = (i: number) => {\n if (tabs[i].disabled) return;\n setActive(i);\n onTabChange?.(i);\n if (isMobile) setDrawerOpen(false);\n };\n\n /** ⚡ Keyboard navigation */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, i: number) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n handleChange((i + 1) % tabs.length);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n handleChange((i - 1 + tabs.length) % tabs.length);\n }\n };\n\n /** 🎨 Base styles */\n const baseTab: CSSProperties = {\n padding,\n borderRadius: radius,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n justifyContent: \"center\",\n fontWeight: 500,\n transition: `all ${transitionDuration}ms ease`,\n background: \"transparent\",\n border: variant === \"outline\" ? `1px solid ${borderColor}` : \"none\",\n borderBottom: variant === \"underline\" ? `2px solid transparent` : undefined,\n color: textColor,\n width: fullWidth ? \"100%\" : \"auto\",\n userSelect: \"none\",\n };\n\n const activeTab: CSSProperties = {\n background: variant === \"solid\" ? primaryColor : \"transparent\",\n color: activeColor,\n borderBottom: variant === \"underline\" ? `2px solid ${primaryColor}` : undefined,\n boxShadow:\n elevation > 0 ? `0 ${elevation}px ${elevation * 4}px ${primaryColor}33` : undefined,\n ...activeTabStyle,\n };\n\n const inactiveTab: CSSProperties = {\n ...(variant === \"outline\" ? { borderColor } : {}),\n ...(variant === \"underline\" ? { borderBottomColor: \"transparent\" } : {}),\n ...inactiveTabStyle,\n };\n\n const hoverTab: CSSProperties = {\n color: hoverColor,\n background:\n variant === \"solid\"\n ? `${primaryColor}11`\n : variant === \"outline\"\n ? `${primaryColor}11`\n : \"transparent\",\n };\n\n const disabledTab: CSSProperties = {\n color: disabledColor,\n cursor: \"not-allowed\",\n opacity: 0.6,\n };\n\n const contentBox: CSSProperties = {\n flexGrow: 1,\n borderTop: bordered && position === \"top\" ? `1px solid ${borderColor}` : undefined,\n borderLeft: bordered && position === \"left\" ? `1px solid ${borderColor}` : undefined,\n borderRight: bordered && position === \"right\" ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n ...contentStyle,\n };\n\n /** 🧱 Layout */\n const isVertical = position === \"left\" || position === \"right\";\n\n return (\n <div\n ref={containerRef}\n className={`modern-tabs ${className}`}\n style={{\n display: \"flex\",\n flexDirection: isVertical ? (position === \"right\" ? \"row-reverse\" : \"row\") : \"column\",\n background: backgroundColor,\n border: bordered ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>\n {`\n @keyframes tab-fade {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .modern-tabs__content {\n animation: tab-fade ${transitionDuration}ms ease;\n }\n `}\n </style>\n\n {/* 📱 Mobile Drawer */}\n {isMobile ? (\n <div style={{ width: \"100%\", padding: 8 }}>\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n style={{\n ...baseTab,\n ...activeTab,\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: 16,\n }}\n >\n {showDrawerLabel}\n <span>{drawerIcon}</span>\n </button>\n {drawerOpen && (\n <div style={{ display: \"flex\", flexDirection: \"column\", marginTop: 8, gap }}>\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap,\n padding: 8,\n minWidth: isVertical ? 200 : undefined,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n role=\"tab\"\n aria-selected={isActive}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n\n {/* 🧠 Tab Content */}\n <div\n className={`modern-tabs__content ${contentClassName}`}\n style={contentBox}\n role=\"tabpanel\"\n >\n {tabs[active]?.content}\n </div>\n </div>\n );\n};","import React, { useMemo } from \"react\";\n\n/** 🎯 Limit to only HTML elements to avoid SVG union explosion */\ntype HTMLElementTag = keyof HTMLElementTagNameMap;\n\ntype TextProps<T extends HTMLElementTag = \"p\"> = {\n as?: T;\n children: React.ReactNode;\n color?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | string;\n weight?: React.CSSProperties[\"fontWeight\"];\n align?: React.CSSProperties[\"textAlign\"];\n transform?: React.CSSProperties[\"textTransform\"];\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n truncate?: boolean;\n selectable?: boolean;\n hoverable?: boolean;\n darkMode?: boolean;\n baseColor?: string;\n className?: string;\n style?: React.CSSProperties;\n onClick?: () => void;\n} & Omit<React.HTMLAttributes<HTMLElementTagNameMap[HTMLElementTag]>, \"color\" | \"style\">;\n\n/** 🎨 Utility: generate lighter/darker shades */\nfunction adjustColor(color: string, amount: number): string {\n return (\n \"#\" +\n color\n .replace(/^#/, \"\")\n .replace(/../g, (hex) =>\n (\n \"0\" +\n Math.min(255, Math.max(0, parseInt(hex, 16) + amount)).toString(16)\n ).slice(-2)\n )\n );\n}\n\n/** 🌈 Default color palettes */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n secondary: \"#64748b\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n secondary: \"#94a3b8\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n },\n};\n\n/** 💬 Main Component (HTML-only tags) */\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n color = \"default\",\n size = \"md\",\n weight = \"normal\",\n align = \"left\",\n transform = \"none\",\n italic = false,\n underline = false,\n strikethrough = false,\n truncate = false,\n selectable = true,\n hoverable = false,\n onClick,\n darkMode = false,\n baseColor,\n className = \"\",\n style = {},\n ...rest\n}: TextProps<T>) {\n // element type as provided (constrained to HTML tags)\n const Element = (as || (\"p\" as T)) as T;\n\n /** 🎨 Dynamic color palette generation */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const lightMode = {\n default: \"#111\",\n primary: baseColor,\n secondary: adjustColor(baseColor, -50),\n success: adjustColor(baseColor, -30),\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n };\n const darkModeTheme = {\n default: \"#f8fafc\",\n primary: adjustColor(baseColor, 80),\n secondary: adjustColor(baseColor, 120),\n success: adjustColor(baseColor, 100),\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n };\n return darkMode ? darkModeTheme : lightMode;\n }, [baseColor, darkMode]);\n\n /** 📏 Font sizes */\n const sizes: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n xl: \"1.5rem\",\n \"2xl\": \"2rem\",\n };\n\n /** 💅 Computed styles */\n const computedStyle: React.CSSProperties = {\n color: (theme as any)[color] || color,\n fontSize: sizes[size] || size,\n fontWeight: weight,\n textAlign: align,\n textTransform: transform,\n fontStyle: italic ? \"italic\" : \"normal\",\n textDecoration: underline ? \"underline\" : strikethrough ? \"line-through\" : \"none\",\n userSelect: selectable ? \"text\" : \"none\",\n overflow: truncate ? \"hidden\" : undefined,\n whiteSpace: truncate ? \"nowrap\" : undefined,\n textOverflow: truncate ? \"ellipsis\" : undefined,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.25s ease-in-out\",\n ...style,\n };\n\n /** 🧠 Hover events (narrow to HTMLElement at runtime) */\n const handleMouseEnter = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"0.8\";\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"1\";\n }\n };\n\n /**\n * Build props object. We cast only once to the correct intrinsic props type.\n * This prevents TypeScript from having to compute giant unions for event types.\n */\n const props = {\n className,\n style: computedStyle,\n onClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...rest,\n } as React.ComponentPropsWithoutRef<T>;\n\n // Use React.createElement to avoid JSX generic complexity\n return React.createElement(Element as any, props, children);\n}\n\nexport default Text;\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","ChevronDown","ChevronUp","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","ToastContext","createContext","useToast","context","useContext","ToastProvider","toasts","setToasts","useState","removeToast","useCallback","id","prev","t","addToast","toast","jsx","ToastItem","typeStyles","CheckCircle","AlertCircle","AlertTriangle","onClose","title","description","bg","border","icon","jsxs","Accordion","memo","items","allowMultiple","defaultOpen","borderColor","backgroundColor","textColor","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","borderRadius","contentPadding","fontSize","fontWeight","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","shadow","style","openIndexes","setOpenIndexes","contentRefs","useRef","useEffect","el","toggleItem","i","toCssValue","item","isOpen","e","sizeMap","fontSizeMap","dimensionMap","variantMap","statusPositionMap","Avatar","src","alt","variant","isOnline","isOffline","fallback","ring","ringColor","onClick","statusPosition","statusClassName","statusStyle","imageError","setImageError","clickable","initials","n","statusColor","dimensionPx","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","padding","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","duration","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","percent","skip","seconds","toggleFullscreen","formatTime","time","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","maxWidth","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","r","f","clsx","Badge","text","iconPosition","primaryTheme","rounded","notificationDot","dotColor","count","pulse","sizes","themeClasses","dynamicStyle","Button","iconBefore","iconAfter","loading","loadingText","fullWidth","disabled","sizeClasses","Fragment","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","darkMode","containerRef","focusedIndex","setFocusedIndex","handleChange","updatedValues","v","container","handleKeyDown","currentIndex","option","isChecked","isFocused","RadioGroup","selectedValue","o","SwitchGroup","switchBgColor","paddingMap","Container","center","toResponsiveClass","prefix","bp","val","FlexView","direction","align","justify","wrap","gap","margin","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","DrawerButton","label","Drawer","open","position","showCloseButton","overlayClassName","closeButtonClassName","mounted","setMounted","transform","useMemo","Dropdown","defaultValue","placeholder","success","helperText","LabelIcon","PrefixIcon","containerClassName","labelClassName","triggerClassName","dropdownClassName","optionClassName","useImperativeHandle","setOpen","localValue","setLocalValue","currentValue","selectedOption","handler","handleSelect","theme","dynamicPrimary","dynamicBorder","dynamicBgActive","borderState","paddingLeft","p","opt","Input","suffixIcon","min","max","step","rows","inputRef","visible","setVisible","hasPrefixIcon","hasPrefixText","hasPrefix","getPadding","dynamicFocusStyle","dynamicColorStyle","borderStyle","Image","height","borderWidth","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","m","hoverScale","hoverRotate","hoverOpacity","hoverShadow","overflow","onLoad","onError","baseClasses","inlineStyles","overflowStyles","handleMouseEnter","handleMouseLeave","ListItem","subItems","isInline","isOrdered","itemClassName","bulletClassName","bulletStyle","sub","List","titleIcon","titleClassName","ListTag","Modal","ariaLabel","contentClassName","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","radius","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","activeTabStyle","inactiveTabStyle","contentStyle","active","setActive","hovered","setHovered","isMobile","setIsMobile","drawerOpen","setDrawerOpen","check","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isHovered","isDisabled","adjustColor","amount","hex","defaultColors","Text","as","weight","italic","underline","strikethrough","truncate","selectable","hoverable","baseColor","Element","lightMode","darkModeTheme","computedStyle","target"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,34]}
|