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