shekel-fe-shared-lib 1.0.2 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","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","../src/components/Button.tsx","../src/components/StatCard.tsx","../src/components/SearchInput.tsx","../src/components/Card.tsx","../src/components/Dropdown.tsx","../src/components/Select.tsx","../src/components/Table.tsx","../src/components/TableTop.tsx","../src/components/Modal.tsx","../src/components/Badge.tsx","../src/components/Steps.tsx","../src/components/Progress.tsx","../src/components/Checkbox.tsx","../src/components/SelectedItemsList.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","import React from 'react';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'outlined' | 'ghost' | 'text';\n size?: 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n loading?: boolean;\n hoverColor?: string;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n size = 'md',\n fullWidth = false,\n icon,\n iconPosition = 'left',\n loading = false,\n hoverColor,\n className = '',\n children,\n disabled,\n ...props\n}) => {\n const baseClasses = 'inline-flex items-center justify-center font-normal rounded-lg transition-all duration-300 ease-out focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-95';\n\n const variantClasses = {\n primary: 'bg-[#EC615B] hover:bg-[#D4554F] text-white focus:ring-[#EC615B] shadow-sm hover:shadow-md',\n outlined: 'border border-gray-300 bg-white hover:bg-gray-50 text-[#181918] focus:ring-gray-300',\n ghost: 'bg-gray-100 hover:bg-gray-200 text-[#181918] focus:ring-gray-300',\n text: 'text-[#181918] hover:bg-gray-100 focus:ring-gray-300',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm gap-1.5',\n md: 'px-4 py-2 text-base gap-2',\n lg: 'px-6 py-3 text-lg gap-2.5',\n };\n\n const widthClass = fullWidth ? 'w-full' : '';\n\n const combinedClassName = `${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]} ${widthClass} ${className}`;\n\n const renderIcon = () => {\n if (loading) {\n return (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n }\n return icon;\n };\n\n return (\n <button\n className={combinedClassName}\n disabled={disabled || loading}\n style={hoverColor ? {\n ['--hover-color' as any]: hoverColor,\n } : undefined}\n onMouseEnter={(e) => {\n if (hoverColor && !disabled && !loading) {\n e.currentTarget.style.backgroundColor = hoverColor;\n }\n }}\n onMouseLeave={(e) => {\n if (hoverColor && !disabled && !loading) {\n e.currentTarget.style.backgroundColor = '';\n }\n }}\n {...props}\n >\n {iconPosition === 'left' && renderIcon()}\n {children}\n {iconPosition === 'right' && renderIcon()}\n </button>\n );\n};\n\nexport default Button;\n","import React from 'react';\n\nexport interface StatCardProps {\n label: string;\n value: string | number;\n selected?: boolean;\n onClick?: () => void;\n className?: string;\n}\n\nexport const StatCard: React.FC<StatCardProps> = ({\n label,\n value,\n selected = false,\n onClick,\n className = '',\n}) => {\n const baseClasses =\n 'stat-card relative flex flex-col p-4 rounded-lg border transition-all duration-500 ease-in-out cursor-pointer overflow-hidden';\n\n const stateClasses = selected\n ? 'border-[#181918] bg-[#F4F4F4] shadow-sm scale-[1.02]'\n : 'border-gray-200 bg-white hover:border-gray-300 hover:shadow-sm';\n\n const combinedClassName = `${baseClasses} ${stateClasses} ${className}`;\n\n return (\n <div className={combinedClassName} onClick={onClick}>\n {/* Active indicator slide effect */}\n {selected && (\n <div className=\"absolute inset-0 bg-gradient-to-r from-transparent via-[#EC615B]/5 to-transparent animate-slide-in pointer-events-none\" />\n )}\n\n <div className=\"relative z-10 transition-transform duration-300 ease-out hover:scale-[0.98] active:scale-[0.96]\">\n <span className={`text-sm font-normal mb-2 block transition-colors duration-500 ${selected ? 'text-gray-700' : 'text-gray-600'}`}>\n {label}\n </span>\n <span className={`text-3xl font-semibold stat-value block transition-all duration-500 ${selected ? 'text-[#181918] scale-105' : 'text-[#181918]'}`}>\n {value}\n </span>\n </div>\n </div>\n );\n};\n\nexport default StatCard;\n","import React from 'react';\n\nexport interface SearchInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n size?: 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n onIconClick?: () => void;\n}\n\nexport const SearchInput: React.FC<SearchInputProps> = ({\n icon,\n iconPosition = 'left',\n size = 'md',\n fullWidth = false,\n className = '',\n onIconClick,\n ...props\n}) => {\n const containerBaseClasses = 'relative inline-flex items-center';\n\n const inputBaseClasses =\n 'border border-gray-300 rounded-lg focus:outline-none focus:ring-1 focus:ring-[#EC615B] focus:border-[#EC615B] transition-all duration-200 ease-in-out placeholder:text-gray-400';\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-5 py-3 text-lg',\n };\n\n const iconSizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n };\n\n const paddingWithIcon =\n iconPosition === 'left'\n ? size === 'sm'\n ? 'pl-9'\n : size === 'md'\n ? 'pl-10'\n : 'pl-12'\n : size === 'sm'\n ? 'pr-9'\n : size === 'md'\n ? 'pr-10'\n : 'pr-12';\n\n const widthClass = fullWidth ? 'w-full' : '';\n\n const inputClassName = `${inputBaseClasses} ${sizeClasses[size]} ${\n icon ? paddingWithIcon : ''\n } ${widthClass} ${className}`;\n\n const iconPositionClasses = iconPosition === 'left' ? 'left-3' : 'right-3';\n\n const defaultSearchIcon = (\n <svg\n className={iconSizeClasses[size]}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n );\n\n return (\n <div className={`${containerBaseClasses} ${widthClass}`}>\n {icon && (\n <div\n className={`absolute ${iconPositionClasses} text-gray-400 ${\n onIconClick ? 'cursor-pointer hover:text-gray-600' : ''\n }`}\n onClick={onIconClick}\n >\n {icon === true ? defaultSearchIcon : icon}\n </div>\n )}\n <input type=\"text\" className={inputClassName} {...props} />\n </div>\n );\n};\n\nexport default SearchInput;\n","import React from 'react';\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n padding?: 'none' | 'sm' | 'md' | 'lg';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n hover?: boolean;\n bordered?: boolean;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const Card: React.FC<CardProps> = ({\n padding = 'md',\n shadow = 'sm',\n hover = false,\n bordered = true,\n rounded = 'lg',\n className = '',\n children,\n ...props\n}) => {\n const baseClasses = 'card bg-white transition-all duration-300 ease-out';\n\n const paddingClasses = {\n none: 'p-0',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n };\n\n const shadowClasses = {\n none: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n };\n\n const borderClass = bordered ? 'border border-gray-200' : '';\n const hoverClass = hover ? 'cursor-pointer' : '';\n\n const combinedClassName = `${baseClasses} ${paddingClasses[padding]} ${shadowClasses[shadow]} ${roundedClasses[rounded]} ${borderClass} ${hoverClass} ${className}`;\n\n return (\n <div className={combinedClassName} {...props}>\n <div className={hover ? 'transition-transform duration-300 ease-out hover:scale-[0.98] active:scale-[0.96]' : ''}>\n {children}\n </div>\n </div>\n );\n};\n\nexport default Card;\n","import React, { useState, useRef, useEffect } from 'react';\n\nexport interface DropdownMenuItem {\n key: string;\n label: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n danger?: boolean;\n onClick?: () => void;\n}\n\nexport interface DropdownProps {\n items: DropdownMenuItem[];\n trigger?: 'click' | 'hover';\n placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n children: React.ReactNode;\n className?: string;\n overlayClassName?: string;\n disabled?: boolean;\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n items,\n trigger = 'click',\n placement = 'bottomLeft',\n children,\n className = '',\n overlayClassName = '',\n disabled = false,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n\n const handleTriggerClick = () => {\n if (!disabled && trigger === 'click') {\n setIsOpen(!isOpen);\n }\n };\n\n const handleTriggerMouseEnter = () => {\n if (!disabled && trigger === 'hover') {\n setIsOpen(true);\n }\n };\n\n const handleTriggerMouseLeave = () => {\n if (!disabled && trigger === 'hover') {\n setIsOpen(false);\n }\n };\n\n const handleMenuItemClick = (item: DropdownMenuItem) => {\n if (!item.disabled && item.onClick) {\n item.onClick();\n }\n setIsOpen(false);\n };\n\n const placementClasses = {\n bottomLeft: 'top-full left-0 mt-1',\n bottomRight: 'top-full right-0 mt-1',\n topLeft: 'bottom-full left-0 mb-1',\n topRight: 'bottom-full right-0 mb-1',\n };\n\n const animationClasses = placement.startsWith('bottom')\n ? 'dropdown-slide-down'\n : 'dropdown-slide-up';\n\n return (\n <div\n ref={dropdownRef}\n className={`relative inline-block ${className}`}\n onMouseEnter={handleTriggerMouseEnter}\n onMouseLeave={handleTriggerMouseLeave}\n >\n <div\n onClick={handleTriggerClick}\n className={`inline-flex ${disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'}`}\n >\n {children}\n </div>\n\n {isOpen && !disabled && (\n <div\n className={`absolute ${placementClasses[placement]} ${animationClasses} z-50 min-w-[160px] ${overlayClassName}`}\n >\n <div className=\"dropdown-menu bg-white rounded-lg shadow-lg border border-gray-200 py-1 overflow-hidden\">\n {items.map((item) => (\n <div\n key={item.key}\n onClick={() => handleMenuItemClick(item)}\n className={`\n dropdown-menu-item\n flex items-center gap-2 px-4 py-2 text-sm cursor-pointer transition-all duration-200 ease-out\n ${item.disabled ? 'opacity-50 cursor-not-allowed' : 'hover:bg-gray-50'}\n ${item.danger ? 'text-red-600 hover:bg-red-50' : 'text-gray-700'}\n `}\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import React, { useState, useRef, useEffect } from 'react';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps {\n options: SelectOption[];\n value?: string | number;\n defaultValue?: string | number;\n placeholder?: string;\n onChange?: (value: string | number) => void;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n className?: string;\n allowClear?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n}\n\nexport const Select: React.FC<SelectProps> = ({\n options,\n value: controlledValue,\n defaultValue,\n placeholder = 'Select an option',\n onChange,\n disabled = false,\n size = 'md',\n fullWidth = false,\n className = '',\n allowClear = false,\n showSearch = false,\n searchPlaceholder = 'Search...',\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<string | number | undefined>(\n defaultValue\n );\n const [searchQuery, setSearchQuery] = useState('');\n const selectRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (selectRef.current && !selectRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchQuery('');\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n if (showSearch && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen, showSearch]);\n\n const handleSelect = (optionValue: string | number) => {\n if (controlledValue === undefined) {\n setInternalValue(optionValue);\n }\n onChange?.(optionValue);\n setIsOpen(false);\n setSearchQuery('');\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (controlledValue === undefined) {\n setInternalValue(undefined);\n }\n onChange?.('' as any);\n };\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n const filteredOptions = showSearch\n ? options.filter((option) =>\n option.label.toLowerCase().includes(searchQuery.toLowerCase())\n )\n : options;\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-5 py-3 text-lg',\n };\n\n const widthClass = fullWidth ? 'w-full' : 'min-w-[200px]';\n\n const ChevronIcon = (\n <svg\n className={`w-4 h-4 transition-transform duration-200 ease-out ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n\n const ClearIcon = (\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n );\n\n return (\n <div ref={selectRef} className={`relative ${widthClass} ${className}`}>\n <div\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className={`\n select-trigger\n flex items-center justify-between gap-2\n border border-gray-300 rounded-lg\n bg-white\n transition-all duration-200 ease-out\n ${sizeClasses[size]}\n ${disabled ? 'opacity-50 cursor-not-allowed bg-gray-50' : 'cursor-pointer hover:border-gray-400'}\n ${isOpen ? 'border-[#EC615B] ring-2 ring-[#EC615B] ring-opacity-20' : ''}\n `}\n >\n <span className={selectedOption ? 'text-gray-900' : 'text-gray-400'}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <div className=\"flex items-center gap-1\">\n {allowClear && value && !disabled && (\n <span\n onClick={handleClear}\n className=\"text-gray-400 hover:text-gray-600 transition-colors duration-200 ease-out\"\n >\n {ClearIcon}\n </span>\n )}\n <span className=\"text-gray-400\">{ChevronIcon}</span>\n </div>\n </div>\n\n {isOpen && !disabled && (\n <div className=\"absolute top-full left-0 right-0 mt-1 z-50 dropdown-slide-down\">\n <div className=\"select-dropdown bg-white rounded-lg shadow-lg border border-gray-200 py-1 max-h-[300px] overflow-auto\">\n {showSearch && (\n <div className=\"px-2 py-2 border-b border-gray-200\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"w-full px-3 py-1.5 text-sm border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-[#EC615B] focus:border-[#EC615B] transition-all duration-200 ease-out\"\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n )}\n {filteredOptions.length === 0 ? (\n <div className=\"px-4 py-3 text-sm text-gray-500 text-center\">\n No results found\n </div>\n ) : (\n filteredOptions.map((option) => (\n <div\n key={option.value}\n onClick={() => !option.disabled && handleSelect(option.value)}\n className={`\n select-option\n px-4 py-2 text-sm cursor-pointer transition-all duration-200 ease-out\n ${option.disabled ? 'opacity-50 cursor-not-allowed' : 'hover:bg-gray-50'}\n ${option.value === value ? 'bg-[#FCEAE9] text-[#EC615B] font-medium' : 'text-[#181918]'}\n `}\n >\n {option.label}\n </div>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Select;\n","import React, { useState } from 'react';\nimport { Select } from './Select';\n\nexport interface ColumnDef<T = any> {\n key: string;\n title: string;\n dataIndex?: string;\n render?: (value: any, record: T, index: number) => React.ReactNode;\n width?: string | number;\n align?: 'left' | 'center' | 'right';\n sortable?: boolean;\n}\n\nexport interface TableProps<T = any> {\n columns: ColumnDef<T>[];\n dataSource: T[];\n rowKey?: string | ((record: T) => string);\n pagination?: PaginationConfig | false;\n loading?: boolean;\n onRow?: (record: T, index: number) => React.HTMLAttributes<HTMLTableRowElement>;\n className?: string;\n bordered?: boolean;\n striped?: boolean;\n}\n\nexport interface PaginationConfig {\n current?: number;\n pageSize?: number;\n total?: number;\n onChange?: (page: number, pageSize: number) => void;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Table = <T extends Record<string, any>>({\n columns,\n dataSource,\n rowKey = 'id',\n pagination,\n loading = false,\n onRow,\n className = '',\n bordered = false,\n striped = false,\n}: TableProps<T>) => {\n const [currentPage, setCurrentPage] = useState(\n pagination && typeof pagination === 'object' ? pagination.current || 1 : 1\n );\n const [pageSize, setPageSize] = useState(\n pagination && typeof pagination === 'object' ? pagination.pageSize || 10 : 10\n );\n\n const getRowKey = (record: T, index: number): string => {\n if (typeof rowKey === 'function') {\n return rowKey(record);\n }\n return record[rowKey] || String(index);\n };\n\n const getValue = (record: T, dataIndex?: string) => {\n if (!dataIndex) return record;\n return dataIndex.split('.').reduce((obj, key) => obj?.[key], record);\n };\n\n // Pagination logic\n const paginatedData =\n pagination === false\n ? dataSource\n : dataSource.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n if (pagination && typeof pagination === 'object' && pagination.onChange) {\n pagination.onChange(page, pageSize);\n }\n };\n\n const handlePageSizeChange = (newPageSize: number) => {\n setPageSize(newPageSize);\n setCurrentPage(1);\n if (pagination && typeof pagination === 'object' && pagination.onChange) {\n pagination.onChange(1, newPageSize);\n }\n };\n\n return (\n <div className=\"w-full\">\n <div className=\"overflow-x-auto rounded-2xl border border-[#EEEEEE]\">\n <table className={`w-full ${bordered ? 'border-collapse' : ''} ${className}`}>\n <thead className=\"bg-[#F5F6F7]\">\n <tr>\n {columns.map((column, idx) => (\n <th\n key={column.key}\n className={`px-4 py-3 text-left text-xs font-medium text-[#333333] uppercase tracking-wider ${\n bordered && idx !== columns.length - 1 ? 'border-r border-[#EEEEEE]' : ''\n } ${\n column.align === 'center'\n ? 'text-center'\n : column.align === 'right'\n ? 'text-right'\n : ''\n }`}\n style={{ width: column.width }}\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {loading ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-8 text-center text-[#333333]\">\n <div className=\"flex justify-center items-center\">\n <svg\n className=\"animate-spin h-5 w-5 mr-2\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n Loading...\n </div>\n </td>\n </tr>\n ) : paginatedData.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-8 text-center text-[#333333]\">\n No data\n </td>\n </tr>\n ) : (\n paginatedData.map((record, index) => {\n const rowProps = onRow ? onRow(record, index) : {};\n return (\n <tr\n key={getRowKey(record, index)}\n className={`${\n striped && index % 2 === 1 ? 'bg-[#F5F6F7]' : ''\n } hover:bg-gray-50 transition-colors duration-200 ease-out`}\n {...rowProps}\n >\n {columns.map((column, colIdx) => {\n const value = getValue(record, column.dataIndex);\n const content = column.render ? column.render(value, record, index) : value;\n\n return (\n <td\n key={column.key}\n className={`px-4 py-4 text-sm text-gray-900 ${\n bordered && colIdx !== columns.length - 1\n ? 'border-r border-[#EEEEEE]'\n : ''\n } ${\n column.align === 'center'\n ? 'text-center'\n : column.align === 'right'\n ? 'text-right'\n : ''\n }`}\n >\n {content as React.ReactNode}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {pagination !== false && (\n <Pagination\n current={currentPage}\n pageSize={pageSize}\n total={dataSource.length}\n onChange={handlePageChange}\n onPageSizeChange={handlePageSizeChange}\n showSizeChanger={\n pagination && typeof pagination === 'object' ? pagination.showSizeChanger : true\n }\n pageSizeOptions={\n pagination && typeof pagination === 'object'\n ? pagination.pageSizeOptions\n : [10, 20, 50, 100]\n }\n showTotal={pagination && typeof pagination === 'object' ? pagination.showTotal : true}\n size={pagination && typeof pagination === 'object' ? pagination.size : 'md'}\n />\n )}\n </div>\n );\n};\n\ninterface PaginationProps {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n current,\n pageSize,\n total,\n onChange,\n onPageSizeChange,\n showSizeChanger = true,\n pageSizeOptions = [10, 20, 50, 100],\n showTotal = true,\n size = 'md',\n}) => {\n const totalPages = Math.ceil(total / pageSize);\n const startItem = (current - 1) * pageSize + 1;\n const endItem = Math.min(current * pageSize, total);\n\n const sizeClasses = {\n sm: {\n button: 'px-2.5 py-1 text-xs',\n icon: 'h-3.5 w-3.5',\n nav: 'px-1.5 py-1.5',\n },\n md: {\n button: 'px-4 py-2 text-sm',\n icon: 'h-5 w-5',\n nav: 'px-2 py-2',\n },\n lg: {\n button: 'px-5 py-2.5 text-base',\n icon: 'h-6 w-6',\n nav: 'px-3 py-3',\n },\n };\n\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const maxVisible = 7;\n\n if (totalPages <= maxVisible) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n if (current <= 3) {\n for (let i = 1; i <= 5; i++) pages.push(i);\n pages.push('...');\n pages.push(totalPages);\n } else if (current >= totalPages - 2) {\n pages.push(1);\n pages.push('...');\n for (let i = totalPages - 4; i <= totalPages; i++) pages.push(i);\n } else {\n pages.push(1);\n pages.push('...');\n for (let i = current - 1; i <= current + 1; i++) pages.push(i);\n pages.push('...');\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n return (\n <div className=\"flex items-center justify-between px-4 py-3 border-t border-[#EEEEEE] sm:px-6 mt-4\">\n {showTotal && (\n <div className=\"text-sm text-[#181918]\">\n {startItem}-{endItem} of {total} items\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n {showSizeChanger && (\n <Select\n value={pageSize.toString()}\n onChange={(value) => onPageSizeChange(Number(value))}\n options={pageSizeOptions.map((size) => ({\n value: size.toString(),\n label: `${size} / page`,\n }))}\n size=\"sm\"\n className=\"w-32\"\n />\n )}\n\n <nav className=\"inline-flex gap-1 items-center\" aria-label=\"Pagination\">\n <button\n onClick={() => onChange(current - 1)}\n disabled={current === 1}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].nav} text-[#181918] hover:bg-gray-100 focus:z-20 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-transparent transition-all duration-300 ease-out hover:scale-110 active:scale-95`}\n >\n <svg className={sizeClasses[size].icon} viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n\n {getPageNumbers().map((page, index) => {\n if (page === '...') {\n return (\n <span\n key={`ellipsis-${index}`}\n className={`relative inline-flex items-center justify-center ${sizeClasses[size].button} font-normal text-[#181918]`}\n >\n ...\n </span>\n );\n }\n\n return (\n <button\n key={page}\n onClick={() => onChange(page as number)}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].button} font-medium transition-all duration-300 ease-out focus:z-20 hover:scale-105 active:scale-95 ${\n current === page\n ? 'bg-[#EC615B] text-white shadow-sm'\n : 'text-[#181918] hover:bg-gray-100'\n }`}\n >\n {page}\n </button>\n );\n })}\n\n <button\n onClick={() => onChange(current + 1)}\n disabled={current === totalPages}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].nav} text-[#181918] hover:bg-gray-100 focus:z-20 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-transparent transition-all duration-300 ease-out hover:scale-110 active:scale-95`}\n >\n <svg className={sizeClasses[size].icon} viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n </nav>\n </div>\n </div>\n );\n};\n\nexport default Table;\n","import React from 'react';\n\nexport interface TableTopProps {\n title?: string;\n description?: string;\n searchPlaceholder?: string;\n onSearch?: (value: string) => void;\n actions?: React.ReactNode;\n filters?: React.ReactNode;\n className?: string;\n}\n\nexport const TableTop: React.FC<TableTopProps> = ({\n title,\n description,\n searchPlaceholder = 'Search...',\n onSearch,\n actions,\n filters,\n className = '',\n}) => {\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onSearch?.(e.target.value);\n };\n\n return (\n <div className={`space-y-4 mb-4 ${className}`}>\n {/* Title and Description */}\n {(title || description) && (\n <div>\n {title && <h2 className=\"text-xl font-semibold text-gray-900\">{title}</h2>}\n {description && <p className=\"text-sm text-gray-500 mt-1\">{description}</p>}\n </div>\n )}\n\n {/* Search and Actions Row */}\n <div className=\"flex items-center justify-between gap-4\">\n {/* Search Input */}\n {onSearch && (\n <div className=\"flex-1 max-w-md\">\n <div className=\"relative\">\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg\n className=\"h-5 w-5 text-gray-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n </div>\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n onChange={handleSearchChange}\n className=\"block w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent text-sm\"\n />\n </div>\n </div>\n )}\n\n {/* Actions (Buttons) */}\n {actions && (\n <div className=\"flex items-center gap-2\">\n {actions}\n </div>\n )}\n </div>\n\n {/* Filters Row */}\n {filters && (\n <div className=\"flex items-center gap-3\">\n {filters}\n </div>\n )}\n </div>\n );\n};\n\nexport default TableTop;\n","import React, { useEffect, useState } from 'react';\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n footer?: React.ReactNode;\n width?: string | number;\n closable?: boolean;\n maskClosable?: boolean;\n centered?: boolean;\n className?: string;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n title,\n children,\n footer,\n width = '520px',\n closable = true,\n maskClosable = true,\n centered = true,\n className = '',\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n\n useEffect(() => {\n if (open) {\n setIsVisible(true);\n // Small delay to trigger animation\n setTimeout(() => setIsAnimating(true), 10);\n document.body.style.overflow = 'hidden';\n } else {\n setIsAnimating(false);\n // Wait for animation to complete before unmounting\n const timer = setTimeout(() => {\n setIsVisible(false);\n }, 200);\n document.body.style.overflow = 'unset';\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closable && open) {\n onClose();\n }\n };\n\n if (open) {\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [open, onClose, closable]);\n\n if (!isVisible) return null;\n\n const handleMaskClick = () => {\n if (maskClosable) {\n onClose();\n }\n };\n\n const handleModalClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n };\n\n return (\n <div\n className=\"fixed inset-0 z-50 overflow-y-auto\"\n onClick={handleMaskClick}\n >\n {/* Backdrop */}\n <div\n className={`fixed inset-0 bg-black transition-opacity duration-200 ease-out ${\n isAnimating ? 'opacity-50' : 'opacity-0'\n }`}\n />\n\n {/* Modal Container */}\n <div className={`flex min-h-full items-center justify-center p-4 ${centered ? 'items-center' : 'items-start pt-20'}`}>\n <div\n className={`relative bg-white rounded-lg shadow-xl transition-all duration-200 ease-out ${\n isAnimating\n ? 'opacity-100 scale-100 translate-y-0'\n : 'opacity-0 scale-95 -translate-y-4'\n } ${className}`}\n style={{ width, maxWidth: '90vw' }}\n onClick={handleModalClick}\n >\n {/* Header */}\n {(title || closable) && (\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-gray-200\">\n {title && <h3 className=\"text-lg font-semibold text-gray-900\">{title}</h3>}\n {closable && (\n <button\n onClick={onClose}\n className=\"text-gray-400 hover:text-gray-600 transition-colors duration-200 ease-out\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n\n {/* Body */}\n <div className=\"px-6 py-4 max-h-[70vh] overflow-y-auto\">\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"px-6 py-4 border-t border-gray-200 flex justify-end gap-2\">\n {footer}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import React from 'react';\n\nexport interface BadgeProps {\n children: React.ReactNode;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';\n size?: 'sm' | 'md' | 'lg';\n dot?: boolean;\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n className?: string;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n children,\n variant = 'default',\n size = 'md',\n dot = false,\n icon,\n iconPosition = 'left',\n className = '',\n}) => {\n const variantClasses = {\n default: 'bg-gray-100 text-[#181918]',\n primary: 'bg-[#FCEAE9] text-[#EC615B]',\n success: 'bg-green-100 text-green-800',\n warning: 'bg-yellow-100 text-yellow-800',\n danger: 'bg-red-100 text-red-800',\n info: 'bg-cyan-100 text-cyan-800',\n };\n\n const sizeClasses = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n };\n\n const dotSizeClasses = {\n sm: 'w-1.5 h-1.5',\n md: 'w-2 h-2',\n lg: 'w-2.5 h-2.5',\n };\n\n const dotColorClasses = {\n default: 'bg-gray-600',\n primary: 'bg-[#EC615B]',\n success: 'bg-green-600',\n warning: 'bg-yellow-600',\n danger: 'bg-red-600',\n info: 'bg-cyan-600',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-3.5 h-3.5',\n lg: 'w-4 h-4',\n };\n\n return (\n <span\n className={`inline-flex items-center gap-1.5 font-medium rounded-full transition-all duration-200 ${variantClasses[variant]} ${sizeClasses[size]} ${className}`}\n >\n {dot && (\n <span className={`rounded-full ${dotSizeClasses[size]} ${dotColorClasses[variant]}`} />\n )}\n {icon && iconPosition === 'left' && (\n <span className={`inline-flex items-center ${iconSizeClasses[size]}`}>\n {icon}\n </span>\n )}\n {children}\n {icon && iconPosition === 'right' && (\n <span className={`inline-flex items-center ${iconSizeClasses[size]}`}>\n {icon}\n </span>\n )}\n </span>\n );\n};\n\nexport default Badge;\n","import React from 'react';\n\nexport interface StepItem {\n title: string;\n description?: string;\n status?: 'wait' | 'process' | 'finish' | 'error';\n icon?: React.ReactNode;\n}\n\nexport interface StepsProps {\n items: StepItem[];\n current?: number;\n direction?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'default' | 'outline';\n className?: string;\n}\n\nexport const Steps: React.FC<StepsProps> = ({\n items,\n current = 0,\n direction = 'vertical',\n size = 'md',\n variant = 'default',\n className = '',\n}) => {\n const getStepStatus = (index: number, item: StepItem): StepItem['status'] => {\n if (item.status) return item.status;\n if (index < current) return 'finish';\n if (index === current) return 'process';\n return 'wait';\n };\n\n const iconSizeClasses = {\n sm: 'w-6 h-6',\n md: 'w-8 h-8',\n lg: 'w-10 h-10',\n };\n\n const textSizeClasses = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n };\n\n const descriptionSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n };\n\n const renderIcon = (status: StepItem['status'], icon?: React.ReactNode) => {\n if (icon) return icon;\n\n if (status === 'finish') {\n return (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n if (status === 'error') {\n return (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n return null;\n };\n\n const getStatusClasses = (status: StepItem['status']) => {\n const isOutline = variant === 'outline';\n\n switch (status) {\n case 'finish':\n return {\n icon: isOutline\n ? 'bg-white text-green-500 border-green-500'\n : 'bg-green-500 text-white border-green-500',\n title: 'text-[#181918]',\n description: 'text-gray-600',\n line: 'bg-green-500',\n };\n case 'process':\n return {\n icon: isOutline\n ? 'bg-white text-[#EC615B] border-[#EC615B]'\n : 'bg-[#EC615B] text-white border-[#EC615B]',\n title: 'text-[#181918] font-semibold',\n description: 'text-gray-700',\n line: 'bg-gray-300',\n };\n case 'error':\n return {\n icon: isOutline\n ? 'bg-white text-red-500 border-red-500'\n : 'bg-red-500 text-white border-red-500',\n title: 'text-red-600',\n description: 'text-red-500',\n line: 'bg-gray-300',\n };\n default:\n return {\n icon: 'bg-white text-gray-400 border-gray-300',\n title: 'text-gray-500',\n description: 'text-gray-400',\n line: 'bg-gray-300',\n };\n }\n };\n\n if (direction === 'horizontal') {\n return (\n <div className={`flex items-start ${className}`}>\n {items.map((item, index) => {\n const status = getStepStatus(index, item);\n const statusClasses = getStatusClasses(status);\n const isLast = index === items.length - 1;\n\n return (\n <div key={index} className=\"flex flex-1 items-start\">\n <div className=\"flex flex-col items-center\">\n <div\n className={`flex items-center justify-center ${iconSizeClasses[size]} rounded-full border transition-all duration-300 ${statusClasses.icon}`}\n >\n {renderIcon(status, item.icon)}\n </div>\n <div className=\"mt-2 text-center\">\n <div\n className={`${textSizeClasses[size]} ${statusClasses.title} transition-colors duration-300`}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className={`${descriptionSizeClasses[size]} ${statusClasses.description} mt-1 transition-colors duration-300`}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n {!isLast && (\n <div\n className={`flex-1 h-0.5 mt-4 mx-2 ${statusClasses.line} transition-colors duration-300`}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <div className={`flex flex-col ${className}`}>\n {items.map((item, index) => {\n const status = getStepStatus(index, item);\n const statusClasses = getStatusClasses(status);\n const isLast = index === items.length - 1;\n\n return (\n <div key={index} className=\"flex\">\n <div className=\"flex flex-col items-center mr-4\">\n <div\n className={`flex items-center justify-center ${iconSizeClasses[size]} rounded-full border transition-all duration-300 ${statusClasses.icon}`}\n >\n {renderIcon(status, item.icon)}\n </div>\n {!isLast && (\n <div\n className={`w-0.5 flex-1 my-1 ${statusClasses.line} transition-colors duration-300`}\n style={{ minHeight: '20px' }}\n />\n )}\n </div>\n <div className=\"flex-1 pb-6\">\n <div\n className={`${textSizeClasses[size]} ${statusClasses.title} transition-colors duration-300`}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className={`${descriptionSizeClasses[size]} ${statusClasses.description} mt-1 transition-colors duration-300`}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default Steps;\n","import React from 'react';\n\nexport interface ProgressProps {\n percent?: number;\n status?: 'normal' | 'success' | 'exception' | 'active';\n showInfo?: boolean;\n strokeColor?: string;\n strokeWidth?: number;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n format?: (percent: number) => React.ReactNode;\n}\n\nexport const Progress: React.FC<ProgressProps> = ({\n percent = 0,\n status = 'normal',\n showInfo = true,\n strokeColor,\n strokeWidth,\n size = 'md',\n className = '',\n format,\n}) => {\n const clampedPercent = Math.min(100, Math.max(0, percent));\n\n const heightClasses = {\n sm: 'h-1.5',\n md: 'h-2',\n lg: 'h-3',\n };\n\n const textSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n };\n\n const getStatusColor = () => {\n if (strokeColor) return strokeColor;\n\n switch (status) {\n case 'success':\n return 'bg-green-500';\n case 'exception':\n return 'bg-red-500';\n case 'active':\n return 'bg-[#EC615B]';\n default:\n if (clampedPercent === 100) return 'bg-green-500';\n return 'bg-[#EC615B]';\n }\n };\n\n const getStatusIcon = () => {\n if (status === 'success' || clampedPercent === 100) {\n return (\n <svg className=\"w-4 h-4 text-green-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n if (status === 'exception') {\n return (\n <svg className=\"w-4 h-4 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n return null;\n };\n\n const formatPercent = () => {\n if (format) return format(clampedPercent);\n return `${Math.round(clampedPercent)}%`;\n };\n\n const height = strokeWidth ? `${strokeWidth}px` : undefined;\n\n return (\n <div className={`flex items-center gap-2 ${className}`}>\n <div className=\"flex-1\">\n <div\n className={`w-full bg-gray-200 rounded-full overflow-hidden ${heightClasses[size]}`}\n style={{ height }}\n >\n <div\n className={`${getStatusColor()} ${heightClasses[size]} rounded-full transition-all duration-300 ease-out ${\n status === 'active' ? 'progress-active' : ''\n }`}\n style={{\n width: `${clampedPercent}%`,\n height,\n }}\n />\n </div>\n </div>\n\n {showInfo && (\n <div className={`flex items-center gap-1 ${textSizeClasses[size]} text-gray-600 font-normal`}>\n {getStatusIcon() || formatPercent()}\n </div>\n )}\n </div>\n );\n};\n\nexport default Progress;\n","import React, { useState } from 'react';\n\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n size?: 'sm' | 'md' | 'lg';\n variant?: 'filled' | 'outline';\n className?: string;\n id?: string;\n name?: string;\n value?: string;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n onChange,\n disabled = false,\n indeterminate = false,\n size = 'md',\n variant = 'filled',\n className = '',\n id,\n name,\n value,\n}) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n };\n\n const sizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-3.5 h-3.5',\n lg: 'w-4 h-4',\n };\n\n const isFilled = variant === 'filled';\n\n const getCheckboxClasses = () => {\n if (disabled) {\n return 'cursor-not-allowed opacity-50 border-gray-300 bg-gray-100';\n }\n\n if (isFilled) {\n // Filled variant\n if (!checked && !indeterminate) {\n return 'border-gray-300 bg-white hover:border-gray-400';\n }\n return 'border-[#EC615B] bg-[#EC615B] hover:bg-[#D4554F] hover:border-[#D4554F]';\n } else {\n // Outline variant\n if (!checked && !indeterminate) {\n return 'border-gray-300 bg-white hover:border-gray-400';\n }\n return 'border-[#EC615B] bg-white hover:border-[#D4554F]';\n }\n };\n\n const getIconColor = () => {\n if (isFilled) {\n return 'text-white';\n }\n return 'text-[#EC615B]';\n };\n\n return (\n <div className=\"inline-flex items-center\">\n <input\n type=\"checkbox\"\n id={id}\n name={name}\n value={value}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className=\"sr-only\"\n />\n <label\n htmlFor={id}\n className={`\n relative flex items-center justify-center\n ${sizeClasses[size]}\n ${variant === 'outline' ? 'border' : 'border-2'}\n rounded\n transition-all duration-200 ease-out\n cursor-pointer\n ${getCheckboxClasses()}\n ${className}\n `}\n >\n {/* Checkmark Icon */}\n {checked && !indeterminate && (\n <svg\n className={`${iconSizeClasses[size]} ${getIconColor()}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth={3}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n\n {/* Indeterminate Icon */}\n {indeterminate && (\n <svg\n className={`${iconSizeClasses[size]} ${getIconColor()}`}\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <rect x=\"4\" y=\"11\" width=\"16\" height=\"2\" rx=\"1\" />\n </svg>\n )}\n </label>\n </div>\n );\n};\n\nexport default Checkbox;\n","import React from 'react';\n\nexport interface SelectedItem {\n id: string | number;\n label: string;\n sublabel?: string;\n}\n\nexport interface SelectedItemsListProps {\n items: SelectedItem[];\n onRemove: (id: string | number) => void;\n emptyMessage?: string;\n className?: string;\n itemClassName?: string;\n maxHeight?: string;\n}\n\nexport const SelectedItemsList: React.FC<SelectedItemsListProps> = ({\n items,\n onRemove,\n emptyMessage = 'No items selected',\n className = '',\n itemClassName = '',\n maxHeight = '300px',\n}) => {\n if (items.length === 0) {\n return (\n <div className={`text-center py-8 text-gray-500 text-sm ${className}`}>\n {emptyMessage}\n </div>\n );\n }\n\n return (\n <div\n className={`space-y-2 overflow-y-auto ${className}`}\n style={{ maxHeight }}\n >\n {items.map((item, index) => (\n <div\n key={item.id}\n className={`\n group flex items-center justify-between\n bg-[#F4F4F4] rounded-lg px-4 py-3\n transition-all duration-300 ease-out\n hover:bg-[#EBEBEB] hover:shadow-sm\n animate-slide-in-item\n ${itemClassName}\n `}\n style={{\n animationDelay: `${index * 50}ms`,\n }}\n >\n <div className=\"flex-1 min-w-0\">\n {item.sublabel && (\n <div className=\"text-xs text-gray-500 font-normal mb-0.5\">\n {item.sublabel}\n </div>\n )}\n <div className=\"text-sm font-medium text-[#181918] truncate\">\n {item.label}\n </div>\n </div>\n\n <button\n onClick={() => onRemove(item.id)}\n className={`\n ml-3 flex-shrink-0\n w-6 h-6 rounded-full\n flex items-center justify-center\n text-gray-400\n transition-all duration-200 ease-out\n hover:bg-white hover:text-[#EC615B] hover:scale-110\n active:scale-95\n focus:outline-none focus:ring-2 focus:ring-[#EC615B] focus:ring-opacity-50\n `}\n aria-label={`Remove ${item.label}`}\n >\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n ))}\n </div>\n );\n};\n\nexport default SelectedItemsList;\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","Button","variant","size","fullWidth","icon","iconPosition","loading","hoverColor","className","disabled","baseClasses","variantClasses","sizeClasses","widthClass","combinedClassName","renderIcon","jsxs","jsx","e","StatCard","label","selected","onClick","SearchInput","onIconClick","containerBaseClasses","inputBaseClasses","iconSizeClasses","paddingWithIcon","inputClassName","iconPositionClasses","defaultSearchIcon","Card","padding","shadow","hover","bordered","rounded","paddingClasses","shadowClasses","roundedClasses","borderClass","hoverClass","Dropdown","items","trigger","placement","overlayClassName","isOpen","setIsOpen","useState","dropdownRef","useRef","useEffect","handleClickOutside","event","handleTriggerClick","handleTriggerMouseEnter","handleTriggerMouseLeave","handleMenuItemClick","item","placementClasses","animationClasses","Select","options","controlledValue","defaultValue","placeholder","onChange","allowClear","showSearch","searchPlaceholder","internalValue","setInternalValue","searchQuery","setSearchQuery","selectRef","searchInputRef","handleSelect","optionValue","handleClear","selectedOption","opt","filteredOptions","option","ChevronIcon","ClearIcon","Table","columns","dataSource","rowKey","pagination","onRow","striped","currentPage","setCurrentPage","pageSize","setPageSize","getRowKey","record","index","getValue","dataIndex","obj","paginatedData","handlePageChange","page","handlePageSizeChange","newPageSize","column","idx","rowProps","colIdx","content","Pagination","current","total","onPageSizeChange","showSizeChanger","pageSizeOptions","showTotal","totalPages","startItem","endItem","getPageNumbers","pages","TableTop","title","description","onSearch","actions","filters","handleSearchChange","Modal","open","onClose","footer","width","closable","maskClosable","centered","isVisible","setIsVisible","isAnimating","setIsAnimating","timer","handleEscape","handleMaskClick","handleModalClick","Badge","dot","dotSizeClasses","dotColorClasses","Steps","direction","getStepStatus","textSizeClasses","descriptionSizeClasses","status","getStatusClasses","isOutline","statusClasses","isLast","Progress","percent","showInfo","strokeColor","strokeWidth","format","clampedPercent","heightClasses","getStatusColor","getStatusIcon","formatPercent","height","Checkbox","controlledChecked","defaultChecked","indeterminate","id","internalChecked","setInternalChecked","isControlled","checked","handleChange","newChecked","isFilled","getCheckboxClasses","getIconColor","SelectedItemsList","onRemove","emptyMessage","itemClassName","maxHeight"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/Button.tsx","../src/components/StatCard.tsx","../src/components/SearchInput.tsx","../src/components/Card.tsx","../src/components/Dropdown.tsx","../src/components/Select.tsx","../src/components/Table.tsx","../src/components/TableTop.tsx","../src/components/Modal.tsx","../src/components/Badge.tsx","../src/components/Steps.tsx","../src/components/Progress.tsx","../src/components/Checkbox.tsx","../src/components/SelectedItemsList.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, FC, ReactNode } from 'react';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'outlined' | 'ghost' | 'text';\n size?: 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n icon?: ReactNode;\n iconPosition?: 'left' | 'right';\n loading?: boolean;\n hoverColor?: string;\n}\n\nexport const Button: FC<ButtonProps> = ({\n variant = 'primary',\n size = 'md',\n fullWidth = false,\n icon,\n iconPosition = 'left',\n loading = false,\n hoverColor,\n className = '',\n children,\n disabled,\n ...props\n}) => {\n const baseClasses = 'inline-flex items-center justify-center font-normal rounded-lg transition-all duration-300 ease-out focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-95';\n\n const variantClasses = {\n primary: 'bg-[#EC615B] hover:bg-[#D4554F] text-white focus:ring-[#EC615B] shadow-sm hover:shadow-md',\n outlined: 'border border-gray-300 bg-white hover:bg-gray-50 text-[#181918] focus:ring-gray-300',\n ghost: 'bg-gray-100 hover:bg-gray-200 text-[#181918] focus:ring-gray-300',\n text: 'text-[#181918] hover:bg-gray-100 focus:ring-gray-300',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm gap-1.5',\n md: 'px-4 py-2 text-base gap-2',\n lg: 'px-6 py-3 text-lg gap-2.5',\n };\n\n const widthClass = fullWidth ? 'w-full' : '';\n\n const combinedClassName = `${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]} ${widthClass} ${className}`;\n\n const renderIcon = () => {\n if (loading) {\n return (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n }\n return icon;\n };\n\n return (\n <button\n className={combinedClassName}\n disabled={disabled || loading}\n style={hoverColor ? {\n ['--hover-color' as any]: hoverColor,\n } : undefined}\n onMouseEnter={(e) => {\n if (hoverColor && !disabled && !loading) {\n e.currentTarget.style.backgroundColor = hoverColor;\n }\n }}\n onMouseLeave={(e) => {\n if (hoverColor && !disabled && !loading) {\n e.currentTarget.style.backgroundColor = '';\n }\n }}\n {...props}\n >\n {iconPosition === 'left' && renderIcon()}\n {children}\n {iconPosition === 'right' && renderIcon()}\n </button>\n );\n};\n\nexport default Button;\n","import type { FC } from 'react';\n\nexport interface StatCardProps {\n label: string;\n value: string | number;\n selected?: boolean;\n onClick?: () => void;\n className?: string;\n}\n\nexport const StatCard: FC<StatCardProps> = ({\n label,\n value,\n selected = false,\n onClick,\n className = '',\n}) => {\n const baseClasses =\n 'stat-card relative flex flex-col p-4 rounded-lg border transition-all duration-500 ease-in-out cursor-pointer overflow-hidden';\n\n const stateClasses = selected\n ? 'border-[#181918] bg-[#F4F4F4] shadow-sm scale-[1.02]'\n : 'border-gray-200 bg-white hover:border-gray-300 hover:shadow-sm';\n\n const combinedClassName = `${baseClasses} ${stateClasses} ${className}`;\n\n return (\n <div className={combinedClassName} onClick={onClick}>\n {/* Active indicator slide effect */}\n {selected && (\n <div className=\"absolute inset-0 bg-gradient-to-r from-transparent via-[#EC615B]/5 to-transparent animate-slide-in pointer-events-none\" />\n )}\n\n <div className=\"relative z-10 transition-transform duration-300 ease-out hover:scale-[0.98] active:scale-[0.96]\">\n <span className={`text-sm font-normal mb-2 block transition-colors duration-500 ${selected ? 'text-gray-700' : 'text-gray-600'}`}>\n {label}\n </span>\n <span className={`text-3xl font-semibold stat-value block transition-all duration-500 ${selected ? 'text-[#181918] scale-105' : 'text-[#181918]'}`}>\n {value}\n </span>\n </div>\n </div>\n );\n};\n\nexport default StatCard;\n","import type { FC, ReactNode, InputHTMLAttributes } from 'react';\n\nexport interface SearchInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n icon?: ReactNode;\n iconPosition?: 'left' | 'right';\n size?: 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n onIconClick?: () => void;\n}\n\nexport const SearchInput: FC<SearchInputProps> = ({\n icon,\n iconPosition = 'left',\n size = 'md',\n fullWidth = false,\n className = '',\n onIconClick,\n ...props\n}) => {\n const containerBaseClasses = 'relative inline-flex items-center';\n\n const inputBaseClasses =\n 'border border-gray-300 rounded-lg focus:outline-none focus:ring-1 focus:ring-[#EC615B] focus:border-[#EC615B] transition-all duration-200 ease-in-out placeholder:text-gray-400';\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-5 py-3 text-lg',\n };\n\n const iconSizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n };\n\n const paddingWithIcon =\n iconPosition === 'left'\n ? size === 'sm'\n ? 'pl-9'\n : size === 'md'\n ? 'pl-10'\n : 'pl-12'\n : size === 'sm'\n ? 'pr-9'\n : size === 'md'\n ? 'pr-10'\n : 'pr-12';\n\n const widthClass = fullWidth ? 'w-full' : '';\n\n const inputClassName = `${inputBaseClasses} ${sizeClasses[size]} ${\n icon ? paddingWithIcon : ''\n } ${widthClass} ${className}`;\n\n const iconPositionClasses = iconPosition === 'left' ? 'left-3' : 'right-3';\n\n const defaultSearchIcon = (\n <svg\n className={iconSizeClasses[size]}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n );\n\n return (\n <div className={`${containerBaseClasses} ${widthClass}`}>\n {icon && (\n <div\n className={`absolute ${iconPositionClasses} text-gray-400 ${\n onIconClick ? 'cursor-pointer hover:text-gray-600' : ''\n }`}\n onClick={onIconClick}\n >\n {icon === true ? defaultSearchIcon : icon}\n </div>\n )}\n <input type=\"text\" className={inputClassName} {...props} />\n </div>\n );\n};\n\nexport default SearchInput;\n","import type { FC, HTMLAttributes } from 'react';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n padding?: 'none' | 'sm' | 'md' | 'lg';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n hover?: boolean;\n bordered?: boolean;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const Card: FC<CardProps> = ({\n padding = 'md',\n shadow = 'sm',\n hover = false,\n bordered = true,\n rounded = 'lg',\n className = '',\n children,\n ...props\n}) => {\n const baseClasses = 'card bg-white transition-all duration-300 ease-out';\n\n const paddingClasses = {\n none: 'p-0',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n };\n\n const shadowClasses = {\n none: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n };\n\n const borderClass = bordered ? 'border border-gray-200' : '';\n const hoverClass = hover ? 'cursor-pointer' : '';\n\n const combinedClassName = `${baseClasses} ${paddingClasses[padding]} ${shadowClasses[shadow]} ${roundedClasses[rounded]} ${borderClass} ${hoverClass} ${className}`;\n\n return (\n <div className={combinedClassName} {...props}>\n <div className={hover ? 'transition-transform duration-300 ease-out hover:scale-[0.98] active:scale-[0.96]' : ''}>\n {children}\n </div>\n </div>\n );\n};\n\nexport default Card;\n","import { useState, useRef, useEffect } from 'react';\nimport type { FC, ReactNode } from 'react';\n\nexport interface DropdownMenuItem {\n key: string;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n danger?: boolean;\n onClick?: () => void;\n}\n\nexport interface DropdownProps {\n items: DropdownMenuItem[];\n trigger?: 'click' | 'hover';\n placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n children: ReactNode;\n className?: string;\n overlayClassName?: string;\n disabled?: boolean;\n}\n\nexport const Dropdown: FC<DropdownProps> = ({\n items,\n trigger = 'click',\n placement = 'bottomLeft',\n children,\n className = '',\n overlayClassName = '',\n disabled = false,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: Event) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n\n const handleTriggerClick = () => {\n if (!disabled && trigger === 'click') {\n setIsOpen(!isOpen);\n }\n };\n\n const handleTriggerMouseEnter = () => {\n if (!disabled && trigger === 'hover') {\n setIsOpen(true);\n }\n };\n\n const handleTriggerMouseLeave = () => {\n if (!disabled && trigger === 'hover') {\n setIsOpen(false);\n }\n };\n\n const handleMenuItemClick = (item: DropdownMenuItem) => {\n if (!item.disabled && item.onClick) {\n item.onClick();\n }\n setIsOpen(false);\n };\n\n const placementClasses = {\n bottomLeft: 'top-full left-0 mt-1',\n bottomRight: 'top-full right-0 mt-1',\n topLeft: 'bottom-full left-0 mb-1',\n topRight: 'bottom-full right-0 mb-1',\n };\n\n const animationClasses = placement.startsWith('bottom')\n ? 'dropdown-slide-down'\n : 'dropdown-slide-up';\n\n return (\n <div\n ref={dropdownRef}\n className={`relative inline-block ${className}`}\n onMouseEnter={handleTriggerMouseEnter}\n onMouseLeave={handleTriggerMouseLeave}\n >\n <div\n onClick={handleTriggerClick}\n className={`inline-flex ${disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'}`}\n >\n {children}\n </div>\n\n {isOpen && !disabled && (\n <div\n className={`absolute ${placementClasses[placement]} ${animationClasses} z-50 min-w-[160px] ${overlayClassName}`}\n >\n <div className=\"dropdown-menu bg-white rounded-lg shadow-lg border border-gray-200 py-1 overflow-hidden\">\n {items.map((item) => (\n <div\n key={item.key}\n onClick={() => handleMenuItemClick(item)}\n className={`\n dropdown-menu-item\n flex items-center gap-2 px-4 py-2 text-sm cursor-pointer transition-all duration-200 ease-out\n ${item.disabled ? 'opacity-50 cursor-not-allowed' : 'hover:bg-gray-50'}\n ${item.danger ? 'text-red-600 hover:bg-red-50' : 'text-gray-700'}\n `}\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import { useState, useRef, useEffect } from 'react';\nimport type { FC, MouseEvent } from 'react';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps {\n options: SelectOption[];\n value?: string | number;\n defaultValue?: string | number;\n placeholder?: string;\n onChange?: (value: string | number) => void;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n className?: string;\n allowClear?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n}\n\nexport const Select: FC<SelectProps> = ({\n options,\n value: controlledValue,\n defaultValue,\n placeholder = 'Select an option',\n onChange,\n disabled = false,\n size = 'md',\n fullWidth = false,\n className = '',\n allowClear = false,\n showSearch = false,\n searchPlaceholder = 'Search...',\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<string | number | undefined>(\n defaultValue\n );\n const [searchQuery, setSearchQuery] = useState('');\n const selectRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n useEffect(() => {\n const handleClickOutside = (event: Event) => {\n if (selectRef.current && !selectRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchQuery('');\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n if (showSearch && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen, showSearch]);\n\n const handleSelect = (optionValue: string | number) => {\n if (controlledValue === undefined) {\n setInternalValue(optionValue);\n }\n onChange?.(optionValue);\n setIsOpen(false);\n setSearchQuery('');\n };\n\n const handleClear = (e: MouseEvent) => {\n e.stopPropagation();\n if (controlledValue === undefined) {\n setInternalValue(undefined);\n }\n onChange?.('' as any);\n };\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n const filteredOptions = showSearch\n ? options.filter((option) =>\n option.label.toLowerCase().includes(searchQuery.toLowerCase())\n )\n : options;\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-5 py-3 text-lg',\n };\n\n const widthClass = fullWidth ? 'w-full' : 'min-w-[200px]';\n\n const ChevronIcon = (\n <svg\n className={`w-4 h-4 transition-transform duration-200 ease-out ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n\n const ClearIcon = (\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n );\n\n return (\n <div ref={selectRef} className={`relative ${widthClass} ${className}`}>\n <div\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className={`\n select-trigger\n flex items-center justify-between gap-2\n border border-gray-300 rounded-lg\n bg-white\n transition-all duration-200 ease-out\n ${sizeClasses[size]}\n ${disabled ? 'opacity-50 cursor-not-allowed bg-gray-50' : 'cursor-pointer hover:border-gray-400'}\n ${isOpen ? 'border-[#EC615B] ring-2 ring-[#EC615B] ring-opacity-20' : ''}\n `}\n >\n <span className={selectedOption ? 'text-gray-900' : 'text-gray-400'}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <div className=\"flex items-center gap-1\">\n {allowClear && value && !disabled && (\n <span\n onClick={handleClear}\n className=\"text-gray-400 hover:text-gray-600 transition-colors duration-200 ease-out\"\n >\n {ClearIcon}\n </span>\n )}\n <span className=\"text-gray-400\">{ChevronIcon}</span>\n </div>\n </div>\n\n {isOpen && !disabled && (\n <div className=\"absolute top-full left-0 right-0 mt-1 z-50 dropdown-slide-down\">\n <div className=\"select-dropdown bg-white rounded-lg shadow-lg border border-gray-200 py-1 max-h-[300px] overflow-auto\">\n {showSearch && (\n <div className=\"px-2 py-2 border-b border-gray-200\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"w-full px-3 py-1.5 text-sm border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-[#EC615B] focus:border-[#EC615B] transition-all duration-200 ease-out\"\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n )}\n {filteredOptions.length === 0 ? (\n <div className=\"px-4 py-3 text-sm text-gray-500 text-center\">\n No results found\n </div>\n ) : (\n filteredOptions.map((option) => (\n <div\n key={option.value}\n onClick={() => !option.disabled && handleSelect(option.value)}\n className={`\n select-option\n px-4 py-2 text-sm cursor-pointer transition-all duration-200 ease-out\n ${option.disabled ? 'opacity-50 cursor-not-allowed' : 'hover:bg-gray-50'}\n ${option.value === value ? 'bg-[#FCEAE9] text-[#EC615B] font-medium' : 'text-[#181918]'}\n `}\n >\n {option.label}\n </div>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Select;\n","import { useState } from 'react';\nimport type { FC, ReactNode, HTMLAttributes } from 'react';\nimport { Select } from './Select';\n\nexport interface ColumnDef<T = any> {\n key: string;\n title: string;\n dataIndex?: string;\n render?: (value: any, record: T, index: number) => ReactNode;\n width?: string | number;\n align?: 'left' | 'center' | 'right';\n sortable?: boolean;\n}\n\nexport interface TableProps<T = any> {\n columns: ColumnDef<T>[];\n dataSource: T[];\n rowKey?: string | ((record: T) => string);\n pagination?: PaginationConfig | false;\n loading?: boolean;\n onRow?: (record: T, index: number) => HTMLAttributes<HTMLTableRowElement>;\n className?: string;\n bordered?: boolean;\n striped?: boolean;\n}\n\nexport interface PaginationConfig {\n current?: number;\n pageSize?: number;\n total?: number;\n onChange?: (page: number, pageSize: number) => void;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Table = <T extends Record<string, any>>({\n columns,\n dataSource,\n rowKey = 'id',\n pagination,\n loading = false,\n onRow,\n className = '',\n bordered = false,\n striped = false,\n}: TableProps<T>) => {\n const [currentPage, setCurrentPage] = useState(\n pagination && typeof pagination === 'object' ? pagination.current || 1 : 1\n );\n const [pageSize, setPageSize] = useState(\n pagination && typeof pagination === 'object' ? pagination.pageSize || 10 : 10\n );\n\n const getRowKey = (record: T, index: number): string => {\n if (typeof rowKey === 'function') {\n return rowKey(record);\n }\n return record[rowKey] || String(index);\n };\n\n const getValue = (record: T, dataIndex?: string) => {\n if (!dataIndex) return record;\n return dataIndex.split('.').reduce((obj, key) => obj?.[key], record);\n };\n\n // Pagination logic\n const paginatedData =\n pagination === false\n ? dataSource\n : dataSource.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n if (pagination && typeof pagination === 'object' && pagination.onChange) {\n pagination.onChange(page, pageSize);\n }\n };\n\n const handlePageSizeChange = (newPageSize: number) => {\n setPageSize(newPageSize);\n setCurrentPage(1);\n if (pagination && typeof pagination === 'object' && pagination.onChange) {\n pagination.onChange(1, newPageSize);\n }\n };\n\n return (\n <div className=\"w-full\">\n <div className=\"overflow-x-auto rounded-2xl border border-[#EEEEEE]\">\n <table className={`w-full ${bordered ? 'border-collapse' : ''} ${className}`}>\n <thead className=\"bg-[#F5F6F7]\">\n <tr>\n {columns.map((column, idx) => (\n <th\n key={column.key}\n className={`px-4 py-3 text-left text-xs font-medium text-[#333333] uppercase tracking-wider ${\n bordered && idx !== columns.length - 1 ? 'border-r border-[#EEEEEE]' : ''\n } ${\n column.align === 'center'\n ? 'text-center'\n : column.align === 'right'\n ? 'text-right'\n : ''\n }`}\n style={{ width: column.width }}\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {loading ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-8 text-center text-[#333333]\">\n <div className=\"flex justify-center items-center\">\n <svg\n className=\"animate-spin h-5 w-5 mr-2\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n Loading...\n </div>\n </td>\n </tr>\n ) : paginatedData.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-8 text-center text-[#333333]\">\n No data\n </td>\n </tr>\n ) : (\n paginatedData.map((record, index) => {\n const rowProps = onRow ? onRow(record, index) : {};\n return (\n <tr\n key={getRowKey(record, index)}\n className={`${\n striped && index % 2 === 1 ? 'bg-[#F5F6F7]' : ''\n } hover:bg-gray-50 transition-colors duration-200 ease-out`}\n {...rowProps}\n >\n {columns.map((column, colIdx) => {\n const value = getValue(record, column.dataIndex);\n const content = column.render ? column.render(value, record, index) : value;\n\n return (\n <td\n key={column.key}\n className={`px-4 py-4 text-sm text-gray-900 ${\n bordered && colIdx !== columns.length - 1\n ? 'border-r border-[#EEEEEE]'\n : ''\n } ${\n column.align === 'center'\n ? 'text-center'\n : column.align === 'right'\n ? 'text-right'\n : ''\n }`}\n >\n {content as ReactNode}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {pagination !== false && (\n <Pagination\n current={currentPage}\n pageSize={pageSize}\n total={dataSource.length}\n onChange={handlePageChange}\n onPageSizeChange={handlePageSizeChange}\n showSizeChanger={\n pagination && typeof pagination === 'object' ? pagination.showSizeChanger : true\n }\n pageSizeOptions={\n pagination && typeof pagination === 'object'\n ? pagination.pageSizeOptions\n : [10, 20, 50, 100]\n }\n showTotal={pagination && typeof pagination === 'object' ? pagination.showTotal : true}\n size={pagination && typeof pagination === 'object' ? pagination.size : 'md'}\n />\n )}\n </div>\n );\n};\n\ninterface PaginationProps {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst Pagination: FC<PaginationProps> = ({\n current,\n pageSize,\n total,\n onChange,\n onPageSizeChange,\n showSizeChanger = true,\n pageSizeOptions = [10, 20, 50, 100],\n showTotal = true,\n size = 'md',\n}) => {\n const totalPages = Math.ceil(total / pageSize);\n const startItem = (current - 1) * pageSize + 1;\n const endItem = Math.min(current * pageSize, total);\n\n const sizeClasses = {\n sm: {\n button: 'px-2.5 py-1 text-xs',\n icon: 'h-3.5 w-3.5',\n nav: 'px-1.5 py-1.5',\n },\n md: {\n button: 'px-4 py-2 text-sm',\n icon: 'h-5 w-5',\n nav: 'px-2 py-2',\n },\n lg: {\n button: 'px-5 py-2.5 text-base',\n icon: 'h-6 w-6',\n nav: 'px-3 py-3',\n },\n };\n\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const maxVisible = 7;\n\n if (totalPages <= maxVisible) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n if (current <= 3) {\n for (let i = 1; i <= 5; i++) pages.push(i);\n pages.push('...');\n pages.push(totalPages);\n } else if (current >= totalPages - 2) {\n pages.push(1);\n pages.push('...');\n for (let i = totalPages - 4; i <= totalPages; i++) pages.push(i);\n } else {\n pages.push(1);\n pages.push('...');\n for (let i = current - 1; i <= current + 1; i++) pages.push(i);\n pages.push('...');\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n return (\n <div className=\"flex items-center justify-between px-4 py-3 border-t border-[#EEEEEE] sm:px-6 mt-4\">\n {showTotal && (\n <div className=\"text-sm text-[#181918]\">\n {startItem}-{endItem} of {total} items\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n {showSizeChanger && (\n <Select\n value={pageSize.toString()}\n onChange={(value) => onPageSizeChange(Number(value))}\n options={pageSizeOptions.map((size) => ({\n value: size.toString(),\n label: `${size} / page`,\n }))}\n size=\"sm\"\n className=\"w-32\"\n />\n )}\n\n <nav className=\"inline-flex gap-1 items-center\" aria-label=\"Pagination\">\n <button\n onClick={() => onChange(current - 1)}\n disabled={current === 1}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].nav} text-[#181918] hover:bg-gray-100 focus:z-20 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-transparent transition-all duration-300 ease-out hover:scale-110 active:scale-95`}\n >\n <svg className={sizeClasses[size].icon} viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n\n {getPageNumbers().map((page, index) => {\n if (page === '...') {\n return (\n <span\n key={`ellipsis-${index}`}\n className={`relative inline-flex items-center justify-center ${sizeClasses[size].button} font-normal text-[#181918]`}\n >\n ...\n </span>\n );\n }\n\n return (\n <button\n key={page}\n onClick={() => onChange(page as number)}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].button} font-medium transition-all duration-300 ease-out focus:z-20 hover:scale-105 active:scale-95 ${\n current === page\n ? 'bg-[#EC615B] text-white shadow-sm'\n : 'text-[#181918] hover:bg-gray-100'\n }`}\n >\n {page}\n </button>\n );\n })}\n\n <button\n onClick={() => onChange(current + 1)}\n disabled={current === totalPages}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].nav} text-[#181918] hover:bg-gray-100 focus:z-20 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-transparent transition-all duration-300 ease-out hover:scale-110 active:scale-95`}\n >\n <svg className={sizeClasses[size].icon} viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n </nav>\n </div>\n </div>\n );\n};\n\nexport default Table;\n","import type { FC, ReactNode, ChangeEvent } from 'react';\n\nexport interface TableTopProps {\n title?: string;\n description?: string;\n searchPlaceholder?: string;\n onSearch?: (value: string) => void;\n actions?: ReactNode;\n filters?: ReactNode;\n className?: string;\n}\n\nexport const TableTop: FC<TableTopProps> = ({\n title,\n description,\n searchPlaceholder = 'Search...',\n onSearch,\n actions,\n filters,\n className = '',\n}) => {\n const handleSearchChange = (e: ChangeEvent<HTMLInputElement>) => {\n onSearch?.(e.target.value);\n };\n\n return (\n <div className={`space-y-4 mb-4 ${className}`}>\n {/* Title and Description */}\n {(title || description) && (\n <div>\n {title && <h2 className=\"text-xl font-semibold text-gray-900\">{title}</h2>}\n {description && <p className=\"text-sm text-gray-500 mt-1\">{description}</p>}\n </div>\n )}\n\n {/* Search and Actions Row */}\n <div className=\"flex items-center justify-between gap-4\">\n {/* Search Input */}\n {onSearch && (\n <div className=\"flex-1 max-w-md\">\n <div className=\"relative\">\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg\n className=\"h-5 w-5 text-gray-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n </div>\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n onChange={handleSearchChange}\n className=\"block w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent text-sm\"\n />\n </div>\n </div>\n )}\n\n {/* Actions (Buttons) */}\n {actions && (\n <div className=\"flex items-center gap-2\">\n {actions}\n </div>\n )}\n </div>\n\n {/* Filters Row */}\n {filters && (\n <div className=\"flex items-center gap-3\">\n {filters}\n </div>\n )}\n </div>\n );\n};\n\nexport default TableTop;\n","import { useEffect, useState } from 'react';\nimport type { FC, ReactNode, MouseEvent } from 'react';\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n title?: string;\n children: ReactNode;\n footer?: ReactNode;\n width?: string | number;\n closable?: boolean;\n maskClosable?: boolean;\n centered?: boolean;\n className?: string;\n}\n\nexport const Modal: FC<ModalProps> = ({\n open,\n onClose,\n title,\n children,\n footer,\n width = '520px',\n closable = true,\n maskClosable = true,\n centered = true,\n className = '',\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n\n useEffect(() => {\n if (open) {\n setIsVisible(true);\n // Small delay to trigger animation\n setTimeout(() => setIsAnimating(true), 10);\n document.body.style.overflow = 'hidden';\n } else {\n setIsAnimating(false);\n // Wait for animation to complete before unmounting\n const timer = setTimeout(() => {\n setIsVisible(false);\n }, 200);\n document.body.style.overflow = 'unset';\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closable && open) {\n onClose();\n }\n };\n\n if (open) {\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [open, onClose, closable]);\n\n if (!isVisible) return null;\n\n const handleMaskClick = () => {\n if (maskClosable) {\n onClose();\n }\n };\n\n const handleModalClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n return (\n <div\n className=\"fixed inset-0 z-50 overflow-y-auto\"\n onClick={handleMaskClick}\n >\n {/* Backdrop */}\n <div\n className={`fixed inset-0 bg-black transition-opacity duration-200 ease-out ${\n isAnimating ? 'opacity-50' : 'opacity-0'\n }`}\n />\n\n {/* Modal Container */}\n <div className={`flex min-h-full items-center justify-center p-4 ${centered ? 'items-center' : 'items-start pt-20'}`}>\n <div\n className={`relative bg-white rounded-lg shadow-xl transition-all duration-200 ease-out ${\n isAnimating\n ? 'opacity-100 scale-100 translate-y-0'\n : 'opacity-0 scale-95 -translate-y-4'\n } ${className}`}\n style={{ width, maxWidth: '90vw' }}\n onClick={handleModalClick}\n >\n {/* Header */}\n {(title || closable) && (\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-gray-200\">\n {title && <h3 className=\"text-lg font-semibold text-gray-900\">{title}</h3>}\n {closable && (\n <button\n onClick={onClose}\n className=\"text-gray-400 hover:text-gray-600 transition-colors duration-200 ease-out\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n\n {/* Body */}\n <div className=\"px-6 py-4 max-h-[70vh] overflow-y-auto\">\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"px-6 py-4 border-t border-gray-200 flex justify-end gap-2\">\n {footer}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import type { FC, ReactNode } from 'react';\n\nexport interface BadgeProps {\n children: ReactNode;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';\n size?: 'sm' | 'md' | 'lg';\n dot?: boolean;\n icon?: ReactNode;\n iconPosition?: 'left' | 'right';\n className?: string;\n}\n\nexport const Badge: FC<BadgeProps> = ({\n children,\n variant = 'default',\n size = 'md',\n dot = false,\n icon,\n iconPosition = 'left',\n className = '',\n}) => {\n const variantClasses = {\n default: 'bg-gray-100 text-[#181918]',\n primary: 'bg-[#FCEAE9] text-[#EC615B]',\n success: 'bg-green-100 text-green-800',\n warning: 'bg-yellow-100 text-yellow-800',\n danger: 'bg-red-100 text-red-800',\n info: 'bg-cyan-100 text-cyan-800',\n };\n\n const sizeClasses = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n };\n\n const dotSizeClasses = {\n sm: 'w-1.5 h-1.5',\n md: 'w-2 h-2',\n lg: 'w-2.5 h-2.5',\n };\n\n const dotColorClasses = {\n default: 'bg-gray-600',\n primary: 'bg-[#EC615B]',\n success: 'bg-green-600',\n warning: 'bg-yellow-600',\n danger: 'bg-red-600',\n info: 'bg-cyan-600',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-3.5 h-3.5',\n lg: 'w-4 h-4',\n };\n\n return (\n <span\n className={`inline-flex items-center gap-1.5 font-medium rounded-full transition-all duration-200 ${variantClasses[variant]} ${sizeClasses[size]} ${className}`}\n >\n {dot && (\n <span className={`rounded-full ${dotSizeClasses[size]} ${dotColorClasses[variant]}`} />\n )}\n {icon && iconPosition === 'left' && (\n <span className={`inline-flex items-center ${iconSizeClasses[size]}`}>\n {icon}\n </span>\n )}\n {children}\n {icon && iconPosition === 'right' && (\n <span className={`inline-flex items-center ${iconSizeClasses[size]}`}>\n {icon}\n </span>\n )}\n </span>\n );\n};\n\nexport default Badge;\n","import type { FC, ReactNode } from 'react';\n\nexport interface StepItem {\n title: string;\n description?: string;\n status?: 'wait' | 'process' | 'finish' | 'error';\n icon?: ReactNode;\n}\n\nexport interface StepsProps {\n items: StepItem[];\n current?: number;\n direction?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'default' | 'outline';\n className?: string;\n}\n\nexport const Steps: FC<StepsProps> = ({\n items,\n current = 0,\n direction = 'vertical',\n size = 'md',\n variant = 'default',\n className = '',\n}) => {\n const getStepStatus = (index: number, item: StepItem): StepItem['status'] => {\n if (item.status) return item.status;\n if (index < current) return 'finish';\n if (index === current) return 'process';\n return 'wait';\n };\n\n const iconSizeClasses = {\n sm: 'w-6 h-6',\n md: 'w-8 h-8',\n lg: 'w-10 h-10',\n };\n\n const textSizeClasses = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n };\n\n const descriptionSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n };\n\n const renderIcon = (status: StepItem['status'], icon?: ReactNode) => {\n if (icon) return icon;\n\n if (status === 'finish') {\n return (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n if (status === 'error') {\n return (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n return null;\n };\n\n const getStatusClasses = (status: StepItem['status']) => {\n const isOutline = variant === 'outline';\n\n switch (status) {\n case 'finish':\n return {\n icon: isOutline\n ? 'bg-white text-green-500 border-green-500'\n : 'bg-green-500 text-white border-green-500',\n title: 'text-[#181918]',\n description: 'text-gray-600',\n line: 'bg-green-500',\n };\n case 'process':\n return {\n icon: isOutline\n ? 'bg-white text-[#EC615B] border-[#EC615B]'\n : 'bg-[#EC615B] text-white border-[#EC615B]',\n title: 'text-[#181918] font-semibold',\n description: 'text-gray-700',\n line: 'bg-gray-300',\n };\n case 'error':\n return {\n icon: isOutline\n ? 'bg-white text-red-500 border-red-500'\n : 'bg-red-500 text-white border-red-500',\n title: 'text-red-600',\n description: 'text-red-500',\n line: 'bg-gray-300',\n };\n default:\n return {\n icon: 'bg-white text-gray-400 border-gray-300',\n title: 'text-gray-500',\n description: 'text-gray-400',\n line: 'bg-gray-300',\n };\n }\n };\n\n if (direction === 'horizontal') {\n return (\n <div className={`flex items-start ${className}`}>\n {items.map((item, index) => {\n const status = getStepStatus(index, item);\n const statusClasses = getStatusClasses(status);\n const isLast = index === items.length - 1;\n\n return (\n <div key={index} className=\"flex flex-1 items-start\">\n <div className=\"flex flex-col items-center\">\n <div\n className={`flex items-center justify-center ${iconSizeClasses[size]} rounded-full border transition-all duration-300 ${statusClasses.icon}`}\n >\n {renderIcon(status, item.icon)}\n </div>\n <div className=\"mt-2 text-center\">\n <div\n className={`${textSizeClasses[size]} ${statusClasses.title} transition-colors duration-300`}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className={`${descriptionSizeClasses[size]} ${statusClasses.description} mt-1 transition-colors duration-300`}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n {!isLast && (\n <div\n className={`flex-1 h-0.5 mt-4 mx-2 ${statusClasses.line} transition-colors duration-300`}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <div className={`flex flex-col ${className}`}>\n {items.map((item, index) => {\n const status = getStepStatus(index, item);\n const statusClasses = getStatusClasses(status);\n const isLast = index === items.length - 1;\n\n return (\n <div key={index} className=\"flex\">\n <div className=\"flex flex-col items-center mr-4\">\n <div\n className={`flex items-center justify-center ${iconSizeClasses[size]} rounded-full border transition-all duration-300 ${statusClasses.icon}`}\n >\n {renderIcon(status, item.icon)}\n </div>\n {!isLast && (\n <div\n className={`w-0.5 flex-1 my-1 ${statusClasses.line} transition-colors duration-300`}\n style={{ minHeight: '20px' }}\n />\n )}\n </div>\n <div className=\"flex-1 pb-6\">\n <div\n className={`${textSizeClasses[size]} ${statusClasses.title} transition-colors duration-300`}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className={`${descriptionSizeClasses[size]} ${statusClasses.description} mt-1 transition-colors duration-300`}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default Steps;\n","import type { FC, ReactNode } from 'react';\n\nexport interface ProgressProps {\n percent?: number;\n status?: 'normal' | 'success' | 'exception' | 'active';\n showInfo?: boolean;\n strokeColor?: string;\n strokeWidth?: number;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n format?: (percent: number) => ReactNode;\n}\n\nexport const Progress: FC<ProgressProps> = ({\n percent = 0,\n status = 'normal',\n showInfo = true,\n strokeColor,\n strokeWidth,\n size = 'md',\n className = '',\n format,\n}) => {\n const clampedPercent = Math.min(100, Math.max(0, percent));\n\n const heightClasses = {\n sm: 'h-1.5',\n md: 'h-2',\n lg: 'h-3',\n };\n\n const textSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n };\n\n const getStatusColor = () => {\n if (strokeColor) return strokeColor;\n\n switch (status) {\n case 'success':\n return 'bg-green-500';\n case 'exception':\n return 'bg-red-500';\n case 'active':\n return 'bg-[#EC615B]';\n default:\n if (clampedPercent === 100) return 'bg-green-500';\n return 'bg-[#EC615B]';\n }\n };\n\n const getStatusIcon = () => {\n if (status === 'success' || clampedPercent === 100) {\n return (\n <svg className=\"w-4 h-4 text-green-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n if (status === 'exception') {\n return (\n <svg className=\"w-4 h-4 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n return null;\n };\n\n const formatPercent = () => {\n if (format) return format(clampedPercent);\n return `${Math.round(clampedPercent)}%`;\n };\n\n const height = strokeWidth ? `${strokeWidth}px` : undefined;\n\n return (\n <div className={`flex items-center gap-2 ${className}`}>\n <div className=\"flex-1\">\n <div\n className={`w-full bg-gray-200 rounded-full overflow-hidden ${heightClasses[size]}`}\n style={{ height }}\n >\n <div\n className={`${getStatusColor()} ${heightClasses[size]} rounded-full transition-all duration-300 ease-out ${\n status === 'active' ? 'progress-active' : ''\n }`}\n style={{\n width: `${clampedPercent}%`,\n height,\n }}\n />\n </div>\n </div>\n\n {showInfo && (\n <div className={`flex items-center gap-1 ${textSizeClasses[size]} text-gray-600 font-normal`}>\n {getStatusIcon() || formatPercent()}\n </div>\n )}\n </div>\n );\n};\n\nexport default Progress;\n","import { useState } from 'react';\nimport type { FC, ChangeEvent } from 'react';\n\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n size?: 'sm' | 'md' | 'lg';\n variant?: 'filled' | 'outline';\n className?: string;\n id?: string;\n name?: string;\n value?: string;\n}\n\nexport const Checkbox: FC<CheckboxProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n onChange,\n disabled = false,\n indeterminate = false,\n size = 'md',\n variant = 'filled',\n className = '',\n id,\n name,\n value,\n}) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n };\n\n const sizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-3.5 h-3.5',\n lg: 'w-4 h-4',\n };\n\n const isFilled = variant === 'filled';\n\n const getCheckboxClasses = () => {\n if (disabled) {\n return 'cursor-not-allowed opacity-50 border-gray-300 bg-gray-100';\n }\n\n if (isFilled) {\n // Filled variant\n if (!checked && !indeterminate) {\n return 'border-gray-300 bg-white hover:border-gray-400';\n }\n return 'border-[#EC615B] bg-[#EC615B] hover:bg-[#D4554F] hover:border-[#D4554F]';\n } else {\n // Outline variant\n if (!checked && !indeterminate) {\n return 'border-gray-300 bg-white hover:border-gray-400';\n }\n return 'border-[#EC615B] bg-white hover:border-[#D4554F]';\n }\n };\n\n const getIconColor = () => {\n if (isFilled) {\n return 'text-white';\n }\n return 'text-[#EC615B]';\n };\n\n return (\n <div className=\"inline-flex items-center\">\n <input\n type=\"checkbox\"\n id={id}\n name={name}\n value={value}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className=\"sr-only\"\n />\n <label\n htmlFor={id}\n className={`\n relative flex items-center justify-center\n ${sizeClasses[size]}\n ${variant === 'outline' ? 'border' : 'border-2'}\n rounded\n transition-all duration-200 ease-out\n cursor-pointer\n ${getCheckboxClasses()}\n ${className}\n `}\n >\n {/* Checkmark Icon */}\n {checked && !indeterminate && (\n <svg\n className={`${iconSizeClasses[size]} ${getIconColor()}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth={3}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n\n {/* Indeterminate Icon */}\n {indeterminate && (\n <svg\n className={`${iconSizeClasses[size]} ${getIconColor()}`}\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <rect x=\"4\" y=\"11\" width=\"16\" height=\"2\" rx=\"1\" />\n </svg>\n )}\n </label>\n </div>\n );\n};\n\nexport default Checkbox;\n","import type { FC } from 'react';\n\nexport interface SelectedItem {\n id: string | number;\n label: string;\n sublabel?: string;\n}\n\nexport interface SelectedItemsListProps {\n items: SelectedItem[];\n onRemove: (id: string | number) => void;\n emptyMessage?: string;\n className?: string;\n itemClassName?: string;\n maxHeight?: string;\n}\n\nexport const SelectedItemsList: FC<SelectedItemsListProps> = ({\n items,\n onRemove,\n emptyMessage = 'No items selected',\n className = '',\n itemClassName = '',\n maxHeight = '300px',\n}) => {\n if (items.length === 0) {\n return (\n <div className={`text-center py-8 text-gray-500 text-sm ${className}`}>\n {emptyMessage}\n </div>\n );\n }\n\n return (\n <div\n className={`space-y-2 overflow-y-auto ${className}`}\n style={{ maxHeight }}\n >\n {items.map((item, index) => (\n <div\n key={item.id}\n className={`\n group flex items-center justify-between\n bg-[#F4F4F4] rounded-lg px-4 py-3\n transition-all duration-300 ease-out\n hover:bg-[#EBEBEB] hover:shadow-sm\n animate-slide-in-item\n ${itemClassName}\n `}\n style={{\n animationDelay: `${index * 50}ms`,\n }}\n >\n <div className=\"flex-1 min-w-0\">\n {item.sublabel && (\n <div className=\"text-xs text-gray-500 font-normal mb-0.5\">\n {item.sublabel}\n </div>\n )}\n <div className=\"text-sm font-medium text-[#181918] truncate\">\n {item.label}\n </div>\n </div>\n\n <button\n onClick={() => onRemove(item.id)}\n className={`\n ml-3 flex-shrink-0\n w-6 h-6 rounded-full\n flex items-center justify-center\n text-gray-400\n transition-all duration-200 ease-out\n hover:bg-white hover:text-[#EC615B] hover:scale-110\n active:scale-95\n focus:outline-none focus:ring-2 focus:ring-[#EC615B] focus:ring-opacity-50\n `}\n aria-label={`Remove ${item.label}`}\n >\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n ))}\n </div>\n );\n};\n\nexport default SelectedItemsList;\n"],"names":["Button","variant","size","fullWidth","icon","iconPosition","loading","hoverColor","className","children","disabled","props","baseClasses","variantClasses","sizeClasses","widthClass","combinedClassName","renderIcon","jsxs","jsx","e","StatCard","label","value","selected","onClick","SearchInput","onIconClick","containerBaseClasses","inputBaseClasses","iconSizeClasses","paddingWithIcon","inputClassName","iconPositionClasses","defaultSearchIcon","Card","padding","shadow","hover","bordered","rounded","paddingClasses","shadowClasses","roundedClasses","borderClass","hoverClass","Dropdown","items","trigger","placement","overlayClassName","isOpen","setIsOpen","useState","dropdownRef","useRef","useEffect","handleClickOutside","event","handleTriggerClick","handleTriggerMouseEnter","handleTriggerMouseLeave","handleMenuItemClick","item","placementClasses","animationClasses","Select","options","controlledValue","defaultValue","placeholder","onChange","allowClear","showSearch","searchPlaceholder","internalValue","setInternalValue","searchQuery","setSearchQuery","selectRef","searchInputRef","handleSelect","optionValue","handleClear","selectedOption","opt","filteredOptions","option","ChevronIcon","ClearIcon","Table","columns","dataSource","rowKey","pagination","onRow","striped","currentPage","setCurrentPage","pageSize","setPageSize","getRowKey","record","index","getValue","dataIndex","obj","key","paginatedData","handlePageChange","page","handlePageSizeChange","newPageSize","column","idx","rowProps","colIdx","content","Pagination","current","total","onPageSizeChange","showSizeChanger","pageSizeOptions","showTotal","totalPages","startItem","endItem","getPageNumbers","pages","i","TableTop","title","description","onSearch","actions","filters","handleSearchChange","Modal","open","onClose","footer","width","closable","maskClosable","centered","isVisible","setIsVisible","isAnimating","setIsAnimating","timer","handleEscape","handleMaskClick","handleModalClick","Badge","dot","dotSizeClasses","dotColorClasses","Steps","direction","getStepStatus","textSizeClasses","descriptionSizeClasses","status","getStatusClasses","isOutline","statusClasses","isLast","Progress","percent","showInfo","strokeColor","strokeWidth","format","clampedPercent","heightClasses","getStatusColor","getStatusIcon","formatPercent","height","Checkbox","controlledChecked","defaultChecked","indeterminate","id","name","internalChecked","setInternalChecked","isControlled","checked","handleChange","newChecked","isFilled","getCheckboxClasses","getIconColor","SelectedItemsList","onRemove","emptyMessage","itemClassName","maxHeight"],"mappings":"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"}