@neuctra/ui 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/basic/Alert.d.ts +0 -1
- package/dist/components/basic/Card.d.ts +1 -1
- package/dist/components/basic/{CheckRadioInput.d.ts → CheckboxGroup.d.ts} +4 -7
- package/dist/components/basic/DropDown.d.ts +24 -34
- package/dist/components/basic/Modal.d.ts +2 -9
- package/dist/components/basic/RadioGroup.d.ts +25 -0
- package/dist/components/basic/SwitchGroup.d.ts +25 -0
- package/dist/index.cjs.js +41 -52
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.es.js +1920 -1893
- package/dist/index.es.js.map +1 -1
- package/dist/src/components/basic/Alert.js +45 -30
- package/dist/src/components/basic/Card.js +12 -10
- package/dist/src/components/basic/CheckboxGroup.js +40 -0
- package/dist/src/components/basic/DropDown.js +140 -294
- package/dist/src/components/basic/Modal.js +10 -12
- package/dist/src/components/basic/RadioGroup.js +37 -0
- package/dist/src/components/basic/SwitchGroup.js +50 -0
- package/dist/src/components/basic/Table.js +30 -11
- package/dist/src/index.js +4 -2
- package/dist/types/src/components/basic/Alert.d.ts +0 -1
- package/dist/types/src/components/basic/Card.d.ts +1 -1
- package/dist/types/src/components/basic/{CheckRadioInput.d.ts → CheckboxGroup.d.ts} +4 -7
- package/dist/types/src/components/basic/DropDown.d.ts +24 -34
- package/dist/types/src/components/basic/Modal.d.ts +2 -9
- package/dist/types/src/components/basic/RadioGroup.d.ts +25 -0
- package/dist/types/src/components/basic/SwitchGroup.d.ts +25 -0
- package/dist/types/src/index.d.ts +3 -1
- package/dist/ui.css +1 -1
- package/package.json +1 -1
- package/dist/components/avatar/AvatarGroup.d.ts +0 -9
- package/dist/components/avatar/AvatarWithStatus.d.ts +0 -10
- package/dist/src/components/avatar/AvatarGroup.js +0 -9
- package/dist/src/components/avatar/AvatarWithStatus.js +0 -18
- package/dist/src/components/basic/CheckRadioInput.js +0 -83
- package/dist/types/src/components/avatar/AvatarGroup.d.ts +0 -9
- package/dist/types/src/components/avatar/AvatarWithStatus.d.ts +0 -10
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/CheckRadioInput.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\n/** 📍 Dynamic position styles */\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\n/** 🎯 Production-grade Alert Component */\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(true);\n\n /** Auto-dismiss after duration */\n useEffect(() => {\n if (duration) {\n const timer = setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose]);\n\n const { bg, border, iconColor, Icon } = typeStyles[type];\n const positionStyle = getPositionStyle(position);\n\n /** Combine computed and custom styles */\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 ? 1 : 0,\n transform: visible\n ? position.includes(\"bottom\")\n ? \"translateY(0)\"\n : \"translateY(0)\"\n : position.includes(\"bottom\")\n ? \"translateY(20px)\"\n : \"translateY(-20px)\",\n transition: `opacity ${animationDuration} ease, transform ${animationDuration} ease`,\n ...style,\n }),\n [\n visible,\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 ]\n );\n\n if (!visible) return null;\n\n return (\n <div className={className} style={containerStyle} role=\"alert\">\n {/* Icon */}\n <div style={{ color: iconColor, marginTop: \"2px\" }}>\n {icon || Icon}\n </div>\n\n {/* Text content */}\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\n style={{\n fontSize: \"0.875rem\",\n color: descriptionColor,\n lineHeight: 1.4,\n }}\n >\n {description}\n </div>\n )}\n {actionButton && (\n <div style={{ marginTop: \"8px\" }}>{actionButton}</div>\n )}\n </div>\n\n {/* Dismiss button */}\n {dismissible && (\n <button\n onClick={() => {\n setVisible(false);\n onClose?.();\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\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\ntype CardVariant = \"elevated\" | \"outline\" | \"flat\";\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 based on variant\n const baseVariantStyles: Record<CardVariant, 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],\n ...style,\n };\n\n return (\n <Component\n ref={ref}\n className={`ui-card ${className}`}\n style={cardStyle}\n onClick={onClick}\n onMouseEnter={(e: React.MouseEvent<HTMLElement>) => {\n Object.assign(\n e.currentTarget.style,\n hoverShadow ? { boxShadow: hoverShadow } : hoverStyle\n );\n }}\n onMouseLeave={(e: React.MouseEvent<HTMLElement>) => {\n Object.assign(e.currentTarget.style, {\n ...baseVariantStyles[variant],\n ...style,\n });\n }}\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","import React from \"react\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ntype CheckRadioType = \"checkbox\" | \"radio\" | \"switch\";\n\ninterface CheckRadioProps {\n type?: CheckRadioType; // default = checkbox\n name?: string;\n options: Option[];\n selectedValues?: string[] | string;\n onChange?: (value: string | 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 switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n}\n\nexport const CheckRadio: React.FC<CheckRadioProps> = ({\n type = \"checkbox\",\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\", // blue-600\n iconUncheckedBorderColor = \"#9ca3af\", // gray-400\n switchBgColor = \"#d1d5db\", // gray-300\n textColor = \"#374151\", // gray-700\n errorStyle,\n}) => {\n const isCheckbox = type === \"checkbox\";\n const isRadio = type === \"radio\";\n const isSwitch = type === \"switch\";\n\n const handleChange = (value: string) => {\n if (!onChange) return;\n if (isCheckbox) {\n const updatedValues = Array.isArray(selectedValues)\n ? selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value]\n : [value];\n onChange(updatedValues);\n } else {\n onChange(value);\n }\n };\n\n return (\n <div\n className={className}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n ...style,\n }}\n role={type}\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = isCheckbox\n ? Array.isArray(selectedValues) && selectedValues.includes(option.value)\n : selectedValues === 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 {/* Label Text */}\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n\n {/* Hidden Input */}\n <input\n type={isSwitch ? \"checkbox\" : type}\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 {/* Icon or Switch */}\n {isSwitch ? (\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 0.2s ease\",\n flexShrink: 0,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: 2,\n left: isChecked ? iconSize : 2,\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n transition: \"left 0.2s ease\",\n }}\n />\n </span>\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: isCheckbox ? 4 : \"50%\",\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.2s ease\",\n flexShrink: 0,\n }}\n >\n {isChecked && isRadio && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: \"white\",\n }}\n />\n )}\n {isChecked && isCheckbox && (\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 Message */}\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","import React, { useState, useRef, useEffect, useCallback } from \"react\";\n\ninterface Option {\n label: string;\n value: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface DropdownProps {\n options: Option[];\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n searchable?: boolean;\n multiSelect?: boolean;\n clearable?: boolean;\n virtualized?: boolean;\n optionHeight?: number;\n visibleOptions?: number;\n\n // Styling props\n width?: string;\n height?: string;\n borderColor?: string;\n focusBorderColor?: string;\n errorBorderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n placeholderColor?: string;\n hoverColor?: string;\n selectedColor?: string;\n disabledColor?: string;\n padding?: string;\n margin?: string;\n borderRadius?: string;\n boxShadow?: string;\n optionPadding?: string;\n optionGap?: string;\n transitionDuration?: string;\n dropdownMaxHeight?: string;\n dropdownMinWidth?: string;\n\n // Custom styles\n className?: string;\n dropdownClassName?: string;\n optionClassName?: string;\n inputClassName?: string;\n style?: React.CSSProperties;\n dropdownStyle?: React.CSSProperties;\n optionStyle?: React.CSSProperties;\n inputStyle?: 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 // Accessibility\n ariaLabel?: string;\n ariaLabelledby?: string;\n ariaDescribedby?: string;\n\n // Callbacks\n onFocus?: () => void;\n onBlur?: () => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n options,\n value,\n defaultValue,\n onChange,\n placeholder = \"Select an option\",\n disabled = false,\n searchable = false,\n multiSelect = false,\n clearable = false,\n virtualized = false,\n optionHeight = 36,\n visibleOptions = 5,\n\n // Styling defaults\n width = \"100%\",\n height = \"auto\",\n borderColor = \"#d1d5db\",\n focusBorderColor = \"#2563eb\",\n errorBorderColor = \"#dc2626\",\n backgroundColor = \"#ffffff\",\n textColor = \"#111827\",\n placeholderColor = \"#9ca3af\",\n hoverColor = \"#f3f4f6\",\n selectedColor = \"#eff6ff\",\n disabledColor = \"#f3f4f6\",\n padding = \"0.5rem 0.75rem\",\n margin = \"0\",\n borderRadius = \"0.375rem\",\n boxShadow = \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n optionPadding = \"0.5rem 0.75rem\",\n optionGap = \"0.5rem\",\n transitionDuration = \"200ms\",\n dropdownMaxHeight = \"300px\",\n dropdownMinWidth = \"100%\",\n\n // Custom classes\n className = \"\",\n dropdownClassName = \"\",\n optionClassName = \"\",\n inputClassName = \"\",\n\n // Custom styles\n style,\n dropdownStyle,\n optionStyle,\n inputStyle,\n\n // Icons\n iconPrefix,\n iconSuffix,\n clearIcon = \"×\",\n dropdownIcon = \"▼\",\n checkIcon = \"✓\",\n\n // Accessibility\n ariaLabel,\n ariaLabelledby,\n ariaDescribedby,\n\n // Callbacks\n onFocus,\n onBlur,\n onOpen,\n onClose,\n}) => {\n const [selectedValues, setSelectedValues] = useState<string[]>([]);\n const [isOpen, setIsOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const optionsRef = useRef<(HTMLLIElement | null)[]>([]);\n\n // Initialize selected values\n useEffect(() => {\n if (value) {\n setSelectedValues(multiSelect ? value.split(\",\") : [value]);\n } else if (defaultValue) {\n setSelectedValues(multiSelect ? defaultValue.split(\",\") : [defaultValue]);\n } else {\n setSelectedValues([]);\n }\n }, [value, defaultValue, multiSelect]);\n\n // Filter options based on search term\n const filteredOptions = searchable\n ? options.filter((option) =>\n option.label.toLowerCase().includes(searchTerm.toLowerCase())\n )\n : options;\n\n // Handle click outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n onClose?.();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [onClose]);\n\n // Keyboard navigation\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isOpen) return;\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n setFocusedIndex((prev) => {\n const nextIndex =\n prev === null\n ? 0\n : Math.min(prev + 1, filteredOptions.length - 1);\n scrollToOption(nextIndex);\n return nextIndex;\n });\n break;\n case \"ArrowUp\":\n event.preventDefault();\n setFocusedIndex((prev) => {\n const nextIndex = prev === null ? 0 : Math.max(prev - 1, 0);\n scrollToOption(nextIndex);\n return nextIndex;\n });\n break;\n case \"Enter\":\n event.preventDefault();\n if (focusedIndex !== null) {\n handleSelect(filteredOptions[focusedIndex].value);\n }\n break;\n case \"Escape\":\n event.preventDefault();\n setIsOpen(false);\n onClose?.();\n break;\n case \"Tab\":\n setIsOpen(false);\n onClose?.();\n break;\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, focusedIndex, filteredOptions]);\n\n const scrollToOption = useCallback((index: number) => {\n optionsRef.current[index]?.scrollIntoView({\n block: \"nearest\",\n behavior: \"smooth\",\n });\n }, []);\n\n const handleSelect = (value: string) => {\n let newSelectedValues: string[];\n if (multiSelect) {\n newSelectedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n } else {\n newSelectedValues = [value];\n setIsOpen(false);\n onClose?.();\n }\n\n setSelectedValues(newSelectedValues);\n onChange?.(multiSelect ? newSelectedValues.join(\",\") : value);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n setSelectedValues([]);\n onChange?.(\"\");\n setSearchTerm(\"\");\n };\n\n const toggleDropdown = () => {\n if (disabled) return;\n const newState = !isOpen;\n setIsOpen(newState);\n if (newState) {\n onOpen?.();\n if (searchable) {\n setTimeout(() => inputRef.current?.focus(), 0);\n }\n } else {\n onClose?.();\n }\n };\n\n const selectedOption = options.find(\n (option) => option.value === selectedValues[0]\n );\n const selectedOptions = options.filter((option) =>\n selectedValues.includes(option.value)\n );\n\n // Virtualization setup\n const [startIndex, setStartIndex] = useState(0);\n const visibleOptionCount = Math.min(visibleOptions, filteredOptions.length);\n const endIndex = Math.min(\n startIndex + visibleOptionCount,\n filteredOptions.length\n );\n const visibleOptionsList = virtualized\n ? filteredOptions.slice(startIndex, endIndex)\n : filteredOptions;\n\n return (\n <div\n ref={dropdownRef}\n className={`dropdown-container ${className}`}\n style={{\n position: \"relative\",\n width,\n margin,\n fontFamily: \"'Inter', sans-serif\",\n ...style,\n }}\n >\n {/* Inline CSS for dynamic styles */}\n <style>\n {`\n .dropdown-container {\n --border-color: ${borderColor};\n --focus-border-color: ${focusBorderColor};\n --error-border-color: ${errorBorderColor};\n --bg-color: ${backgroundColor};\n --text-color: ${textColor};\n --placeholder-color: ${placeholderColor};\n --hover-color: ${hoverColor};\n --selected-color: ${selectedColor};\n --disabled-color: ${disabledColor};\n --transition-duration: ${transitionDuration};\n }\n `}\n </style>\n\n {/* Control button */}\n <div\n role=\"button\"\n onClick={toggleDropdown}\n aria-disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={ariaDescribedby}\n className={`dropdown-control ${inputClassName}`}\n style={{\n width: \"100%\",\n minHeight: height,\n padding,\n backgroundColor: disabled ? disabledColor : backgroundColor,\n color: textColor,\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: isOpen ? focusBorderColor : borderColor,\n borderRadius,\n boxShadow,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.7 : 1,\n transition: `all ${transitionDuration} ease-in-out`,\n textAlign: \"left\",\n ...inputStyle,\n ...(isOpen && {\n boxShadow: `0 0 0 1px ${focusBorderColor}`,\n }),\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: optionGap,\n flex: 1,\n overflow: \"hidden\",\n }}\n >\n {iconPrefix && (\n <span className=\"dropdown-icon-prefix\" style={{ flexShrink: 0 }}>\n {iconPrefix}\n </span>\n )}\n\n {multiSelect ? (\n <div\n style={{\n display: \"flex\",\n gap: \"0.25rem\",\n flexWrap: \"wrap\",\n flex: 1,\n overflow: \"hidden\",\n }}\n >\n {selectedOptions.length > 0 ? (\n selectedOptions.map((option) => (\n <span\n key={option.value}\n style={{\n backgroundColor: selectedColor,\n padding: \"0.25rem 0.5rem\",\n borderRadius: \"0.25rem\",\n fontSize: \"0.875rem\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.25rem\",\n flexShrink: 0,\n }}\n >\n {option.icon && (\n <span style={{ flexShrink: 0 }}>{option.icon}</span>\n )}\n <span\n style={{\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {option.label}\n </span>\n </span>\n ))\n ) : (\n <span style={{ color: placeholderColor }}>{placeholder}</span>\n )}\n </div>\n ) : (\n <span\n style={{\n color: selectedOption ? textColor : placeholderColor,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n display: \"flex\",\n alignItems: \"center\",\n gap: optionGap,\n }}\n >\n {selectedOption?.icon && (\n <span style={{ flexShrink: 0 }}>{selectedOption.icon}</span>\n )}\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n )}\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n marginLeft: \"0.5rem\",\n flexShrink: 0,\n }}\n >\n {clearable && selectedValues.length > 0 && (\n <span\n onClick={handleClear}\n style={{\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n fontSize: \"1rem\",\n color: textColor,\n opacity: 0.7,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n aria-label=\"Clear selection\"\n >\n {clearIcon}\n </span>\n )}\n <span\n style={{\n transition: `transform ${transitionDuration}`,\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n fontSize: \"0.75rem\",\n color: textColor,\n opacity: 0.7,\n }}\n >\n {dropdownIcon}\n </span>\n </div>\n </div>\n\n {/* Dropdown menu */}\n {isOpen && (\n <div\n className={`dropdown-menu ${dropdownClassName}`}\n style={{\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n zIndex: 1000,\n width: \"100%\",\n minWidth: dropdownMinWidth,\n maxHeight: dropdownMaxHeight,\n overflowY: \"auto\",\n backgroundColor,\n border: `1px solid ${borderColor}`,\n borderRadius,\n boxShadow: `0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)`,\n marginTop: \"0.25rem\",\n transition: `opacity ${transitionDuration}, transform ${transitionDuration}`,\n opacity: 0,\n transform: \"translateY(-0.5rem)\",\n animation: `dropdownFadeIn ${transitionDuration} ease-out forwards`,\n ...dropdownStyle,\n }}\n role=\"listbox\"\n aria-multiselectable={multiSelect}\n >\n {/* Search input */}\n {searchable && (\n <div\n style={{\n padding: \"0.5rem\",\n borderBottom: `1px solid ${borderColor}`,\n }}\n >\n <input\n ref={inputRef}\n type=\"text\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n placeholder=\"Search...\"\n style={{\n width: \"100%\",\n padding: \"0.5rem 0.75rem\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n color: textColor,\n borderColor: isOpen ? focusBorderColor : borderColor,\n borderRadius: \"0.25rem\",\n outline: \"none\",\n transition: `border-color ${transitionDuration}`,\n ...(isOpen && {\n boxShadow: `0 0 0 1px ${focusBorderColor}`,\n }),\n }}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n </div>\n )}\n\n {/* Options list */}\n <ul style={{ margin: 0, padding: \"0.25rem 0\", listStyle: \"none\" }}>\n {filteredOptions.length > 0 ? (\n visibleOptionsList.map((option, index) => {\n const isSelected = selectedValues.includes(option.value);\n const isFocused =\n focusedIndex === (virtualized ? startIndex + index : index);\n const isDisabled = option.disabled;\n\n return (\n <li\n key={option.value}\n ref={(el) => {\n if (el) {\n const refIndex = virtualized\n ? startIndex + index\n : index;\n optionsRef.current[refIndex] = el;\n }\n }}\n onClick={() => !isDisabled && handleSelect(option.value)}\n onMouseEnter={() =>\n !isDisabled &&\n setFocusedIndex(virtualized ? startIndex + index : index)\n }\n className={`dropdown-option ${optionClassName} ${\n isDisabled ? \"disabled\" : \"\"\n }`}\n style={{\n padding: optionPadding,\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n backgroundColor: isSelected\n ? selectedColor\n : isFocused\n ? hoverColor\n : backgroundColor,\n color: isDisabled ? disabledColor : textColor,\n display: \"flex\",\n alignItems: \"center\",\n gap: optionGap,\n transition: `background-color ${transitionDuration}`,\n ...optionStyle,\n }}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled}\n >\n {multiSelect && (\n <span style={{ flexShrink: 0 }}>\n {isSelected ? checkIcon : \"○\"}\n </span>\n )}\n {option.icon && (\n <span style={{ flexShrink: 0 }}>{option.icon}</span>\n )}\n <span style={{ flex: 1 }}>{option.label}</span>\n </li>\n );\n })\n ) : (\n <li\n style={{\n padding: optionPadding,\n color: placeholderColor,\n textAlign: \"center\",\n }}\n >\n No options found\n </li>\n )}\n </ul>\n\n {/* Virtualization scroll spacer */}\n {virtualized && filteredOptions.length > visibleOptionCount && (\n <div\n style={{\n height: `${\n (filteredOptions.length - visibleOptionCount) * optionHeight\n }px`,\n }}\n />\n )}\n </div>\n )}\n\n {/* Inline animation styles */}\n <style>\n {`\n @keyframes dropdownFadeIn {\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n `}\n </style>\n </div>\n );\n};\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\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\nexport interface ModalProps {\n /** Controls whether the modal is visible */\n isOpen: boolean;\n\n /** Callback fired when modal requests to close */\n onClose: () => void;\n\n /** Modal content */\n children: ReactNode;\n\n /** Optional ARIA label for accessibility */\n ariaLabel?: string;\n\n /** Optional title for screen readers */\n title?: string;\n\n /** Custom styles */\n overlayStyle?: CSSProperties;\n modalStyle?: CSSProperties;\n closeButtonStyle?: CSSProperties;\n\n /** Enable/disable overlay click to close */\n disableOverlayClose?: boolean;\n\n /** Animation duration (ms) */\n transitionDuration?: number;\n\n /** Optional classNames for CSS frameworks like Tailwind */\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Modal */\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}) => {\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 /* ------------------------------ Early Return ----------------------------- */\n if (!isOpen) return null;\n\n /* ------------------------------- Base Styles ----------------------------- */\n const baseOverlay: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: \"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: \"#fff\",\n borderRadius: 12,\n width: \"90vw\",\n maxWidth: 700,\n maxHeight: \"90vh\",\n overflowY: \"auto\",\n padding: 24,\n boxShadow: \"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: \"#444\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n ...closeButtonStyle,\n };\n\n /* ----------------------------- Render Content ---------------------------- */\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 = \"#000\";\n e.currentTarget.style.transform = \"scale(1.1)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = \"#444\";\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n <X size={24} />\n </button>\n\n {title && (\n <h2\n style={{\n fontSize: \"1.25rem\",\n fontWeight: 600,\n marginBottom: \"1rem\",\n }}\n >\n {title}\n </h2>\n )}\n\n {children}\n </div>\n </div>\n );\n};\n","import React, { ReactNode, CSSProperties } from \"react\";\n\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <table\n className={className}\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n ...style,\n }}\n >\n {children}\n </table>\n);\n\nexport const THead: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <thead\n className={className}\n style={{\n backgroundColor: \"#f9fafb\",\n borderBottom: \"2px solid #e5e7eb\",\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\nexport const TBody: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tbody className={className} style={style}>\n {children}\n </tbody>\n);\n\nexport const TRow: React.FC<TableSectionProps> = ({ children, style, className }) => (\n <tr\n className={className}\n style={{\n borderBottom: \"1px solid #e5e7eb\",\n transition: \"background 0.2s ease\",\n ...style,\n }}\n >\n {children}\n </tr>\n);\n\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={className}\n style={{\n textAlign: \"left\",\n padding: \"12px 16px\",\n fontWeight: 600,\n fontSize: \"0.875rem\",\n color: \"#374151\",\n ...style,\n }}\n >\n {children}\n </th>\n);\n\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={className}\n style={{\n padding: \"12px 16px\",\n fontSize: \"0.875rem\",\n color: \"#4b5563\",\n ...style,\n }}\n >\n {children}\n </td>\n);\n","\"use client\";\nimport React, { useState, CSSProperties, useEffect, useRef } from \"react\";\n\n/** 🧩 Types */\ninterface TabItem {\n label: React.ReactNode;\n content: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActive?: number;\n position?: \"top\" | \"left\" | \"right\";\n variant?: \"solid\" | \"outline\" | \"underline\";\n fullWidth?: boolean;\n gap?: number;\n radius?: number;\n padding?: string;\n transitionDuration?: number;\n elevation?: number;\n bordered?: boolean;\n\n /** 🎨 Colors */\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverColor?: string;\n activeColor?: string;\n borderColor?: string;\n disabledColor?: string;\n\n /** 📱 Responsive */\n responsiveBreakpoint?: number;\n showDrawerLabel?: string;\n drawerIcon?: React.ReactNode;\n\n /** ⚙️ Callbacks */\n onTabChange?: (index: number) => void;\n\n /** 🧱 Classes and Styles */\n className?: string;\n style?: CSSProperties;\n tabClassName?: string;\n contentClassName?: string;\n activeTabStyle?: CSSProperties;\n inactiveTabStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n}\n\n/** 💎 Modern, Fully Customizable Tabs */\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n gap = 8,\n radius = 8,\n padding = \"12px 18px\",\n transitionDuration = 200,\n elevation = 1,\n bordered = false,\n\n primaryColor = \"#2563eb\",\n backgroundColor = \"transparent\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n activeColor = \"#ffffff\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n\n responsiveBreakpoint = 768,\n showDrawerLabel = \"Select Tab\",\n drawerIcon = \"☰\",\n\n onTabChange,\n className = \"\",\n style,\n tabClassName = \"\",\n contentClassName = \"\",\n activeTabStyle,\n inactiveTabStyle,\n contentStyle,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [hovered, setHovered] = useState<number | null>(null);\n const [isMobile, setIsMobile] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** 📱 Responsive detection */\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth <= responsiveBreakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [responsiveBreakpoint]);\n\n /** 🎛 Handle tab change */\n const handleChange = (i: number) => {\n if (tabs[i].disabled) return;\n setActive(i);\n onTabChange?.(i);\n if (isMobile) setDrawerOpen(false);\n };\n\n /** ⚡ Keyboard navigation */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, i: number) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n handleChange((i + 1) % tabs.length);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n handleChange((i - 1 + tabs.length) % tabs.length);\n }\n };\n\n /** 🎨 Base styles */\n const baseTab: CSSProperties = {\n padding,\n borderRadius: radius,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n justifyContent: \"center\",\n fontWeight: 500,\n transition: `all ${transitionDuration}ms ease`,\n background: \"transparent\",\n border: variant === \"outline\" ? `1px solid ${borderColor}` : \"none\",\n borderBottom:\n variant === \"underline\" ? `2px solid transparent` : undefined,\n color: textColor,\n width: fullWidth ? \"100%\" : \"auto\",\n userSelect: \"none\",\n };\n\n const activeTab: CSSProperties = {\n background: variant === \"solid\" ? primaryColor : \"transparent\",\n color: activeColor,\n borderBottom:\n variant === \"underline\" ? `2px solid ${primaryColor}` : undefined,\n boxShadow:\n elevation > 0 ? `0 ${elevation}px ${elevation * 4}px ${primaryColor}33` : undefined,\n ...activeTabStyle,\n };\n\n const inactiveTab: CSSProperties = {\n ...(variant === \"outline\"\n ? { borderColor }\n : variant === \"underline\"\n ? { borderBottomColor: \"transparent\" }\n : {}),\n ...inactiveTabStyle,\n };\n\n const hoverTab: CSSProperties = {\n color: hoverColor,\n background:\n variant === \"solid\"\n ? `${primaryColor}11`\n : variant === \"outline\"\n ? `${primaryColor}11`\n : \"transparent\",\n };\n\n const disabledTab: CSSProperties = {\n color: disabledColor,\n cursor: \"not-allowed\",\n opacity: 0.6,\n };\n\n const contentBox: CSSProperties = {\n flexGrow: 1,\n borderTop: bordered && position === \"top\" ? `1px solid ${borderColor}` : undefined,\n borderLeft: bordered && position === \"left\" ? `1px solid ${borderColor}` : undefined,\n borderRight: bordered && position === \"right\" ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n ...contentStyle,\n };\n\n /** 🧱 Layout */\n const isVertical = position === \"left\" || position === \"right\";\n const layoutDir = isVertical ? \"row\" : \"column\";\n\n return (\n <div\n ref={containerRef}\n className={`modern-tabs ${className}`}\n style={{\n display: \"flex\",\n flexDirection: isVertical ? (position === \"right\" ? \"row-reverse\" : \"row\") : \"column\",\n background: backgroundColor,\n border: bordered ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>\n {`\n @keyframes tab-fade {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .modern-tabs__content {\n animation: tab-fade ${transitionDuration}ms ease;\n }\n `}\n </style>\n\n {/* 📱 Mobile Drawer */}\n {isMobile ? (\n <div style={{ width: \"100%\", padding: 8 }}>\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n style={{\n ...baseTab,\n ...activeTab,\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: 16,\n }}\n >\n {showDrawerLabel}\n <span>{drawerIcon}</span>\n </button>\n {drawerOpen && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: 8,\n gap,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap,\n padding: 8,\n minWidth: isVertical ? 200 : undefined,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n role=\"tab\"\n aria-selected={isActive}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n\n {/* 🧠 Tab Content */}\n <div\n className={`modern-tabs__content ${contentClassName}`}\n style={contentBox}\n role=\"tabpanel\"\n >\n {tabs[active]?.content}\n </div>\n </div>\n );\n};\n","import React, { useMemo } from \"react\";\n\n/** 🎯 Limit to only HTML elements to avoid SVG union explosion */\ntype HTMLElementTag = keyof HTMLElementTagNameMap;\n\ntype TextProps<T extends HTMLElementTag = \"p\"> = {\n as?: T;\n children: React.ReactNode;\n color?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | string;\n weight?: React.CSSProperties[\"fontWeight\"];\n align?: React.CSSProperties[\"textAlign\"];\n transform?: React.CSSProperties[\"textTransform\"];\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n truncate?: boolean;\n selectable?: boolean;\n hoverable?: boolean;\n darkMode?: boolean;\n baseColor?: string;\n className?: string;\n style?: React.CSSProperties;\n onClick?: () => void;\n} & Omit<React.HTMLAttributes<HTMLElementTagNameMap[HTMLElementTag]>, \"color\" | \"style\">;\n\n/** 🎨 Utility: generate lighter/darker shades */\nfunction adjustColor(color: string, amount: number): string {\n return (\n \"#\" +\n color\n .replace(/^#/, \"\")\n .replace(/../g, (hex) =>\n (\n \"0\" +\n Math.min(255, Math.max(0, parseInt(hex, 16) + amount)).toString(16)\n ).slice(-2)\n )\n );\n}\n\n/** 🌈 Default color palettes */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n secondary: \"#64748b\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n secondary: \"#94a3b8\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n },\n};\n\n/** 💬 Main Component (HTML-only tags) */\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n color = \"default\",\n size = \"md\",\n weight = \"normal\",\n align = \"left\",\n transform = \"none\",\n italic = false,\n underline = false,\n strikethrough = false,\n truncate = false,\n selectable = true,\n hoverable = false,\n onClick,\n darkMode = false,\n baseColor,\n className = \"\",\n style = {},\n ...rest\n}: TextProps<T>) {\n // element type as provided (constrained to HTML tags)\n const Element = (as || (\"p\" as T)) as T;\n\n /** 🎨 Dynamic color palette generation */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const lightMode = {\n default: \"#111\",\n primary: baseColor,\n secondary: adjustColor(baseColor, -50),\n success: adjustColor(baseColor, -30),\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n };\n const darkModeTheme = {\n default: \"#f8fafc\",\n primary: adjustColor(baseColor, 80),\n secondary: adjustColor(baseColor, 120),\n success: adjustColor(baseColor, 100),\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n };\n return darkMode ? darkModeTheme : lightMode;\n }, [baseColor, darkMode]);\n\n /** 📏 Font sizes */\n const sizes: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n xl: \"1.5rem\",\n \"2xl\": \"2rem\",\n };\n\n /** 💅 Computed styles */\n const computedStyle: React.CSSProperties = {\n color: (theme as any)[color] || color,\n fontSize: sizes[size] || size,\n fontWeight: weight,\n textAlign: align,\n textTransform: transform,\n fontStyle: italic ? \"italic\" : \"normal\",\n textDecoration: underline ? \"underline\" : strikethrough ? \"line-through\" : \"none\",\n userSelect: selectable ? \"text\" : \"none\",\n overflow: truncate ? \"hidden\" : undefined,\n whiteSpace: truncate ? \"nowrap\" : undefined,\n textOverflow: truncate ? \"ellipsis\" : undefined,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.25s ease-in-out\",\n ...style,\n };\n\n /** 🧠 Hover events (narrow to HTMLElement at runtime) */\n const handleMouseEnter = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"0.8\";\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"1\";\n }\n };\n\n /**\n * Build props object. We cast only once to the correct intrinsic props type.\n * This prevents TypeScript from having to compute giant unions for event types.\n */\n const props = {\n className,\n style: computedStyle,\n onClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...rest,\n } as React.ComponentPropsWithoutRef<T>;\n\n // Use React.createElement to avoid JSX generic complexity\n return React.createElement(Element as any, props, children);\n}\n\nexport default Text;\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","typeStyles","jsx","CheckCircle","AlertCircle","AlertTriangle","getPositionStyle","position","base","Alert","title","description","dismissible","duration","onClose","icon","actionButton","backgroundColor","borderColor","textColor","borderRadius","shadow","padding","fontSize","fontWeight","descriptionColor","animationDuration","maxWidth","style","visible","setVisible","useState","useEffect","timer","bg","border","iconColor","positionStyle","containerStyle","useMemo","jsxs","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","Fragment","CardInner","as","background","boxShadow","hoverShadow","height","hoverStyle","baseVariantStyles","cardStyle","ForwardedCard","Card","CheckRadio","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","switchBgColor","errorStyle","isCheckbox","isRadio","isSwitch","handleChange","updatedValues","v","option","isChecked","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","Dropdown","defaultValue","placeholder","searchable","multiSelect","clearable","virtualized","optionHeight","visibleOptions","focusBorderColor","errorBorderColor","placeholderColor","hoverColor","selectedColor","disabledColor","optionPadding","optionGap","dropdownMaxHeight","dropdownMinWidth","dropdownClassName","optionClassName","inputClassName","dropdownStyle","optionStyle","inputStyle","iconPrefix","iconSuffix","clearIcon","dropdownIcon","checkIcon","ariaLabel","ariaLabelledby","ariaDescribedby","onFocus","onBlur","onOpen","setSelectedValues","setIsOpen","searchTerm","setSearchTerm","focusedIndex","setFocusedIndex","dropdownRef","inputRef","optionsRef","filteredOptions","handleClickOutside","event","handleKeyDown","scrollToOption","handleSelect","useCallback","newSelectedValues","handleClear","toggleDropdown","newState","selectedOption","selectedOptions","startIndex","setStartIndex","visibleOptionCount","endIndex","visibleOptionsList","isSelected","isFocused","isDisabled","refIndex","Input","success","autoFocus","iconLeft","iconRight","labelColor","hoverBorderColor","errorColor","successColor","fontFamily","radius","rows","cols","maxLength","resize","showCharacterCount","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","handleMouseEnter","handleMouseLeave","overflowStyles","ListItem","subItems","bulletColor","isInline","itemContainerStyle","contentStyle","bulletStyle","subListStyle","sub","List","titleIcon","isOrdered","listStyle","ListTag","Modal","modalStyle","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","baseOverlay","baseModal","baseCloseBtn","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","elevation","bordered","activeColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","contentClassName","activeTabStyle","inactiveTabStyle","active","setActive","isMobile","setIsMobile","drawerOpen","setDrawerOpen","containerRef","check","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","Text","weight","italic","underline","strikethrough","truncate","selectable","hoverable","Element","lightMode","darkModeTheme","target"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/eye-off.js","../node_modules/lucide-react/dist/esm/icons/eye.js","../node_modules/lucide-react/dist/esm/icons/heart.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/maximize.js","../node_modules/lucide-react/dist/esm/icons/minimize.js","../node_modules/lucide-react/dist/esm/icons/music.js","../node_modules/lucide-react/dist/esm/icons/pause.js","../node_modules/lucide-react/dist/esm/icons/play.js","../node_modules/lucide-react/dist/esm/icons/rotate-ccw.js","../node_modules/lucide-react/dist/esm/icons/shuffle.js","../node_modules/lucide-react/dist/esm/icons/skip-back.js","../node_modules/lucide-react/dist/esm/icons/skip-forward.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/volume-2.js","../node_modules/lucide-react/dist/esm/icons/volume-x.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/basic/Alert.tsx","../src/components/basic/Accordation.tsx","../src/components/basic/Avatar.tsx","../src/components/basic/AudioPlayer.tsx","../src/components/basic/AudioGallery.tsx","../src/components/basic/Badge.tsx","../src/components/basic/Button.tsx","../src/components/basic/Card.tsx","../src/components/basic/CheckboxGroup.tsx","../src/components/basic/RadioGroup.tsx","../src/components/basic/SwitchGroup.tsx","../src/components/basic/Container.tsx","../src/components/basic/Flexbox.tsx","../src/components/basic/Stack.tsx","../src/components/basic/GridView.tsx","../src/components/basic/Drawer.tsx","../src/components/basic/DropDown.tsx","../src/components/basic/Input.tsx","../src/components/basic/Image.tsx","../src/components/basic/List.tsx","../src/components/basic/Modal.tsx","../src/components/basic/Table.tsx","../src/components/basic/Tabs.tsx","../src/components/basic/Text.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\"path\", { d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\", key: \"151rxh\" }],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst EyeOff = createLucideIcon(\"eye-off\", __iconNode);\n\nexport { __iconNode, EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\n key: \"mvr1a0\"\n }\n ]\n];\nconst Heart = createLucideIcon(\"heart\", __iconNode);\n\nexport { __iconNode, Heart as default };\n//# sourceMappingURL=heart.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3H5a2 2 0 0 0-2 2v3\", key: \"1dcmit\" }],\n [\"path\", { d: \"M21 8V5a2 2 0 0 0-2-2h-3\", key: \"1e4gt3\" }],\n [\"path\", { d: \"M3 16v3a2 2 0 0 0 2 2h3\", key: \"wsl5sc\" }],\n [\"path\", { d: \"M16 21h3a2 2 0 0 0 2-2v-3\", key: \"18trek\" }]\n];\nconst Maximize = createLucideIcon(\"maximize\", __iconNode);\n\nexport { __iconNode, Maximize as default };\n//# sourceMappingURL=maximize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 3v3a2 2 0 0 1-2 2H3\", key: \"hohbtr\" }],\n [\"path\", { d: \"M21 8h-3a2 2 0 0 1-2-2V3\", key: \"5jw1f3\" }],\n [\"path\", { d: \"M3 16h3a2 2 0 0 1 2 2v3\", key: \"198tvr\" }],\n [\"path\", { d: \"M16 21v-3a2 2 0 0 1 2-2h3\", key: \"ph8mxp\" }]\n];\nconst Minimize = createLucideIcon(\"minimize\", __iconNode);\n\nexport { __iconNode, Minimize as default };\n//# sourceMappingURL=minimize.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 18V5l12-2v13\", key: \"1jmyc2\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"circle\", { cx: \"18\", cy: \"16\", r: \"3\", key: \"1hluhg\" }]\n];\nconst Music = createLucideIcon(\"music\", __iconNode);\n\nexport { __iconNode, Music as default };\n//# sourceMappingURL=music.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m18 14 4 4-4 4\", key: \"10pe0f\" }],\n [\"path\", { d: \"m18 2 4 4-4 4\", key: \"pucp1d\" }],\n [\"path\", { d: \"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22\", key: \"1ailkh\" }],\n [\"path\", { d: \"M2 6h1.972a4 4 0 0 1 3.6 2.2\", key: \"km57vx\" }],\n [\"path\", { d: \"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45\", key: \"os18l9\" }]\n];\nconst Shuffle = createLucideIcon(\"shuffle\", __iconNode);\n\nexport { __iconNode, Shuffle as default };\n//# sourceMappingURL=shuffle.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z\",\n key: \"15892j\"\n }\n ],\n [\"path\", { d: \"M3 20V4\", key: \"1ptbpl\" }]\n];\nconst SkipBack = createLucideIcon(\"skip-back\", __iconNode);\n\nexport { __iconNode, SkipBack as default };\n//# sourceMappingURL=skip-back.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 4v16\", key: \"7j8fe9\" }],\n [\n \"path\",\n {\n d: \"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z\",\n key: \"zs4d6\"\n }\n ]\n];\nconst SkipForward = createLucideIcon(\"skip-forward\", __iconNode);\n\nexport { __iconNode, SkipForward as default };\n//# sourceMappingURL=skip-forward.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"path\", { d: \"M16 9a5 5 0 0 1 0 6\", key: \"1q6k2b\" }],\n [\"path\", { d: \"M19.364 18.364a9 9 0 0 0 0-12.728\", key: \"ijwkga\" }]\n];\nconst Volume2 = createLucideIcon(\"volume-2\", __iconNode);\n\nexport { __iconNode, Volume2 as default };\n//# sourceMappingURL=volume-2.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\",\n key: \"uqj9uw\"\n }\n ],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"9\", y2: \"15\", key: \"1ewh16\" }],\n [\"line\", { x1: \"16\", x2: \"22\", y1: \"9\", y2: \"15\", key: \"5ykzw1\" }]\n];\nconst VolumeX = createLucideIcon(\"volume-x\", __iconNode);\n\nexport { __iconNode, VolumeX as default };\n//# sourceMappingURL=volume-x.js.map\n","/**\n * @license lucide-react v0.536.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import React, { useEffect, useState, useMemo } from \"react\";\nimport {\n X,\n Info,\n CheckCircle,\n AlertCircle,\n AlertTriangle,\n} from \"lucide-react\";\n\ntype AlertType = \"success\" | \"error\" | \"warning\" | \"info\";\ntype AlertPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport interface AlertProps {\n title?: string;\n description?: string;\n type?: AlertType;\n dismissible?: boolean;\n duration?: number;\n onClose?: () => void;\n\n /** Customization */\n icon?: React.ReactNode;\n actionButton?: React.ReactNode;\n position?: AlertPosition;\n backgroundColor?: string;\n borderColor?: string;\n textColor?: string;\n borderRadius?: string | number;\n shadow?: string;\n padding?: string | number;\n fontSize?: string | number;\n fontWeight?: number | string;\n descriptionColor?: string;\n animationDuration?: string;\n maxWidth?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst typeStyles: Record<AlertType, any> = {\n success: {\n bg: \"#ecfdf5\",\n border: \"#34d399\",\n iconColor: \"#059669\",\n Icon: <CheckCircle size={20} />,\n },\n error: {\n bg: \"#fef2f2\",\n border: \"#f87171\",\n iconColor: \"#dc2626\",\n Icon: <AlertCircle size={20} />,\n },\n warning: {\n bg: \"#fffbeb\",\n border: \"#facc15\",\n iconColor: \"#d97706\",\n Icon: <AlertTriangle size={20} />,\n },\n info: {\n bg: \"#eff6ff\",\n border: \"#3b82f6\",\n iconColor: \"#2563eb\",\n Icon: <Info size={20} />,\n },\n};\n\nconst getPositionStyle = (position: AlertPosition): React.CSSProperties => {\n const base: React.CSSProperties = {\n position: \"fixed\",\n zIndex: 9999,\n pointerEvents: \"auto\",\n };\n\n switch (position) {\n case \"top-left\":\n return { ...base, top: \"1.25rem\", left: \"1.25rem\" };\n case \"top-center\":\n return { ...base, top: \"1.25rem\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"top-right\":\n return { ...base, top: \"1.25rem\", right: \"1.25rem\" };\n case \"bottom-left\":\n return { ...base, bottom: \"1.25rem\", left: \"1.25rem\" };\n case \"bottom-center\":\n return { ...base, bottom: \"1.25rem\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"bottom-right\":\n default:\n return { ...base, bottom: \"1.25rem\", right: \"1.25rem\" };\n }\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n title,\n description,\n type = \"info\",\n dismissible = true,\n duration,\n onClose,\n icon,\n actionButton,\n position = \"top-right\",\n backgroundColor,\n borderColor,\n textColor = \"#111827\",\n borderRadius = \"0.75rem\",\n shadow = \"0 4px 14px rgba(0,0,0,0.1)\",\n padding = \"1rem\",\n fontSize = \"0.95rem\",\n fontWeight = 500,\n descriptionColor = \"#374151\",\n animationDuration = \"300ms\",\n maxWidth = \"480px\",\n className = \"\",\n style,\n}) => {\n const [visible, setVisible] = useState(false);\n const [exiting, setExiting] = useState(false);\n\n useEffect(() => {\n setVisible(true);\n\n if (duration) {\n const timer = setTimeout(() => {\n setExiting(true);\n setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, parseInt(animationDuration));\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose, animationDuration]);\n\n const { bg, border, iconColor, Icon } = typeStyles[type];\n const positionStyle = getPositionStyle(position);\n\n const containerStyle: React.CSSProperties = useMemo(\n () => ({\n ...positionStyle,\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.75rem\",\n backgroundColor: backgroundColor ?? bg,\n borderLeft: `4px solid ${borderColor ?? border}`,\n borderRadius,\n color: textColor,\n boxShadow: shadow,\n padding,\n maxWidth,\n width: \"calc(100% - 2.5rem)\",\n opacity: visible && !exiting ? 1 : 0,\n transform: visible && !exiting\n ? \"translateY(0)\"\n : position.includes(\"bottom\")\n ? \"translateY(20px)\"\n : \"translateY(-20px)\",\n transition: `opacity ${animationDuration} ease, transform ${animationDuration} ease`,\n fontWeight,\n fontSize,\n ...style,\n }),\n [\n visible,\n exiting,\n bg,\n border,\n borderColor,\n borderRadius,\n position,\n shadow,\n padding,\n textColor,\n maxWidth,\n backgroundColor,\n animationDuration,\n style,\n fontSize,\n fontWeight,\n ]\n );\n\n if (!visible) return null;\n\n return (\n <>\n <style>\n {`\n @keyframes alert-slide-in-top {\n from { opacity: 0; transform: translateY(-20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n @keyframes alert-slide-in-bottom {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n `}\n </style>\n <div\n className={className}\n style={{\n ...containerStyle,\n animation: `${position.includes(\"bottom\") ? \"alert-slide-in-bottom\" : \"alert-slide-in-top\"} ${animationDuration} ease`,\n }}\n role=\"alert\"\n >\n <div style={{ color: iconColor, marginTop: \"2px\" }}>{icon || Icon}</div>\n\n <div style={{ flex: 1, minWidth: 0 }}>\n {title && (\n <div style={{ fontWeight: 600, fontSize, marginBottom: \"4px\" }}>\n {title}\n </div>\n )}\n {description && (\n <div style={{ fontSize: \"0.875rem\", color: descriptionColor, lineHeight: 1.4 }}>\n {description}\n </div>\n )}\n {actionButton && <div style={{ marginTop: \"8px\" }}>{actionButton}</div>}\n </div>\n\n {dismissible && (\n <button\n onClick={() => {\n setExiting(true);\n setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, parseInt(animationDuration));\n }}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: \"#6b7280\",\n cursor: \"pointer\",\n marginLeft: \"8px\",\n padding: 0,\n lineHeight: 0,\n }}\n aria-label=\"Close alert\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n </>\n );\n};\n\nAlert.displayName = \"Alert\";\n","import React, { useState, useRef, useEffect, memo } from \"react\";\n\nexport interface AccordionItem {\n title: string;\n content: React.ReactNode;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n\n /** Allow multiple open items */\n allowMultiple?: boolean;\n\n /** Default open indexes */\n defaultOpen?: number[];\n\n /** Appearance */\n borderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverBgColor?: string;\n hoverTextColor?: string;\n contentBgColor?: string;\n contentTextColor?: string;\n\n /** Layout & spacing */\n paddingY?: string | number;\n paddingX?: string | number;\n marginY?: string | number;\n borderRadius?: string | number;\n contentPadding?: string | number;\n\n /** Typography */\n fontSize?: string | number;\n fontWeight?: string | number;\n contentFontSize?: string | number;\n contentFontWeight?: string | number;\n\n /** Icon customization */\n iconOpen?: React.ReactNode;\n iconClose?: React.ReactNode;\n iconSize?: string | number;\n\n /** Motion & style */\n transitionDuration?: string;\n shadow?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * 🧠 Industry-standard, minimal, and fully customizable Accordion\n */\nexport const Accordion: React.FC<AccordionProps> = memo(\n ({\n items,\n allowMultiple = false,\n defaultOpen = [],\n borderColor = \"#e5e7eb\",\n backgroundColor = \"#fff\",\n textColor = \"#111827\",\n hoverBgColor = \"#f9fafb\",\n hoverTextColor = \"#111827\",\n contentBgColor = \"#fff\",\n contentTextColor = \"#374151\",\n paddingY = \"1rem\",\n paddingX = \"1rem\",\n marginY = \"0.75rem\",\n borderRadius = \"0.5rem\",\n contentPadding = \"1rem\",\n fontSize = \"1rem\",\n fontWeight = 600,\n contentFontSize = \"0.95rem\",\n contentFontWeight = 400,\n iconOpen = \"−\",\n iconClose = \"+\",\n iconSize = \"1.25rem\",\n transitionDuration = \"300ms\",\n shadow = \"0 1px 4px rgba(0,0,0,0.08)\",\n className = \"\",\n style,\n }) => {\n const [openIndexes, setOpenIndexes] = useState<number[]>(defaultOpen);\n const contentRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n useEffect(() => {\n contentRefs.current.forEach((el, index) => {\n if (el) {\n el.style.maxHeight = openIndexes.includes(index)\n ? `${el.scrollHeight}px`\n : \"0px\";\n }\n });\n }, [openIndexes]);\n\n const toggleItem = (index: number) => {\n setOpenIndexes((prev) =>\n allowMultiple\n ? prev.includes(index)\n ? prev.filter((i) => i !== index)\n : [...prev, index]\n : prev.includes(index)\n ? []\n : [index]\n );\n };\n\n return (\n <div className={className} style={{ width: \"100%\", ...style }}>\n {items.map((item, index) => {\n const isOpen = openIndexes.includes(index);\n\n return (\n <div\n key={index}\n style={{\n border: `1px solid ${borderColor}`,\n borderRadius,\n margin: `${marginY} 0`,\n boxShadow: shadow,\n overflow: \"hidden\",\n transition: `all ${transitionDuration} ease`,\n }}\n >\n {/* Header Button */}\n <button\n onClick={() => toggleItem(index)}\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n backgroundColor,\n color: textColor,\n padding: `${paddingY} ${paddingX}`,\n fontWeight,\n fontSize,\n cursor: \"pointer\",\n border: \"none\",\n outline: \"none\",\n transition: `all ${transitionDuration}`,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = hoverBgColor;\n e.currentTarget.style.color = hoverTextColor;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = backgroundColor;\n e.currentTarget.style.color = textColor;\n }}\n >\n <span>{item.title}</span>\n <span style={{ fontSize: iconSize }}>\n {isOpen ? iconOpen : iconClose}\n </span>\n </button>\n\n {/* Content */}\n <div\n ref={(el) => {\n contentRefs.current[index] = el;\n }}\n style={{\n overflow: \"hidden\",\n maxHeight: isOpen\n ? `${contentRefs.current[index]?.scrollHeight}px`\n : \"0px\",\n transition: `max-height ${transitionDuration} ease-in-out`,\n }}\n >\n <div\n style={{\n borderTop: `1px solid ${borderColor}`,\n backgroundColor: contentBgColor,\n color: contentTextColor,\n padding: contentPadding,\n fontSize: contentFontSize,\n fontWeight: contentFontWeight,\n }}\n >\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n);\n\nAccordion.displayName = \"Accordion\";\n","import React, { useState } from \"react\";\nimport { User } from \"lucide-react\";\n\ntype AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"responsive\";\ntype AvatarVariant = \"circular\" | \"rounded\" | \"square\";\n\ninterface AvatarProps {\n src?: string;\n alt?: string;\n size?: AvatarSize;\n variant?: AvatarVariant;\n isOnline?: boolean;\n isOffline?: boolean;\n className?: string;\n style?: React.CSSProperties;\n statusClassName?: string;\n statusStyle?: React.CSSProperties;\n statusPosition?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n fallback?: string;\n ring?: boolean;\n ringColor?: string;\n onClick?: () => void;\n}\n\ninterface AvatarGroupProps {\n avatars: AvatarProps[];\n max?: number;\n size?: AvatarSize;\n className?: string;\n style?: React.CSSProperties;\n spacing?: \"tight\" | \"normal\" | \"loose\";\n direction?: \"left\" | \"right\";\n}\n\n// --- Base maps ---\nconst sizeMap = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 56,\n \"2xl\": 64,\n} as const;\n\nconst fontSizeMap = {\n xs: 10,\n sm: 12,\n md: 14,\n lg: 16,\n xl: 18,\n \"2xl\": 20,\n} as const;\n\nconst statusSizeMap = {\n xs: 6,\n sm: 8,\n md: 10,\n lg: 12,\n xl: 14,\n \"2xl\": 16,\n} as const;\n\n// --- Helpers ---\nconst getVariantStyles = (variant: AvatarVariant): string => {\n switch (variant) {\n case \"square\":\n return \"0px\";\n case \"rounded\":\n return \"8px\";\n default:\n return \"50%\";\n }\n};\n\nconst getStatusPositionStyle = (\n position: AvatarProps[\"statusPosition\"],\n offset: number\n): React.CSSProperties => {\n switch (position) {\n case \"top-left\":\n return { top: 2, left: 2 };\n case \"top-right\":\n return { top: 2, right: 2 };\n case \"bottom-left\":\n return { bottom: 2, left: 2 };\n default:\n return { bottom: 2, right: 2 };\n }\n};\n\nconst getSpacingOffset = (spacing: AvatarGroupProps[\"spacing\"], dim: number) => {\n switch (spacing) {\n case \"tight\":\n return -(dim * 0.5);\n case \"loose\":\n return -(dim * 0.15);\n default:\n return -(dim * 0.35);\n }\n};\n\n// --- Avatar Component ---\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"User avatar\",\n size = \"md\",\n variant = \"circular\",\n isOnline = false,\n isOffline = false,\n className = \"\",\n style,\n statusClassName = \"\",\n statusStyle,\n statusPosition = \"bottom-right\",\n fallback,\n ring = false,\n ringColor = \"#3b82f6\",\n onClick,\n}) => {\n const [imageError, setImageError] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const isResponsive = size === \"responsive\";\n const dimension = !isResponsive ? sizeMap[size as Exclude<AvatarSize, \"responsive\">] : undefined;\n const fontSize = !isResponsive ? fontSizeMap[size as Exclude<AvatarSize, \"responsive\">] : \"clamp(10px, 2vw, 16px)\";\n const statusSize = !isResponsive ? statusSizeMap[size as Exclude<AvatarSize, \"responsive\">] : 10;\n const borderRadius = getVariantStyles(variant);\n\n const initials = fallback || alt\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const statusColor = isOnline ? \"#10b981\" : isOffline ? \"#6b7280\" : \"\";\n const statusLabel = isOnline ? \"Online\" : isOffline ? \"Offline\" : \"\";\n\n const showImage = src && !imageError;\n const clickable = !!onClick;\n\n return (\n <div\n className={className}\n role={clickable ? \"button\" : \"img\"}\n tabIndex={clickable ? 0 : -1}\n aria-label={alt}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onKeyDown={(e) => {\n if (clickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.();\n }\n }}\n style={{\n position: \"relative\",\n width: isResponsive ? \"100%\" : dimension,\n height: isResponsive ? \"100%\" : dimension,\n borderRadius,\n overflow: \"visible\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n cursor: clickable ? \"pointer\" : \"default\",\n transition: \"all 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",\n transform: isHovered && clickable ? \"scale(1.05)\" : \"scale(1)\",\n boxShadow: ring\n ? `0 0 0 3px ${ringColor}22, 0 0 0 1px ${ringColor}`\n : isHovered && clickable\n ? \"0 6px 16px rgba(0, 0, 0, 0.15)\"\n : \"0 1px 3px rgba(0, 0, 0, 0.1)\",\n ...style,\n }}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt}\n onError={() => setImageError(true)}\n loading=\"lazy\"\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n borderRadius,\n transition: \"opacity 0.3s ease-in-out\",\n }}\n />\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n color: \"#fff\",\n fontSize,\n fontWeight: 600,\n borderRadius,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {initials || <User size={dimension ? dimension * 0.5 : 20} />}\n </div>\n )}\n\n {(isOnline || isOffline) && (\n <div\n className={statusClassName}\n aria-label={statusLabel}\n title={statusLabel}\n style={{\n position: \"absolute\",\n width: statusSize,\n height: statusSize,\n borderRadius: \"50%\",\n backgroundColor: statusColor,\n border: \"2px solid white\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.12)\",\n ...getStatusPositionStyle(statusPosition, statusSize),\n ...statusStyle,\n }}\n />\n )}\n </div>\n );\n};\n\n// --- AvatarGroup Component ---\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n avatars,\n max = 4,\n size = \"md\",\n className = \"\",\n style,\n spacing = \"normal\",\n direction = \"left\",\n}) => {\n const isResponsive = size === \"responsive\";\n const dimension = !isResponsive ? sizeMap[size as Exclude<AvatarSize, \"responsive\">] : 40;\n const fontSize = !isResponsive ? fontSizeMap[size as Exclude<AvatarSize, \"responsive\">] : \"clamp(10px, 2vw, 14px)\";\n const spacingOffset = getSpacingOffset(spacing, dimension);\n const visibleAvatars = avatars.slice(0, max);\n const extraCount = avatars.length - max;\n\n return (\n <div\n className={className}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: direction === \"right\" ? \"row-reverse\" : \"row\",\n flexWrap: \"wrap\",\n ...style,\n }}\n role=\"group\"\n aria-label={`Avatar group with ${avatars.length} members`}\n >\n {visibleAvatars.map((avatar, i) => {\n const isFirst = direction === \"left\" ? i === 0 : i === visibleAvatars.length - 1;\n const zIndex = direction === \"left\" ? visibleAvatars.length - i : i + 1;\n\n return (\n <div\n key={i}\n style={{\n marginLeft: direction === \"left\" && !isFirst ? spacingOffset : 0,\n marginRight: direction === \"right\" && !isFirst ? spacingOffset : 0,\n zIndex,\n position: \"relative\",\n transition: \"transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = `translateY(-3px) scale(1.05)`;\n e.currentTarget.style.zIndex = \"100\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = \"translateY(0) scale(1)\";\n e.currentTarget.style.zIndex = zIndex.toString();\n }}\n >\n <Avatar {...avatar} size={size} />\n </div>\n );\n })}\n\n {extraCount > 0 && (\n <div\n style={{\n marginLeft: direction === \"left\" ? spacingOffset : 0,\n marginRight: direction === \"right\" ? spacingOffset : 0,\n width: dimension,\n height: dimension,\n borderRadius: \"50%\",\n background: \"linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%)\",\n color: \"#374151\",\n fontSize,\n fontWeight: 600,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"3px solid white\",\n boxShadow: \"0 2px 8px rgba(0, 0, 0, 0.15)\",\n userSelect: \"none\",\n }}\n title={`${extraCount} more members`}\n >\n +{extraCount}\n </div>\n )}\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n} from \"lucide-react\";\n\ninterface AudioPlayerProps {\n src: string;\n thumbnail?: string;\n autoPlay?: boolean;\n loop?: boolean;\n backgroundColor?: string;\n primaryColor?: string;\n secondaryColor?: string;\n borderRadius?: string;\n className?: string;\n padding?: string;\n width?: string;\n}\n\nexport const AudioPlayer: React.FC<AudioPlayerProps> = ({\n src,\n thumbnail,\n autoPlay = false,\n loop = false,\n backgroundColor = \"#000000\",\n primaryColor = \"#10b981\",\n secondaryColor = \"#ffffff\",\n borderRadius = \"12px\",\n padding = \"16px\",\n width = \"100%\",\n className,\n}) => {\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const [isPlaying, setIsPlaying] = useState(autoPlay);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.5);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.volume = volume;\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) audioRef.current.loop = isLooping;\n }, [isLooping]);\n\n const togglePlayPause = () => {\n if (!audioRef.current) return;\n isPlaying ? audioRef.current.pause() : audioRef.current.play();\n setIsPlaying(!isPlaying);\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n setDuration(audioRef.current.duration);\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current || !e.currentTarget) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const percent = (e.clientX - rect.left) / rect.width;\n const time = percent * duration;\n audioRef.current.currentTime = time;\n setCurrentTime(time);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current) audioRef.current.currentTime += seconds;\n };\n\n const toggleFullscreen = () => {\n if (!playerRef.current) return;\n isFullscreen\n ? document.exitFullscreen?.()\n : playerRef.current.requestFullscreen?.();\n setIsFullscreen(!isFullscreen);\n };\n\n const formatTime = (time: number) => {\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n return (\n <div\n ref={playerRef}\n className={className}\n style={{\n position: \"relative\",\n width,\n backgroundColor,\n borderRadius,\n color: secondaryColor,\n boxShadow: \"0 4px 12px rgba(0,0,0,0.3)\",\n overflow: \"hidden\",\n padding,\n boxSizing: \"border-box\",\n maxWidth: \"100%\",\n }}\n >\n <audio\n ref={audioRef}\n src={src}\n autoPlay={autoPlay}\n loop={loop}\n onTimeUpdate={handleTimeUpdate}\n onLoadedMetadata={handleTimeUpdate}\n />\n\n {thumbnail && (\n <img\n src={thumbnail}\n alt=\"Audio Thumbnail\"\n style={{\n width: \"100%\",\n objectFit: \"cover\",\n borderRadius,\n marginBottom: \"16px\",\n maxHeight: \"150px\",\n }}\n />\n )}\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"10px\",\n flexShrink: 0,\n marginTop: \"10px\",\n }}\n >\n <button onClick={() => skip(-10)} aria-label=\"Skip Back 10s\">\n <SkipBack size={20} />\n </button>\n <button\n onClick={togglePlayPause}\n style={{\n background: primaryColor,\n borderRadius: \"9999px\",\n padding: \"10px\",\n color: \"#fff\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={20} /> : <Play size={20} />}\n </button>\n <button onClick={() => skip(10)} aria-label=\"Skip Forward 10s\">\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Time & Seek */}\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"12px\",\n width: \"100%\",\n }}\n >\n {/* Time Info */}\n <div style={{ flexShrink: 0, minWidth: \"60px\", textAlign: \"center\" }}>\n <span style={{ fontSize: \"14px\", marginRight: \"4px\" }}>\n {formatTime(currentTime)}\n </span>\n <span style={{ fontSize: \"14px\", color: \"#aaa\" }}>\n / {formatTime(duration)}\n </span>\n </div>\n\n {/* Seek Bar */}\n <div\n onClick={handleSeek}\n style={{\n flex: 1,\n height: \"8px\",\n background: \"#444\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n position: \"relative\",\n minWidth: \"100px\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"4px\",\n }}\n />\n </div>\n\n {/* Extra Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n flexShrink: 0,\n }}\n >\n <button\n onClick={() => setIsLooping(!isLooping)}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={18} color={isLooping ? primaryColor : undefined} />\n </button>\n <button\n onClick={() => setVolume(volume > 0 ? 0 : 0.5)}\n aria-label=\"Toggle Mute\"\n >\n {volume > 0 ? <Volume2 size={18} /> : <VolumeX size={18} />}\n </button>\n <button onClick={toggleFullscreen} aria-label=\"Toggle Fullscreen\">\n {isFullscreen ? <Minimize size={18} /> : <Maximize size={18} />}\n </button>\n </div>\n </div>\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from \"react\";\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Maximize,\n Minimize,\n RotateCcw,\n SkipBack,\n SkipForward,\n Download,\n Heart,\n Share2,\n Music,\n Shuffle,\n} from \"lucide-react\";\n\ninterface AudioTrack {\n src: string;\n title: string;\n artist?: string;\n thumbnail?: string;\n duration?: string;\n}\n\ninterface AudioGalleryProps {\n tracks?: AudioTrack[];\n className?: string;\n galleryTitle?: string;\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n secondaryColor?: string;\n autoplay?: boolean;\n borderColor?: string;\n border?: number;\n maxWidth?: number;\n loop?: boolean;\n}\n\nconst defaultTracks: AudioTrack[] = [\n {\n src: \"https://www.soundjay.com/misc/sounds/bell-ringing-05.wav\",\n title: \"Morning Bell\",\n artist: \"Nature Sounds\",\n duration: \"0:15\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-4.wav\",\n title: \"Digital Click\",\n artist: \"Tech Audio\",\n duration: \"0:05\",\n thumbnail:\n \"https://images.unsplash.com/photo-1514525253161-7a46d19cd819?w=300&h=300&fit=crop\",\n },\n {\n src: \"https://www.soundjay.com/buttons/sounds/button-10.wav\",\n title: \"Soft Chime\",\n artist: \"Ambient Studio\",\n duration: \"0:08\",\n thumbnail:\n \"https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?w=300&h=300&fit=crop\",\n },\n];\n\nexport function AudioGallery({\n tracks = defaultTracks,\n className = \"\",\n galleryTitle = \"Audio Gallery\",\n primaryColor = \"#8b5cf6\",\n backgroundColor = \"#0f0f23\",\n textColor = \"#e4e4e7\",\n secondaryColor = \"#1a1a2e\",\n border = 0,\n borderColor,\n maxWidth = 420,\n autoplay = false,\n loop = false,\n}: AudioGalleryProps) {\n const [currentTrackIndex, setCurrentTrackIndex] = useState<number | null>(\n null\n );\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(0.7);\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [isLooping, setIsLooping] = useState(loop);\n const [isShuffle, setIsShuffle] = useState(false);\n const [isLiked, setIsLiked] = useState(false);\n const [showVolumeSlider, setShowVolumeSlider] = useState(false);\n\n const audioRef = useRef<HTMLAudioElement>(null);\n const playerRef = useRef<HTMLDivElement>(null);\n const volumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.volume = volume;\n }\n }, [volume]);\n\n useEffect(() => {\n if (audioRef.current) {\n audioRef.current.loop = isLooping;\n }\n }, [isLooping]);\n\n useEffect(() => {\n if (currentTrackIndex === null && audioRef.current) {\n audioRef.current.pause();\n setIsPlaying(false);\n setCurrentTime(0);\n setDuration(0);\n }\n }, [currentTrackIndex]);\n\n const playPauseTrack = (index: number) => {\n if (currentTrackIndex === index) {\n if (!audioRef.current) return;\n if (audioRef.current.paused) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n } else {\n audioRef.current.pause();\n setIsPlaying(false);\n }\n } else {\n setCurrentTrackIndex(index);\n setTimeout(() => {\n if (audioRef.current) {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }, 100);\n }\n };\n\n const handleTimeUpdate = () => {\n if (!audioRef.current) return;\n setCurrentTime(audioRef.current.currentTime);\n if (audioRef.current.duration) {\n setDuration(audioRef.current.duration);\n }\n };\n\n const handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!audioRef.current || !duration) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const seekTime = percent * duration;\n audioRef.current.currentTime = seekTime;\n setCurrentTime(seekTime);\n };\n\n const handleVolumeChange = (e: React.MouseEvent<HTMLDivElement>) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickPos = e.clientX - rect.left;\n const percent = clickPos / rect.width;\n const newVolume = Math.max(0, Math.min(1, percent));\n setVolume(newVolume);\n };\n\n const skip = (seconds: number) => {\n if (audioRef.current && duration) {\n let newTime = audioRef.current.currentTime + seconds;\n newTime = Math.min(Math.max(newTime, 0), duration);\n audioRef.current.currentTime = newTime;\n setCurrentTime(newTime);\n }\n };\n\n const nextTrack = () => {\n if (currentTrackIndex === null) return;\n let nextIndex;\n if (isShuffle) {\n nextIndex = Math.floor(Math.random() * tracks.length);\n } else {\n nextIndex = (currentTrackIndex + 1) % tracks.length;\n }\n playPauseTrack(nextIndex);\n };\n\n const prevTrack = () => {\n if (currentTrackIndex === null) return;\n let prevIndex;\n if (isShuffle) {\n prevIndex = Math.floor(Math.random() * tracks.length);\n } else {\n prevIndex = (currentTrackIndex - 1 + tracks.length) % tracks.length;\n }\n playPauseTrack(prevIndex);\n };\n\n const toggleMute = () => {\n setVolume((prev) => (prev > 0 ? 0 : 0.7));\n };\n\n const showVolume = () => {\n setShowVolumeSlider(true);\n if (volumeTimeoutRef.current) {\n clearTimeout(volumeTimeoutRef.current);\n }\n volumeTimeoutRef.current = setTimeout(() => {\n setShowVolumeSlider(false);\n }, 3000);\n };\n\n const formatTime = (time: number) => {\n if (isNaN(time)) return \"0:00\";\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time % 60);\n return `${minutes}:${seconds < 10 ? \"0\" : \"\"}${seconds}`;\n };\n\n const currentTrack =\n currentTrackIndex !== null ? tracks[currentTrackIndex] : null;\n\n return (\n <div\n className={className}\n style={{\n maxWidth: `${maxWidth}px`,\n margin: \"20px auto\",\n background: `linear-gradient(145deg, ${backgroundColor}, ${secondaryColor})`,\n color: textColor,\n borderRadius: \"24px\",\n padding: \"24px 16px\",\n fontFamily:\n \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n userSelect: \"none\",\n backdropFilter: \"blur(20px)\",\n border: `${border}px solid ${borderColor}40`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"24px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\n <div\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"12px\",\n background: `linear-gradient(135deg, ${primaryColor}, ${secondaryColor})`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <Music size={20} color=\"white\" />\n </div>\n <div>\n <h2\n style={{\n margin: 0,\n fontSize: \"1.25rem\",\n fontWeight: \"700\",\n color: primaryColor, // fallback for browsers without WebkitTextFillColor\n }}\n >\n {galleryTitle}\n </h2>\n <p style={{ margin: 0, fontSize: \"0.875rem\", opacity: 0.7 }}>\n {tracks.length} tracks\n </p>\n </div>\n </div>\n\n <button\n onClick={() => setIsShuffle(!isShuffle)}\n style={{\n background: isShuffle ? primaryColor : \"transparent\",\n border: \"none\",\n borderRadius: \"12px\",\n padding: \"8px\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n opacity: isShuffle ? 1 : 0.6,\n }}\n aria-label=\"Toggle Shuffle\"\n >\n <Shuffle size={18} color={isShuffle ? \"white\" : textColor} />\n </button>\n </div>\n\n {/* Track List */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n marginBottom: \"20px\",\n maxHeight: \"240px\",\n overflowY: \"auto\",\n paddingRight: \"4px\",\n }}\n >\n {tracks.map((track, index) => {\n const isActive = currentTrackIndex === index;\n const isCurrentlyPlaying = isActive && isPlaying;\n\n return (\n <div\n key={index}\n onClick={() => playPauseTrack(index)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n padding: \"12px 16px\",\n borderRadius: \"16px\",\n background: isActive\n ? `linear-gradient(135deg, ${primaryColor}20, ${primaryColor}10)`\n : \"rgba(255,255,255,0.05)\",\n border: isActive\n ? `1px solid ${primaryColor}40`\n : \"1px solid transparent\",\n cursor: \"pointer\",\n transition: \"all 0.3s ease\",\n backdropFilter: isActive ? `blur(20px)` : \"none\",\n }}\n >\n {/* Thumbnail */}\n <div\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"12px\",\n background: track.thumbnail\n ? `url(${track.thumbnail}) center/cover`\n : primaryColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"12px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {!track.thumbnail && <Music size={20} color=\"white\" />}\n {isCurrentlyPlaying && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n width: \"16px\",\n height: \"16px\",\n display: \"flex\",\n gap: \"2px\",\n alignItems: \"end\",\n justifyContent: \"center\",\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n style={{\n width: \"3px\",\n background: \"white\",\n borderRadius: \"2px\",\n animation: `equalizer 1s ease-in-out infinite ${\n i * 0.2\n }s`,\n height: \"12px\",\n }}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Track Info */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontWeight: \"600\",\n fontSize: \"0.95rem\",\n color: isActive ? primaryColor : textColor,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.title}\n </div>\n {track.artist && (\n <div\n style={{\n fontSize: \"0.8rem\",\n opacity: 0.7,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {track.artist}\n </div>\n )}\n </div>\n\n {/* Duration & Play Button */}\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}\n >\n {track.duration && (\n <span style={{ fontSize: \"0.8rem\", opacity: 0.6 }}>\n {track.duration}\n </span>\n )}\n <div\n style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"8px\",\n background: isActive\n ? primaryColor\n : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n }}\n >\n {isCurrentlyPlaying ? (\n <Pause size={16} color=\"white\" />\n ) : (\n <Play size={16} color=\"white\" />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Current Track Display & Controls */}\n {currentTrack && (\n <div\n ref={playerRef}\n style={{\n background: `linear-gradient(135deg, ${secondaryColor}, ${backgroundColor})`,\n borderRadius: \"20px\",\n padding: \"20px\",\n border: `1px solid ${primaryColor}40`,\n backdropFilter: \"blur(20px)\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {/* Background Blur Effect */}\n {currentTrack.thumbnail && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundImage: `url(${currentTrack.thumbnail})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n filter: \"blur(60px) opacity(0.1)\",\n transform: \"scale(1.1)\",\n }}\n />\n )}\n\n {/* Content */}\n <div style={{ position: \"relative\", zIndex: 1 }}>\n {/* Track Info */}\n <div style={{ textAlign: \"center\", marginBottom: \"20px\" }}>\n <h3\n style={{\n margin: \"0 0 4px 0\",\n fontSize: \"1.1rem\",\n fontWeight: \"700\",\n color: primaryColor,\n }}\n >\n {currentTrack.title}\n </h3>\n {currentTrack.artist && (\n <p style={{ margin: 0, opacity: 0.7, fontSize: \"0.9rem\" }}>\n {currentTrack.artist}\n </p>\n )}\n </div>\n\n {/* Main Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"20px\",\n marginBottom: \"20px\",\n }}\n >\n <button\n onClick={prevTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Previous Track\"\n >\n <SkipBack size={20} />\n </button>\n\n <button\n onClick={() => skip(-10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip back 10 seconds\"\n >\n <SkipBack size={16} />\n <span style={{ fontSize: \"0.7rem\", marginLeft: \"2px\" }}>\n 10\n </span>\n </button>\n\n <button\n onClick={() => {\n if (!audioRef.current) return;\n if (isPlaying) {\n audioRef.current.pause();\n setIsPlaying(false);\n } else {\n audioRef.current.play().catch(() => {});\n setIsPlaying(true);\n }\n }}\n style={{\n ...controlButtonStyle(\"#fff\", primaryColor),\n width: \"60px\",\n height: \"60px\",\n borderRadius: \"50%\",\n boxShadow: `0 8px 25px ${primaryColor}40`,\n }}\n aria-label={isPlaying ? \"Pause\" : \"Play\"}\n >\n {isPlaying ? <Pause size={24} /> : <Play size={24} />}\n </button>\n\n <button\n onClick={() => skip(10)}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Skip forward 10 seconds\"\n >\n <span style={{ fontSize: \"0.7rem\", marginRight: \"2px\" }}>\n 10\n </span>\n <SkipForward size={16} />\n </button>\n\n <button\n onClick={nextTrack}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label=\"Next Track\"\n >\n <SkipForward size={20} />\n </button>\n </div>\n\n {/* Progress Bar */}\n <div style={{ marginBottom: \"16px\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"8px\",\n fontSize: \"0.8rem\",\n opacity: 0.7,\n }}\n >\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n\n <div\n onClick={handleSeek}\n style={{\n height: \"6px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"3px\",\n cursor: \"pointer\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${(currentTime / duration) * 100 || 0}%`,\n height: \"100%\",\n background: `linear-gradient(90deg, ${primaryColor}, #ec4899)`,\n borderRadius: \"3px\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n right: \"-6px\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n width: \"12px\",\n height: \"12px\",\n background: primaryColor,\n borderRadius: \"50%\",\n boxShadow: `0 2px 8px ${primaryColor}60`,\n }}\n />\n </div>\n </div>\n </div>\n\n {/* Additional Controls */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <button\n onClick={() => setIsLiked(!isLiked)}\n style={controlButtonStyle(\n isLiked ? \"#ec4899\" : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Like\"\n >\n <Heart size={16} fill={isLiked ? \"#ec4899\" : \"none\"} />\n </button>\n\n <button\n onClick={() => setIsLooping(!isLooping)}\n style={controlButtonStyle(\n isLooping ? primaryColor : textColor,\n \"rgba(255,255,255,0.1)\"\n )}\n aria-label=\"Toggle Loop\"\n >\n <RotateCcw size={16} />\n </button>\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n position: \"relative\",\n }}\n >\n {showVolumeSlider && (\n <div\n onClick={handleVolumeChange}\n style={{\n width: \"80px\",\n height: \"4px\",\n background: \"rgba(255,255,255,0.2)\",\n borderRadius: \"2px\",\n cursor: \"pointer\",\n position: \"relative\",\n }}\n >\n <div\n style={{\n width: `${volume * 100}%`,\n height: \"100%\",\n background: primaryColor,\n borderRadius: \"2px\",\n }}\n />\n </div>\n )}\n\n <button\n onClick={toggleMute}\n onMouseEnter={showVolume}\n style={controlButtonStyle(textColor, \"rgba(255,255,255,0.1)\")}\n aria-label={volume > 0 ? \"Mute\" : \"Unmute\"}\n >\n {volume > 0 ? <Volume2 size={16} /> : <VolumeX size={16} />}\n </button>\n </div>\n </div>\n </div>\n\n <audio\n ref={audioRef}\n src={currentTrack.src}\n autoPlay={autoplay}\n loop={isLooping}\n onTimeUpdate={handleTimeUpdate}\n onEnded={() => {\n setIsPlaying(false);\n if (!isLooping) {\n nextTrack();\n }\n }}\n onLoadedMetadata={handleTimeUpdate}\n preload=\"metadata\"\n style={{ display: \"none\" }}\n />\n </div>\n )}\n\n <style>{`\n @keyframes equalizer {\n 0%, 100% { height: 4px; }\n 50% { height: 12px; }\n }\n \n /* Custom Scrollbar */\n div::-webkit-scrollbar {\n width: 4px;\n }\n \n div::-webkit-scrollbar-track {\n background: rgba(255,255,255,0.1);\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb {\n background: ${primaryColor};\n border-radius: 2px;\n }\n \n div::-webkit-scrollbar-thumb:hover {\n background: ${primaryColor}dd;\n }\n `}</style>\n </div>\n );\n}\n\nfunction controlButtonStyle(\n color: string,\n backgroundColor: string\n): React.CSSProperties {\n return {\n border: \"none\",\n backgroundColor,\n color,\n cursor: \"pointer\",\n padding: \"10px\",\n borderRadius: \"12px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n backdropFilter: \"blur(10px)\",\n };\n}\n","import React, { CSSProperties, ReactNode, memo } from \"react\";\n\nexport interface BadgeProps {\n text?: string;\n color?: string; // background\n textColor?: string;\n borderColor?: string;\n borderWidth?: string;\n\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n\n rounded?: boolean;\n borderRadius?: string;\n\n fontSize?: string;\n fontWeight?: number | string;\n\n horizontalPadding?: string;\n verticalPadding?: string;\n margin?: string;\n shadow?: string;\n\n notificationDot?: boolean;\n dotColor?: string;\n count?: number | string;\n pulse?: boolean;\n\n style?: CSSProperties;\n className?: string;\n onClick?: () => void;\n}\n\nexport const Badge: React.FC<BadgeProps> = memo(\n ({\n text,\n color = \"#2563eb\",\n textColor = \"#fff\",\n borderColor = \"#2563eb\",\n borderWidth = \"0\",\n\n icon,\n iconPosition = \"left\",\n\n rounded = false,\n borderRadius,\n fontSize = \"13px\",\n fontWeight = 500,\n horizontalPadding = \"10px\",\n verticalPadding = \"4px\",\n margin = \"0\",\n shadow = \"0 1px 3px rgba(0,0,0,0.1)\",\n\n notificationDot = false,\n dotColor = \"#ef4444\",\n count,\n pulse = false,\n\n style,\n className = \"\",\n onClick,\n }) => {\n const baseStyle: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: color,\n color: textColor,\n border: `${borderWidth} solid ${borderColor}`,\n borderRadius: borderRadius || (rounded ? \"9999px\" : \"6px\"),\n padding: `${verticalPadding} ${horizontalPadding}`,\n fontSize,\n fontWeight,\n margin,\n boxShadow: shadow,\n position: \"relative\",\n cursor: onClick ? \"pointer\" : \"default\",\n userSelect: \"none\",\n lineHeight: 1,\n transition: \"all 0.2s ease\",\n ...style,\n };\n\n const dotStyle: CSSProperties = {\n position: \"absolute\",\n top: \"-4px\",\n right: \"-4px\",\n height: \"8px\",\n width: \"8px\",\n backgroundColor: dotColor,\n borderRadius: \"50%\",\n animation: pulse ? \"pulseAnim 1.2s infinite\" : undefined,\n };\n\n const countStyle: CSSProperties = {\n position: \"absolute\",\n top: \"-8px\",\n right: \"-8px\",\n backgroundColor: dotColor,\n color: \"#fff\",\n borderRadius: \"50%\",\n minWidth: \"18px\",\n height: \"18px\",\n fontSize: \"11px\",\n padding: \"0 5px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 1,\n };\n\n const iconStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n margin:\n icon && text\n ? iconPosition === \"left\"\n ? \"0 6px 0 0\"\n : \"0 0 0 6px\"\n : 0,\n };\n\n return (\n <span style={baseStyle} className={className} onClick={onClick}>\n {/* Dot */}\n {notificationDot && <span style={dotStyle} />}\n\n {/* Count */}\n {typeof count !== \"undefined\" && <span style={countStyle}>{count}</span>}\n\n {/* Icon Left */}\n {icon && iconPosition === \"left\" && <span style={iconStyle}>{icon}</span>}\n\n {/* Text */}\n {text && <span>{text}</span>}\n\n {/* Icon Right */}\n {icon && iconPosition === \"right\" && <span style={iconStyle}>{icon}</span>}\n\n {/* Pulse Animation */}\n <style>\n {`\n @keyframes pulseAnim {\n 0% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.5); opacity: 0.5; }\n 100% { transform: scale(1); opacity: 1; }\n }\n `}\n </style>\n </span>\n );\n }\n);\n","\"use client\";\nimport React, { useMemo, useState, CSSProperties, FC } from \"react\";\n\n/** 🌈 Default color palette */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n border: \"#d1d5db\",\n hover: \"#1d4ed8\",\n text: \"#ffffff\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n border: \"#374151\",\n hover: \"#3b82f6\",\n text: \"#000000\",\n },\n};\n\n/** 🎨 Adjust color shade utility */\nfunction adjustColor(color: string, amount: number): string {\n if (!color.startsWith(\"#\") || color.length !== 7) return color;\n return (\n \"#\" +\n color\n .replace(/^#/, \"\")\n .replace(/../g, (hex) =>\n (\n \"0\" +\n Math.min(255, Math.max(0, parseInt(hex, 16) + amount)).toString(16)\n ).slice(-2)\n )\n );\n}\n\n/** ⚙️ Props */\nexport interface ButtonProps {\n children: React.ReactNode;\n type?: \"button\" | \"submit\" | \"reset\";\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n iconBefore?: React.ReactNode;\n iconAfter?: React.ReactNode;\n className?: string;\n style?: CSSProperties;\n fullWidth?: boolean;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: string;\n\n /** 🎨 Theme options */\n darkMode?: boolean;\n baseColor?: string;\n\n /** 🧩 Optional design tweaks */\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: boolean;\n\n /** 🧱 Border visibility */\n showBorder?: boolean; // ✅ new prop\n}\n\n/** 💎 Minimal customizable Button */\nexport const Button: FC<ButtonProps> = ({\n children,\n type = \"button\",\n onClick,\n iconBefore,\n iconAfter,\n className = \"\",\n style,\n fullWidth = false,\n disabled = false,\n loading = false,\n loadingText = \"Loading...\",\n darkMode = false,\n baseColor,\n size = \"md\",\n rounded = true,\n showBorder = false, // ✅ default: no border\n}) => {\n const [hovered, setHovered] = useState(false);\n\n /** 🧠 Theme system */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const light = {\n primary: baseColor,\n hover: adjustColor(baseColor, -40),\n text: \"#ffffff\",\n border: adjustColor(baseColor, -60),\n };\n const dark = {\n primary: adjustColor(baseColor, 60),\n hover: adjustColor(baseColor, 80),\n text: \"#000000\",\n border: adjustColor(baseColor, 40),\n };\n return darkMode ? dark : light;\n }, [baseColor, darkMode]);\n\n /** 📏 Sizes */\n const sizes: Record<\n NonNullable<ButtonProps[\"size\"]>,\n { px: number; py: number; font: string }\n > = {\n sm: { px: 16, py: 6, font: \"0.85rem\" },\n md: { px: 24, py: 10, font: \"1rem\" },\n lg: { px: 32, py: 14, font: \"1.125rem\" },\n };\n\n const s = sizes[size];\n\n /** 💅 Computed styles */\n const buttonStyle: CSSProperties = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"8px\",\n padding: `${s.py}px ${s.px}px`,\n fontSize: s.font,\n fontWeight: 500,\n borderRadius: rounded ? 8 : 3,\n border: showBorder ? `1px solid ${theme.border}` : \"none\", // ✅ conditional border\n width: fullWidth ? \"100%\" : \"auto\",\n backgroundColor: hovered && !disabled ? theme.hover : theme.primary,\n color: theme.text,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n transition: \"all 0.25s ease-in-out\",\n boxShadow: \"0 1px 3px rgba(0, 0, 0, 0.15)\",\n ...style,\n };\n\n return (\n <button\n type={type}\n className={className}\n style={buttonStyle}\n onClick={!disabled && !loading ? onClick : undefined}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n disabled={disabled}\n >\n {loading ? (\n <>\n <span\n style={{\n width: \"16px\",\n height: \"16px\",\n border: \"2px solid currentColor\",\n borderTopColor: \"transparent\",\n borderRadius: \"50%\",\n animation: \"spin 1s linear infinite\",\n }}\n />\n <span>{loadingText}</span>\n </>\n ) : (\n <>\n {iconBefore && <span>{iconBefore}</span>}\n <span>{children}</span>\n {iconAfter && <span>{iconAfter}</span>}\n </>\n )}\n\n {/* Spinner animation */}\n <style>\n {`\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n `}\n </style>\n </button>\n );\n};\n\nexport default Button;\n","import React, {\n CSSProperties,\n ReactNode,\n ElementType,\n forwardRef,\n ForwardedRef,\n ReactElement,\n ComponentPropsWithoutRef,\n} from \"react\";\n\n// Allow any string for variant to support fully custom variants\ntype CardVariant = string;\n\ntype CardOwnProps = {\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n variant?: CardVariant;\n background?: string;\n textColor?: string;\n borderRadius?: string | number;\n border?: string;\n boxShadow?: string;\n hoverShadow?: string;\n padding?: string | number;\n margin?: string | number;\n width?: string | number;\n height?: string | number;\n style?: CSSProperties;\n hoverStyle?: CSSProperties;\n onClick?: () => void;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps &\n Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps>;\n\nconst CardInner = <T extends ElementType = \"div\">(\n {\n as,\n children,\n className = \"\",\n variant = \"elevated\",\n background = \"#fff\",\n textColor = \"#000\",\n borderRadius = 12,\n border,\n boxShadow,\n hoverShadow,\n padding = 16,\n margin,\n width,\n height,\n style = {},\n hoverStyle = {},\n onClick,\n ...rest\n }: CardProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) => {\n const Component = as || \"div\";\n\n // Default styling for known variants; unknown variants can be customized\n const baseVariantStyles: Record<string, CSSProperties> = {\n elevated: {\n boxShadow: boxShadow || \"0 4px 12px rgba(0,0,0,0.08)\",\n border: border || \"none\",\n },\n outline: {\n border: border || \"1px solid rgba(0,0,0,0.1)\",\n boxShadow: \"none\",\n },\n flat: {\n border: \"none\",\n boxShadow: \"none\",\n },\n };\n\n const cardStyle: CSSProperties = {\n background,\n color: textColor,\n borderRadius,\n padding,\n margin,\n width,\n height,\n transition: \"all 0.25s ease\",\n cursor: onClick ? \"pointer\" : undefined,\n boxSizing: \"border-box\",\n ...(baseVariantStyles[variant] || {}), // fallback if variant is custom\n ...style,\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLElement>) => {\n Object.assign(\n e.currentTarget.style,\n hoverShadow ? { boxShadow: hoverShadow } : hoverStyle\n );\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n Object.assign(e.currentTarget.style, {\n ...cardStyle,\n ...(baseVariantStyles[variant] || {}),\n });\n };\n\n return (\n <Component\n ref={ref}\n className={`ui-card ${className}`}\n style={cardStyle}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\nconst ForwardedCard = forwardRef(CardInner) as <T extends ElementType = \"div\">(\n props: CardProps<T> & { ref?: ForwardedRef<HTMLDivElement> }\n) => ReactElement;\n\nconst Card = Object.assign(ForwardedCard, { displayName: \"Card\" });\n\nexport { Card };\n","\"use client\";\nimport React from \"react\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface CheckboxGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n customIcon?: (checked: boolean) => React.ReactNode;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className = \"\",\n customIcon,\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n}) => {\n const handleChange = (value: string) => {\n if (!onChange) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"group\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n {customIcon ? (\n customIcon(isChecked)\n ) : (\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: 4,\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"white\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ width: iconSize * 0.6, height: iconSize * 0.6 }}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n </label>\n );\n })}\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React from \"react\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n name?: string;\n options: Option[];\n selectedValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n iconUncheckedBorderColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n selectedValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className = \"\",\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n iconUncheckedBorderColor = \"#9ca3af\",\n textColor = \"#374151\",\n errorStyle,\n}) => {\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"radiogroup\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValue === option.value;\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => onChange && onChange(option.value)}\n style={{ display: \"none\" }}\n />\n <span\n style={{\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: iconSize,\n height: iconSize,\n borderRadius: \"50%\",\n border: `2px solid ${\n isChecked ? iconCheckedBgColor : iconUncheckedBorderColor\n }`,\n backgroundColor: isChecked ? iconCheckedBgColor : \"transparent\",\n transition: \"all 0.25s ease\",\n }}\n >\n {isChecked && (\n <span\n style={{\n width: iconSize / 2,\n height: iconSize / 2,\n borderRadius: \"50%\",\n backgroundColor: \"white\",\n }}\n />\n )}\n </span>\n </label>\n );\n })}\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React from \"react\";\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface SwitchGroupProps {\n name?: string;\n options: Option[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n className?: string;\n style?: React.CSSProperties;\n labelStyle?: React.CSSProperties;\n iconSize?: number;\n iconCheckedBgColor?: string;\n switchBgColor?: string;\n textColor?: string;\n errorStyle?: React.CSSProperties;\n}\n\nexport const SwitchGroup: React.FC<SwitchGroupProps> = ({\n name,\n options,\n selectedValues = [],\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n className = \"\",\n style,\n labelStyle,\n iconSize = 20,\n iconCheckedBgColor = \"#2563eb\",\n switchBgColor = \"#d1d5db\",\n textColor = \"#374151\",\n errorStyle,\n}) => {\n const handleChange = (value: string) => {\n if (!onChange) return;\n const updatedValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n onChange(updatedValues);\n };\n\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 8, ...style }}\n role=\"group\"\n aria-disabled={disabled}\n >\n {options.map((option) => {\n const isChecked = selectedValues.includes(option.value);\n return (\n <label\n key={option.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.6 : 1,\n gap: 8,\n userSelect: \"none\",\n ...labelStyle,\n }}\n >\n <span style={{ color: textColor, fontSize: 14 }}>{option.label}</span>\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={isChecked}\n disabled={disabled || readOnly}\n required={required}\n onChange={() => handleChange(option.value)}\n style={{ display: \"none\" }}\n />\n <span\n style={{\n position: \"relative\",\n width: iconSize * 2,\n height: iconSize * 1.1,\n borderRadius: 9999,\n backgroundColor: isChecked ? iconCheckedBgColor : switchBgColor,\n transition: \"background-color 0.25s ease\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: isChecked\n ? `calc(100% - ${iconSize - 4}px - 2px)`\n : \"2px\",\n transform: \"translateY(-50%)\",\n width: iconSize - 4,\n height: iconSize - 4,\n borderRadius: \"50%\",\n backgroundColor: \"#fff\",\n boxShadow: \"0 1px 2px rgba(0,0,0,0.3)\",\n transition: \"left 0.25s ease\",\n }}\n />\n </span>\n </label>\n );\n })}\n {error && (\n <p\n role=\"alert\"\n style={{\n color: \"#dc2626\",\n fontSize: 12,\n marginTop: 4,\n ...errorStyle,\n }}\n >\n {error}\n </p>\n )}\n </div>\n );\n};\n","import React, { useMemo } from \"react\";\n\ntype ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\n\nexport interface ContainerProps {\n /** Predefined max-width based on common breakpoints */\n size?: ContainerSize;\n\n /** Padding (accepts number in px or CSS string, e.g., '2rem') */\n padding?: number | string;\n\n /** Margin (accepts number in px or CSS string, e.g., 'auto' or '16px 8px') */\n margin?: number | string;\n\n /** Background color (any valid CSS color) */\n backgroundColor?: string;\n\n /** Center the container horizontally (adds `margin: 0 auto`) */\n center?: boolean;\n\n /** Custom width override (defaults to container max width) */\n width?: string;\n\n /** Optional height */\n height?: string;\n\n /** Border radius (accepts number in px or CSS string) */\n borderRadius?: number | string;\n\n /** Additional inline styles */\n style?: React.CSSProperties;\n\n /** Tailwind or custom class names */\n className?: string;\n\n /** Container content */\n children: React.ReactNode;\n}\n\n/** Tailwind-like container widths */\nconst containerWidths: Record<ContainerSize, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n full: \"100%\",\n};\n\n/**\n * 🧱 Container Component\n * A flexible, responsive layout wrapper inspired by Tailwind's container.\n */\nexport const Container: React.FC<ContainerProps> = ({\n size = \"lg\",\n padding = 0,\n margin = \"0 auto\",\n backgroundColor = \"transparent\",\n center = true,\n width,\n height = \"auto\",\n borderRadius = 0,\n style,\n className = \"\",\n children,\n}) => {\n const styles = useMemo<React.CSSProperties>(() => {\n const computedPadding =\n typeof padding === \"number\" ? `${padding}px` : padding;\n\n const computedMargin =\n center && margin === \"0 auto\" ? \"0 auto\" : margin;\n\n const computedBorderRadius =\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius;\n\n return {\n maxWidth: width ?? containerWidths[size],\n margin: computedMargin,\n padding: computedPadding,\n backgroundColor,\n height,\n borderRadius: computedBorderRadius,\n boxSizing: \"border-box\",\n width: width ?? \"100%\",\n ...style,\n };\n }, [\n size,\n padding,\n margin,\n backgroundColor,\n width,\n height,\n borderRadius,\n center,\n style,\n ]);\n\n return (\n <div className={className} style={styles}>\n {children}\n </div>\n );\n};\n\nexport default Container;\n","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface FlexboxProps {\n direction?: ResponsiveValue<\"row\" | \"column\" | \"row-reverse\" | \"column-reverse\">;\n align?: ResponsiveValue<\"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\n \"flex-start\" | \"flex-end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"\n >;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n gap?: ResponsiveValue<number | string>;\n padding?: ResponsiveValue<number | string>;\n margin?: ResponsiveValue<number | string>;\n backgroundColor?: ResponsiveValue<string>;\n width?: ResponsiveValue<string>;\n maxWidth?: ResponsiveValue<string>;\n height?: ResponsiveValue<string>;\n borderRadius?: ResponsiveValue<string>;\n border?: ResponsiveValue<string>;\n boxShadow?: ResponsiveValue<string>;\n overflow?: ResponsiveValue<\"visible\" | \"hidden\" | \"auto\" | \"scroll\">;\n children: React.ReactNode;\n style?: React.CSSProperties;\n className?: string; // for Tailwind or other classes\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nconst resolveResponsive = <T,>(\n prop: ResponsiveValue<T> | undefined,\n screen: ScreenSize,\n fallback?: T\n): T | undefined => {\n if (prop == null) return fallback;\n if (typeof prop !== \"object\") return prop;\n return (prop as Partial<Record<ScreenSize, T>>)[screen] ?? fallback;\n};\n\nexport const Flexbox: React.FC<FlexboxProps> = ({\n direction = { sm: \"column\", md: \"row\", lg: \"row\" },\n align = \"center\",\n justify = \"space-between\",\n wrap = \"wrap\",\n gap = 16,\n padding,\n margin,\n backgroundColor = \"transparent\",\n width = \"100%\",\n maxWidth = \"100%\",\n height = \"auto\",\n borderRadius,\n border,\n boxShadow,\n overflow,\n children,\n style,\n className,\n}) => {\n const [screen, setScreen] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n const updateScreen = () => setScreen(getScreenSize(window.innerWidth));\n updateScreen();\n window.addEventListener(\"resize\", updateScreen);\n return () => window.removeEventListener(\"resize\", updateScreen);\n }, []);\n\n const computedStyle = useMemo<React.CSSProperties>(() => {\n const toCssValue = (val?: string | number) =>\n typeof val === \"number\" ? `${val}px` : val;\n\n return {\n display: \"flex\",\n flexDirection: resolveResponsive(direction, screen, \"row\"),\n alignItems: resolveResponsive(align, screen, \"center\"),\n justifyContent: resolveResponsive(justify, screen, \"flex-start\"),\n flexWrap: resolveResponsive(wrap, screen, \"wrap\"),\n gap: toCssValue(resolveResponsive(gap, screen, undefined)),\n padding: toCssValue(resolveResponsive(padding, screen, undefined)),\n margin: toCssValue(resolveResponsive(margin, screen, undefined)),\n backgroundColor: resolveResponsive(backgroundColor, screen, undefined),\n width: resolveResponsive(width, screen, \"100%\"),\n maxWidth: resolveResponsive(maxWidth, screen, undefined),\n height: resolveResponsive(height, screen, undefined),\n borderRadius: resolveResponsive(borderRadius, screen, undefined),\n border: resolveResponsive(border, screen, undefined),\n boxShadow: resolveResponsive(boxShadow, screen, undefined),\n overflow: resolveResponsive(overflow, screen, undefined),\n boxSizing: \"border-box\",\n ...style,\n };\n }, [\n direction,\n align,\n justify,\n wrap,\n gap,\n padding,\n margin,\n backgroundColor,\n width,\n maxWidth,\n height,\n borderRadius,\n border,\n boxShadow,\n overflow,\n screen,\n style,\n ]);\n\n return (\n <div className={className} style={computedStyle}>\n {children}\n </div>\n );\n};\n","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\ntype ResponsiveValue<T> = T | Partial<Record<ScreenSize, T>>;\n\ninterface StackProps {\n direction?: ResponsiveValue<\"vertical\" | \"horizontal\">;\n gap?: ResponsiveValue<number | string>;\n align?: ResponsiveValue<\"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\">;\n justify?: ResponsiveValue<\n \"flex-start\" | \"flex-end\" | \"center\" | \"space-between\" | \"space-around\" | \"space-evenly\"\n >;\n wrap?: ResponsiveValue<\"nowrap\" | \"wrap\" | \"wrap-reverse\">;\n padding?: ResponsiveValue<number | string>;\n margin?: ResponsiveValue<number | string>;\n width?: ResponsiveValue<string>;\n maxWidth?: ResponsiveValue<string>;\n height?: ResponsiveValue<string>;\n backgroundColor?: ResponsiveValue<string>;\n borderRadius?: ResponsiveValue<string>;\n border?: ResponsiveValue<string>;\n boxShadow?: ResponsiveValue<string>;\n overflow?: ResponsiveValue<\"visible\" | \"hidden\" | \"auto\" | \"scroll\">;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nconst resolveResponsive = <T,>(\n prop: ResponsiveValue<T> | undefined,\n screen: ScreenSize,\n fallback?: T\n): T | undefined => {\n if (prop == null) return fallback;\n if (typeof prop !== \"object\") return prop;\n return (prop as Partial<Record<ScreenSize, T>>)[screen] ?? fallback;\n};\n\nexport const Stack: React.FC<StackProps> = ({\n direction = { sm: \"vertical\", md: \"horizontal\", lg: \"horizontal\" },\n gap = 12,\n align = \"center\",\n justify = \"flex-start\",\n wrap = \"nowrap\",\n padding,\n margin,\n width = \"100%\",\n maxWidth,\n height = \"auto\",\n backgroundColor = \"transparent\",\n borderRadius,\n border,\n boxShadow,\n overflow,\n className,\n style,\n children,\n}) => {\n const [screen, setScreen] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n const updateScreen = () => setScreen(getScreenSize(window.innerWidth));\n updateScreen();\n window.addEventListener(\"resize\", updateScreen);\n return () => window.removeEventListener(\"resize\", updateScreen);\n }, []);\n\n const computedStyle = useMemo<React.CSSProperties>(() => {\n const toCssValue = (val?: string | number) =>\n typeof val === \"number\" ? `${val}px` : val;\n\n const resolvedDir = resolveResponsive(direction, screen, \"vertical\");\n const flexDir = resolvedDir === \"vertical\" ? \"column\" : \"row\";\n\n return {\n display: \"flex\",\n flexDirection: flexDir,\n alignItems: resolveResponsive(align, screen, \"center\"),\n justifyContent: resolveResponsive(justify, screen, \"flex-start\"),\n flexWrap: resolveResponsive(wrap, screen, \"nowrap\"),\n gap: toCssValue(resolveResponsive(gap, screen, 12)),\n padding: toCssValue(resolveResponsive(padding, screen, undefined)),\n margin: toCssValue(resolveResponsive(margin, screen, undefined)),\n width: resolveResponsive(width, screen, \"100%\"),\n maxWidth: resolveResponsive(maxWidth, screen, undefined),\n height: resolveResponsive(height, screen, undefined),\n backgroundColor: resolveResponsive(backgroundColor, screen, undefined),\n borderRadius: resolveResponsive(borderRadius, screen, undefined),\n border: resolveResponsive(border, screen, undefined),\n boxShadow: resolveResponsive(boxShadow, screen, undefined),\n overflow: resolveResponsive(overflow, screen, undefined),\n boxSizing: \"border-box\",\n ...style,\n };\n }, [\n direction,\n gap,\n align,\n justify,\n wrap,\n padding,\n margin,\n width,\n maxWidth,\n height,\n backgroundColor,\n borderRadius,\n border,\n boxShadow,\n overflow,\n style,\n screen,\n ]);\n\n return (\n <div className={className} style={computedStyle}>\n {children}\n </div>\n );\n};\n\n\n\nexport const HStack: React.FC<StackProps> = (props) => {\n return <Stack direction=\"horizontal\" {...props} />;\n};\n\nexport const VStack: React.FC<StackProps> = (props) => {\n return <Stack direction=\"vertical\" {...props} />;\n};","import React, { useState, useEffect, useMemo } from \"react\";\n\ntype ScreenSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface GridProps {\n columns?: number | Partial<Record<ScreenSize, number>>; // responsive column config\n gap?: number | string; // grid gap\n padding?: number | string;\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n justifyItems?: \"start\" | \"center\" | \"end\" | \"stretch\";\n backgroundColor?: string;\n width?: string;\n maxWidth?: string;\n height?: string;\n margin?: number | string;\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n}\n\nconst getScreenSize = (width: number): ScreenSize => {\n if (width < 768) return \"sm\";\n if (width < 1024) return \"md\";\n return \"lg\";\n};\n\nexport const GridView: React.FC<GridProps> = ({\n columns = { sm: 1, md: 2, lg: 3 },\n gap = 16,\n padding = 0,\n alignItems = \"stretch\",\n justifyItems = \"stretch\",\n backgroundColor = \"transparent\",\n width = \"100%\",\n maxWidth = \"100%\",\n height = \"auto\",\n margin = 0,\n style,\n className = \"\",\n children,\n}) => {\n const [screenSize, setScreenSize] = useState<ScreenSize>(\"lg\");\n\n useEffect(() => {\n setScreenSize(getScreenSize(window.innerWidth));\n const onResize = () => setScreenSize(getScreenSize(window.innerWidth));\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, []);\n\n const resolvedColumns = useMemo(() => {\n if (typeof columns === \"number\") return columns;\n return columns[screenSize] ?? 1;\n }, [columns, screenSize]);\n\n const styles: React.CSSProperties = useMemo(\n () => ({\n display: \"grid\",\n gridTemplateColumns: `repeat(${resolvedColumns}, 1fr)`,\n gap: typeof gap === \"number\" ? `${gap}px` : gap,\n padding: typeof padding === \"number\" ? `${padding}px` : padding,\n margin: typeof margin === \"number\" ? `${margin}px` : margin,\n alignItems,\n justifyItems,\n backgroundColor,\n width,\n maxWidth,\n height,\n boxSizing: \"border-box\",\n ...style,\n }),\n [\n resolvedColumns,\n gap,\n padding,\n margin,\n alignItems,\n justifyItems,\n backgroundColor,\n width,\n maxWidth,\n height,\n style,\n ]\n );\n\n return (\n <div style={styles} className={className}>\n {children}\n </div>\n );\n};\n","import React, { useState, useEffect, useMemo, CSSProperties, ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\n\n/* ---------------- 🧩 Drawer Button ---------------- */\n\nexport interface DrawerButtonProps {\n label?: string;\n icon?: ReactNode;\n iconPosition?: \"left\" | \"right\";\n onClick?: () => void;\n color?: string;\n textColor?: string;\n borderRadius?: string;\n padding?: string;\n fontSize?: string;\n gap?: string;\n style?: CSSProperties;\n className?: string;\n}\n\nexport const DrawerButton: React.FC<DrawerButtonProps> = ({\n label = \"Open Drawer\",\n icon,\n iconPosition = \"left\",\n onClick,\n color = \"#2563eb\",\n textColor = \"#fff\",\n borderRadius = \"6px\",\n padding = \"10px 16px\",\n fontSize = \"14px\",\n gap = \"8px\",\n style,\n className = \"\",\n}) => (\n <button\n onClick={onClick}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: color,\n color: textColor,\n border: \"none\",\n borderRadius,\n padding,\n fontSize,\n gap,\n cursor: \"pointer\",\n fontWeight: 500,\n transition: \"all 0.2s ease\",\n boxShadow: \"0 1px 3px rgba(0,0,0,0.1)\",\n ...style,\n }}\n className={className}\n >\n {icon && iconPosition === \"left\" && icon}\n {label}\n {icon && iconPosition === \"right\" && icon}\n </button>\n);\n\n/* ---------------- 🧱 Drawer ---------------- */\n\nexport interface DrawerProps {\n open: boolean;\n onClose?: () => void;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n width?: string;\n height?: string;\n backgroundColor?: string;\n backdropColor?: string;\n transitionDuration?: number;\n style?: CSSProperties;\n className?: string;\n children?: ReactNode;\n showCloseButton?: boolean;\n closeIconColor?: string;\n closeButtonStyle?: CSSProperties;\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n open,\n onClose,\n position = \"right\",\n width = \"320px\",\n height = \"320px\",\n backgroundColor = \"#fff\",\n backdropColor = \"rgba(0,0,0,0.5)\",\n transitionDuration = 300,\n style,\n className = \"\",\n children,\n showCloseButton = true,\n closeIconColor = \"#000\",\n closeButtonStyle,\n}) => {\n const [visible, setVisible] = useState(open);\n\n // Handle mount/unmount delay for smooth fade-out\n useEffect(() => {\n if (open) setVisible(true);\n else setTimeout(() => setVisible(false), transitionDuration);\n }, [open, transitionDuration]);\n\n // Drawer transform direction\n const transform = useMemo(() => {\n if (open) return \"translate(0, 0)\";\n switch (position) {\n case \"left\":\n return \"translateX(-100%)\";\n case \"right\":\n return \"translateX(100%)\";\n case \"top\":\n return \"translateY(-100%)\";\n case \"bottom\":\n return \"translateY(100%)\";\n default:\n return \"translate(0, 0)\";\n }\n }, [open, position]);\n\n const drawerStyle: CSSProperties = {\n position: \"fixed\",\n backgroundColor,\n transition: `transform ${transitionDuration}ms ease, opacity ${transitionDuration}ms ease`,\n transform,\n opacity: open ? 1 : 0,\n zIndex: 1001,\n ...style,\n ...(position === \"left\" || position === \"right\"\n ? { top: 0, bottom: 0, [position]: 0, width, height: \"100%\" }\n : { left: 0, right: 0, [position]: 0, height, width: \"100%\" }),\n };\n\n const overlayStyle: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: backdropColor,\n opacity: open ? 1 : 0,\n transition: `opacity ${transitionDuration}ms ease`,\n zIndex: 1000,\n display: visible ? \"block\" : \"none\",\n pointerEvents: open ? \"auto\" : \"none\",\n };\n\n const defaultCloseButtonStyle: CSSProperties = {\n position: \"absolute\",\n top: \"12px\",\n right: \"12px\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"transform 0.2s ease, opacity 0.2s ease\",\n };\n\n return (\n <>\n {/* Overlay */}\n <div style={overlayStyle} onClick={onClose} />\n\n {/* Drawer Panel */}\n <div\n style={{\n ...drawerStyle,\n display: \"flex\",\n flexDirection: \"column\",\n visibility: visible ? \"visible\" : \"hidden\",\n pointerEvents: open ? \"auto\" : \"none\",\n boxShadow: \"0 0 20px rgba(0,0,0,0.15)\",\n }}\n className={className}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n style={{ ...defaultCloseButtonStyle, ...closeButtonStyle }}\n aria-label=\"Close drawer\"\n >\n <X size={22} color={closeIconColor} />\n </button>\n )}\n\n <div\n style={{\n flex: 1,\n overflowY: \"auto\",\n padding: \"16px\",\n scrollbarWidth: \"thin\",\n }}\n >\n {children}\n </div>\n </div>\n </>\n );\n};\n","\"use client\";\nimport React, {\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n forwardRef,\n ForwardRefRenderFunction,\n} from \"react\";\n\n/* ----------------------\n * Types\n * ---------------------*/\nexport interface Option {\n label: string;\n value: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n description?: string;\n}\n\nexport interface DropdownProps {\n options: Option[];\n\n value?: string;\n values?: string[];\n defaultValue?: string;\n defaultValues?: string[];\n\n onChange?: (value: string | string[]) => void;\n\n placeholder?: string;\n disabled?: boolean;\n searchable?: boolean;\n multiSelect?: boolean;\n clearable?: boolean;\n virtualized?: boolean;\n\n width?: string | number;\n dropdownMaxHeight?: string;\n borderRadius?: string;\n boxShadow?: string;\n borderColor?: string;\n accentColor?: string; // ✅ accent color (focus ring + selected)\n theme?: \"light\" | \"dark\" | \"custom\"; // ✅ global theme\n menuBg?: string; // ✅ background override\n controlBg?: string; // ✅ control background\n textColor?: string;\n hoverBg?: string;\n selectedBg?: string;\n disabledBg?: string;\n disabledTextColor?: string;\n placeholderColor?: string;\n\n // animation & transitions\n transitionDuration?: string;\n\n // class/style hooks\n className?: string;\n controlClassName?: string;\n menuClassName?: string;\n optionClassName?: string;\n style?: React.CSSProperties;\n controlStyle?: React.CSSProperties;\n menuStyle?: React.CSSProperties;\n optionStyle?: React.CSSProperties;\n\n // icons\n iconPrefix?: React.ReactNode;\n iconSuffix?: React.ReactNode;\n clearIcon?: React.ReactNode;\n dropdownIcon?: React.ReactNode;\n checkIcon?: React.ReactNode;\n}\n\n/* ----------------------\n * Default theme tokens\n * ---------------------*/\nconst THEMES = {\n light: {\n controlBg: \"#ffffff\",\n menuBg: \"#ffffff\",\n textColor: \"#111827\",\n placeholderColor: \"#6b7280\",\n hoverBg: \"#f9fafb\",\n selectedBg: \"#eff6ff\",\n disabledBg: \"#f3f4f6\",\n disabledTextColor: \"#9ca3af\",\n borderColor: \"#e5e7eb\",\n accentColor: \"#3b82f6\",\n },\n dark: {\n controlBg: \"#1f2937\",\n menuBg: \"#111827\",\n textColor: \"#f9fafb\",\n placeholderColor: \"#9ca3af\",\n hoverBg: \"#374151\",\n selectedBg: \"#2563eb33\",\n disabledBg: \"#374151\",\n disabledTextColor: \"#6b7280\",\n borderColor: \"#374151\",\n accentColor: \"#60a5fa\",\n },\n custom: {} as any,\n};\n\n/* ----------------------\n * Component\n * ---------------------*/\nconst DropdownInner: ForwardRefRenderFunction<HTMLDivElement, DropdownProps> = (\n props,\n ref\n) => {\n const id = useId();\n const {\n options,\n value,\n values,\n defaultValue,\n defaultValues,\n onChange,\n\n placeholder = \"Select...\",\n disabled = false,\n searchable = false,\n multiSelect = false,\n clearable = false,\n virtualized = false,\n\n width = \"100%\",\n dropdownMaxHeight = \"320px\",\n borderRadius = \"8px\",\n boxShadow = \"0 8px 28px rgba(0,0,0,0.1)\",\n borderColor,\n accentColor,\n theme = \"light\",\n menuBg,\n controlBg,\n textColor,\n hoverBg,\n selectedBg,\n disabledBg,\n disabledTextColor,\n placeholderColor,\n transitionDuration = \"180ms\",\n\n className,\n controlClassName,\n menuClassName,\n optionClassName,\n style,\n controlStyle,\n menuStyle,\n optionStyle,\n\n iconPrefix,\n iconSuffix,\n clearIcon = \"×\",\n dropdownIcon = \"▾\",\n checkIcon = \"✓\",\n } = props;\n\n // merge theme colors\n const themeVars = {\n ...THEMES[theme],\n ...(theme === \"custom\" ? {} : {}),\n };\n const colors = {\n borderColor: borderColor ?? themeVars.borderColor,\n accentColor: accentColor ?? themeVars.accentColor,\n controlBg: controlBg ?? themeVars.controlBg,\n menuBg: menuBg ?? themeVars.menuBg,\n textColor: textColor ?? themeVars.textColor,\n hoverBg: hoverBg ?? themeVars.hoverBg,\n selectedBg: selectedBg ?? themeVars.selectedBg,\n disabledBg: disabledBg ?? themeVars.disabledBg,\n disabledTextColor: disabledTextColor ?? themeVars.disabledTextColor,\n placeholderColor: placeholderColor ?? themeVars.placeholderColor,\n };\n\n /* ----------------- State ----------------- */\n const [isOpen, setIsOpen] = useState(false);\n const [selected, setSelected] = useState<string[]>(\n defaultValues ?? (defaultValue ? [defaultValue] : [])\n );\n\n useEffect(() => {\n if (value) setSelected([value]);\n if (values) setSelected(values);\n }, [value, values]);\n\n const selectedOptions = useMemo(\n () => options.filter((o) => selected.includes(o.value)),\n [options, selected]\n );\n\n const toggle = () => !disabled && setIsOpen((s) => !s);\n\n const selectValue = (val: string) => {\n if (multiSelect) {\n const exists = selected.includes(val);\n const next = exists\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n setSelected(next);\n onChange?.(next);\n } else {\n setSelected([val]);\n onChange?.(val);\n setIsOpen(false);\n }\n };\n\n const clearSelection = (e?: React.MouseEvent) => {\n e?.stopPropagation();\n setSelected([]);\n onChange?.(multiSelect ? [] : \"\");\n };\n\n /* ----------------- Render ----------------- */\n return (\n <div\n ref={ref}\n className={className}\n style={{\n position: \"relative\",\n width,\n fontFamily:\n \"Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial\",\n ...style,\n }}\n >\n {/* Control */}\n <div\n className={controlClassName}\n role=\"button\"\n tabIndex={0}\n onClick={toggle}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n background: colors.controlBg,\n color: colors.textColor,\n padding: \"0.5rem 0.75rem\",\n border: `1px solid ${\n isOpen ? colors.accentColor : colors.borderColor\n }`,\n borderRadius,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n boxShadow: isOpen ? `0 0 0 3px ${colors.accentColor}33` : undefined,\n transition: `all ${transitionDuration} ease`,\n ...controlStyle,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n {iconPrefix}\n {selectedOptions.length ? (\n <span>{selectedOptions.map((s) => s.label).join(\", \")}</span>\n ) : (\n <span style={{ color: colors.placeholderColor }}>\n {placeholder}\n </span>\n )}\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n {clearable && selected.length > 0 && (\n <button\n onClick={clearSelection}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: colors.textColor,\n cursor: \"pointer\",\n }}\n >\n {clearIcon}\n </button>\n )}\n {iconSuffix}\n <div\n style={{\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: `transform ${transitionDuration}`,\n }}\n >\n {dropdownIcon}\n </div>\n </div>\n </div>\n\n {/* Menu */}\n {isOpen && (\n <ul\n className={menuClassName}\n style={{\n position: \"absolute\",\n zIndex: 100,\n top: \"calc(100% + 4px)\",\n left: 0,\n right: 0,\n background: colors.menuBg,\n border: `1px solid ${colors.borderColor}`,\n borderRadius,\n boxShadow,\n maxHeight: dropdownMaxHeight,\n overflowY: \"auto\",\n transition: `opacity ${transitionDuration} ease`,\n ...menuStyle,\n }}\n >\n {options.map((opt) => {\n const isSelected = selected.includes(opt.value);\n return (\n <li\n key={opt.value}\n onClick={() => !opt.disabled && selectValue(opt.value)}\n className={optionClassName}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"0.5rem 0.75rem\",\n background: opt.disabled\n ? colors.disabledBg\n : isSelected\n ? colors.selectedBg\n : \"transparent\",\n color: opt.disabled\n ? colors.disabledTextColor\n : colors.textColor,\n cursor: opt.disabled ? \"not-allowed\" : \"pointer\",\n borderRadius: 6,\n userSelect: \"none\",\n ...optionStyle,\n }}\n onMouseEnter={(e) => {\n if (!opt.disabled && !isSelected)\n e.currentTarget.style.backgroundColor = colors.hoverBg;\n }}\n onMouseLeave={(e) => {\n if (!opt.disabled && !isSelected)\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n {multiSelect && (\n <span style={{ width: 18, textAlign: \"center\" }}>\n {isSelected ? checkIcon : \"○\"}\n </span>\n )}\n {opt.icon && <span>{opt.icon}</span>}\n <div style={{ flex: 1 }}>\n {opt.label}\n {opt.description && (\n <div\n style={{\n fontSize: 12,\n color: colors.placeholderColor,\n marginTop: 2,\n }}\n >\n {opt.description}\n </div>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n};\n\nexport const Dropdown = forwardRef(DropdownInner);\nexport default Dropdown;\n","\"use client\";\nimport React, {\n useState,\n useRef,\n useImperativeHandle,\n forwardRef,\n CSSProperties,\n} from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\";\n\nexport interface InputProps {\n type?:\n | \"text\"\n | \"password\"\n | \"email\"\n | \"number\"\n | \"search\"\n | \"tel\"\n | \"url\"\n | \"textarea\";\n label?: string;\n placeholder?: string;\n name?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (name: string, value: string) => void;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n error?: string;\n success?: boolean;\n autoFocus?: boolean;\n\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n\n /** 🎨 Full Customization Options */\n labelColor?: string;\n placeholderColor?: string;\n backgroundColor?: string;\n textColor?: string;\n borderColor?: string;\n hoverBorderColor?: string;\n focusBorderColor?: string;\n errorColor?: string;\n successColor?: string;\n iconColor?: string;\n shadow?: string;\n\n /** 🧩 Layout + Style Customization */\n fontSize?: string;\n fontFamily?: string;\n radius?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n rows?: number;\n cols?: number;\n maxLength?: number;\n resize?: boolean;\n showCharacterCount?: boolean;\n paddingX?: string;\n paddingY?: string;\n\n /** 🧱 External customization */\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Input = forwardRef<\n HTMLInputElement | HTMLTextAreaElement,\n InputProps\n>((props, ref) => {\n const {\n type = \"text\",\n label,\n placeholder = \"\",\n name = \"\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n readOnly = false,\n required = false,\n error,\n success = false,\n autoFocus = false,\n\n iconLeft,\n iconRight,\n\n /** 🎨 Styling props */\n labelColor = \"#374151\",\n placeholderColor = \"#9ca3af\",\n backgroundColor = \"#ffffff\",\n textColor = \"#111827\",\n borderColor = \"#d1d5db\",\n hoverBorderColor = \"#9ca3af\",\n focusBorderColor = \"#2563eb\",\n errorColor = \"#dc2626\",\n successColor = \"#16a34a\",\n iconColor = \"#6b7280\",\n shadow = \"0 1px 2px rgba(0,0,0,0.05)\",\n\n /** 📏 Layout + size */\n size = \"md\",\n fontSize = \"14px\",\n fontFamily = \"Inter, system-ui, sans-serif\",\n radius = \"8px\",\n rows = 4,\n cols,\n maxLength,\n resize = true,\n showCharacterCount = true,\n paddingX,\n paddingY,\n\n className,\n style,\n } = props;\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const [localValue, setLocalValue] = useState(defaultValue || \"\");\n const [visible, setVisible] = useState(false);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n /** ✅ Make it controlled properly */\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => {\n const newValue = e.target.value;\n if (maxLength && newValue.length > maxLength) return;\n setLocalValue(newValue);\n if (onChange) onChange(name, newValue);\n };\n\n const currentValue = value !== undefined ? value : localValue;\n\n /** 🎯 Dynamic border colors */\n const currentBorderColor = error\n ? errorColor\n : success\n ? successColor\n : borderColor;\n\n /** 🧠 Size tokens */\n const sizes = {\n sm: { paddingY: \"6px\", paddingX: \"10px\", font: \"13px\" },\n md: { paddingY: \"10px\", paddingX: \"14px\", font: \"14px\" },\n lg: { paddingY: \"14px\", paddingX: \"18px\", font: \"16px\" },\n }[size];\n\n const px = paddingX || sizes.paddingX;\n const py = paddingY || sizes.paddingY;\n\n /** 💅 Base input styles */\n const baseInputStyle: CSSProperties = {\n width: \"100%\",\n border: `1px solid ${currentBorderColor}`,\n borderRadius: radius,\n backgroundColor,\n color: textColor,\n fontFamily,\n fontSize,\n padding: `${py} ${px}`,\n paddingLeft: iconLeft ? \"40px\" : px,\n paddingRight:\n iconRight || type === \"password\" ? \"40px\" : px,\n outline: \"none\",\n transition: \"border-color 0.25s ease, box-shadow 0.25s ease\",\n resize: type === \"textarea\" && !resize ? \"none\" : undefined,\n boxShadow: shadow,\n ...style,\n };\n\n /** 🧠 Placeholder dynamic color */\n const dynamicPlaceholder = {\n \"::placeholder\": {\n color: placeholderColor,\n opacity: 1,\n },\n } as any;\n\n /** 🎨 Dynamic border behavior */\n const applyDynamicBorder = (\n el: HTMLInputElement | HTMLTextAreaElement,\n color: string\n ) => {\n if (el) el.style.borderColor = color;\n };\n\n const commonEvents = {\n onFocus: (e: any) => applyDynamicBorder(e.currentTarget, focusBorderColor),\n onBlur: (e: any) => applyDynamicBorder(e.currentTarget, currentBorderColor),\n onMouseEnter: (e: any) =>\n applyDynamicBorder(e.currentTarget, hoverBorderColor),\n onMouseLeave: (e: any) =>\n applyDynamicBorder(e.currentTarget, currentBorderColor),\n };\n\n return (\n <div\n className={className}\n style={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n fontFamily,\n }}\n >\n {/* Label */}\n {label && (\n <label\n htmlFor={name}\n style={{\n marginBottom: 6,\n color: labelColor,\n fontWeight: 500,\n fontSize: \"14px\",\n }}\n >\n {label}\n {required && <span style={{ color: errorColor }}> *</span>}\n </label>\n )}\n\n <div style={{ position: \"relative\", width: \"100%\" }}>\n {/* Left icon */}\n {iconLeft && (\n <span\n style={{\n position: \"absolute\",\n left: 12,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: iconColor,\n pointerEvents: \"none\",\n }}\n >\n {iconLeft}\n </span>\n )}\n\n {/* Input or Textarea */}\n {type === \"textarea\" ? (\n <textarea\n ref={inputRef as React.RefObject<HTMLTextAreaElement>}\n name={name}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n rows={rows}\n cols={cols}\n maxLength={maxLength}\n autoFocus={autoFocus}\n style={{ ...baseInputStyle, ...dynamicPlaceholder }}\n onChange={handleChange}\n {...commonEvents}\n />\n ) : (\n <input\n ref={inputRef as React.RefObject<HTMLInputElement>}\n id={name}\n type={\n type === \"password\"\n ? visible\n ? \"text\"\n : \"password\"\n : type\n }\n name={name}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n autoFocus={autoFocus}\n style={{ ...baseInputStyle, ...dynamicPlaceholder }}\n onChange={handleChange}\n {...commonEvents}\n />\n )}\n\n {/* Password visibility toggle */}\n {type === \"password\" && (\n <button\n type=\"button\"\n onClick={() => setVisible(!visible)}\n style={{\n position: \"absolute\",\n right: 10,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: iconColor,\n padding: 0,\n }}\n >\n {visible ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n )}\n\n {/* Right icon */}\n {iconRight && type !== \"password\" && (\n <span\n style={{\n position: \"absolute\",\n right: 12,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: iconColor,\n pointerEvents: \"none\",\n }}\n >\n {iconRight}\n </span>\n )}\n </div>\n\n {/* Character counter */}\n {type === \"textarea\" && showCharacterCount && maxLength && (\n <div\n style={{\n textAlign: \"right\",\n fontSize: \"12px\",\n color: \"#6b7280\",\n marginTop: 4,\n }}\n >\n {currentValue.length}/{maxLength}\n </div>\n )}\n\n {/* Error text */}\n {error && (\n <div\n style={{\n color: errorColor,\n fontSize: \"12px\",\n marginTop: 4,\n }}\n >\n {error}\n </div>\n )}\n </div>\n );\n});\n","import React, { useMemo, useCallback } from \"react\";\n\ninterface ImageProps {\n /** Image source URL */\n src?: string;\n /** Alternative text (for SEO + accessibility) */\n alt?: string;\n /** Optional title attribute (SEO hint tooltip) */\n title?: string;\n /** Custom width and height */\n width?: string | number;\n height?: string | number;\n /** Border customization */\n borderRadius?: string | number;\n borderColor?: string;\n borderStyle?: \"solid\" | \"dashed\" | \"dotted\" | \"double\" | \"none\";\n borderWidth?: string | number;\n /** Shadow customization */\n shadow?: boolean;\n boxShadow?: string;\n /** Opacity and fit options */\n opacity?: number;\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n /** Overlay and icon layers */\n overlayText?: string;\n overlayColor?: string;\n svgIcon?: React.ReactNode;\n /** Layout and responsiveness */\n responsive?: boolean;\n padding?: string | number;\n margin?: string | number;\n /** Performance */\n lazyLoad?: boolean;\n /** Hover interactivity */\n hoverOpacity?: number;\n hoverShadow?: boolean;\n hoverScale?: number;\n hoverRotate?: number;\n transitionDuration?: string;\n /** Overflow handling */\n overflow?: \"hidden\" | \"scroll\" | \"auto\" | \"visible\" | \"x\" | \"y\";\n /** Class and style overrides */\n className?: string;\n style?: React.CSSProperties;\n /** Event handlers */\n onClick?: (event: React.MouseEvent<HTMLDivElement | HTMLImageElement>) => void;\n onLoad?: () => void;\n onError?: () => void;\n}\n\n/**\n * ✅ Industry-Standard Image Component\n * - SEO & accessibility optimized\n * - Lazy loading & responsive\n * - Fully customizable styling\n * - Smooth hover transitions\n * - Overlay and SVG support\n */\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"Image\",\n title,\n width = \"100%\",\n height = \"auto\",\n borderRadius = \"8px\",\n borderColor = \"transparent\",\n borderStyle = \"solid\",\n borderWidth = \"0px\",\n shadow = false,\n boxShadow,\n opacity = 1,\n objectFit = \"cover\",\n overlayText,\n overlayColor = \"rgba(0,0,0,0.5)\",\n svgIcon,\n responsive = false,\n padding,\n margin,\n lazyLoad = true,\n hoverOpacity,\n hoverShadow = false,\n hoverScale = 1,\n hoverRotate = 0,\n transitionDuration = \"0.3s\",\n overflow = \"hidden\",\n className,\n style,\n onClick,\n onLoad,\n onError,\n}) => {\n // ✅ Memoized base style for performance\n const baseStyle = useMemo<React.CSSProperties>(\n () => ({\n width: responsive ? \"100%\" : width,\n height: responsive ? \"auto\" : height,\n borderRadius,\n border: `${borderWidth} ${borderStyle} ${borderColor}`,\n objectFit,\n opacity,\n boxShadow: shadow\n ? boxShadow || \"0 4px 12px rgba(0,0,0,0.15)\"\n : \"none\",\n transition: `all ${transitionDuration} ease`,\n display: \"block\",\n }),\n [\n responsive,\n width,\n height,\n borderRadius,\n borderColor,\n borderStyle,\n borderWidth,\n objectFit,\n opacity,\n shadow,\n boxShadow,\n transitionDuration,\n ]\n );\n\n // ✅ Hover effects\n const handleMouseEnter = useCallback(\n (e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity =\n hoverOpacity !== undefined ? hoverOpacity.toString() : \"1\";\n e.currentTarget.style.boxShadow = hoverShadow\n ? \"0 8px 20px rgba(0,0,0,0.3)\"\n : baseStyle.boxShadow || \"none\";\n e.currentTarget.style.transform = `scale(${hoverScale}) rotate(${hoverRotate}deg)`;\n },\n [hoverOpacity, hoverShadow, hoverScale, hoverRotate, baseStyle.boxShadow]\n );\n\n const handleMouseLeave = useCallback((e: React.MouseEvent<HTMLImageElement>) => {\n e.currentTarget.style.opacity = baseStyle.opacity?.toString() || \"1\";\n e.currentTarget.style.boxShadow = baseStyle.boxShadow || \"none\";\n e.currentTarget.style.transform = \"scale(1) rotate(0deg)\";\n }, [baseStyle]);\n\n // ✅ Overflow control\n const overflowStyles: React.CSSProperties = useMemo(() => {\n switch (overflow) {\n case \"x\":\n return { overflowX: \"hidden\" };\n case \"y\":\n return { overflowY: \"hidden\" };\n default:\n return { overflow };\n }\n }, [overflow]);\n\n return (\n <div\n className={className}\n role=\"img\"\n aria-label={alt}\n title={title || alt}\n onClick={onClick}\n style={{\n width: responsive ? \"100%\" : width,\n height: responsive ? \"auto\" : height,\n padding,\n margin,\n position: \"relative\",\n cursor: onClick ? \"pointer\" : \"default\",\n display: \"inline-block\",\n transition: `all ${transitionDuration} ease`,\n ...overflowStyles,\n ...style,\n }}\n >\n {/* 🖼 SVG or Image */}\n {svgIcon ? (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {svgIcon}\n </div>\n ) : (\n <img\n src={src}\n alt={alt}\n title={title || alt}\n loading={lazyLoad ? \"lazy\" : \"eager\"}\n style={baseStyle}\n onClick={onClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onLoad={onLoad}\n onError={onError}\n decoding=\"async\"\n fetchPriority=\"high\"\n />\n )}\n\n {/* 🩶 Optional Overlay Text */}\n {overlayText && (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n backgroundColor: overlayColor,\n color: \"#fff\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontWeight: \"bold\",\n fontSize: \"1.1rem\",\n textAlign: \"center\",\n padding: \"1rem\",\n boxSizing: \"border-box\",\n }}\n >\n {overlayText}\n </div>\n )}\n </div>\n );\n};\n","import React, { CSSProperties, ReactNode } from \"react\";\n\n/* -------------------------------------------------------------------------- */\n/* 🧩 Interfaces */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemType {\n text: string;\n icon?: ReactNode;\n onClick?: () => void;\n subItems?: ListItemType[];\n}\n\nexport interface ListProps {\n title?: string;\n titleIcon?: ReactNode;\n items: ListItemType[];\n\n type?: \"unordered\" | \"ordered\" | \"inline\";\n\n bulletColor?: string;\n textColor?: string;\n backgroundColor?: string;\n borderColor?: string;\n\n fontSize?: string;\n fontWeight?: string | number;\n borderRadius?: string;\n padding?: string;\n spacing?: string;\n\n className?: string;\n style?: CSSProperties;\n}\n\n/* -------------------------------------------------------------------------- */\n/* 🪶 ListItem */\n/* -------------------------------------------------------------------------- */\n\nexport interface ListItemProps extends ListItemType {\n bulletColor?: string;\n textColor?: string;\n fontSize?: string;\n fontWeight?: string | number;\n spacing?: string;\n isInline?: boolean;\n}\n\nexport const ListItem: React.FC<ListItemProps> = ({\n text,\n icon,\n onClick,\n subItems,\n bulletColor = \"#2563eb\",\n textColor = \"#111827\",\n fontSize = \"15px\",\n fontWeight = 500,\n spacing = \"12px\",\n isInline = false,\n}) => {\n const itemContainerStyle: CSSProperties = {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n marginBottom: isInline ? \"0\" : spacing,\n };\n\n const contentStyle: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n fontSize,\n fontWeight,\n color: textColor,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n };\n\n const bulletStyle: CSSProperties = {\n width: \"8px\",\n height: \"8px\",\n backgroundColor: bulletColor,\n borderRadius: \"50%\",\n flexShrink: 0,\n };\n\n const subListStyle: CSSProperties = {\n listStyleType: \"disc\",\n paddingLeft: \"20px\",\n margin: 0,\n };\n\n return (\n <li style={itemContainerStyle}>\n <div\n style={contentStyle}\n onClick={onClick}\n onMouseEnter={(e) => (e.currentTarget.style.color = bulletColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = textColor)}\n >\n {icon ? (\n <span style={{ fontSize: \"16px\", color: textColor }}>{icon}</span>\n ) : (\n !isInline && <span style={bulletStyle}></span>\n )}\n <span>{text}</span>\n </div>\n\n {subItems && subItems.length > 0 && (\n <ul style={subListStyle}>\n {subItems.map((sub, index) => (\n <ListItem\n key={index}\n {...sub}\n bulletColor={bulletColor}\n textColor={textColor}\n fontSize={fontSize}\n fontWeight={fontWeight}\n spacing={spacing}\n isInline={false}\n />\n ))}\n </ul>\n )}\n </li>\n );\n};\n\n/* -------------------------------------------------------------------------- */\n/* 📋 List */\n/* -------------------------------------------------------------------------- */\n\nexport const List: React.FC<ListProps> = ({\n title,\n titleIcon,\n items,\n type = \"unordered\",\n\n bulletColor = \"#2563eb\",\n textColor = \"#111827\",\n backgroundColor = \"#fff\",\n borderColor = \"#e5e7eb\",\n\n fontSize = \"15px\",\n fontWeight = 500,\n borderRadius = \"12px\",\n padding = \"16px\",\n spacing = \"12px\",\n\n className,\n style,\n}) => {\n const isOrdered = type === \"ordered\";\n const isInline = type === \"inline\";\n\n const containerStyle: CSSProperties = {\n backgroundColor,\n borderColor,\n color: textColor,\n borderWidth: borderColor ? \"1px\" : \"0px\",\n borderStyle: \"solid\",\n borderRadius,\n padding,\n ...style,\n };\n\n const listStyle: CSSProperties = isInline\n ? {\n display: \"flex\",\n gap: spacing,\n paddingLeft: 0,\n listStyleType: \"none\",\n margin: 0,\n }\n : {\n listStyleType: isOrdered ? \"decimal\" : \"none\",\n paddingLeft: isOrdered ? \"20px\" : \"0\",\n margin: 0,\n };\n\n const ListTag = isOrdered ? \"ol\" : \"ul\";\n\n return (\n <div className={className} style={containerStyle}>\n {title && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"17px\",\n fontWeight: 600,\n marginBottom: \"10px\",\n gap: \"8px\",\n }}\n >\n {titleIcon && <span style={{ fontSize: \"18px\" }}>{titleIcon}</span>}\n <span>{title}</span>\n </div>\n )}\n\n <ListTag style={listStyle}>\n {items.map((item, index) => (\n <ListItem\n key={index}\n {...item}\n bulletColor={bulletColor}\n textColor={textColor}\n fontSize={fontSize}\n fontWeight={fontWeight}\n spacing={spacing}\n isInline={isInline}\n />\n ))}\n </ListTag>\n </div>\n );\n};\n","import React, {\n ReactNode,\n CSSProperties,\n useEffect,\n useRef,\n useCallback,\n} from \"react\";\nimport { X } from \"lucide-react\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n ariaLabel?: string;\n title?: string;\n overlayStyle?: CSSProperties;\n modalStyle?: CSSProperties;\n closeButtonStyle?: CSSProperties;\n disableOverlayClose?: boolean;\n transitionDuration?: number;\n className?: string;\n /** Dark mode toggle */\n darkMode?: boolean;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n children,\n ariaLabel,\n title,\n overlayStyle,\n modalStyle,\n closeButtonStyle,\n disableOverlayClose = false,\n transitionDuration = 200,\n className,\n darkMode = false,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n /* ------------------------------ Escape Close ----------------------------- */\n useEffect(() => {\n const handleEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n if (isOpen) document.addEventListener(\"keydown\", handleEsc);\n return () => document.removeEventListener(\"keydown\", handleEsc);\n }, [isOpen, onClose]);\n\n /* ------------------------------ Scroll Lock ------------------------------ */\n useEffect(() => {\n if (isOpen) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [isOpen]);\n\n /* ------------------------------ Click Outside ---------------------------- */\n const handleOverlayClick = useCallback(() => {\n if (!disableOverlayClose) onClose();\n }, [disableOverlayClose, onClose]);\n\n if (!isOpen) return null;\n\n /* ------------------------------- Base Styles ----------------------------- */\n const baseOverlay: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n backgroundColor: darkMode ? \"rgba(0,0,0,0.8)\" : \"rgba(0,0,0,0.6)\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1000,\n opacity: isOpen ? 1 : 0,\n transition: `opacity ${transitionDuration}ms ease`,\n ...overlayStyle,\n };\n\n const baseModal: CSSProperties = {\n position: \"relative\",\n backgroundColor: darkMode ? \"#1f1f1f\" : \"#fff\",\n color: darkMode ? \"#f5f5f5\" : \"#111\",\n borderRadius: 12,\n width: \"90vw\",\n maxWidth: 700,\n maxHeight: \"90vh\",\n overflowY: \"auto\",\n padding: 24,\n boxShadow: darkMode\n ? \"0 10px 40px rgba(0,0,0,0.7)\"\n : \"0 10px 40px rgba(0,0,0,0.25)\",\n transform: isOpen ? \"scale(1)\" : \"scale(0.95)\",\n transition: `transform ${transitionDuration}ms ease, opacity ${transitionDuration}ms ease`,\n ...modalStyle,\n };\n\n const baseCloseBtn: CSSProperties = {\n position: \"absolute\",\n top: 16,\n right: 16,\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n padding: 4,\n color: darkMode ? \"#f5f5f5\" : \"#444\",\n transition: \"color 0.2s ease, transform 0.2s ease\",\n ...closeButtonStyle,\n };\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title || \"Modal\"}\n style={baseOverlay}\n onClick={handleOverlayClick}\n className={className}\n >\n <div\n ref={modalRef}\n style={baseModal}\n onClick={(e) => e.stopPropagation()} // prevent close on content click\n >\n <button\n onClick={onClose}\n aria-label=\"Close modal\"\n style={baseCloseBtn}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = darkMode ? \"#fff\" : \"#000\";\n e.currentTarget.style.transform = \"scale(1.1)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = darkMode ? \"#f5f5f5\" : \"#444\";\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n <X size={24} />\n </button>\n\n {title && (\n <h2\n style={{\n fontSize: \"1.25rem\",\n fontWeight: 600,\n marginBottom: \"1rem\",\n }}\n >\n {title}\n </h2>\n )}\n\n {children}\n </div>\n </div>\n );\n};\n","import React, { ReactNode, CSSProperties } from \"react\";\n\ninterface TableProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableSectionProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\ninterface TableCellProps {\n children: ReactNode;\n style?: CSSProperties;\n className?: string;\n}\n\n/* ---------------------------- Table Container ---------------------------- */\nexport const Table: React.FC<TableProps> = ({ children, style, className }) => (\n <div\n style={{\n overflowX: \"auto\",\n background: \"#ffffff\",\n borderRadius: 12,\n boxShadow: \"0 2px 6px rgba(0,0,0,0.05)\",\n border: \"1px solid #e5e7eb\",\n ...style,\n }}\n className={className}\n >\n <table\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n borderRadius: 12,\n overflow: \"hidden\",\n }}\n >\n {children}\n </table>\n </div>\n);\n\n/* ---------------------------- Table Head ---------------------------- */\nexport const THead: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <thead\n className={className}\n style={{\n backgroundColor: \"#f3f4f6\",\n color: \"#111827\",\n fontWeight: 600,\n ...style,\n }}\n >\n {children}\n </thead>\n);\n\n/* ---------------------------- Table Body ---------------------------- */\nexport const TBody: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <tbody\n className={className}\n style={{\n backgroundColor: \"#ffffff\",\n ...style,\n }}\n >\n {children}\n </tbody>\n);\n\n/* ---------------------------- Table Row ---------------------------- */\nexport const TRow: React.FC<TableSectionProps> = ({\n children,\n style,\n className,\n}) => (\n <tr\n className={className}\n style={{\n borderBottom: \"1px solid #e5e7eb\",\n transition: \"background 0.2s ease\",\n cursor: \"default\",\n ...style,\n }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"#f9fafb\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n {children}\n </tr>\n);\n\n/* ---------------------------- Table Head Cell ---------------------------- */\nexport const TH: React.FC<TableCellProps> = ({ children, style, className }) => (\n <th\n className={className}\n style={{\n textAlign: \"left\",\n padding: \"12px 16px\",\n fontSize: \"0.875rem\",\n color: \"#374151\",\n borderBottom: \"2px solid #e5e7eb\",\n ...style,\n }}\n >\n {children}\n </th>\n);\n\n/* ---------------------------- Table Data Cell ---------------------------- */\nexport const TD: React.FC<TableCellProps> = ({ children, style, className }) => (\n <td\n className={className}\n style={{\n padding: \"12px 16px\",\n fontSize: \"0.875rem\",\n color: \"#4b5563\",\n ...style,\n }}\n >\n {children}\n </td>\n);\n","\"use client\";\nimport React, { useState, CSSProperties, useEffect, useRef } from \"react\";\n\n/** 🧩 Types */\ninterface TabItem {\n label: React.ReactNode;\n content: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n ariaLabel?: string;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActive?: number;\n position?: \"top\" | \"left\" | \"right\";\n variant?: \"solid\" | \"outline\" | \"underline\";\n fullWidth?: boolean;\n gap?: number;\n radius?: number;\n padding?: string;\n transitionDuration?: number;\n elevation?: number;\n bordered?: boolean;\n\n /** 🎨 Colors */\n primaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n hoverColor?: string;\n activeColor?: string;\n borderColor?: string;\n disabledColor?: string;\n\n /** 📱 Responsive */\n responsiveBreakpoint?: number;\n showDrawerLabel?: string;\n drawerIcon?: React.ReactNode;\n\n /** ⚙️ Callbacks */\n onTabChange?: (index: number) => void;\n\n /** 🧱 Classes and Styles */\n className?: string;\n style?: CSSProperties;\n tabClassName?: string;\n contentClassName?: string;\n activeTabStyle?: CSSProperties;\n inactiveTabStyle?: CSSProperties;\n contentStyle?: CSSProperties;\n}\n\n/** 💎 Modern, Fully Customizable Tabs */\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActive = 0,\n position = \"top\",\n variant = \"solid\",\n fullWidth = false,\n gap = 8,\n radius = 8,\n padding = \"12px 18px\",\n transitionDuration = 200,\n elevation = 1,\n bordered = false,\n\n primaryColor = \"#2563eb\",\n backgroundColor = \"transparent\",\n textColor = \"#374151\",\n hoverColor = \"#1d4ed8\",\n activeColor = \"#ffffff\",\n borderColor = \"#e5e7eb\",\n disabledColor = \"#9ca3af\",\n\n responsiveBreakpoint = 768,\n showDrawerLabel = \"Select Tab\",\n drawerIcon = \"☰\",\n\n onTabChange,\n className = \"\",\n style,\n tabClassName = \"\",\n contentClassName = \"\",\n activeTabStyle,\n inactiveTabStyle,\n contentStyle,\n}) => {\n const [active, setActive] = useState(defaultActive);\n const [hovered, setHovered] = useState<number | null>(null);\n const [isMobile, setIsMobile] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** 📱 Responsive detection */\n useEffect(() => {\n const check = () => setIsMobile(window.innerWidth <= responsiveBreakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [responsiveBreakpoint]);\n\n /** 🎛 Handle tab change */\n const handleChange = (i: number) => {\n if (tabs[i].disabled) return;\n setActive(i);\n onTabChange?.(i);\n if (isMobile) setDrawerOpen(false);\n };\n\n /** ⚡ Keyboard navigation */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, i: number) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n handleChange((i + 1) % tabs.length);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n handleChange((i - 1 + tabs.length) % tabs.length);\n }\n };\n\n /** 🎨 Base styles */\n const baseTab: CSSProperties = {\n padding,\n borderRadius: radius,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n justifyContent: \"center\",\n fontWeight: 500,\n transition: `all ${transitionDuration}ms ease`,\n background: \"transparent\",\n border: variant === \"outline\" ? `1px solid ${borderColor}` : \"none\",\n borderBottom:\n variant === \"underline\" ? `2px solid transparent` : undefined,\n color: textColor,\n width: fullWidth ? \"100%\" : \"auto\",\n userSelect: \"none\",\n };\n\n const activeTab: CSSProperties = {\n background: variant === \"solid\" ? primaryColor : \"transparent\",\n color: activeColor,\n borderBottom:\n variant === \"underline\" ? `2px solid ${primaryColor}` : undefined,\n boxShadow:\n elevation > 0 ? `0 ${elevation}px ${elevation * 4}px ${primaryColor}33` : undefined,\n ...activeTabStyle,\n };\n\n const inactiveTab: CSSProperties = {\n ...(variant === \"outline\"\n ? { borderColor }\n : variant === \"underline\"\n ? { borderBottomColor: \"transparent\" }\n : {}),\n ...inactiveTabStyle,\n };\n\n const hoverTab: CSSProperties = {\n color: hoverColor,\n background:\n variant === \"solid\"\n ? `${primaryColor}11`\n : variant === \"outline\"\n ? `${primaryColor}11`\n : \"transparent\",\n };\n\n const disabledTab: CSSProperties = {\n color: disabledColor,\n cursor: \"not-allowed\",\n opacity: 0.6,\n };\n\n const contentBox: CSSProperties = {\n flexGrow: 1,\n borderTop: bordered && position === \"top\" ? `1px solid ${borderColor}` : undefined,\n borderLeft: bordered && position === \"left\" ? `1px solid ${borderColor}` : undefined,\n borderRight: bordered && position === \"right\" ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n ...contentStyle,\n };\n\n /** 🧱 Layout */\n const isVertical = position === \"left\" || position === \"right\";\n const layoutDir = isVertical ? \"row\" : \"column\";\n\n return (\n <div\n ref={containerRef}\n className={`modern-tabs ${className}`}\n style={{\n display: \"flex\",\n flexDirection: isVertical ? (position === \"right\" ? \"row-reverse\" : \"row\") : \"column\",\n background: backgroundColor,\n border: bordered ? `1px solid ${borderColor}` : undefined,\n borderRadius: radius,\n overflow: \"hidden\",\n ...style,\n }}\n >\n <style>\n {`\n @keyframes tab-fade {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .modern-tabs__content {\n animation: tab-fade ${transitionDuration}ms ease;\n }\n `}\n </style>\n\n {/* 📱 Mobile Drawer */}\n {isMobile ? (\n <div style={{ width: \"100%\", padding: 8 }}>\n <button\n onClick={() => setDrawerOpen(!drawerOpen)}\n style={{\n ...baseTab,\n ...activeTab,\n justifyContent: \"space-between\",\n width: \"100%\",\n fontSize: 16,\n }}\n >\n {showDrawerLabel}\n <span>{drawerIcon}</span>\n </button>\n {drawerOpen && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: 8,\n gap,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n style={{\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap,\n padding: 8,\n minWidth: isVertical ? 200 : undefined,\n }}\n >\n {tabs.map((tab, i) => {\n const isActive = i === active;\n const isHovered = hovered === i;\n const isDisabled = tab.disabled;\n return (\n <button\n key={i}\n disabled={isDisabled}\n onClick={() => handleChange(i)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onMouseEnter={() => setHovered(i)}\n onMouseLeave={() => setHovered(null)}\n className={tabClassName}\n style={{\n ...baseTab,\n ...(isActive ? activeTab : inactiveTab),\n ...(isHovered && !isActive && !isDisabled ? hoverTab : {}),\n ...(isDisabled ? disabledTab : {}),\n }}\n role=\"tab\"\n aria-selected={isActive}\n >\n {tab.icon && <span>{tab.icon}</span>}\n {tab.label}\n </button>\n );\n })}\n </div>\n )}\n\n {/* 🧠 Tab Content */}\n <div\n className={`modern-tabs__content ${contentClassName}`}\n style={contentBox}\n role=\"tabpanel\"\n >\n {tabs[active]?.content}\n </div>\n </div>\n );\n};\n","import React, { useMemo } from \"react\";\n\n/** 🎯 Limit to only HTML elements to avoid SVG union explosion */\ntype HTMLElementTag = keyof HTMLElementTagNameMap;\n\ntype TextProps<T extends HTMLElementTag = \"p\"> = {\n as?: T;\n children: React.ReactNode;\n color?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | string;\n weight?: React.CSSProperties[\"fontWeight\"];\n align?: React.CSSProperties[\"textAlign\"];\n transform?: React.CSSProperties[\"textTransform\"];\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n truncate?: boolean;\n selectable?: boolean;\n hoverable?: boolean;\n darkMode?: boolean;\n baseColor?: string;\n className?: string;\n style?: React.CSSProperties;\n onClick?: () => void;\n} & Omit<React.HTMLAttributes<HTMLElementTagNameMap[HTMLElementTag]>, \"color\" | \"style\">;\n\n/** 🎨 Utility: generate lighter/darker shades */\nfunction adjustColor(color: string, amount: number): string {\n return (\n \"#\" +\n color\n .replace(/^#/, \"\")\n .replace(/../g, (hex) =>\n (\n \"0\" +\n Math.min(255, Math.max(0, parseInt(hex, 16) + amount)).toString(16)\n ).slice(-2)\n )\n );\n}\n\n/** 🌈 Default color palettes */\nconst defaultColors = {\n light: {\n default: \"#111\",\n primary: \"#2563eb\",\n secondary: \"#64748b\",\n success: \"#16a34a\",\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n },\n dark: {\n default: \"#f8fafc\",\n primary: \"#60a5fa\",\n secondary: \"#94a3b8\",\n success: \"#22c55e\",\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n },\n};\n\n/** 💬 Main Component (HTML-only tags) */\nexport function Text<T extends HTMLElementTag = \"p\">({\n as,\n children,\n color = \"default\",\n size = \"md\",\n weight = \"normal\",\n align = \"left\",\n transform = \"none\",\n italic = false,\n underline = false,\n strikethrough = false,\n truncate = false,\n selectable = true,\n hoverable = false,\n onClick,\n darkMode = false,\n baseColor,\n className = \"\",\n style = {},\n ...rest\n}: TextProps<T>) {\n // element type as provided (constrained to HTML tags)\n const Element = (as || (\"p\" as T)) as T;\n\n /** 🎨 Dynamic color palette generation */\n const theme = useMemo(() => {\n if (!baseColor) return defaultColors[darkMode ? \"dark\" : \"light\"];\n\n const lightMode = {\n default: \"#111\",\n primary: baseColor,\n secondary: adjustColor(baseColor, -50),\n success: adjustColor(baseColor, -30),\n danger: \"#dc2626\",\n white: \"#ffffff\",\n muted: \"#6b7280\",\n };\n const darkModeTheme = {\n default: \"#f8fafc\",\n primary: adjustColor(baseColor, 80),\n secondary: adjustColor(baseColor, 120),\n success: adjustColor(baseColor, 100),\n danger: \"#f87171\",\n white: \"#ffffff\",\n muted: \"#9ca3af\",\n };\n return darkMode ? darkModeTheme : lightMode;\n }, [baseColor, darkMode]);\n\n /** 📏 Font sizes */\n const sizes: Record<string, string> = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n xl: \"1.5rem\",\n \"2xl\": \"2rem\",\n };\n\n /** 💅 Computed styles */\n const computedStyle: React.CSSProperties = {\n color: (theme as any)[color] || color,\n fontSize: sizes[size] || size,\n fontWeight: weight,\n textAlign: align,\n textTransform: transform,\n fontStyle: italic ? \"italic\" : \"normal\",\n textDecoration: underline ? \"underline\" : strikethrough ? \"line-through\" : \"none\",\n userSelect: selectable ? \"text\" : \"none\",\n overflow: truncate ? \"hidden\" : undefined,\n whiteSpace: truncate ? \"nowrap\" : undefined,\n textOverflow: truncate ? \"ellipsis\" : undefined,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.25s ease-in-out\",\n ...style,\n };\n\n /** 🧠 Hover events (narrow to HTMLElement at runtime) */\n const handleMouseEnter = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"0.8\";\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent) => {\n if (!hoverable) return;\n const target = e.currentTarget;\n if (target instanceof HTMLElement) {\n target.style.opacity = \"1\";\n }\n };\n\n /**\n * Build props object. We cast only once to the correct intrinsic props type.\n * This prevents TypeScript from having to compute giant unions for event types.\n */\n const props = {\n className,\n style: computedStyle,\n onClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ...rest,\n } as React.ComponentPropsWithoutRef<T>;\n\n // Use React.createElement to avoid JSX generic complexity\n return React.createElement(Element as any, props, children);\n}\n\nexport default Text;\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","toKebabCase","string","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","className","index","array","hasA11yProp","prop","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","__iconNode","CircleAlert","CircleCheckBig","EyeOff","Eye","Heart","Info","Maximize","Minimize","Music","Pause","Play","RotateCcw","Shuffle","SkipBack","SkipForward","TriangleAlert","User","Volume2","VolumeX","X","typeStyles","jsx","CheckCircle","AlertCircle","AlertTriangle","getPositionStyle","position","base","Alert","title","description","dismissible","duration","onClose","icon","actionButton","backgroundColor","borderColor","textColor","borderRadius","shadow","padding","fontSize","fontWeight","descriptionColor","animationDuration","maxWidth","style","visible","setVisible","useState","exiting","setExiting","useEffect","timer","bg","border","iconColor","positionStyle","containerStyle","useMemo","jsxs","Fragment","Accordion","memo","items","allowMultiple","defaultOpen","hoverBgColor","hoverTextColor","contentBgColor","contentTextColor","paddingY","paddingX","marginY","contentPadding","contentFontSize","contentFontWeight","iconOpen","iconClose","iconSize","transitionDuration","openIndexes","setOpenIndexes","contentRefs","useRef","el","toggleItem","prev","i","item","isOpen","e","sizeMap","fontSizeMap","statusSizeMap","getVariantStyles","variant","getStatusPositionStyle","offset","getSpacingOffset","spacing","dim","Avatar","src","alt","isOnline","isOffline","statusClassName","statusStyle","statusPosition","fallback","ring","ringColor","onClick","imageError","setImageError","isHovered","setIsHovered","isResponsive","dimension","statusSize","initials","n","statusColor","statusLabel","showImage","clickable","AvatarGroup","avatars","max","direction","spacingOffset","visibleAvatars","extraCount","avatar","isFirst","zIndex","AudioPlayer","thumbnail","autoPlay","loop","primaryColor","secondaryColor","width","audioRef","playerRef","isPlaying","setIsPlaying","currentTime","setCurrentTime","setDuration","volume","setVolume","isFullscreen","setIsFullscreen","isLooping","setIsLooping","togglePlayPause","handleTimeUpdate","handleSeek","rect","time","skip","seconds","toggleFullscreen","formatTime","minutes","defaultTracks","AudioGallery","tracks","galleryTitle","autoplay","currentTrackIndex","setCurrentTrackIndex","isShuffle","setIsShuffle","isLiked","setIsLiked","showVolumeSlider","setShowVolumeSlider","volumeTimeoutRef","playPauseTrack","seekTime","handleVolumeChange","percent","newVolume","newTime","nextTrack","nextIndex","prevTrack","prevIndex","toggleMute","showVolume","currentTrack","track","isActive","isCurrentlyPlaying","controlButtonStyle","Badge","text","borderWidth","iconPosition","rounded","horizontalPadding","verticalPadding","margin","notificationDot","dotColor","count","pulse","baseStyle","dotStyle","countStyle","iconStyle","defaultColors","adjustColor","amount","hex","Button","iconBefore","iconAfter","fullWidth","disabled","loading","loadingText","darkMode","baseColor","showBorder","hovered","setHovered","theme","light","dark","s","buttonStyle","CardInner","as","background","boxShadow","hoverShadow","height","hoverStyle","baseVariantStyles","cardStyle","handleMouseEnter","handleMouseLeave","ForwardedCard","Card","CheckboxGroup","options","selectedValues","onChange","readOnly","required","error","customIcon","labelStyle","iconCheckedBgColor","iconUncheckedBorderColor","errorStyle","handleChange","updatedValues","v","option","isChecked","RadioGroup","selectedValue","SwitchGroup","switchBgColor","containerWidths","Container","center","styles","computedPadding","computedMargin","computedBorderRadius","getScreenSize","resolveResponsive","screen","Flexbox","align","justify","wrap","gap","overflow","setScreen","updateScreen","computedStyle","toCssValue","val","Stack","HStack","VStack","GridView","columns","alignItems","justifyItems","screenSize","setScreenSize","onResize","resolvedColumns","DrawerButton","label","Drawer","open","backdropColor","showCloseButton","closeIconColor","closeButtonStyle","transform","drawerStyle","overlayStyle","defaultCloseButtonStyle","THEMES","DropdownInner","useId","values","defaultValue","defaultValues","placeholder","searchable","multiSelect","clearable","virtualized","dropdownMaxHeight","accentColor","menuBg","controlBg","hoverBg","selectedBg","disabledBg","disabledTextColor","placeholderColor","controlClassName","menuClassName","optionClassName","controlStyle","menuStyle","optionStyle","iconPrefix","iconSuffix","clearIcon","dropdownIcon","checkIcon","themeVars","colors","setIsOpen","selected","setSelected","selectedOptions","o","toggle","selectValue","next","clearSelection","opt","isSelected","Dropdown","Input","success","autoFocus","iconLeft","iconRight","labelColor","hoverBorderColor","focusBorderColor","errorColor","successColor","fontFamily","radius","rows","cols","maxLength","resize","showCharacterCount","inputRef","localValue","setLocalValue","useImperativeHandle","newValue","currentValue","currentBorderColor","sizes","px","py","baseInputStyle","dynamicPlaceholder","applyDynamicBorder","commonEvents","Image","borderStyle","opacity","objectFit","overlayText","overlayColor","svgIcon","responsive","lazyLoad","hoverOpacity","hoverScale","hoverRotate","onLoad","onError","useCallback","overflowStyles","ListItem","subItems","bulletColor","isInline","itemContainerStyle","contentStyle","bulletStyle","subListStyle","sub","List","titleIcon","isOrdered","listStyle","ListTag","Modal","ariaLabel","modalStyle","disableOverlayClose","modalRef","handleEsc","handleOverlayClick","baseOverlay","baseModal","baseCloseBtn","Table","THead","TBody","TRow","TH","TD","Tabs","tabs","defaultActive","elevation","bordered","hoverColor","activeColor","disabledColor","responsiveBreakpoint","showDrawerLabel","drawerIcon","onTabChange","tabClassName","contentClassName","activeTabStyle","inactiveTabStyle","active","setActive","isMobile","setIsMobile","drawerOpen","setDrawerOpen","containerRef","check","handleKeyDown","baseTab","activeTab","inactiveTab","hoverTab","disabledTab","contentBox","isVertical","tab","isDisabled","Text","weight","italic","underline","strikethrough","truncate","selectable","hoverable","Element","lightMode","darkModeTheme","target"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}
|