@ews-admin/global-design-system 1.1.2 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/icons/DoctorIcon.d.ts +4 -0
- package/dist/icons/DoctorIcon.d.ts.map +1 -0
- package/dist/icons/Icon.d.ts +18 -0
- package/dist/icons/Icon.d.ts.map +1 -1
- package/dist/icons/PatientIcon.d.ts +4 -0
- package/dist/icons/PatientIcon.d.ts.map +1 -0
- package/dist/icons/UserIcon.d.ts +4 -0
- package/dist/icons/UserIcon.d.ts.map +1 -0
- package/dist/icons/index.d.ts +4 -1
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/index.css +3 -2
- package/dist/index.d.ts +26 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.css +3 -2
- package/dist/index.esm.js +67 -20
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +69 -19
- package/dist/index.js.map +1 -1
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/package.json +7 -3
- package/src/icons/DoctorIcon.tsx +14 -0
- package/src/icons/Icon.tsx +20 -0
- package/src/icons/PatientIcon.tsx +12 -0
- package/src/icons/UserIcon.tsx +12 -0
- package/src/icons/index.ts +6 -1
- package/src/index.ts +10 -2
- package/src/styles/index.css +162 -8
- package/src/styles/theme-variables.css +47 -0
- package/src/theme/ThemeProvider.tsx +4 -2
- package/tailwind.preset.js +166 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../src/utils/index.ts","../src/components/Button/Button.tsx","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/Icon.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/arrow-right.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/check.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/eye-off.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/eye.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/stethoscope.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/x.js","../src/icons/Icon.tsx","../src/components/Input/Input.tsx","../src/hooks/useDebounce.ts","../src/components/SearchAutocomplete/SearchAutocomplete.tsx","../src/components/MultiSearchAutocomplete/MultiSearchAutocomplete.tsx","../src/components/Modal/Modal.tsx","../src/components/Logo/Logo.tsx","../src/theme/themeConfig.ts","../src/theme/ThemeProvider.tsx","../src/components/ThemeToggle/ThemeToggle.tsx","../src/molecules/SpecialtySearchAutocomplete/SpecialtySearchAutocomplete.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from \"clsx\";\n\n/**\n * Default currency for price formatting\n */\nexport const CURRENCY = \"XOF\";\n\n/**\n * Utility function to merge class names\n * @param inputs - Class values to merge\n * @returns Merged class string\n */\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs);\n}\n\n/**\n * Utility function to format currency\n * @param amount - Amount to format\n * @param currency - Currency code (default: CURRENCY constant)\n * @returns Formatted currency string\n */\nexport function formatCurrency(amount: number, currency = CURRENCY): string {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n }).format(amount);\n}\n\n/**\n * Utility function to format date\n * @param date - Date to format\n * @param options - Intl.DateTimeFormat options\n * @returns Formatted date string\n */\nexport function formatDate(\n date: Date | string | number,\n options?: Intl.DateTimeFormatOptions\n): string {\n const dateObj = new Date(date);\n return new Intl.DateTimeFormat(\"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n ...options,\n }).format(dateObj);\n}\n\n/**\n * Utility function to debounce function calls\n * @param func - Function to debounce\n * @param wait - Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout>;\n return (...args: Parameters<T>) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func(...args), wait);\n };\n}\n\n/**\n * Utility function to generate unique ID\n * @param prefix - Optional prefix for the ID\n * @returns Unique ID string\n */\nexport function generateId(prefix = \"ews\"): string {\n return `${prefix}-${Math.random().toString(36).substr(2, 9)}`;\n}\n","import React from \"react\";\nimport { cn } from \"../../utils\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Button variant\n */\n variant?: \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"error\" | \"ghost\";\n /**\n * Button size\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /**\n * Whether the button is in a loading state\n */\n loading?: boolean;\n /**\n * Whether the button should take full width\n */\n fullWidth?: boolean;\n /**\n * Icon to display before the button text\n */\n leftIcon?: React.ReactNode;\n /**\n * Icon to display after the button text\n */\n rightIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"md\",\n loading = false,\n fullWidth = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseStyles =\n \"inline-flex items-center justify-center font-medium rounded-md transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none\";\n\n const variants = {\n primary:\n \"bg-ews-primary text-white hover:bg-ews-primary-hover focus:ring-ews-primary\",\n secondary:\n \"bg-ews-secondary text-white hover:bg-ews-secondary-hover focus:ring-ews-secondary\",\n success:\n \"bg-ews-success text-white hover:bg-ews-success-hover focus:ring-ews-success\",\n warning:\n \"bg-ews-warning text-white hover:bg-ews-warning-hover focus:ring-ews-warning\",\n error:\n \"bg-ews-error text-white hover:bg-ews-error-hover focus:ring-ews-error\",\n ghost:\n \"bg-transparent text-ews-gray-700 hover:bg-ews-gray-100 focus:ring-ews-gray-500\",\n };\n\n const sizes = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-4 py-2 text-base\",\n lg: \"px-6 py-3 text-lg\",\n };\n\n const iconSizes = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n return (\n <button\n className={cn(\n baseStyles,\n variants[variant],\n sizes[size],\n fullWidth && \"w-full\",\n className\n )}\n ref={ref}\n disabled={disabled || loading}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin -ml-1 mr-2 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 {!loading && leftIcon && (\n <span className={cn(\"mr-2 flex items-center\", iconSizes[size])}>\n {leftIcon}\n </span>\n )}\n {children}\n {!loading && rightIcon && (\n <span className={cn(\"ml-2 flex items-center\", iconSizes[size])}>\n {rightIcon}\n </span>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button };\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n];\nconst ArrowRight = createLucideIcon(\"arrow-right\", __iconNode);\n\nexport { __iconNode, ArrowRight as default };\n//# sourceMappingURL=arrow-right.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\"path\", { d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\", key: \"151rxh\" }],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst EyeOff = createLucideIcon(\"eye-off\", __iconNode);\n\nexport { __iconNode, EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M11 2v2\", key: \"1539x4\" }],\n [\"path\", { d: \"M5 2v2\", key: \"1yf1q8\" }],\n [\"path\", { d: \"M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1\", key: \"rb5t3r\" }],\n [\"path\", { d: \"M8 15a6 6 0 0 0 12 0v-3\", key: \"x18d4x\" }],\n [\"circle\", { cx: \"20\", cy: \"10\", r: \"2\", key: \"ts1r5v\" }]\n];\nconst Stethoscope = createLucideIcon(\"stethoscope\", __iconNode);\n\nexport { __iconNode, Stethoscope as default };\n//# sourceMappingURL=stethoscope.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import { LucideProps } from \"lucide-react\";\nimport React from \"react\";\n\nexport interface IconProps extends Omit<LucideProps, \"size\"> {\n /**\n * Icon size\n */\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n /**\n * The Lucide icon component to render\n */\n icon: React.ComponentType<LucideProps>;\n}\n\nconst Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ size = \"md\", icon: IconComponent, className, ...props }, ref) => {\n const sizes = {\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n };\n\n const iconSize = typeof size === \"number\" ? size : sizes[size];\n\n return (\n <IconComponent\n ref={ref}\n size={iconSize}\n className={className}\n {...props}\n />\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n\nexport { Icon };\n","import React, { useState } from \"react\";\nimport { Eye, EyeOff } from \"../../icons\";\nimport { cn } from \"../../utils\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Input variant\n */\n variant?: \"default\" | \"error\" | \"success\";\n /**\n * Input size\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /**\n * Label for the input\n */\n label?: string;\n /**\n * Helper text to display below the input\n */\n helperText?: string;\n /**\n * Error message to display\n */\n error?: string;\n /**\n * Icon to display before the input\n */\n leftIcon?: React.ReactNode;\n /**\n * Icon to display after the input\n */\n rightIcon?: React.ReactNode;\n /**\n * Whether the input should take full width\n */\n fullWidth?: boolean;\n /**\n * Whether to show password toggle for password inputs\n */\n showPasswordToggle?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n label,\n helperText,\n error,\n leftIcon,\n rightIcon,\n fullWidth = false,\n showPasswordToggle = false,\n id,\n type = \"text\",\n ...props\n },\n ref\n ) => {\n const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;\n const hasError = Boolean(error);\n const actualVariant = hasError ? \"error\" : variant;\n\n // Password visibility state\n const [showPassword, setShowPassword] = useState(false);\n const isPasswordInput = type === \"password\";\n const shouldShowPasswordToggle = showPasswordToggle && isPasswordInput;\n const actualType = isPasswordInput && showPassword ? \"text\" : type;\n\n const baseStyles =\n \"block w-full rounded-md border transition-colors focus:outline-none focus:ring-2 focus:ring-offset-0 hover:border-ews-primary\";\n\n const variants = {\n default:\n \"border-ews-gray-300 focus:border-ews-primary focus:ring-ews-primary\",\n error: \"border-ews-error focus:border-ews-error focus:ring-ews-error\",\n success:\n \"border-ews-success focus:border-ews-success focus:ring-ews-success\",\n };\n\n const sizes = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-3 py-2 text-base\",\n lg: \"px-4 py-3 text-lg\",\n };\n\n const iconSizes = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n return (\n <div className={cn(\"space-y-1\", fullWidth ? \"w-full\" : \"w-auto\")}>\n {label && (\n <label\n htmlFor={inputId}\n className=\"block text-sm font-medium text-ews-gray-700\"\n >\n {label}\n </label>\n )}\n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <span className={cn(\"text-ews-gray-400\", iconSizes[size])}>\n {leftIcon}\n </span>\n </div>\n )}\n <input\n id={inputId}\n type={actualType}\n className={cn(\n baseStyles,\n variants[actualVariant],\n sizes[size],\n leftIcon && \"pl-10\",\n (rightIcon || shouldShowPasswordToggle) && \"pr-10\",\n className\n )}\n ref={ref}\n {...props}\n />\n {rightIcon && !shouldShowPasswordToggle && (\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none\">\n <span className={cn(\"text-ews-gray-400\", iconSizes[size])}>\n {rightIcon}\n </span>\n </div>\n )}\n {shouldShowPasswordToggle && (\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center\"\n onClick={() => setShowPassword(!showPassword)}\n tabIndex={-1}\n >\n <span\n className={cn(\n \"text-ews-gray-400 hover:text-ews-gray-600 transition-colors\",\n iconSizes[size]\n )}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </span>\n </button>\n )}\n </div>\n {(error || helperText) && (\n <p\n className={cn(\n \"text-sm\",\n error ? \"text-ews-error\" : \"text-ews-gray-500\"\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import { useEffect, useState } from \"react\";\n\nconst DEFAULT_DELAY = 500;\n\n/**\n * A custom hook that debounces a value\n * @param value - The value to debounce\n * @param delay - The delay in milliseconds (optional, defaults to 300ms)\n * @returns The debounced value\n */\nexport function useDebounce<T>(value: T, delay?: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n const actualDelay = delay ?? DEFAULT_DELAY;\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, actualDelay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, actualDelay]);\n\n return debouncedValue;\n}\n\n/**\n * A custom hook that provides a debounced callback function\n * @param callback - The function to debounce\n * @param delay - The delay in milliseconds (optional, defaults to 300ms)\n * @returns A debounced version of the callback\n */\nexport function useDebouncedCallback<T extends (...args: unknown[]) => unknown>(\n callback: T,\n delay?: number\n): T {\n const [debounceTimer, setDebounceTimer] = useState<ReturnType<\n typeof setTimeout\n > | null>(null);\n\n const debouncedCallback = ((...args: Parameters<T>) => {\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n const actualDelay = delay ?? DEFAULT_DELAY;\n const newTimer = setTimeout(() => {\n callback(...args);\n }, actualDelay);\n\n setDebounceTimer(newTimer);\n }) as T;\n\n useEffect(() => {\n return () => {\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n };\n }, [debounceTimer]);\n\n return debouncedCallback;\n}\n","import { LucideIcon, Search, X } from \"lucide-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { useDebounce } from \"../../hooks\";\nimport { Input } from \"../Input/Input\";\n\n// Generic interface for searchable entities\nexport interface SearchableEntity {\n id: string;\n [key: string]: string | number | boolean | undefined;\n}\n\ninterface SearchAutocompleteProps<T extends SearchableEntity> {\n onSelect: (id: string) => void;\n selectedId: string;\n searchFunction: (keyword: string) => Promise<T[]>;\n getEntityById?: (id: string) => Promise<T | undefined>;\n getDisplayValue: (entity: T) => string;\n getSecondaryText?: (entity: T) => string | null;\n placeholder: string;\n icon?: LucideIcon;\n disabled?: boolean;\n minSearchLength?: number;\n debounceTime?: number;\n error?: string;\n}\n\nexport function SearchAutocomplete<T extends SearchableEntity>({\n onSelect,\n selectedId,\n searchFunction,\n getEntityById,\n getDisplayValue,\n getSecondaryText,\n placeholder,\n icon = Search,\n disabled = false,\n minSearchLength = 2,\n debounceTime = 300,\n error,\n}: SearchAutocompleteProps<T>) {\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [entities, setEntities] = useState<T[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [showDropdown, setShowDropdown] = useState(false);\n const [selectedEntity, setSelectedEntity] = useState<T | null>(null);\n const [initialLoadDone, setInitialLoadDone] = useState(false);\n const [searchError, setSearchError] = useState<string | null>(null);\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const debouncedSearchTerm = useDebounce(searchTerm, debounceTime);\n\n // Track if this is an initial load or a user-initiated search\n const isUserSearch = useRef(false);\n\n // Only fetch the selected entity by ID once on initial load\n useEffect(() => {\n const fetchSelectedEntity = async () => {\n // Only fetch if we have a selectedId, getEntityById function, and haven't loaded yet\n if (!selectedId || !getEntityById || initialLoadDone) return;\n\n setIsLoading(true);\n try {\n const entity = await getEntityById(selectedId);\n if (entity) {\n setSelectedEntity(entity);\n setSearchTerm(getDisplayValue(entity));\n }\n } catch (error) {\n console.error(\"Error fetching selected entity:\", error);\n } finally {\n setIsLoading(false);\n setInitialLoadDone(true);\n }\n };\n\n fetchSelectedEntity();\n }, [selectedId, getEntityById, getDisplayValue, initialLoadDone]);\n\n // Handle search term changes - only for user-initiated searches\n useEffect(() => {\n // Skip if this is just setting the initial value\n if (!isUserSearch.current) return;\n\n // Clear entities if search term is too short\n if (searchTerm.trim().length < minSearchLength) {\n setEntities([]);\n setSearchError(null);\n }\n }, [searchTerm, minSearchLength]);\n\n // Fetch entities when debounced search term changes - only for user searches\n useEffect(() => {\n const fetchEntities = async () => {\n if (\n !debouncedSearchTerm ||\n debouncedSearchTerm.length < minSearchLength\n ) {\n return;\n }\n\n setIsLoading(true);\n setSearchError(null);\n try {\n const results = await searchFunction(debouncedSearchTerm);\n setEntities(results);\n } catch (error) {\n console.error(\"Error fetching search results:\", error);\n setSearchError(\n error instanceof Error ? error.message : \"Search failed\"\n );\n } finally {\n setIsLoading(false);\n }\n };\n\n // Only fetch if this is a user-initiated search\n if (isUserSearch.current) {\n fetchEntities();\n }\n }, [debouncedSearchTerm, searchFunction, minSearchLength]);\n\n // Handle click outside to close dropdown\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setShowDropdown(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n\n // Mark this as a user-initiated search\n isUserSearch.current = true;\n\n setSearchTerm(value);\n\n if (selectedEntity) {\n setSelectedEntity(null);\n onSelect(\"\");\n }\n\n setShowDropdown(value.trim().length >= minSearchLength);\n };\n\n const handleEntitySelect = (entity: T) => {\n // This is a user selection, not an API fetch\n isUserSearch.current = false;\n\n console.log(`Selected entity with ID: ${entity.id}`);\n\n setSelectedEntity(entity);\n setSearchTerm(getDisplayValue(entity));\n onSelect(entity.id);\n setShowDropdown(false);\n };\n\n const handleClearSelection = () => {\n // This is a user action, but not a search\n isUserSearch.current = false;\n\n setSelectedEntity(null);\n setSearchTerm(\"\");\n onSelect(\"\");\n };\n\n return (\n <div className=\"relative\" ref={dropdownRef}>\n <div className=\"relative\">\n <Input\n type=\"text\"\n placeholder={`${placeholder} (min. ${minSearchLength} characters)`}\n value={selectedEntity ? \"\" : searchTerm}\n onChange={handleSearchChange}\n onFocus={() =>\n searchTerm.length >= minSearchLength &&\n isUserSearch.current &&\n setShowDropdown(true)\n }\n disabled={disabled}\n autoComplete=\"off\"\n name=\"search-autocomplete\"\n leftIcon={React.createElement(icon, { size: 16 })}\n />\n\n {selectedEntity && (\n <button\n type=\"button\"\n className=\"flex absolute inset-y-0 right-0 items-center pr-3\"\n onClick={handleClearSelection}\n disabled={disabled}\n >\n <X className=\"w-5 h-5 text-gray-400 hover:text-gray-500\" />\n </button>\n )}\n </div>\n\n {/* Selected Entity Display */}\n {selectedEntity && (\n <div className=\"p-4 mt-3 rounded-lg border bg-neutral-50 border-neutral-200\">\n <div className=\"flex justify-between items-center\">\n <div className=\"flex items-center\">\n {(selectedEntity as { photoUrl?: string }).photoUrl ? (\n <img\n src={(selectedEntity as { photoUrl?: string }).photoUrl!}\n alt={getDisplayValue(selectedEntity)}\n className=\"object-cover mr-3 w-10 h-10 rounded-full\"\n />\n ) : (\n React.createElement(icon, {\n className: \"w-10 h-10 text-neutral-400 mr-3\",\n })\n )}\n <div>\n <div className=\"font-medium text-neutral-900\">\n {getDisplayValue(selectedEntity)}\n </div>\n {getSecondaryText && getSecondaryText(selectedEntity) && (\n <div className=\"text-sm text-neutral-500\">\n {getSecondaryText(selectedEntity)}\n </div>\n )}\n </div>\n </div>\n <button\n type=\"button\"\n onClick={handleClearSelection}\n className=\"transition-colors text-neutral-400 hover:text-neutral-600\"\n disabled={disabled}\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n )}\n\n {showDropdown && entities?.length > 0 && (\n <div className=\"overflow-auto absolute z-10 mt-1 w-full max-h-60 bg-white rounded-md shadow-lg\">\n <ul className=\"py-1\">\n {entities.map((entity) => (\n <li\n key={entity.id}\n className=\"px-4 py-2 cursor-pointer hover:bg-gray-100\"\n onClick={() => handleEntitySelect(entity)}\n >\n <div className=\"flex items-center\">\n {React.createElement(icon, {\n className: \"w-4 h-4 text-gray-400\",\n })}\n <div className=\"ml-2\">\n <div className=\"font-medium\">{getDisplayValue(entity)}</div>\n {getSecondaryText && getSecondaryText(entity) && (\n <div className=\"text-xs text-gray-500\">\n {getSecondaryText(entity)}\n </div>\n )}\n </div>\n </div>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {showDropdown && searchError && (\n <div className=\"absolute z-10 p-4 mt-1 w-full text-center text-red-600 bg-white rounded-md shadow-lg border border-red-200\">\n <div className=\"flex items-center justify-center\">\n <X className=\"w-4 h-4 mr-2\" />\n Error: {searchError}\n </div>\n </div>\n )}\n\n {showDropdown && error && !searchError && (\n <div className=\"absolute z-10 p-4 mt-1 w-full text-center text-red-600 bg-white rounded-md shadow-lg border border-red-200\">\n <div className=\"flex items-center justify-center\">\n <X className=\"w-4 h-4 mr-2\" />\n {error}\n </div>\n </div>\n )}\n\n {showDropdown &&\n debouncedSearchTerm &&\n entities?.length === 0 &&\n !isLoading &&\n !searchError &&\n !error && (\n <div className=\"absolute z-10 p-4 mt-1 w-full text-center text-gray-500 bg-white rounded-md shadow-lg\">\n {debouncedSearchTerm.length < minSearchLength\n ? `Type at least ${minSearchLength} characters to search`\n : \"No results found. Try a different search term.\"}\n </div>\n )}\n\n {isLoading && showDropdown && (\n <div className=\"absolute z-10 p-4 mt-1 w-full text-center text-gray-500 bg-white rounded-md shadow-lg\">\n <div className=\"flex items-center justify-center\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-ews-primary mr-2\"></div>\n Loading...\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { Check, Search, X } from \"lucide-react\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useDebounce } from \"../../hooks\";\nimport { cn } from \"../../utils\";\nimport { Input } from \"../Input/Input\";\nimport { SearchableEntity } from \"../SearchAutocomplete/SearchAutocomplete\";\n\ninterface MultiSearchAutocompleteProps<T extends SearchableEntity> {\n items: T[];\n selectedItems: T[];\n onSelectionChange: (items: T[]) => void;\n onSearch: (searchTerm: string) => Promise<void>;\n getEntityById?: (id: string) => Promise<T | undefined>;\n getPrimaryText: (entity: T) => string;\n getSecondaryText?: (entity: T) => string | null;\n placeholder: string;\n disabled?: boolean;\n loading?: boolean;\n multiple?: boolean;\n className?: string;\n renderSelectedItem?: (entity: T) => React.ReactNode;\n renderListItem?: (entity: T, isSelected: boolean) => React.ReactNode;\n keepOpenOnSelect?: boolean;\n error?: string;\n minSearchLength?: number;\n debounceTime?: number;\n}\n\nexport function MultiSearchAutocomplete<T extends SearchableEntity>({\n items,\n selectedItems,\n onSelectionChange,\n onSearch,\n getEntityById,\n getPrimaryText,\n getSecondaryText,\n placeholder,\n disabled = false,\n loading = false,\n multiple = true,\n className,\n renderSelectedItem,\n renderListItem,\n keepOpenOnSelect = true,\n error,\n minSearchLength = 2,\n debounceTime = 300,\n}: MultiSearchAutocompleteProps<T>) {\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const [filteredItems, setFilteredItems] = useState<T[]>(items);\n const [isSearching, setIsSearching] = useState(false);\n const [searchError, setSearchError] = useState<string | null>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const debouncedSearchTerm = useDebounce(searchTerm, debounceTime);\n\n // Handle search term changes\n useEffect(() => {\n // If search term is empty, show all items\n if (!searchTerm.trim()) {\n setFilteredItems(items);\n setSearchError(null);\n return;\n }\n\n // If search term is too short, don't search\n if (searchTerm.length < minSearchLength) {\n setFilteredItems([]);\n setSearchError(null);\n return;\n }\n }, [searchTerm, items, minSearchLength]);\n\n // Debounced search with API calls\n useEffect(() => {\n // If debounced search term is empty or too short, don't search\n if (\n !debouncedSearchTerm.trim() ||\n debouncedSearchTerm.length < minSearchLength\n ) {\n return;\n }\n\n const performSearch = async () => {\n try {\n setIsSearching(true);\n setSearchError(null);\n await onSearch(debouncedSearchTerm);\n } catch (err) {\n setSearchError(err instanceof Error ? err.message : \"Search failed\");\n } finally {\n setIsSearching(false);\n }\n };\n\n performSearch();\n }, [debouncedSearchTerm, onSearch, minSearchLength]);\n\n // Update filtered items when items prop changes\n useEffect(() => {\n setFilteredItems(items);\n }, [items]);\n\n const handleItemToggle = useCallback(\n (item: T) => {\n if (multiple) {\n const isSelected = selectedItems.some(\n (selected) => selected.id === item.id\n );\n\n if (isSelected) {\n onSelectionChange(\n selectedItems.filter((selected) => selected.id !== item.id)\n );\n } else {\n onSelectionChange([...selectedItems, item]);\n }\n // Keep dropdown open for multiple selection\n if (keepOpenOnSelect) {\n setIsOpen(true);\n }\n } else {\n onSelectionChange([item]);\n setIsOpen(false);\n }\n },\n [selectedItems, onSelectionChange, multiple, keepOpenOnSelect]\n );\n\n const handleRemoveItem = useCallback(\n (itemToRemove: T) => {\n onSelectionChange(\n selectedItems.filter((item) => item.id !== itemToRemove.id)\n );\n },\n [selectedItems, onSelectionChange]\n );\n\n const handleInputFocus = () => {\n if (!disabled) {\n setIsOpen(true);\n }\n };\n\n const handleInputBlur = () => {\n // Don't close immediately to allow for clicks on dropdown items\n // Only close if keepOpenOnSelect is false\n if (!keepOpenOnSelect) {\n setTimeout(() => setIsOpen(false), 150);\n }\n };\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n const handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscapeKey);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscapeKey);\n };\n }, [isOpen]);\n\n // Default render functions\n const defaultRenderSelectedItem = (entity: T) => (\n <span className=\"inline-flex items-center px-3 py-1 text-sm font-medium rounded-full bg-ews-primary/10 text-ews-primary border border-ews-primary/20\">\n {getPrimaryText(entity)}\n <button\n type=\"button\"\n onClick={() => handleRemoveItem(entity)}\n className=\"ml-2 text-ews-primary/60 hover:text-ews-primary\"\n disabled={disabled}\n title=\"Remove item\"\n >\n <X className=\"w-3 h-3\" />\n </button>\n </span>\n );\n\n const defaultRenderListItem = (entity: T, isSelected: boolean) => (\n <div className=\"flex items-center space-x-3\">\n <div\n className={cn(\n \"w-5 h-5 border-2 rounded flex items-center justify-center\",\n isSelected ? \"bg-ews-primary border-ews-primary\" : \"border-gray-300\"\n )}\n >\n {isSelected && <Check className=\"w-3 h-3 text-white\" />}\n </div>\n <div className=\"flex flex-col\">\n <span\n className={cn(\n \"font-medium\",\n isSelected ? \"text-ews-primary\" : \"text-gray-900\"\n )}\n >\n {getPrimaryText(entity)}\n </span>\n {getSecondaryText && (\n <span\n className={cn(\n \"text-sm\",\n isSelected ? \"text-ews-primary/70\" : \"text-gray-500\"\n )}\n >\n {getSecondaryText(entity)}\n </span>\n )}\n </div>\n </div>\n );\n\n return (\n <div className={cn(\"relative\", className)} ref={dropdownRef}>\n {/* Selected items display */}\n {selectedItems.length > 0 && (\n <div className=\"flex flex-wrap gap-2 mb-3\">\n {selectedItems.map((item) => (\n <div key={item.id}>\n {renderSelectedItem\n ? renderSelectedItem(item)\n : defaultRenderSelectedItem(item)}\n </div>\n ))}\n </div>\n )}\n\n {/* Search input */}\n <Input\n ref={inputRef}\n type=\"text\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n placeholder={placeholder}\n disabled={disabled}\n leftIcon={<Search className=\"w-4 h-4\" />}\n className=\"w-full\"\n />\n\n {/* Dropdown */}\n {isOpen && !disabled && (\n <div className=\"absolute z-10 mt-1 w-full max-h-60 bg-white rounded-lg border border-gray-200 shadow-lg overflow-auto\">\n {loading || isSearching ? (\n <div className=\"px-4 py-3 text-sm text-gray-500 flex items-center\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-ews-primary mr-2\"></div>\n {isSearching ? \"Searching...\" : \"Loading...\"}\n </div>\n ) : searchError ? (\n <div className=\"px-4 py-3 text-sm text-red-600\">\n <div className=\"flex items-center\">\n <X className=\"w-4 h-4 mr-2\" />\n Error: {searchError}\n </div>\n </div>\n ) : error ? (\n <div className=\"px-4 py-3 text-sm text-red-600\">\n <div className=\"flex items-center\">\n <X className=\"w-4 h-4 mr-2\" />\n {error}\n </div>\n </div>\n ) : filteredItems.length === 0 ? (\n <div className=\"px-4 py-3 text-sm text-gray-500\">\n {searchTerm.length < minSearchLength\n ? `Type at least ${minSearchLength} characters to search`\n : \"No items found\"}\n </div>\n ) : (\n <div className=\"py-1\">\n {filteredItems.map((item) => {\n const isSelected = selectedItems.some(\n (selected) => selected.id === item.id\n );\n\n return (\n <button\n key={item.id}\n type=\"button\"\n onClick={() => handleItemToggle(item)}\n className={cn(\n \"w-full px-4 py-3 text-left flex items-center transition-colors\",\n isSelected\n ? \"bg-ews-primary/10 text-ews-primary border-l-4 border-ews-primary\"\n : \"hover:bg-ews-primary/5 text-gray-900\"\n )}\n >\n {renderListItem\n ? renderListItem(item, isSelected)\n : defaultRenderListItem(item, isSelected)}\n </button>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { AlertCircle, AlertTriangle, CheckCircle, X } from \"lucide-react\";\nimport React, { useEffect } from \"react\";\nimport { cn } from \"../../utils\";\nimport { Button } from \"../Button/Button\";\n\nexport interface ErrorField {\n name: string;\n message: string;\n path: string;\n}\n\nexport interface ErrorObject {\n code: string;\n message: string;\n fields: ErrorField[];\n}\n\nexport interface ModalProps {\n /**\n * Whether the modal is open\n */\n isOpen: boolean;\n /**\n * Function to call when modal should be closed\n */\n onClose: () => void;\n /**\n * Modal title\n */\n title: string;\n /**\n * Modal content/description\n */\n children: React.ReactNode;\n /**\n * Modal variant\n */\n variant?: \"error\" | \"warning\" | \"confirmation\" | \"info\";\n /**\n * Primary action button text\n */\n primaryAction?: string;\n /**\n * Secondary action button text\n */\n secondaryAction?: string;\n /**\n * Function to call when primary action is clicked\n */\n onPrimaryAction?: () => void;\n /**\n * Function to call when secondary action is clicked\n */\n onSecondaryAction?: () => void;\n /**\n * Whether the primary action button is loading\n */\n isLoading?: boolean;\n /**\n * Whether the modal can be closed by clicking outside or pressing escape\n */\n closeOnOverlayClick?: boolean;\n /**\n * Custom className for the modal\n */\n className?: string;\n /**\n * Custom className for the content\n */\n contentClassName?: string;\n /**\n * Error object for error modals\n */\n error?: ErrorObject;\n}\n\nconst Modal = ({\n isOpen,\n onClose,\n title,\n children,\n variant = \"info\",\n primaryAction,\n secondaryAction,\n onPrimaryAction,\n onSecondaryAction,\n isLoading = false,\n closeOnOverlayClick = true,\n className,\n contentClassName,\n error,\n}: ModalProps) => {\n // Handle escape key press\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && isOpen) {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n // Prevent body scroll when modal is open\n document.body.style.overflow = \"hidden\";\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n const getVariantStyles = () => {\n switch (variant) {\n case \"error\":\n return {\n icon: <AlertCircle className=\"w-6 h-6 text-ews-error\" />,\n iconBg: \"bg-ews-error/10\",\n titleColor: \"text-ews-error\",\n borderColor: \"border-ews-error/20\",\n };\n case \"warning\":\n return {\n icon: <AlertTriangle className=\"w-6 h-6 text-ews-warning\" />,\n iconBg: \"bg-ews-warning/10\",\n titleColor: \"text-ews-warning\",\n borderColor: \"border-ews-warning/20\",\n };\n case \"confirmation\":\n return {\n icon: <CheckCircle className=\"w-6 h-6 text-ews-success\" />,\n iconBg: \"bg-ews-success/10\",\n titleColor: \"text-ews-success\",\n borderColor: \"border-ews-success/20\",\n };\n default:\n return {\n icon: <AlertCircle className=\"w-6 h-6 text-ews-primary\" />,\n iconBg: \"bg-ews-primary/10\",\n titleColor: \"text-ews-primary\",\n borderColor: \"border-ews-primary/20\",\n };\n }\n };\n\n const variantStyles = getVariantStyles();\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && closeOnOverlayClick) {\n onClose();\n }\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\"\n onClick={handleOverlayClick}\n />\n\n {/* Modal */}\n <div\n className={cn(\n \"relative w-full max-w-md mx-4 bg-white rounded-lg shadow-xl transform transition-all\",\n \"animate-in fade-in-0 zoom-in-95 duration-200\",\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"modal-title\"\n >\n {/* Header */}\n <div\n className={cn(\n \"flex items-center justify-between p-6 border-b\",\n variantStyles.borderColor\n )}\n >\n <div className=\"flex items-center space-x-3\">\n <div className={cn(\"p-2 rounded-full\", variantStyles.iconBg)}>\n {variantStyles.icon}\n </div>\n <h2\n id=\"modal-title\"\n className={cn(\"text-lg font-semibold\", variantStyles.titleColor)}\n >\n {title}\n </h2>\n </div>\n <button\n onClick={onClose}\n className=\"p-1 text-gray-400 hover:text-gray-600 transition-colors\"\n aria-label=\"Close modal\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n {/* Content */}\n <div className={cn(\"p-6\", contentClassName)}>\n <div className=\"text-gray-700 leading-relaxed\">\n {error && variant === \"error\" ? (\n <div className=\"space-y-3\">\n <p>{error.message}</p>\n {error.fields && error.fields.length > 0 && (\n <div>\n <p className=\"font-semibold text-gray-900\">\n Erreurs de champ:\n </p>\n <ul className=\"mt-2 space-y-1\">\n {error.fields.map((field, index) => (\n <li key={index} className=\"text-ews-error\">\n • {field.path}: {field.message}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n ) : (\n children\n )}\n </div>\n </div>\n\n {/* Actions */}\n {(primaryAction || secondaryAction) && (\n <div className=\"flex items-center justify-end space-x-3 p-6 pt-0\">\n {secondaryAction && (\n <Button\n variant=\"ghost\"\n onClick={onSecondaryAction || onClose}\n disabled={isLoading}\n >\n {secondaryAction}\n </Button>\n )}\n {primaryAction && (\n <Button\n variant={variant === \"error\" ? \"error\" : \"primary\"}\n onClick={onPrimaryAction}\n loading={isLoading}\n >\n {primaryAction}\n </Button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { Modal };\n","import { cn } from \"../../utils\";\n\nexport interface LogoProps {\n /**\n * Logo size\n */\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n /**\n * Whether to show the tagline\n */\n showTagline?: boolean;\n /**\n * Whether to show only the icon (favicon version)\n */\n iconOnly?: boolean;\n /**\n * Logo variant - normal, white, or favicon\n */\n variant?: \"normal\" | \"white\" | \"favicon\";\n /**\n * Custom className\n */\n className?: string;\n /**\n * Click handler\n */\n onClick?: () => void;\n}\n\nconst Logo = ({\n size = \"md\",\n showTagline = true,\n iconOnly = false,\n variant = \"normal\",\n className,\n onClick,\n}: LogoProps) => {\n const sizes = {\n sm: \"h-8\",\n md: \"h-12\",\n lg: \"h-16\",\n xl: \"h-24\",\n };\n\n const iconSizes = {\n sm: \"h-6 w-6\",\n md: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n };\n\n // Get the appropriate logo image based on variant\n // For iconOnly, always use favicon.ico\n const logoSrc = iconOnly\n ? \"/favicon.ico\"\n : variant === \"white\"\n ? \"/image/logoWhite.png\"\n : variant === \"favicon\"\n ? \"/favicon.ico\"\n : \"/image/logo.png\";\n\n if (iconOnly) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center\",\n iconSizes[size],\n className\n )}\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <img\n src={logoSrc}\n alt=\"MEDECINE 360 Logo\"\n className=\"w-full h-full object-contain\"\n />\n </div>\n );\n }\n\n return (\n <div\n className={cn(\"flex items-center\", sizes[size], className)}\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n {/* Logo Image */}\n <img\n src={logoSrc}\n alt=\"MEDECINE 360 Logo\"\n className=\"h-full w-auto object-contain\"\n />\n </div>\n );\n};\n\nexport { Logo };\n","import { ThemeConfig } from \"../types/theme\";\n\nexport const PROMED_THEME: ThemeConfig = {\n name: \"PROMED\",\n colors: {\n primary: \"#21596C\",\n secondary: \"#3BA1A1\",\n primaryHover: \"#1a4756\",\n secondaryHover: \"#308181\",\n primaryLight: \"#c0d0d4\",\n success: \"#059669\",\n successHover: \"#047857\",\n warning: \"#d97706\",\n warningHover: \"#b45309\",\n error: \"#dc2626\",\n errorHover: \"#b91c1c\",\n },\n};\n\nexport const MED_THEME: ThemeConfig = {\n name: \"MED\",\n colors: {\n primary: \"#3BA1A1\", // Teal for patients (calming, trustworthy)\n secondary: \"#6B73FF\", // Soft purple-blue (suggested secondary for MED)\n primaryHover: \"#308181\",\n secondaryHover: \"#5a61e6\",\n primaryLight: \"#a8d5d5\",\n success: \"#059669\",\n successHover: \"#047857\",\n warning: \"#d97706\",\n warningHover: \"#b45309\",\n error: \"#dc2626\",\n errorHover: \"#b91c1c\",\n },\n};\n\nexport const THEMES = {\n PROMED: PROMED_THEME,\n MED: MED_THEME,\n} as const;\n","import React, {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { Theme, ThemeContextType } from \"../types/theme\";\nimport { THEMES } from \"./themeConfig\";\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\ninterface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: Theme;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n defaultTheme = \"PROMED\",\n}) => {\n const [theme, setTheme] = useState<Theme>(defaultTheme);\n const [themeConfig, setThemeConfig] = useState(THEMES[defaultTheme]);\n\n // Update theme config when theme changes\n useEffect(() => {\n setThemeConfig(THEMES[theme]);\n\n // Update CSS custom properties\n const root = document.documentElement;\n const colors = THEMES[theme].colors;\n\n root.style.setProperty(\"--ews-primary\", colors.primary);\n root.style.setProperty(\"--ews-primary-hover\", colors.primaryHover);\n root.style.setProperty(\"--ews-primary-light\", colors.primaryLight);\n root.style.setProperty(\"--ews-secondary\", colors.secondary);\n root.style.setProperty(\"--ews-secondary-hover\", colors.secondaryHover);\n root.style.setProperty(\"--ews-success\", colors.success);\n root.style.setProperty(\"--ews-success-hover\", colors.successHover);\n root.style.setProperty(\"--ews-warning\", colors.warning);\n root.style.setProperty(\"--ews-warning-hover\", colors.warningHover);\n root.style.setProperty(\"--ews-error\", colors.error);\n root.style.setProperty(\"--ews-error-hover\", colors.errorHover);\n }, [theme]);\n\n const handleSetTheme = (newTheme: Theme) => {\n setTheme(newTheme);\n };\n\n const value: ThemeContextType = {\n theme,\n setTheme: handleSetTheme,\n themeConfig,\n };\n\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n","import React from \"react\";\nimport { useTheme } from \"../../theme/ThemeProvider\";\nimport { Theme } from \"../../types/theme\";\n\nexport interface ThemeToggleProps {\n className?: string;\n}\n\nexport const ThemeToggle: React.FC<ThemeToggleProps> = ({ className }) => {\n const { theme, setTheme } = useTheme();\n\n const handleThemeChange = (newTheme: Theme) => {\n setTheme(newTheme);\n };\n\n return (\n <div className={`flex items-center space-x-2 ${className || \"\"}`}>\n <span className=\"text-sm font-medium text-gray-700\">Theme:</span>\n <div className=\"flex bg-gray-100 rounded-lg p-1\">\n <button\n onClick={() => handleThemeChange(\"PROMED\")}\n className={`px-3 py-1 text-xs font-medium rounded-md transition-colors ${\n theme === \"PROMED\"\n ? \"bg-ews-primary text-white\"\n : \"text-gray-600 hover:text-gray-900\"\n }`}\n >\n PROMED\n </button>\n <button\n onClick={() => handleThemeChange(\"MED\")}\n className={`px-3 py-1 text-xs font-medium rounded-md transition-colors ${\n theme === \"MED\"\n ? \"bg-ews-primary text-white\"\n : \"text-gray-600 hover:text-gray-900\"\n }`}\n >\n MED\n </button>\n </div>\n </div>\n );\n};\n","import { Stethoscope } from \"lucide-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MultiSearchAutocomplete } from \"../../components/MultiSearchAutocomplete\";\nimport { cn } from \"../../utils\";\n\nexport interface Specialty {\n id: string;\n code: string;\n label: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface SpecialtySearchAutocompleteProps {\n selectedSpecialties: Specialty[];\n onSpecialtiesChange: (specialties: Specialty[]) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n maxSelections?: number;\n showSelectedCount?: boolean;\n}\n\nexport const SpecialtySearchAutocomplete: React.FC<\n SpecialtySearchAutocompleteProps\n> = ({\n selectedSpecialties = [],\n onSpecialtiesChange,\n placeholder = \"Search and select medical specialties...\",\n className = \"\",\n disabled = false,\n maxSelections,\n showSelectedCount = true,\n}) => {\n const [specialties, setSpecialties] = useState<Specialty[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n\n // Mock API call - replace with actual API\n const fetchSpecialties = useCallback(async (searchTerm: string) => {\n setIsLoading(true);\n try {\n // Simulate API delay\n await new Promise((resolve) => setTimeout(resolve, 300));\n\n // Mock data - replace with actual API call\n const mockSpecialties: Specialty[] = [\n { id: \"1\", code: \"CARD\", label: \"Cardiology\" },\n { id: \"2\", code: \"DERM\", label: \"Dermatology\" },\n { id: \"3\", code: \"ENDO\", label: \"Endocrinology\" },\n { id: \"4\", code: \"GAST\", label: \"Gastroenterology\" },\n { id: \"5\", code: \"HEMA\", label: \"Hematology\" },\n { id: \"6\", code: \"NEUR\", label: \"Neurology\" },\n { id: \"7\", code: \"ONCO\", label: \"Oncology\" },\n { id: \"8\", code: \"ORTH\", label: \"Orthopedics\" },\n { id: \"9\", code: \"PED\", label: \"Pediatrics\" },\n { id: \"10\", code: \"PSYC\", label: \"Psychiatry\" },\n { id: \"11\", code: \"RAD\", label: \"Radiology\" },\n { id: \"12\", code: \"SURG\", label: \"Surgery\" },\n { id: \"13\", code: \"UROL\", label: \"Urology\" },\n { id: \"14\", code: \"GYN\", label: \"Gynecology\" },\n { id: \"15\", code: \"OPHT\", label: \"Ophthalmology\" },\n ];\n\n // Filter based on search term\n const filtered = mockSpecialties.filter(\n (specialty) =>\n specialty.label.toLowerCase().includes(searchTerm.toLowerCase()) ||\n specialty.code.toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n setSpecialties(filtered);\n } catch (error) {\n console.error(\"Error fetching specialties:\", error);\n setSpecialties([]);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n // Initial load\n useEffect(() => {\n fetchSpecialties(\"\");\n }, [fetchSpecialties]);\n\n const handleSelectionChange = useCallback(\n (items: Specialty[]) => {\n // Check max selections limit\n if (maxSelections && items.length > maxSelections) {\n return; // Don't update if exceeding max selections\n }\n onSpecialtiesChange(items);\n },\n [onSpecialtiesChange, maxSelections]\n );\n\n const getEntityById = useCallback(\n async (id: string): Promise<Specialty | undefined> => {\n return specialties.find((specialty) => specialty.id === id);\n },\n [specialties]\n );\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n {/* Header with title and icon */}\n <div className=\"flex items-center space-x-2\">\n <div className=\"flex justify-center items-center w-8 h-8 rounded-lg bg-secondary-100\">\n <Stethoscope className=\"w-4 h-4 text-secondary-600\" />\n </div>\n <h3 className=\"text-lg font-semibold text-gray-900\">\n Medical Specialties\n </h3>\n </div>\n\n {/* Label */}\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Select Specialties\n </label>\n </div>\n\n {/* MultiSearchAutocomplete component */}\n <MultiSearchAutocomplete<Specialty>\n items={specialties}\n selectedItems={selectedSpecialties}\n onSelectionChange={handleSelectionChange}\n onSearch={fetchSpecialties}\n getEntityById={getEntityById}\n getPrimaryText={(specialty) => specialty.label}\n getSecondaryText={(specialty) => specialty.code}\n placeholder={placeholder}\n disabled={disabled}\n loading={isLoading}\n multiple={true}\n keepOpenOnSelect={true}\n className=\"w-full\"\n renderSelectedItem={(specialty) => (\n <span className=\"inline-flex items-center px-3 py-1 text-sm font-medium rounded-full bg-ews-primary/10 text-ews-primary border border-ews-primary/20\">\n {specialty.label}\n </span>\n )}\n renderListItem={(specialty, isSelected) => (\n <div className=\"flex items-center space-x-3\">\n <div\n className={cn(\n \"w-5 h-5 border-2 rounded flex items-center justify-center\",\n isSelected\n ? \"bg-ews-primary border-ews-primary\"\n : \"border-gray-300\"\n )}\n >\n {isSelected && (\n <svg\n className=\"w-3 h-3 text-white\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\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 </div>\n <div className=\"flex flex-col\">\n <span\n className={cn(\n \"font-medium\",\n isSelected ? \"text-ews-primary\" : \"text-gray-900\"\n )}\n >\n {specialty.label}\n </span>\n <span\n className={cn(\n \"text-sm\",\n isSelected ? \"text-ews-primary/70\" : \"text-gray-500\"\n )}\n >\n {specialty.code}\n </span>\n </div>\n </div>\n )}\n />\n\n {/* Selected count display */}\n {showSelectedCount && selectedSpecialties.length > 0 && (\n <div className=\"flex items-center justify-between text-sm text-gray-600\">\n <span>\n {selectedSpecialties.length} specialty\n {selectedSpecialties.length !== 1 ? \"ies\" : \"\"} selected\n </span>\n {maxSelections && (\n <span className=\"text-gray-400\">\n {selectedSpecialties.length}/{maxSelections}\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx","Icon","forwardRef","createElement","__iconNode","useState","useEffect","useRef","useCallback","AlertCircle","AlertTriangle","CheckCircle","createContext","useContext"],"mappings":"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","x_google_ignoreList":[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../src/utils/index.ts","../src/components/Button/Button.tsx","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/Icon.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/arrow-right.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/check.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/eye-off.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/eye.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/heart.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/stethoscope.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/.pnpm/lucide-react@0.544.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/x.js","../src/icons/Icon.tsx","../src/icons/DoctorIcon.tsx","../src/icons/PatientIcon.tsx","../src/icons/UserIcon.tsx","../src/components/Input/Input.tsx","../src/hooks/useDebounce.ts","../src/components/SearchAutocomplete/SearchAutocomplete.tsx","../src/components/MultiSearchAutocomplete/MultiSearchAutocomplete.tsx","../src/components/Modal/Modal.tsx","../src/components/Logo/Logo.tsx","../src/theme/themeConfig.ts","../src/theme/ThemeProvider.tsx","../src/components/ThemeToggle/ThemeToggle.tsx","../src/molecules/SpecialtySearchAutocomplete/SpecialtySearchAutocomplete.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from \"clsx\";\n\n/**\n * Default currency for price formatting\n */\nexport const CURRENCY = \"XOF\";\n\n/**\n * Utility function to merge class names\n * @param inputs - Class values to merge\n * @returns Merged class string\n */\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs);\n}\n\n/**\n * Utility function to format currency\n * @param amount - Amount to format\n * @param currency - Currency code (default: CURRENCY constant)\n * @returns Formatted currency string\n */\nexport function formatCurrency(amount: number, currency = CURRENCY): string {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n }).format(amount);\n}\n\n/**\n * Utility function to format date\n * @param date - Date to format\n * @param options - Intl.DateTimeFormat options\n * @returns Formatted date string\n */\nexport function formatDate(\n date: Date | string | number,\n options?: Intl.DateTimeFormatOptions\n): string {\n const dateObj = new Date(date);\n return new Intl.DateTimeFormat(\"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n ...options,\n }).format(dateObj);\n}\n\n/**\n * Utility function to debounce function calls\n * @param func - Function to debounce\n * @param wait - Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout>;\n return (...args: Parameters<T>) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func(...args), wait);\n };\n}\n\n/**\n * Utility function to generate unique ID\n * @param prefix - Optional prefix for the ID\n * @returns Unique ID string\n */\nexport function generateId(prefix = \"ews\"): string {\n return `${prefix}-${Math.random().toString(36).substr(2, 9)}`;\n}\n","import React from \"react\";\nimport { cn } from \"../../utils\";\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * Button variant\n */\n variant?: \"primary\" | \"secondary\" | \"success\" | \"warning\" | \"error\" | \"ghost\";\n /**\n * Button size\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /**\n * Whether the button is in a loading state\n */\n loading?: boolean;\n /**\n * Whether the button should take full width\n */\n fullWidth?: boolean;\n /**\n * Icon to display before the button text\n */\n leftIcon?: React.ReactNode;\n /**\n * Icon to display after the button text\n */\n rightIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"md\",\n loading = false,\n fullWidth = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseStyles =\n \"inline-flex items-center justify-center font-medium rounded-md transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none\";\n\n const variants = {\n primary:\n \"bg-ews-primary text-white hover:bg-ews-primary-hover focus:ring-ews-primary\",\n secondary:\n \"bg-ews-secondary text-white hover:bg-ews-secondary-hover focus:ring-ews-secondary\",\n success:\n \"bg-ews-success text-white hover:bg-ews-success-hover focus:ring-ews-success\",\n warning:\n \"bg-ews-warning text-white hover:bg-ews-warning-hover focus:ring-ews-warning\",\n error:\n \"bg-ews-error text-white hover:bg-ews-error-hover focus:ring-ews-error\",\n ghost:\n \"bg-transparent text-ews-gray-700 hover:bg-ews-gray-100 focus:ring-ews-gray-500\",\n };\n\n const sizes = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-4 py-2 text-base\",\n lg: \"px-6 py-3 text-lg\",\n };\n\n const iconSizes = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n return (\n <button\n className={cn(\n baseStyles,\n variants[variant],\n sizes[size],\n fullWidth && \"w-full\",\n className\n )}\n ref={ref}\n disabled={disabled || loading}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin -ml-1 mr-2 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 {!loading && leftIcon && (\n <span className={cn(\"mr-2 flex items-center\", iconSizes[size])}>\n {leftIcon}\n </span>\n )}\n {children}\n {!loading && rightIcon && (\n <span className={cn(\"ml-2 flex items-center\", iconSizes[size])}>\n {rightIcon}\n </span>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button };\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n];\nconst ArrowRight = createLucideIcon(\"arrow-right\", __iconNode);\n\nexport { __iconNode, ArrowRight as default };\n//# sourceMappingURL=arrow-right.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\",\n key: \"ct8e1f\"\n }\n ],\n [\"path\", { d: \"M14.084 14.158a3 3 0 0 1-4.242-4.242\", key: \"151rxh\" }],\n [\n \"path\",\n {\n d: \"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\",\n key: \"13bj9a\"\n }\n ],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst EyeOff = createLucideIcon(\"eye-off\", __iconNode);\n\nexport { __iconNode, EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Eye = createLucideIcon(\"eye\", __iconNode);\n\nexport { __iconNode, Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\n key: \"mvr1a0\"\n }\n ]\n];\nconst Heart = createLucideIcon(\"heart\", __iconNode);\n\nexport { __iconNode, Heart as default };\n//# sourceMappingURL=heart.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M11 2v2\", key: \"1539x4\" }],\n [\"path\", { d: \"M5 2v2\", key: \"1yf1q8\" }],\n [\"path\", { d: \"M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1\", key: \"rb5t3r\" }],\n [\"path\", { d: \"M8 15a6 6 0 0 0 12 0v-3\", key: \"x18d4x\" }],\n [\"circle\", { cx: \"20\", cy: \"10\", r: \"2\", key: \"ts1r5v\" }]\n];\nconst Stethoscope = createLucideIcon(\"stethoscope\", __iconNode);\n\nexport { __iconNode, Stethoscope as default };\n//# sourceMappingURL=stethoscope.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.544.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import { LucideProps } from \"lucide-react\";\nimport React from \"react\";\n\nexport interface IconProps extends Omit<LucideProps, \"size\"> {\n /**\n * Icon size\n */\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n /**\n * The Lucide icon component to render\n */\n icon: React.ComponentType<LucideProps>;\n}\n\n// Simple icon props for individual icon components\nexport interface SimpleIconProps {\n /**\n * Icon size in pixels\n */\n size?: number;\n /**\n * Icon color (can be hex, rgb, or Tailwind class)\n */\n color?: string;\n /**\n * Additional CSS classes (supports Tailwind classes)\n */\n className?: string;\n /**\n * Other props passed to the underlying icon\n */\n [key: string]: any;\n}\n\nconst Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ size = \"md\", icon: IconComponent, className, ...props }, ref) => {\n const sizes = {\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n };\n\n const iconSize = typeof size === \"number\" ? size : sizes[size];\n\n return (\n <IconComponent\n ref={ref}\n size={iconSize}\n className={className}\n {...props}\n />\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n\nexport { Icon };\n","import { Stethoscope } from \"lucide-react\";\nimport React from \"react\";\nimport { SimpleIconProps } from \"./Icon\";\n\nexport const DoctorIcon: React.FC<SimpleIconProps> = ({\n size = 24,\n color = \"currentColor\",\n className = \"\",\n ...props\n}) => {\n return (\n <Stethoscope size={size} color={color} className={className} {...props} />\n );\n};\n","import { Heart } from \"lucide-react\";\nimport React from \"react\";\nimport { SimpleIconProps } from \"./Icon\";\n\nexport const PatientIcon: React.FC<SimpleIconProps> = ({\n size = 24,\n color = \"currentColor\",\n className = \"\",\n ...props\n}) => {\n return <Heart size={size} color={color} className={className} {...props} />;\n};\n","import { User } from \"lucide-react\";\nimport React from \"react\";\nimport { SimpleIconProps } from \"./Icon\";\n\nexport const UserIcon: React.FC<SimpleIconProps> = ({\n size = 24,\n color = \"currentColor\",\n className = \"\",\n ...props\n}) => {\n return <User size={size} color={color} className={className} {...props} />;\n};\n","import React, { useState } from \"react\";\nimport { Eye, EyeOff } from \"../../icons\";\nimport { cn } from \"../../utils\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Input variant\n */\n variant?: \"default\" | \"error\" | \"success\";\n /**\n * Input size\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /**\n * Label for the input\n */\n label?: string;\n /**\n * Helper text to display below the input\n */\n helperText?: string;\n /**\n * Error message to display\n */\n error?: string;\n /**\n * Icon to display before the input\n */\n leftIcon?: React.ReactNode;\n /**\n * Icon to display after the input\n */\n rightIcon?: React.ReactNode;\n /**\n * Whether the input should take full width\n */\n fullWidth?: boolean;\n /**\n * Whether to show password toggle for password inputs\n */\n showPasswordToggle?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n label,\n helperText,\n error,\n leftIcon,\n rightIcon,\n fullWidth = false,\n showPasswordToggle = false,\n id,\n type = \"text\",\n ...props\n },\n ref\n ) => {\n const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;\n const hasError = Boolean(error);\n const actualVariant = hasError ? \"error\" : variant;\n\n // Password visibility state\n const [showPassword, setShowPassword] = useState(false);\n const isPasswordInput = type === \"password\";\n const shouldShowPasswordToggle = showPasswordToggle && isPasswordInput;\n const actualType = isPasswordInput && showPassword ? \"text\" : type;\n\n const baseStyles =\n \"block w-full rounded-md border transition-colors focus:outline-none focus:ring-2 focus:ring-offset-0 hover:border-ews-primary\";\n\n const variants = {\n default:\n \"border-ews-gray-300 focus:border-ews-primary focus:ring-ews-primary\",\n error: \"border-ews-error focus:border-ews-error focus:ring-ews-error\",\n success:\n \"border-ews-success focus:border-ews-success focus:ring-ews-success\",\n };\n\n const sizes = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-3 py-2 text-base\",\n lg: \"px-4 py-3 text-lg\",\n };\n\n const iconSizes = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n };\n\n return (\n <div className={cn(\"space-y-1\", fullWidth ? \"w-full\" : \"w-auto\")}>\n {label && (\n <label\n htmlFor={inputId}\n className=\"block text-sm font-medium text-ews-gray-700\"\n >\n {label}\n </label>\n )}\n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <span className={cn(\"text-ews-gray-400\", iconSizes[size])}>\n {leftIcon}\n </span>\n </div>\n )}\n <input\n id={inputId}\n type={actualType}\n className={cn(\n baseStyles,\n variants[actualVariant],\n sizes[size],\n leftIcon && \"pl-10\",\n (rightIcon || shouldShowPasswordToggle) && \"pr-10\",\n className\n )}\n ref={ref}\n {...props}\n />\n {rightIcon && !shouldShowPasswordToggle && (\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none\">\n <span className={cn(\"text-ews-gray-400\", iconSizes[size])}>\n {rightIcon}\n </span>\n </div>\n )}\n {shouldShowPasswordToggle && (\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center\"\n onClick={() => setShowPassword(!showPassword)}\n tabIndex={-1}\n >\n <span\n className={cn(\n \"text-ews-gray-400 hover:text-ews-gray-600 transition-colors\",\n iconSizes[size]\n )}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </span>\n </button>\n )}\n </div>\n {(error || helperText) && (\n <p\n className={cn(\n \"text-sm\",\n error ? \"text-ews-error\" : \"text-ews-gray-500\"\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { Input };\n","import { useEffect, useState } from \"react\";\n\nconst DEFAULT_DELAY = 500;\n\n/**\n * A custom hook that debounces a value\n * @param value - The value to debounce\n * @param delay - The delay in milliseconds (optional, defaults to 300ms)\n * @returns The debounced value\n */\nexport function useDebounce<T>(value: T, delay?: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n const actualDelay = delay ?? DEFAULT_DELAY;\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, actualDelay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, actualDelay]);\n\n return debouncedValue;\n}\n\n/**\n * A custom hook that provides a debounced callback function\n * @param callback - The function to debounce\n * @param delay - The delay in milliseconds (optional, defaults to 300ms)\n * @returns A debounced version of the callback\n */\nexport function useDebouncedCallback<T extends (...args: unknown[]) => unknown>(\n callback: T,\n delay?: number\n): T {\n const [debounceTimer, setDebounceTimer] = useState<ReturnType<\n typeof setTimeout\n > | null>(null);\n\n const debouncedCallback = ((...args: Parameters<T>) => {\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n const actualDelay = delay ?? DEFAULT_DELAY;\n const newTimer = setTimeout(() => {\n callback(...args);\n }, actualDelay);\n\n setDebounceTimer(newTimer);\n }) as T;\n\n useEffect(() => {\n return () => {\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n };\n }, [debounceTimer]);\n\n return debouncedCallback;\n}\n","import { LucideIcon, Search, X } from \"lucide-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { useDebounce } from \"../../hooks\";\nimport { Input } from \"../Input/Input\";\n\n// Generic interface for searchable entities\nexport interface SearchableEntity {\n id: string;\n [key: string]: string | number | boolean | undefined;\n}\n\ninterface SearchAutocompleteProps<T extends SearchableEntity> {\n onSelect: (id: string) => void;\n selectedId: string;\n searchFunction: (keyword: string) => Promise<T[]>;\n getEntityById?: (id: string) => Promise<T | undefined>;\n getDisplayValue: (entity: T) => string;\n getSecondaryText?: (entity: T) => string | null;\n placeholder: string;\n icon?: LucideIcon;\n disabled?: boolean;\n minSearchLength?: number;\n debounceTime?: number;\n error?: string;\n}\n\nexport function SearchAutocomplete<T extends SearchableEntity>({\n onSelect,\n selectedId,\n searchFunction,\n getEntityById,\n getDisplayValue,\n getSecondaryText,\n placeholder,\n icon = Search,\n disabled = false,\n minSearchLength = 2,\n debounceTime = 300,\n error,\n}: SearchAutocompleteProps<T>) {\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [entities, setEntities] = useState<T[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [showDropdown, setShowDropdown] = useState(false);\n const [selectedEntity, setSelectedEntity] = useState<T | null>(null);\n const [initialLoadDone, setInitialLoadDone] = useState(false);\n const [searchError, setSearchError] = useState<string | null>(null);\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const debouncedSearchTerm = useDebounce(searchTerm, debounceTime);\n\n // Track if this is an initial load or a user-initiated search\n const isUserSearch = useRef(false);\n\n // Only fetch the selected entity by ID once on initial load\n useEffect(() => {\n const fetchSelectedEntity = async () => {\n // Only fetch if we have a selectedId, getEntityById function, and haven't loaded yet\n if (!selectedId || !getEntityById || initialLoadDone) return;\n\n setIsLoading(true);\n try {\n const entity = await getEntityById(selectedId);\n if (entity) {\n setSelectedEntity(entity);\n setSearchTerm(getDisplayValue(entity));\n }\n } catch (error) {\n console.error(\"Error fetching selected entity:\", error);\n } finally {\n setIsLoading(false);\n setInitialLoadDone(true);\n }\n };\n\n fetchSelectedEntity();\n }, [selectedId, getEntityById, getDisplayValue, initialLoadDone]);\n\n // Handle search term changes - only for user-initiated searches\n useEffect(() => {\n // Skip if this is just setting the initial value\n if (!isUserSearch.current) return;\n\n // Clear entities if search term is too short\n if (searchTerm.trim().length < minSearchLength) {\n setEntities([]);\n setSearchError(null);\n }\n }, [searchTerm, minSearchLength]);\n\n // Fetch entities when debounced search term changes - only for user searches\n useEffect(() => {\n const fetchEntities = async () => {\n if (\n !debouncedSearchTerm ||\n debouncedSearchTerm.length < minSearchLength\n ) {\n return;\n }\n\n setIsLoading(true);\n setSearchError(null);\n try {\n const results = await searchFunction(debouncedSearchTerm);\n setEntities(results);\n } catch (error) {\n console.error(\"Error fetching search results:\", error);\n setSearchError(\n error instanceof Error ? error.message : \"Search failed\"\n );\n } finally {\n setIsLoading(false);\n }\n };\n\n // Only fetch if this is a user-initiated search\n if (isUserSearch.current) {\n fetchEntities();\n }\n }, [debouncedSearchTerm, searchFunction, minSearchLength]);\n\n // Handle click outside to close dropdown\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setShowDropdown(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n\n // Mark this as a user-initiated search\n isUserSearch.current = true;\n\n setSearchTerm(value);\n\n if (selectedEntity) {\n setSelectedEntity(null);\n onSelect(\"\");\n }\n\n setShowDropdown(value.trim().length >= minSearchLength);\n };\n\n const handleEntitySelect = (entity: T) => {\n // This is a user selection, not an API fetch\n isUserSearch.current = false;\n\n console.log(`Selected entity with ID: ${entity.id}`);\n\n setSelectedEntity(entity);\n setSearchTerm(getDisplayValue(entity));\n onSelect(entity.id);\n setShowDropdown(false);\n };\n\n const handleClearSelection = () => {\n // This is a user action, but not a search\n isUserSearch.current = false;\n\n setSelectedEntity(null);\n setSearchTerm(\"\");\n onSelect(\"\");\n };\n\n return (\n <div className=\"relative\" ref={dropdownRef}>\n <div className=\"relative\">\n <Input\n type=\"text\"\n placeholder={`${placeholder} (min. ${minSearchLength} characters)`}\n value={selectedEntity ? \"\" : searchTerm}\n onChange={handleSearchChange}\n onFocus={() =>\n searchTerm.length >= minSearchLength &&\n isUserSearch.current &&\n setShowDropdown(true)\n }\n disabled={disabled}\n autoComplete=\"off\"\n name=\"search-autocomplete\"\n leftIcon={React.createElement(icon, { size: 16 })}\n />\n\n {selectedEntity && (\n <button\n type=\"button\"\n className=\"flex absolute inset-y-0 right-0 items-center pr-3\"\n onClick={handleClearSelection}\n disabled={disabled}\n >\n <X className=\"w-5 h-5 text-gray-400 hover:text-gray-500\" />\n </button>\n )}\n </div>\n\n {/* Selected Entity Display */}\n {selectedEntity && (\n <div className=\"p-4 mt-3 rounded-lg border bg-neutral-50 border-neutral-200\">\n <div className=\"flex justify-between items-center\">\n <div className=\"flex items-center\">\n {(selectedEntity as { photoUrl?: string }).photoUrl ? (\n <img\n src={(selectedEntity as { photoUrl?: string }).photoUrl!}\n alt={getDisplayValue(selectedEntity)}\n className=\"object-cover mr-3 w-10 h-10 rounded-full\"\n />\n ) : (\n React.createElement(icon, {\n className: \"w-10 h-10 text-neutral-400 mr-3\",\n })\n )}\n <div>\n <div className=\"font-medium text-neutral-900\">\n {getDisplayValue(selectedEntity)}\n </div>\n {getSecondaryText && getSecondaryText(selectedEntity) && (\n <div className=\"text-sm text-neutral-500\">\n {getSecondaryText(selectedEntity)}\n </div>\n )}\n </div>\n </div>\n <button\n type=\"button\"\n onClick={handleClearSelection}\n className=\"transition-colors text-neutral-400 hover:text-neutral-600\"\n disabled={disabled}\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n )}\n\n {showDropdown && entities?.length > 0 && (\n <div className=\"overflow-auto absolute z-10 mt-1 w-full max-h-60 bg-white rounded-md shadow-lg\">\n <ul className=\"py-1\">\n {entities.map((entity) => (\n <li\n key={entity.id}\n className=\"px-4 py-2 cursor-pointer hover:bg-gray-100\"\n onClick={() => handleEntitySelect(entity)}\n >\n <div className=\"flex items-center\">\n {React.createElement(icon, {\n className: \"w-4 h-4 text-gray-400\",\n })}\n <div className=\"ml-2\">\n <div className=\"font-medium\">{getDisplayValue(entity)}</div>\n {getSecondaryText && getSecondaryText(entity) && (\n <div className=\"text-xs text-gray-500\">\n {getSecondaryText(entity)}\n </div>\n )}\n </div>\n </div>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {showDropdown && searchError && (\n <div className=\"absolute z-10 p-4 mt-1 w-full text-center text-red-600 bg-white rounded-md shadow-lg border border-red-200\">\n <div className=\"flex items-center justify-center\">\n <X className=\"w-4 h-4 mr-2\" />\n Error: {searchError}\n </div>\n </div>\n )}\n\n {showDropdown && error && !searchError && (\n <div className=\"absolute z-10 p-4 mt-1 w-full text-center text-red-600 bg-white rounded-md shadow-lg border border-red-200\">\n <div className=\"flex items-center justify-center\">\n <X className=\"w-4 h-4 mr-2\" />\n {error}\n </div>\n </div>\n )}\n\n {showDropdown &&\n debouncedSearchTerm &&\n entities?.length === 0 &&\n !isLoading &&\n !searchError &&\n !error && (\n <div className=\"absolute z-10 p-4 mt-1 w-full text-center text-gray-500 bg-white rounded-md shadow-lg\">\n {debouncedSearchTerm.length < minSearchLength\n ? `Type at least ${minSearchLength} characters to search`\n : \"No results found. Try a different search term.\"}\n </div>\n )}\n\n {isLoading && showDropdown && (\n <div className=\"absolute z-10 p-4 mt-1 w-full text-center text-gray-500 bg-white rounded-md shadow-lg\">\n <div className=\"flex items-center justify-center\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-ews-primary mr-2\"></div>\n Loading...\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { Check, Search, X } from \"lucide-react\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useDebounce } from \"../../hooks\";\nimport { cn } from \"../../utils\";\nimport { Input } from \"../Input/Input\";\nimport { SearchableEntity } from \"../SearchAutocomplete/SearchAutocomplete\";\n\ninterface MultiSearchAutocompleteProps<T extends SearchableEntity> {\n items: T[];\n selectedItems: T[];\n onSelectionChange: (items: T[]) => void;\n onSearch: (searchTerm: string) => Promise<void>;\n getEntityById?: (id: string) => Promise<T | undefined>;\n getPrimaryText: (entity: T) => string;\n getSecondaryText?: (entity: T) => string | null;\n placeholder: string;\n disabled?: boolean;\n loading?: boolean;\n multiple?: boolean;\n className?: string;\n renderSelectedItem?: (entity: T) => React.ReactNode;\n renderListItem?: (entity: T, isSelected: boolean) => React.ReactNode;\n keepOpenOnSelect?: boolean;\n error?: string;\n minSearchLength?: number;\n debounceTime?: number;\n}\n\nexport function MultiSearchAutocomplete<T extends SearchableEntity>({\n items,\n selectedItems,\n onSelectionChange,\n onSearch,\n getEntityById,\n getPrimaryText,\n getSecondaryText,\n placeholder,\n disabled = false,\n loading = false,\n multiple = true,\n className,\n renderSelectedItem,\n renderListItem,\n keepOpenOnSelect = true,\n error,\n minSearchLength = 2,\n debounceTime = 300,\n}: MultiSearchAutocompleteProps<T>) {\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const [filteredItems, setFilteredItems] = useState<T[]>(items);\n const [isSearching, setIsSearching] = useState(false);\n const [searchError, setSearchError] = useState<string | null>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const debouncedSearchTerm = useDebounce(searchTerm, debounceTime);\n\n // Handle search term changes\n useEffect(() => {\n // If search term is empty, show all items\n if (!searchTerm.trim()) {\n setFilteredItems(items);\n setSearchError(null);\n return;\n }\n\n // If search term is too short, don't search\n if (searchTerm.length < minSearchLength) {\n setFilteredItems([]);\n setSearchError(null);\n return;\n }\n }, [searchTerm, items, minSearchLength]);\n\n // Debounced search with API calls\n useEffect(() => {\n // If debounced search term is empty or too short, don't search\n if (\n !debouncedSearchTerm.trim() ||\n debouncedSearchTerm.length < minSearchLength\n ) {\n return;\n }\n\n const performSearch = async () => {\n try {\n setIsSearching(true);\n setSearchError(null);\n await onSearch(debouncedSearchTerm);\n } catch (err) {\n setSearchError(err instanceof Error ? err.message : \"Search failed\");\n } finally {\n setIsSearching(false);\n }\n };\n\n performSearch();\n }, [debouncedSearchTerm, onSearch, minSearchLength]);\n\n // Update filtered items when items prop changes\n useEffect(() => {\n setFilteredItems(items);\n }, [items]);\n\n const handleItemToggle = useCallback(\n (item: T) => {\n if (multiple) {\n const isSelected = selectedItems.some(\n (selected) => selected.id === item.id\n );\n\n if (isSelected) {\n onSelectionChange(\n selectedItems.filter((selected) => selected.id !== item.id)\n );\n } else {\n onSelectionChange([...selectedItems, item]);\n }\n // Keep dropdown open for multiple selection\n if (keepOpenOnSelect) {\n setIsOpen(true);\n }\n } else {\n onSelectionChange([item]);\n setIsOpen(false);\n }\n },\n [selectedItems, onSelectionChange, multiple, keepOpenOnSelect]\n );\n\n const handleRemoveItem = useCallback(\n (itemToRemove: T) => {\n onSelectionChange(\n selectedItems.filter((item) => item.id !== itemToRemove.id)\n );\n },\n [selectedItems, onSelectionChange]\n );\n\n const handleInputFocus = () => {\n if (!disabled) {\n setIsOpen(true);\n }\n };\n\n const handleInputBlur = () => {\n // Don't close immediately to allow for clicks on dropdown items\n // Only close if keepOpenOnSelect is false\n if (!keepOpenOnSelect) {\n setTimeout(() => setIsOpen(false), 150);\n }\n };\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n const handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscapeKey);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscapeKey);\n };\n }, [isOpen]);\n\n // Default render functions\n const defaultRenderSelectedItem = (entity: T) => (\n <span className=\"inline-flex items-center px-3 py-1 text-sm font-medium rounded-full bg-ews-primary/10 text-ews-primary border border-ews-primary/20\">\n {getPrimaryText(entity)}\n <button\n type=\"button\"\n onClick={() => handleRemoveItem(entity)}\n className=\"ml-2 text-ews-primary/60 hover:text-ews-primary\"\n disabled={disabled}\n title=\"Remove item\"\n >\n <X className=\"w-3 h-3\" />\n </button>\n </span>\n );\n\n const defaultRenderListItem = (entity: T, isSelected: boolean) => (\n <div className=\"flex items-center space-x-3\">\n <div\n className={cn(\n \"w-5 h-5 border-2 rounded flex items-center justify-center\",\n isSelected ? \"bg-ews-primary border-ews-primary\" : \"border-gray-300\"\n )}\n >\n {isSelected && <Check className=\"w-3 h-3 text-white\" />}\n </div>\n <div className=\"flex flex-col\">\n <span\n className={cn(\n \"font-medium\",\n isSelected ? \"text-ews-primary\" : \"text-gray-900\"\n )}\n >\n {getPrimaryText(entity)}\n </span>\n {getSecondaryText && (\n <span\n className={cn(\n \"text-sm\",\n isSelected ? \"text-ews-primary/70\" : \"text-gray-500\"\n )}\n >\n {getSecondaryText(entity)}\n </span>\n )}\n </div>\n </div>\n );\n\n return (\n <div className={cn(\"relative\", className)} ref={dropdownRef}>\n {/* Selected items display */}\n {selectedItems.length > 0 && (\n <div className=\"flex flex-wrap gap-2 mb-3\">\n {selectedItems.map((item) => (\n <div key={item.id}>\n {renderSelectedItem\n ? renderSelectedItem(item)\n : defaultRenderSelectedItem(item)}\n </div>\n ))}\n </div>\n )}\n\n {/* Search input */}\n <Input\n ref={inputRef}\n type=\"text\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n placeholder={placeholder}\n disabled={disabled}\n leftIcon={<Search className=\"w-4 h-4\" />}\n className=\"w-full\"\n />\n\n {/* Dropdown */}\n {isOpen && !disabled && (\n <div className=\"absolute z-10 mt-1 w-full max-h-60 bg-white rounded-lg border border-gray-200 shadow-lg overflow-auto\">\n {loading || isSearching ? (\n <div className=\"px-4 py-3 text-sm text-gray-500 flex items-center\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-ews-primary mr-2\"></div>\n {isSearching ? \"Searching...\" : \"Loading...\"}\n </div>\n ) : searchError ? (\n <div className=\"px-4 py-3 text-sm text-red-600\">\n <div className=\"flex items-center\">\n <X className=\"w-4 h-4 mr-2\" />\n Error: {searchError}\n </div>\n </div>\n ) : error ? (\n <div className=\"px-4 py-3 text-sm text-red-600\">\n <div className=\"flex items-center\">\n <X className=\"w-4 h-4 mr-2\" />\n {error}\n </div>\n </div>\n ) : filteredItems.length === 0 ? (\n <div className=\"px-4 py-3 text-sm text-gray-500\">\n {searchTerm.length < minSearchLength\n ? `Type at least ${minSearchLength} characters to search`\n : \"No items found\"}\n </div>\n ) : (\n <div className=\"py-1\">\n {filteredItems.map((item) => {\n const isSelected = selectedItems.some(\n (selected) => selected.id === item.id\n );\n\n return (\n <button\n key={item.id}\n type=\"button\"\n onClick={() => handleItemToggle(item)}\n className={cn(\n \"w-full px-4 py-3 text-left flex items-center transition-colors\",\n isSelected\n ? \"bg-ews-primary/10 text-ews-primary border-l-4 border-ews-primary\"\n : \"hover:bg-ews-primary/5 text-gray-900\"\n )}\n >\n {renderListItem\n ? renderListItem(item, isSelected)\n : defaultRenderListItem(item, isSelected)}\n </button>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { AlertCircle, AlertTriangle, CheckCircle, X } from \"lucide-react\";\nimport React, { useEffect } from \"react\";\nimport { cn } from \"../../utils\";\nimport { Button } from \"../Button/Button\";\n\nexport interface ErrorField {\n name: string;\n message: string;\n path: string;\n}\n\nexport interface ErrorObject {\n code: string;\n message: string;\n fields: ErrorField[];\n}\n\nexport interface ModalProps {\n /**\n * Whether the modal is open\n */\n isOpen: boolean;\n /**\n * Function to call when modal should be closed\n */\n onClose: () => void;\n /**\n * Modal title\n */\n title: string;\n /**\n * Modal content/description\n */\n children: React.ReactNode;\n /**\n * Modal variant\n */\n variant?: \"error\" | \"warning\" | \"confirmation\" | \"info\";\n /**\n * Primary action button text\n */\n primaryAction?: string;\n /**\n * Secondary action button text\n */\n secondaryAction?: string;\n /**\n * Function to call when primary action is clicked\n */\n onPrimaryAction?: () => void;\n /**\n * Function to call when secondary action is clicked\n */\n onSecondaryAction?: () => void;\n /**\n * Whether the primary action button is loading\n */\n isLoading?: boolean;\n /**\n * Whether the modal can be closed by clicking outside or pressing escape\n */\n closeOnOverlayClick?: boolean;\n /**\n * Custom className for the modal\n */\n className?: string;\n /**\n * Custom className for the content\n */\n contentClassName?: string;\n /**\n * Error object for error modals\n */\n error?: ErrorObject;\n}\n\nconst Modal = ({\n isOpen,\n onClose,\n title,\n children,\n variant = \"info\",\n primaryAction,\n secondaryAction,\n onPrimaryAction,\n onSecondaryAction,\n isLoading = false,\n closeOnOverlayClick = true,\n className,\n contentClassName,\n error,\n}: ModalProps) => {\n // Handle escape key press\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && isOpen) {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n // Prevent body scroll when modal is open\n document.body.style.overflow = \"hidden\";\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n const getVariantStyles = () => {\n switch (variant) {\n case \"error\":\n return {\n icon: <AlertCircle className=\"w-6 h-6 text-ews-error\" />,\n iconBg: \"bg-ews-error/10\",\n titleColor: \"text-ews-error\",\n borderColor: \"border-ews-error/20\",\n };\n case \"warning\":\n return {\n icon: <AlertTriangle className=\"w-6 h-6 text-ews-warning\" />,\n iconBg: \"bg-ews-warning/10\",\n titleColor: \"text-ews-warning\",\n borderColor: \"border-ews-warning/20\",\n };\n case \"confirmation\":\n return {\n icon: <CheckCircle className=\"w-6 h-6 text-ews-success\" />,\n iconBg: \"bg-ews-success/10\",\n titleColor: \"text-ews-success\",\n borderColor: \"border-ews-success/20\",\n };\n default:\n return {\n icon: <AlertCircle className=\"w-6 h-6 text-ews-primary\" />,\n iconBg: \"bg-ews-primary/10\",\n titleColor: \"text-ews-primary\",\n borderColor: \"border-ews-primary/20\",\n };\n }\n };\n\n const variantStyles = getVariantStyles();\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && closeOnOverlayClick) {\n onClose();\n }\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\"\n onClick={handleOverlayClick}\n />\n\n {/* Modal */}\n <div\n className={cn(\n \"relative w-full max-w-md mx-4 bg-white rounded-lg shadow-xl transform transition-all\",\n \"animate-in fade-in-0 zoom-in-95 duration-200\",\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"modal-title\"\n >\n {/* Header */}\n <div\n className={cn(\n \"flex items-center justify-between p-6 border-b\",\n variantStyles.borderColor\n )}\n >\n <div className=\"flex items-center space-x-3\">\n <div className={cn(\"p-2 rounded-full\", variantStyles.iconBg)}>\n {variantStyles.icon}\n </div>\n <h2\n id=\"modal-title\"\n className={cn(\"text-lg font-semibold\", variantStyles.titleColor)}\n >\n {title}\n </h2>\n </div>\n <button\n onClick={onClose}\n className=\"p-1 text-gray-400 hover:text-gray-600 transition-colors\"\n aria-label=\"Close modal\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n {/* Content */}\n <div className={cn(\"p-6\", contentClassName)}>\n <div className=\"text-gray-700 leading-relaxed\">\n {error && variant === \"error\" ? (\n <div className=\"space-y-3\">\n <p>{error.message}</p>\n {error.fields && error.fields.length > 0 && (\n <div>\n <p className=\"font-semibold text-gray-900\">\n Erreurs de champ:\n </p>\n <ul className=\"mt-2 space-y-1\">\n {error.fields.map((field, index) => (\n <li key={index} className=\"text-ews-error\">\n • {field.path}: {field.message}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n ) : (\n children\n )}\n </div>\n </div>\n\n {/* Actions */}\n {(primaryAction || secondaryAction) && (\n <div className=\"flex items-center justify-end space-x-3 p-6 pt-0\">\n {secondaryAction && (\n <Button\n variant=\"ghost\"\n onClick={onSecondaryAction || onClose}\n disabled={isLoading}\n >\n {secondaryAction}\n </Button>\n )}\n {primaryAction && (\n <Button\n variant={variant === \"error\" ? \"error\" : \"primary\"}\n onClick={onPrimaryAction}\n loading={isLoading}\n >\n {primaryAction}\n </Button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport { Modal };\n","import { cn } from \"../../utils\";\n\nexport interface LogoProps {\n /**\n * Logo size\n */\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n /**\n * Whether to show the tagline\n */\n showTagline?: boolean;\n /**\n * Whether to show only the icon (favicon version)\n */\n iconOnly?: boolean;\n /**\n * Logo variant - normal, white, or favicon\n */\n variant?: \"normal\" | \"white\" | \"favicon\";\n /**\n * Custom className\n */\n className?: string;\n /**\n * Click handler\n */\n onClick?: () => void;\n}\n\nconst Logo = ({\n size = \"md\",\n showTagline = true,\n iconOnly = false,\n variant = \"normal\",\n className,\n onClick,\n}: LogoProps) => {\n const sizes = {\n sm: \"h-8\",\n md: \"h-12\",\n lg: \"h-16\",\n xl: \"h-24\",\n };\n\n const iconSizes = {\n sm: \"h-6 w-6\",\n md: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n };\n\n // Get the appropriate logo image based on variant\n // For iconOnly, always use favicon.ico\n const logoSrc = iconOnly\n ? \"/favicon.ico\"\n : variant === \"white\"\n ? \"/image/logoWhite.png\"\n : variant === \"favicon\"\n ? \"/favicon.ico\"\n : \"/image/logo.png\";\n\n if (iconOnly) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center\",\n iconSizes[size],\n className\n )}\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n <img\n src={logoSrc}\n alt=\"MEDECINE 360 Logo\"\n className=\"w-full h-full object-contain\"\n />\n </div>\n );\n }\n\n return (\n <div\n className={cn(\"flex items-center\", sizes[size], className)}\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n {/* Logo Image */}\n <img\n src={logoSrc}\n alt=\"MEDECINE 360 Logo\"\n className=\"h-full w-auto object-contain\"\n />\n </div>\n );\n};\n\nexport { Logo };\n","import { ThemeConfig } from \"../types/theme\";\n\nexport const PROMED_THEME: ThemeConfig = {\n name: \"PROMED\",\n colors: {\n primary: \"#21596C\",\n secondary: \"#3BA1A1\",\n primaryHover: \"#1a4756\",\n secondaryHover: \"#308181\",\n primaryLight: \"#c0d0d4\",\n success: \"#059669\",\n successHover: \"#047857\",\n warning: \"#d97706\",\n warningHover: \"#b45309\",\n error: \"#dc2626\",\n errorHover: \"#b91c1c\",\n },\n};\n\nexport const MED_THEME: ThemeConfig = {\n name: \"MED\",\n colors: {\n primary: \"#3BA1A1\", // Teal for patients (calming, trustworthy)\n secondary: \"#6B73FF\", // Soft purple-blue (suggested secondary for MED)\n primaryHover: \"#308181\",\n secondaryHover: \"#5a61e6\",\n primaryLight: \"#a8d5d5\",\n success: \"#059669\",\n successHover: \"#047857\",\n warning: \"#d97706\",\n warningHover: \"#b45309\",\n error: \"#dc2626\",\n errorHover: \"#b91c1c\",\n },\n};\n\nexport const THEMES = {\n PROMED: PROMED_THEME,\n MED: MED_THEME,\n} as const;\n","import React, {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from \"react\";\nimport { Theme, ThemeContextType } from \"../types/theme\";\nimport { THEMES } from \"./themeConfig\";\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\ninterface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: Theme;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n defaultTheme = \"PROMED\",\n}) => {\n const [theme, setTheme] = useState<Theme>(defaultTheme);\n const [themeConfig, setThemeConfig] = useState(THEMES[defaultTheme]);\n\n // Update theme config when theme changes\n useEffect(() => {\n setThemeConfig(THEMES[theme]);\n\n // Update data-theme attribute for CSS variable switching\n const root = document.documentElement;\n root.setAttribute(\"data-theme\", theme);\n\n // Also update CSS custom properties for backward compatibility\n const colors = THEMES[theme].colors;\n root.style.setProperty(\"--ews-primary\", colors.primary);\n root.style.setProperty(\"--ews-primary-hover\", colors.primaryHover);\n root.style.setProperty(\"--ews-primary-light\", colors.primaryLight);\n root.style.setProperty(\"--ews-secondary\", colors.secondary);\n root.style.setProperty(\"--ews-secondary-hover\", colors.secondaryHover);\n root.style.setProperty(\"--ews-success\", colors.success);\n root.style.setProperty(\"--ews-success-hover\", colors.successHover);\n root.style.setProperty(\"--ews-warning\", colors.warning);\n root.style.setProperty(\"--ews-warning-hover\", colors.warningHover);\n root.style.setProperty(\"--ews-error\", colors.error);\n root.style.setProperty(\"--ews-error-hover\", colors.errorHover);\n }, [theme]);\n\n const handleSetTheme = (newTheme: Theme) => {\n setTheme(newTheme);\n };\n\n const value: ThemeContextType = {\n theme,\n setTheme: handleSetTheme,\n themeConfig,\n };\n\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n","import React from \"react\";\nimport { useTheme } from \"../../theme/ThemeProvider\";\nimport { Theme } from \"../../types/theme\";\n\nexport interface ThemeToggleProps {\n className?: string;\n}\n\nexport const ThemeToggle: React.FC<ThemeToggleProps> = ({ className }) => {\n const { theme, setTheme } = useTheme();\n\n const handleThemeChange = (newTheme: Theme) => {\n setTheme(newTheme);\n };\n\n return (\n <div className={`flex items-center space-x-2 ${className || \"\"}`}>\n <span className=\"text-sm font-medium text-gray-700\">Theme:</span>\n <div className=\"flex bg-gray-100 rounded-lg p-1\">\n <button\n onClick={() => handleThemeChange(\"PROMED\")}\n className={`px-3 py-1 text-xs font-medium rounded-md transition-colors ${\n theme === \"PROMED\"\n ? \"bg-ews-primary text-white\"\n : \"text-gray-600 hover:text-gray-900\"\n }`}\n >\n PROMED\n </button>\n <button\n onClick={() => handleThemeChange(\"MED\")}\n className={`px-3 py-1 text-xs font-medium rounded-md transition-colors ${\n theme === \"MED\"\n ? \"bg-ews-primary text-white\"\n : \"text-gray-600 hover:text-gray-900\"\n }`}\n >\n MED\n </button>\n </div>\n </div>\n );\n};\n","import { Stethoscope } from \"lucide-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { MultiSearchAutocomplete } from \"../../components/MultiSearchAutocomplete\";\nimport { cn } from \"../../utils\";\n\nexport interface Specialty {\n id: string;\n code: string;\n label: string;\n [key: string]: string | number | boolean | undefined;\n}\n\nexport interface SpecialtySearchAutocompleteProps {\n selectedSpecialties: Specialty[];\n onSpecialtiesChange: (specialties: Specialty[]) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n maxSelections?: number;\n showSelectedCount?: boolean;\n}\n\nexport const SpecialtySearchAutocomplete: React.FC<\n SpecialtySearchAutocompleteProps\n> = ({\n selectedSpecialties = [],\n onSpecialtiesChange,\n placeholder = \"Search and select medical specialties...\",\n className = \"\",\n disabled = false,\n maxSelections,\n showSelectedCount = true,\n}) => {\n const [specialties, setSpecialties] = useState<Specialty[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n\n // Mock API call - replace with actual API\n const fetchSpecialties = useCallback(async (searchTerm: string) => {\n setIsLoading(true);\n try {\n // Simulate API delay\n await new Promise((resolve) => setTimeout(resolve, 300));\n\n // Mock data - replace with actual API call\n const mockSpecialties: Specialty[] = [\n { id: \"1\", code: \"CARD\", label: \"Cardiology\" },\n { id: \"2\", code: \"DERM\", label: \"Dermatology\" },\n { id: \"3\", code: \"ENDO\", label: \"Endocrinology\" },\n { id: \"4\", code: \"GAST\", label: \"Gastroenterology\" },\n { id: \"5\", code: \"HEMA\", label: \"Hematology\" },\n { id: \"6\", code: \"NEUR\", label: \"Neurology\" },\n { id: \"7\", code: \"ONCO\", label: \"Oncology\" },\n { id: \"8\", code: \"ORTH\", label: \"Orthopedics\" },\n { id: \"9\", code: \"PED\", label: \"Pediatrics\" },\n { id: \"10\", code: \"PSYC\", label: \"Psychiatry\" },\n { id: \"11\", code: \"RAD\", label: \"Radiology\" },\n { id: \"12\", code: \"SURG\", label: \"Surgery\" },\n { id: \"13\", code: \"UROL\", label: \"Urology\" },\n { id: \"14\", code: \"GYN\", label: \"Gynecology\" },\n { id: \"15\", code: \"OPHT\", label: \"Ophthalmology\" },\n ];\n\n // Filter based on search term\n const filtered = mockSpecialties.filter(\n (specialty) =>\n specialty.label.toLowerCase().includes(searchTerm.toLowerCase()) ||\n specialty.code.toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n setSpecialties(filtered);\n } catch (error) {\n console.error(\"Error fetching specialties:\", error);\n setSpecialties([]);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n // Initial load\n useEffect(() => {\n fetchSpecialties(\"\");\n }, [fetchSpecialties]);\n\n const handleSelectionChange = useCallback(\n (items: Specialty[]) => {\n // Check max selections limit\n if (maxSelections && items.length > maxSelections) {\n return; // Don't update if exceeding max selections\n }\n onSpecialtiesChange(items);\n },\n [onSpecialtiesChange, maxSelections]\n );\n\n const getEntityById = useCallback(\n async (id: string): Promise<Specialty | undefined> => {\n return specialties.find((specialty) => specialty.id === id);\n },\n [specialties]\n );\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n {/* Header with title and icon */}\n <div className=\"flex items-center space-x-2\">\n <div className=\"flex justify-center items-center w-8 h-8 rounded-lg bg-secondary-100\">\n <Stethoscope className=\"w-4 h-4 text-secondary-600\" />\n </div>\n <h3 className=\"text-lg font-semibold text-gray-900\">\n Medical Specialties\n </h3>\n </div>\n\n {/* Label */}\n <div>\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Select Specialties\n </label>\n </div>\n\n {/* MultiSearchAutocomplete component */}\n <MultiSearchAutocomplete<Specialty>\n items={specialties}\n selectedItems={selectedSpecialties}\n onSelectionChange={handleSelectionChange}\n onSearch={fetchSpecialties}\n getEntityById={getEntityById}\n getPrimaryText={(specialty) => specialty.label}\n getSecondaryText={(specialty) => specialty.code}\n placeholder={placeholder}\n disabled={disabled}\n loading={isLoading}\n multiple={true}\n keepOpenOnSelect={true}\n className=\"w-full\"\n renderSelectedItem={(specialty) => (\n <span className=\"inline-flex items-center px-3 py-1 text-sm font-medium rounded-full bg-ews-primary/10 text-ews-primary border border-ews-primary/20\">\n {specialty.label}\n </span>\n )}\n renderListItem={(specialty, isSelected) => (\n <div className=\"flex items-center space-x-3\">\n <div\n className={cn(\n \"w-5 h-5 border-2 rounded flex items-center justify-center\",\n isSelected\n ? \"bg-ews-primary border-ews-primary\"\n : \"border-gray-300\"\n )}\n >\n {isSelected && (\n <svg\n className=\"w-3 h-3 text-white\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\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 </div>\n <div className=\"flex flex-col\">\n <span\n className={cn(\n \"font-medium\",\n isSelected ? \"text-ews-primary\" : \"text-gray-900\"\n )}\n >\n {specialty.label}\n </span>\n <span\n className={cn(\n \"text-sm\",\n isSelected ? \"text-ews-primary/70\" : \"text-gray-500\"\n )}\n >\n {specialty.code}\n </span>\n </div>\n </div>\n )}\n />\n\n {/* Selected count display */}\n {showSelectedCount && selectedSpecialties.length > 0 && (\n <div className=\"flex items-center justify-between text-sm text-gray-600\">\n <span>\n {selectedSpecialties.length} specialty\n {selectedSpecialties.length !== 1 ? \"ies\" : \"\"} selected\n </span>\n {maxSelections && (\n <span className=\"text-gray-400\">\n {selectedSpecialties.length}/{maxSelections}\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n"],"names":["_jsxs","_jsx","Icon","forwardRef","createElement","__iconNode","useState","useEffect","useRef","useCallback","AlertCircle","AlertTriangle","CheckCircle","createContext","useContext"],"mappings":"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","x_google_ignoreList":[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKzD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKzD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2CtD,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,gBAM3B,CAAC"}
|